UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY. Přírodovědecká fakulta EVOLUČNÍ ALGORITMY. Josef Tvrdík

Rozměr: px
Začít zobrazení ze stránky:

Download "UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY. Přírodovědecká fakulta EVOLUČNÍ ALGORITMY. Josef Tvrdík"

Transkript

1 UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY Přírodovědecká fakulta EVOLUČNÍ ALGORITMY Josef Tvrdík OSTRAVSKÁ UNIVERZITA 2004

2 Obsah 1 Úvod 3 2 Problém globální optimalizace Formulace problému globální optimalizace Stochastické algoritmy pro globální optimalizaci Úvod do Matlabu Co je Matlab? Základní příkazy Některé příkazové zkratky Znakové řetězce Nakreslení grafu Logické výrazy Řídicí příkazy, zápis algoritmu Doporučení pro vhodný výběr příkazů D grafika Práce se soubory Náhodné prohledávání 25 5 Simplexová metoda 28 6 Řízené náhodné prohledávání 31 7 Genetické algoritmy 35 8 Evoluční strategie 39 9 Diferenciální evoluce Algoritmus SOMA Evoluční prohledávání Algoritmy se soutěžícími heuristikami Experimentální ověřování a porovnávání algoritmů Testovací funkce Experimentální ověřování algoritmů Literatura 71 2

3 1 Úvod Tento text je určen jako studijní opora povinně volitelného předmětu Evoluční algoritmy v kombinovaném (a případně i distančním) magisterském studiu na Přírodovědecké fakultě Ostravské university ve studijním oboru informační systémy. Cílem textu je poskytnout základy evolučních algoritmů, zejména těch, které jsou vhodné pro hledání globálního minima v souvislé oblasti a také seznámit studenty s principy programování v Matlabu, numerickým testováním stochastických algoritmů pro globální optimalizaci a vyhodnocením numerických experimentů. Každá kapitola začíná pokyny pro její studium. Tato část je vždy označena jako Průvodce studiem s ikonou na okraji stránky. V závěru každé kapitoly je rekapitulace nejdůležitějších pojmů z akuální kapitoly. Rekapitulace označena textem Shrnutí a ikonou na okraji. Oddíl Kontrolní otázky označený ikonou by vám měl pomoci zjistit, zda jste prostudovanou kapitolu pochopili a snad vyprovokuje i vaše další otázky, na které budete hledat odpověď. U některých kapitol je připometuto, že k dané kapitole budete řešit Korespondeční úlohu. Pokud nebudou korespondenční úlohy budou zadávány k vašemu kurzu jinak, je úspěšné vyřešení korespondenčních úloh z textu podmínkou pro získání zápočtu. Pojmy a důležité souvislosti k zapamatování jsou vyznačeny na okraji stránky textu ikonou. 3

4 2 Problém globální optimalizace Průvodce studiem V této kapitole je zformulován problém globální optimalizace a stručně jsou zmíněny základní myšlenky stochastických algoritmů, které se používají pro nalezení globálního minima účelových funkcí. Počítejte asi se dvěma hodinami studia. 2.1 Formulace problému globální optimalizace Úlohu nalezení globálního minima můžeme formulovat takto: Mějme účelovou funkci f : D R, D R d. Pak x = arg min x D f(x) je globální minimum. Globální minimum je tedy jeden bod nebo více bodů z D s nejmenší funkční hodnotou, formálně x = arg min x D f(x) = {x D : f(x ) f(x) pro x D} Chceme-li nalézt globální maximum, pak jej nalezneme jako globální minimum funkce g(x) = f(x). Problém nalezení globálního minima můžeme ilustrovat jednoduchým obrázkem: 4

5 Ze základního kurzu matematické analýzy známe postup, jak nalézt extrémy funkcí, u kterých existuje první a druhá derivace. Zdálo by se, že úloha nalezení globálního minima je velmi jednoduchá. Bohužel tomu tak není. Nalézt obecné řešení takto jednoduše formulovaného problému je obtížné, zvláště když účelová funkce je multimodální, není diferencovatelná, případně má další nepříjemné vlastnosti. Analýza problému globální optimalizace ukazuje, že neexistuje deterministický algoritmus řešící obecnou úlohu globální optimalizace (tj. nalezení dostatečně přesné aproximace x ) v polynomiálním čase, tzn. problém globální optimalizace je NP-obtížný. Přitom globální optimalizace je úloha, kterou je nutno řešit v mnoha praktických problémech, mnohdy s velmi významným ekonomickým efektem, takže je nutné hledat algoritmy, které jsou pro řešení konkrétních problémů použitelné. Algoritmy pro řešení problému globální optimalizace se podrobně zabývá celá řada monografií, např. Torn a Žilinskas [28], Míka [20], Spall [26], kde je možné najít mnoho užitečných poznatků přesahujících rámec tohoto předmětu. V tomto kurzu se soustředíme na problémy, kdy hledáme globální minimum v souvislé oblasti D = a 1, b 1 a 2, b 2... a d, b d = d i=1 a i, b i, a i < b i, i = 1, 2,..., d, (2.1) (tzv. box constraints, protože oblast D je vymezena jako d-rozměrný kvádr) a účelovou funkci f(x) umíme vyhodnotit s požadovanou přesností v každém bodě x D. Pro úlohy řešené numericky na počítači nepředstavuje podmínka (2.1) žádné podstatné omezení, neboť hodnoty a i, b i jsou tak jako tak omezeny datovými typy užitými pro x a f(x). 2.2 Stochastické algoritmy pro globální optimalizaci Nemožnost nalézt deterministický algoritmus obecně řešící úlohu globální optimalizace vedla k využití algoritmů stochastických, které sice nemohou garantovat nalezení řešení v konečném počtu kroků, ale často pomohou nalézt v přijatelném čase řešení prakticky použitelné. Stochastické algoritmy pro globální optimalizaci heuristicky prohledávají prostor D. Heuristikou rozumíme postup, ve kterém se využívá náhoda, intuice, analogie a zkušenost. Rozdíl mezi heuristikou a deterministickým algoritmem je v tom, že na rozdíl od deterministického algoritmu heuristika nezajišťuje nalezení řešení. Heuristiky jsou v praktickém životě zcela samozřejmě užívané postupy, jako příklady můžeme uvést hledání hub, lov ryb na udici, výběr partnera, pokus o výhru ve sportovním utkání nebo o složení zkoušky ve škole. 5

6 Většina stochastických algoritmů pro hledání globálního minima v sobě obsahuje zjevně či skrytě proces učení. Inspirace k užití heuristik jsou často odvozeny ze znalostí přírodních nebo sociálních procesů. Např. simulované žíhání je modelem pomalého ochlazování tuhého tělesa, tabu-search modeluje hledání předmětu tak, že v krátkodobé paměti si zapamatovává zakázané kroky vedoucí k již dříve projitým stavům. Popis těchto algoritmů najdete v knize Kvasničky, Pospíchala a Tiňa [15], případně v článcích [11, 12, 7, 8]. Podobné postupy učení najdeme snad ve všech známých stochastických algoritmech s výjimkou slepého náhodného prohledávání. V posledních desetiletích se s poměrným úspěchem pro hledání globálního minima funkcí užívají stochastické algoritmy zejména evolučního typu. Podrobný popis této problematiky naleznete v knihách Goldgergra [9], Michalewicze [18] nebo Bäcka [2], případně ve zprávě Bäcka a Schwefela [3], která je dostupná na Internetu. Rozvoj evolučních algoritmů je záležitostí posledních desetiletí a je podmíněn rozvojem počítačů a pokroky v informatice. Přelomovými pracemi zavádějící biologickou terminologii do modelů hledání globálního extrému jsou články Schwefela a Rechenberga ze šedesátých let minulého století o evoluční strategii, práce L. Fogela o evolučním programování - viz [2, 15] - a Hollandova kniha o genetických algoritmech [10]. Tím byl odstartován bouřlivý a rozsáhlý rozvoj evolučních algoritmů a jejich aplikací. Evoluční algoritmy jsou ve své podstatě jednoduchými modely Darwinovy evoluční teorie vývoje populací. Charakteristické pro ně je to, že pracují s populací a využívají tzv. evoluční operátory, zejména tyto: selekce nejsilnější jedinci z populace mají větší pravděpodobnost přežití a předání svých vlastností, křížení (rekombinace) dva nebo více jedinců z populace si vymění informace a vzniknou tak noví jedinci kombinující vlastnosti rodičů, mutace informace zakódovaná v jedinci může být náhodně modifikována. Evoluční algoritmy jsou heuristiky, které nějakým způsobem modifikují populaci tak, aby se její vlastnosti zlepšovaly. O některých třídách evolučních algoritmů je dokázáno, že nejlepší jedinci populace se skutečně přibližují ke globálnímu optimu. Evoluční algoritmy byly a jsou předmětem intenzivního výzkumu, počet a rozsah publikací z této oblasti je ohromující. Jedním z hlavních motivů jsou především aplikace v praktických problémech, které jinými metodami nejsou řešitelné. Rozsáhlé přehledy aplikací evolučních algoritmů jsou uvedeny např. v pracích [4] a [16]. Dalšími motivy jsou výzkum umělé inteligence a teorie učení. Hledají se nové inspirace např. v chovatelství a 6

7 šlechtitelství [22], modeluje se sexuální reprodukce v populacích [24] nebo chování mravenců [6]. Pokračuje výzkum sofistikovaných evolučních operátorů a přístupů [5, 19, 36, 37]. Tento rozvoj nezastavil ani tzv. No Free Lunch Theorem [33, 34], který ukazuje, že nelze najít univerzálně nejlepší stochastický algoritmus pro globální optimalizaci. Shrnutí Formulace problému globální optimalizace Stochastický algoritmus Heuristika Kontrolní otázky 1. Jak naleznete minimum diferencovatelné funkce analyticky? 2. Kdy jste ve svém životě užili heuristiku? Zkuste ji popsat. 7

8 3 Úvod do Matlabu Průvodce studiem. Cílem této kapitoly je seznámit se s Matlabem tak, abyste v něm mohli pohodlně programovat evoluční algoritmy. Počítejte asi se čtyřmi hodinami studia, zejména praktických cvičení u počítače. 3.1 Co je Matlab? Matlab je výpočetní prostředí pro maticové operace, technické výpočty a vizualizaci dat. Matlab už po řadu let vyvíjí firma MathWorks a má mnoho uživatelů v běžných operačních systémech (Windows, Unix) po celém světě. Je to jak interaktivní výpočetní systém, který interpretuje příkazy zadané v příkazovém okně, tak programovací jazyk vysoké úrovně, který umožňuje rychlou a jednoduchou implementaci algoritmů. Základním datovým typem jazyka je pole, což může být skalár, vektor, matice nebo dokonce více než dvourozměrné pole. Prvkem pole může být číselná hodnota v pohyblivé řádové čárce, dvojitá přesnost, rozsah od do (realmax=1.7977e+308, realmin=2.2251e-308), případně alfanumerický znak nebo řetězec znaků stejné délky. Logické hodnoty se vyjadřují číselně, false jako 0, true jako 1. Matlab kromě základních operací s takovým polem a spousty vestavěných dalších funkcí nabízí i programovací příkazy pro vytváření podprogramů (funkcí) a příkazy pro řízení průběhu výpočtu (podmíněný příkaz, switch, cykly) známé z běžných programovacích jazyků. Výhodou Matlabu je i velmi kvalitní dokumentace, která je přístupná online prostřednictvím Helpu a dovoluje jak rychlé vyhledávání témat, zejména funkcí Matlabu, tak rychlou a názornou instruktáž k základním operacím. Pro seznámení s ovládáním Matlabu a jeho základními možnostmi je velmi užitečné spustit Help a projít Getting Started. 3.2 Základní příkazy Pro užívání Matlabu je důležité zvládnout základní operace s vektory a maticemi a také naučit se myslet vektorově, abychom byli připraveni efektivně využít možnosti, které máme v Matlabu k dispozici. Nejdříve si ukážeme pár jednoduchých příkladů. Řádkový vektor a vytvoříme příkazem, ve kterém prvky vektoru oddělené mezerami nebo čárkou zadáme v hranatých závorkách. Po zadání příkazu se tento vektor také vypíše v příkazovém okně: >> a=[3 2 5] a =

9 Pokud bychom chtěli výpis potlačit, příkaz ukončíme středníkem. Tím jsme vytvořili v pracovní oblasti (Workspace) objekt s názvem odpovídajícím užitému identifikátoru, t.j. a, který můžeme dále užívat v dalších příkazech. Pozor! Matlab v identifikátorech rozlišuje malá a velká písmena, takže a a A nebo TEMP_1, temp_1 a Temp_1 jsou různé objekty. Existující objekt můžete užít např. jako vstupní parametr funkce: >> size(a) ans = 1 3 Funkce size vrací rozměry matice, první údaj je počet řádků, druhý počet sloupců. Příkazem >> b=a+1 b = jsme přičetli zadanou skalární hodnotu (t.j. 1) ke každému prvku vektoru. Matici vytvoříme např. příkazem, ve kterém jsou řádkové vektory odděleny středníkem >> B=[a; b; b-5.5] B = Funkce length vrací maximální hodnotu z vektoru spočítaného funkcí size: >> length(b) ans = 3 Prvky matice nebo vektoru jsou přístupné přes jejich indexy, takže např. prvek na druhém řádku a v prvním sloupci můžeme přepsat: >> B(2,1)=0 B =

10 S vektory a maticemi můžeme snadno provádět operace známé z lineární algebry (transpozice, inverze matice, pokud je možná, atd.) Jejich zápis je velmi podobný zápisu obvyklém v lineární algebře: >> a=a a = >> det(b) % determinant ans = 54 >> C=B^-1 % inverse matice B, stejný výsledek užitím inv(b) C = >> I=B*C I~= Některé příkazové zkratky Pro vytvoření vektorů a matic jsou užitečné další příkazy, které zkracují práci. Pokud tvoří prvky vektoru sekvenci, pak ji můžeme zadat zkráceně zadáním dolní a horní hranice (pak je implicitně krok roven jedné) nebo požadovaný krok explicitně zadat: >> a=1:5 a = >> b=10:-2:1 b =

11 Matice můžeme vytvářet pomocí příkazů zeros(n,p) matice (n p), samé nuly ones(n,p) matice (n p), samé jedničky eye(n) jednotková matice (n n) rand(n,p) matice (n p), náhodná čísla z rovnoměrného rozdělení na [0, 1) randn(n,p) matice (n p), náhodná čísla z normovaného normálního rozdělení Zadáme-li jen jeden parametr, pak vytvořená matice je čtvercová. Příklady: >> zeros(1,3) ans = >> eye(4) ans = >> rand(3) ans = >> 10+2*randn(3) ans = Pro práci s vektory a maticemi je důležité prázdné pole [], které má rozměr (0 0). Zařazením prázdného prvku (matice) vypouštíme odpovídající prvky příslušného pole: a = >> a(2)=[] a =

12 Řádek nebo sloupec matice můžeme přepsat vektorem >> X=ones(3,4) X = >> X(1,:)=a X = nebo prázdným polem, tj. vypustit >> X(:,3)=[] X = Pole můžeme i zvětšovat (přidávat nové prvky). Pokud by v novém poli nebyla nějaká hodnota dosud přiřazena, automaticky se dodají nuly, jak uvidíme v následujícím příkladu: a = >> a(5)=-1 a = Zvláštní význam má proměnná end obsahující aktuální nejvyšší hodnotu indexu. Pak např. přepsání posledního prvku vektoru a hodnotou předposledního prvku zapíšeme takto: >> a(end)=a(end-1) a = Kromě dosud zmíněných aritmetických operátorů jsou užitečné operace na odpovídajících prvcích dvou polí stejných rozměrů, tj. operátory začínající tečkou,.*,./,.^. Např. umocnit každý prvek vektoru a odpovídajícím prvkem téhož vektoru zapíšeme takto a dostaneme výsledek: >> a.^a ans =

13 Pokud výsledek aritmetické operace přeteče rozsah datového typu, je výsledkem hodnota Inf, např. >> realmax*1.2 ans = Inf >> -realmax*1.2 ans = -Inf Pokud výsledek aritmetické operace nelze vyhodnotit (výrazy Inf*0 nebo Inf/Inf ap.), má hodnotu NaN (not a number), např. >> -realmax*1.2/(realmax*1.2) ans = NaN 3.4 Znakové řetězce Znakový řetězec v Matlabu je řádkový vektor, jehož prvky jsou jednotlivé znaky, např. >> r2= abcda1b2 r2 =abcda1b2 length(r2) ans = 8 Pokud chceme přímo porovnávat dva řetězce, musí mít shodnou délku. Shodné řetězce musí mít stejnou délku a shodovat se na všech pozicích. Pokud potřebujete porovnávat řetězce nestejných délek, užijte vhodnou funkci, např. strcmp, viz Help, kde najdete i návody pro další operace se znakovými řetězci. 3.5 Nakreslení grafu V Matlabu je velmi snadné kreslení grafů funkcí. Zde si ukážeme jen jednoduchý příklad 2D grafu: >> x=0:pi/400:6*pi; >> y=exp(-0.2*x).*sin(x); >> plot(x,y) Zadáním těchto tří příkazů dostaneme v okně Figure(1) následující graf: 13

14 Podrobnější popis příkazu plot, jeho dalších nepovinných parametrů, možností interaktivní práce s grafem, export obrázku do různých formátů atd. nalezneme v helpu. Některé postupy vytváření 3D grafů ukážeme na příkladech později. 3.6 Logické výrazy Logické konstanty false a true se vyjařují numericky jako 0 a 1, při vyhodnocování výrazu je jakákoliv číselná hodnota různá od nuly považována za true. Logické spojky not, and, or se zapisují jako, &&,. Zdvojením && a je zajištěno zrychlené vyhodnocování logického výrazu (zleva). Pro exkluzivní nebo je k dispozici funkce xor. Relační operátory se zapisují očekávaným způsobem, tj. ==, =, <, <=, >, >=, rovnítko musí být zdvojeno, aby bylo odlišitelné od přiřazovacího příkazu. V Matlabu máme k dispozici i kvantifikátory any a all. Je-li jejich parametrem vektor, vracejí skalár, tzn. logickou hodnotu, zda aspoň jeden, resp. všechny prvky vektoru mají logickou hodnotu true. Např. a = >> all(a) ans = 1 14

15 Pokud je jejich parametrem matice, vracejí řádkový vektor pro jednotlivé sloupce matice, např. pro A~= >> any(a) ans = >> all(a) ans = Poznámka: Podobně fungují i některé numerické funkce, např. mean, std, median, min, max, sum, prod, takže můžeme velmi snadno spočítat řádkový vektor sloupcových průměrů, směrodatných odchylek atd. Pomocí operátorů any a all můžeme snad zjistit, zda aspoň jeden či všechny prvky matice nebo vektoru splňují nějakou logickou podmínku, např. zda všechny prvky matice jsou nezáporné: B = >> all(all(b>=0)) ans = 0 nebo >> all(b(:)<=0) ans = 0 Nalezení indexů prvků vektoru splňujících logickou podmínku umožňuje funkce find. Např. záporné prvky vektoru b vypustíme snadno takto b = >> b(find(b<0))=[] b = Řídicí příkazy, zápis algoritmu V Matlabu máme k dispozici běžné příkazy pro zápis algoritmu, známé z jiných programovacích jazyků. Sekvence příkazů je buď na následujícím řádku nebo lze příkazy oddělit středníkem. Je-li příkaz ukončen středníkem, vyhodnocený výraz se nevypisuje na displej. Pokud má zápis příkazu pokračovat na dalším řádku, je předcházen třemi tečkami. Identifikátor muže 15

16 mít až 31 alfanumerických znaků nebo podtržítek, začíná písmenem, velká a malá písmena se rozlišují. Jako identifikátory neužívejte Matlabem užívané názvy konstant a proměnných jako např. pi, eps, ans, Inf, NaN, realmax, realmin, neboť tím byste si přepsali jejich správné nastavené hodnoty. Vše za znakem procento je komentář. Podmíněný příkazy má tvar if podmínka příkaz1 elseif podmínka2 příkaz2 else příkaz3 end Části elseif a else jsou nepovinné, podmíněný příkaz může být zapsán i na jednom řádku. Přepínač má tvar switch(výraz) case value1 příkaz1 case value2 příkaz2 end. case valuen příkazn otherwise nějaký příkaz Část otherwise je nepovinná. Cykly lze zapsat buď jako nebo while podmínka příkaz end for identifikátor = vektor příkaz end Všude, kde je možno zapsat příkaz, může to být i sekvence více příkazů. Např. v cyklu typu for proběhne desetkrát přiřazení vektoru náhodných čísel do i tého řádku matice: 16

17 for i=1:10 P(i,:)=2+3*rand(1,5); end Sekvence příkazů je možné zapsat do textových souborů, jejichž jméno má příponu.m. Celou sekvenci příkazů pak vyvoláme jménem souboru bez přípony. Pokud tato sekvence nemá žádné vstupní parametry, říkáme takovému souboru skript (dávka). Při jejím vyvolaní je pak sekvence příkazů postupně interpretována. Velmi užitečným prostředkem je zapsat sekvenci příkazů jako funkci. Tak máme k dispozici postup pro modulární strukturu programů v Matlabu. Syntaxi zápisu funkce můžeme ve stručnosti vyjádřit schématem function [seznam výstupních parametrů] =jmeno_funkce(seznam vstupních parametrů) Pokud funkce vrací jen jednu hodnotu (jednu proměnnou, může to být ale i vektor nebo matice), výstupní parametr není (nemusí být) v hranatých závorkách. Proměnné zavedené uvnitř funkce jsou lokální, takže nepřepisují hodnoty stejně nazvaných proměnných ve volajícím modulu. Zvolené jméno funkce musí být shodné se jménem souboru, ve kterém je zdrojový text funkce uložen (bez přípony.m ). Užívání funkcí je i výhodné s ohledem na délku výpočtu, neboť při prvním volání proběhne kompilace funkce a další volání je rychlejší než opakovaná interpretace jednotlivých příkazů. Jako příklad funkce si ukážeme náhodný výběr k hodnot (bez opakování) z množiny {1, 2,..., N}, k N. Pokud by bylo N = 49 a k = 7, je to procedura losování Sportky. Příklad pečlivě prostudujte, neboť ilustruje několik užitečných operací s vektory v Matlabu. % random sample, k of N without repetition % function result=nahvyb(n,k); opora=1:n; nahv=[]; for i=1:k index=1+fix(rand(1)*length(opora)); nahv(end+1)=opora(index); opora(index)=[]; end result=nahv; Uvedený způsob implementace náhodného výběru je jen jedním z mnoha možných. Je to vlastně velmi přímočarý model fyzického losování z osudí. Jiný způsob implementace může využít funkci randperm. Vyzkoušejte to a posuďte, který postup je efektivnější. 17

18 Při volání funkce nemusí být vždy zadán plný počet vstupních i výstupních parametrů. Pro ošetření takového volání jsou určeny funkce nargin a nargout (bez parametrů), které vracejí aktuální počet příslušných parametrů. Vstupním parametrem může být i jméno funkce (řetězec), takže příkazem y=feval(fnname,x); vyhodnotíme v bodě x tu funkci, jejíž jméno je aktuálně uloženo jako řetězec v proměnné fnname. Samozřejmě funkce tohoto jména musí být dostupná, např. jako m-soubor. 3.8 Doporučení pro vhodný výběr příkazů Při zápisu algoritmů v Matlabu se vyplatí uvažovat vektorově, neboť řadu operací je možno v Matlabu zapsat efektivněji než kopírováním postupů známých z jazyků jako je Pascal nebo C. Především je nutno velmi uvážlivě užívat cyklů, zejména vložených. Různou časovou náročnost ukazují následující příklady výpočtu součtu druhých mocnin prvků vektoru a. Časově nejnáročnější je klasický postup načítání druhých mocnin jednotlivých prvků v cyklu: N=10000 a=rand(50,1) tic for i=1:n s=0; for j=1:length(a) s=s+a(j)^2; end end toc elapsed_time = Využitím aritmetické operace pro všechny prvky vektoru (zde.* nebo.^2) dosáhneme téměř osminásobného zkrácení potřebného času: tic for i=1:n s=sum(a.*a); end toc elapsed_time =

19 A využijeme-li skalární součin, potřebný čas ještě o trochu zkrátíme: tic for i=1:n s=a *a; end toc elapsed_time =

20 3.9 3D grafika Kreslení grafů funkcí v 3D si ukážeme jen na jednoduchých příkladech. V prvním příkladu chceme nakreslit graf funkce f(x, y) = exp( (x 2 + y 2 )) pro hodnoty x [ 1, 2; 1.2] a y [ 2; 2]. Nejdříve vytvoříme vektory hodnot x-ové i y-ové souřadnice (pro síť vhodné hustoty): x=-1.2:0.05:1.2 y=-2:0.1:2 Pak příkazem meshgrid vytvoříme matice X a Y typu (length(y) length(x)), v tomto případě tedy typu (41 49), ve kterých odpovídající prvky představují všechny dvojice hodnot prvků vektorů x a y. Pak už jen vyhodnotíme z-tovou souřadnici (matice Z typu (41 49)) [X Y]=meshgrid(x,y) Z=exp(-X.^2-Y.^2) mesh(x,y,z) % stejného výsledku dosáhneme i zadaním příkazu % ve tvaru mesh(x,y,z) a příkazem mesh nakreslíme obrázek (tzv. drátový graf), který se objeví v okně Figure 1. V tomto okně máme pak dostupné nástroje pro interaktivní práci s obrázkem, např. popis a editaci os grafu, vkládání textů a grafických symbolů, rotace obrázku, uložení do souboru, export do jiného formátu atd. Podrobnosti 20

21 ponecháváme na čtenáři, který může potřebné informace získat v HELPu, kde také se dozví i o dalších možnostech 3D grafiky v Matlabu. O trochu složitější je nakreslení trojrozměrného grafu funkce tehdy, když matici z-tových souřadnic nemůžeme spočítat přímo, ale máme jen funkci vyhodnocující z-tovou souřadnici v bodě zadaném souřadnicemi x a y. Příkladem je Ackleyho funkce, která je často užívána v testování algoritmů pro globální optimalizaci a kterou v Matlabu můžeme zapsat takto: function z=ackley(x) % Ackley s function, <-30,30>, glob. minimum f(0)=0 d=length(x); a=-20*exp(-0.02*sqrt(sum(x.*x))); b=-exp(sum(cos(2*pi*ones(1,d).*x))/d); z=a+b+20+exp(1); Síť souřadnic v rovině xy vytvoříme podobně jako v předchozím příkladu x=-3:0.05:3; y=-3:0.05:3; [X Y]=meshgrid(x,y); ale výpočet z-tových souřadnic umíme pouze v bodech zadaných jako dvouprvkový vektor. Pak nezbývá než spočítat matici Z po jednotlivých prvcích for i=1:length(y) for j=1:length(x) Z(i,j)=ackley([X(i,j) Y(i,j)]); end end Výpočet je možno trochu zrychlit, když z matic X a Y vytvoříme vektory, výsledný vektor zz předem inicializujeme na požadovanou délku a pak z něho příkazem reshape vytvoříme matici požadovanou pro kreslení 3D grafu: xx=x(:); yy=y(:); zz=zeros(length(xx),1); for i=1:length(xx) zz(i)=ackley([xx(i) yy(i)]); end Z=reshape(zz,length(y),length(x)); Pak teprve můžeme nakreslit graf následujícími příkazy: 21

22 meshc(x,y,z) axis([ ]) xlabel( x ) ylabel( y ) zlabel( z ) 3.10 Práce se soubory V Matlabu máme řadu možností, jak importovat data ze souborů a exportovat data do souborů různých formátů. Podrobnosti nalezneme v HELPu pod heslem file formats a odkazech na další položky. Zde uvedeme jen některé příklady práce se soubory, které se budou užitečné při interaktivní práci s Matlabem, při načítání vstupních dat z textových souborů a při ukládání výsledků do textové tabulky se sloupci s konstantní šířkou. Při interaktivní práci s Matlabem je někdy užitečné si uložit aktuální stav pracovního prostoru (workspace), tj. všechny dosud inicializované proměnné, abych v příštím sezení mohli pokračovat od současného stavu. To je možné volbou save Workspace as z menu File. Soubor se pak uloží pod zadaným jménem s příponou.mat. Tento soubor pak otevřeme z menu File ve volbě Open. Matici (6 2) z textového souboru, jehož jméno je v řetězci (proměnná) fdatname a soubor má následující obsah 22

23 2.138E E E E E E E E E E E E0 načteme snadno do proměnné (matice) X příkazem dlmread X=dlmread(fdatname, ); Druhý parametr znamená specifikaci oddělovače (delimiter) datových položek, v tomto případě je to mezera (alespoň jedna mezera znamená konec číselné položky, u jiných oddělovačů jako je tabulátor nebo středník to je jinak, tam každý výskyt oddělovače znamená novou položku). Podobně snadno lze načítat data i z jiných formátů, např. tabulky z Excelu ap. Zapisování dat do textového souboru s pevnou šířkou sloupců zařídíme sekvencí příkazů: Otevření souboru příkazem fid=fopen(fname, a ); kde první parametr je jméno souboru (proměnná nebo konstanta typu řetězec), druhý parametr specifikuje, jakým způsobem má být soubor otevřen, v tomto případě hodnota parametru a znamená append, tj. přidání dalších záznamů, pokud soubor už existuje. Pak následují příkazy pro zápis jednotlivých položek řádku souboru. Vždy seznam položek, které mají být zapsány, je přecházen specifikací formátu, poslední příkaz ukončuje řádek ve výstupním souboru. fprintf(fid, %-10s %4.0f %11.3e %11.3e,mod_name,d,a(1),b(1)); fprintf(fid, %7.2f, alfa ); fprintf(fid, %8.0f, evals); fprintf(fid, %15.7e,RSS); for i=1:d fprintf(fid, %14.5e, beta(i)); end fprintf(fid, %1s\n, ); Další záznam do souboru pak zapíšeme voláním stejné sekvence příkazů po změně obsahu výstupních proměnných, obvykle tedy tato sekvence je umístěna uvnitř nějakého cyklu. Na závěr soubor zavřeme příkazem fclose(fid). Uvedené příklady jen ilustrují základní možnosti práce se soubory, o dalších operacích se soubory včetně práce s grafickými formáty se potřebné informace naleznou v HELPu. 23

24 Shrnutí Datové typy v Matlabu, prázdné pole Inicializace vektorů a matic Skripty a funkce v Matlabu 3D grafy Kontrolní otázky 1. Jak budete generovat náhodné číslo z rovnoměrného rozdělení z intervalu [a, b)? 2. Kdy může být jméno funkce vstupním parametrem jiné funkce? 3. Jak generovat náhodný výběr k hodnot z [1, 2,..., N] pomocí funkce randperm? 24

25 4 Náhodné prohledávání Průvodce studiem V této kapitole se seznámíte s nejjednodušším stochastickým algoritmem pro hledání globálniho minima. Kromě toho uvidíte i snadnost zápisu takových algoritmů v Matlabu a seznámíte se s pojmem konvergence stochastického algoritmu. Počítejte asi se dvěma hodinami studia. Náhodné prohledávání se také někdy nazývá slepý algoritmus, neboť v něm se opakovaně generuje náhodné řešení (nový bod y v souvislé oblasti D = d i=1 a i, b i z rovnoměrného spojitého rozdělení) a zapamatovává se tehdy, když je lepší než předtím nalezemé řešení. Náhodné prohledávání je příklad velmi jednoduchého stochastického algoritmu pro hledání globálního minima využívající velmi prostou heuristiku, kterou bychom mohli slovně vyjádřit jako zkus bez rozmyslu cokoliv. Slepý algoritmus lze zapsat v Matlabu na pár řádcích: function [x,fx] = blindsearch(fn_name,a,b,t) % input parameters: % fn_name function to be minized (M file) % a, b row vectors, limits of search space % t iteration number % output: % fx the minimal function value found % x minimum found by search d=length(a); fx=realmax; for i=1:t y=a+(b-a).*rand(1,d); fy= feval(fn_name,y); if fy < fx x=y; fx=fy; end end Kromě jednoduchosti je výhodou tohoto algoritmu také to, že lze dokázat jeho konvergenci. Platí, že s rostoucím počtem iterací se nalezené řešení x přibližuje globálnímu minimu x : lim P ( (x t x ) < ɛ t) = 1 ɛ > 0, (4.1) kde (x x ) je vzdálenost nalezeného řešení x od globálního minima x (norma vektoru x x ) a P ( (x x ) < ɛ t) je pravděpodobnost jevu ( (x x ) < ɛ) za podmínky, že bylo provedeno t iterací. 25

26 K tvrzení vyjářenému rovnicí (4.1) dojdeme následující úvahou: Všechny body splňující podmínku (x x ) < ɛ jsou vnitřními body d-rozměrné koule D ɛ o poloměru ɛ). Jelikož ɛ > 0, je objem této koule kladný, přesněji míra této množiny λ(d ɛ ) > 0. Označme dále míru množiny D jako λ(d). Generujeme-li bod y D z rovnoměrného rozdělení, pak pravděpodobnost jevu A {y D ɛ } P (A) = λ(d ɛ) λ(d) a pravděpodobnost jevu opačného je P (Ā) = 1 λ(d ɛ) λ(d) Pravděpodobnost, že jev Ā nastane v t po sobě jdoucích opakováních je ( P (Ā t) = 1 λ(d ) t ɛ). λ(d) ( ) Jelikož 0 < 1 λ(dɛ) < 1, je potom λ(d) a tedy rovnice(4.1) platí. ( lim P (Ā t) = 1 λ(d ) t ɛ) = 0 t λ(d) Bohužel rovnice (4.1) vypovídá pouze limitně a neposkytuje nám žádnou informaci o kvalitě nalezeného řešení po konečném počtu iterací. Jak uvidíme později, s podobným problémem se budeme setkávat i u dalších stochastických algoritmů. Teoretická konvergence podle rovnice (4.1) je z praktického hlediska velmi slabé tvrzení a pro posouzení konvergence stochastických algoritmů a porovnání jejich efektivity jsou většinou důležitější experimentální výsledky na testovacích funkcích než teoretický důkaz konvergence ve formě rovnice (4.1). 26

27 Shrnutí Generování bodu z rovnoměrného rozdělení na D Konvergence stochastického algoritmu Kontrolní otázky 1. Jakou heuristiku užívá slepý algoritmus pro generování nového bodu? 2. Je ve slepém náhodném prohledávání modelován nějaký proces učení? Korespondenční úloha Zjistěte experimentálně, jaká je pro první DeJongovu funkci (viz kapitola 13) průměrná hodnota t potřebná k tomu, aby f(x) <

28 5 Simplexová metoda Průvodce studiem V této kapitole se seznámíte s algoritmem zvaným simplexová metoda. Je to příklad algoritmu, který hledá minimum funkce ve spojité oblasti a nevyužívá derivací funkce. Řada dalších stochastických algoritmů využívá některé postupy, které byly zavedeny v simplexové metodě. Proto věnujte této metodě pozornost, zejména jasnému porozumění pojmu simplex a reflexe simplexu. Počítejte zhruba se dvěma až třemi hodinami studia. Simplexová metoda je velmi jednoduchý a populární algoritmus pro hledání globálního minima. Původní verzi algoritmu publikovali Nelder a Mead v roce 1965 [23]. Od té doby bylo navrženo několik dalších modifikací simplexové metody. Zde si ukážeme její základní myšlenky. Pro účelovou funkci f : D R, D R d. hledáme její globální minimimum v souvislé oblasti D = d i=1 a i, b i, a účelovou funkci f(x) umíme vyhodnotit s požadovanou přesností v každém bodě x D. Funkce nemusí být diferencovatelná. Klíčovým pojmem algoritmu je tzv. simplex S, což je množina nekomplanárních d + 1 bodů v D, S = {x 1, x 2,..., x d+1 } V simplexu nalezneme body s nejvyšší a nejnižší funkční hodnotou x H = arg max x S f(x) x L = arg min x S f(x) a dále spočítáme těžiště, tj. průměr d bodů, které zůstanou v simplexu po odstranění bodu x H, tedy g = 1 d ( x S x x H ) Pomocí tohoto simplexu hledáme nový bod y, který v případě, že f(y) < f(x H ) nahradí v simplexu dosud nejhorší bod x H a pokračuje se znovu. Pro hledání nového bodu y se užívá reflexe. Reflexe znamená překlopení bodu x H přes těžiště g podle vztahu y = g + (g x H ) = 2g x H. (5.1) Graficky je reflexe znázorněna na následujícím obrázku. 28

29 Pokud nový bod y získaný reflexí nesplňuje podmínku f(y) < f(x H ), užije se redukce, což je vlastně takové smrštění simplexu směrem k bodu x L, že vzdálenosti bodů simplexu budou poloviční. Formálně to zapíšeme x 1 2 (x + x L), x S, x x L. Na následujícím obrázku vidíme grafické znázornění redukce. Body původního simlexu označené kroužky se posunou k bodu x L do pozic označených křížky. Nejjednodušší variantu algoritmu simplexové metody můžeme zapsat následujícím způsobem: 29

30 generuj simplex S, tj. d + 1 bodů náhodně v D repeat y := reflexe(s); (y D) if f(y) < f(x H ) then x H := y else redukce(s); until podmínka ukončení; Verbálně můžeme simplexovou metodu jako jakýsi píďalkovitý pohyb simplexu v prohledávaném prostoru D směrem k oblasti s nižšími funkčními hodnotami. Mezi variantami simplexové metody existují i takové, kde simplex na počátku není generován náhodně, ale počáteční body simplexu se záměrně volí tak, aby zcela jistě splňovali podmínku nekomplanarity (afinní nezávislosti), což volně řečeno znamená, že body simplexu neleží v podprostoru s menší dimenzí, než má prohledávaný prostor D, např. při d = 2 tři body tvořící simplex neleží na přímce. Sofistikovaná verze simplexové metody je užita ve funkci fminserch, která je standardní součástí Matlabu. Prostudujte help k této funkci a její zdrojový text (soubor fminserch.m), ve kterém najdete nejen popis implementované verze simplexové metody, ale také užitečnou inspiraci pro styl programování v Matlabu. Shrnutí Simplex Reflexe v simplexu Redukce simplexu Kontrolní otázky 1. Naprogramujte v Matlabu jednoduchou verzi simplexové metody popsanou v této kapitole a porovnejte počet vyhodnocení účelové funkce se slepým náhodným prohledáváním na úloze z předcházející kapitoly. Korespondenční úloha Napište seznam nejdúležitějších odlišností algoritmu užitém ve funkci fminserch od jednoduché simplexové metody popsané v této kapitole. 30

31 6 Řízené náhodné prohledávání Průvodce studiem V této kapitole se seznámíte s algoritmem, který pracuje s populací. Algoritmus řízeného náhodného prohledávání je příkladem jednoduchého a přitom efektivního algoritmu pro hledání globálního minima. Pochopení tohoto algoritmu je dobrým odrazovým můstkem ke složitějím evolučním algoritmům. Počítejte asi se dvěma hodinami studia a několika hodinami věnovanými implementaci algoritmu v Matlabu a jeho ověření na testovacích funkcích. Řízené náhodné prohledávání (controlled random search, CRS) je příkladem velmi jednoduchého a přitom efektivního stochastického algoritmu pro hledání minima v souvislé oblasti. Algorimus CRS navrhl Price [25] v sedmdesátých létech minulého století. Pracuje se s populací N bodů v prohledávaném prostoru D a z nich se heuristicky generuje nový bod y, který může být zařazen do populace místo dosud nejhoršího bodu. Počet vygenerovaných bodů populace N je větší než dimenze d prohledávaného prostoru D. Jako heuristiku pro generování nového bodu y užíval Price reflexi simplexu, která je známa ze simplexové metody. Z populace se vybere náhodně d + 1 nekomplanárních bodů tvořících simplex. Pokud v novém bodu y je funkční hodnota f(y) menší než je v nejhorším bodu populace, pak je tento nejhorší bod nahrazen bodem y. Reflexi v simplexu můžeme vyjádřit vztahem y = 2g x, (6.1) kde x je bod simplexu s největší hodnotou účelové funkce a g je těžiště zbývajících d bodů simplexu. Nahrazením nejhoršího bodu populace novým bodem y dosahujeme toho, že populace se koncentruje v okolí dosud nalezeného bodu s nejmenší funkční hodnotou. Algoritmus mužeme jednoduše zapsat následujícím způsobem: generuj populaci P, tj. N bodů náhodně v D repeat najdi x worst P takové, že f(x worst ) f(x), repeat y := reflexe simplexu, y D until f(y) < f(x worst ); x worst := y; until podmínka ukončení; x P Reflexe simplexu podle rovnice (6.1) samozřejmě není jediná možnost, jak v algoritmu CRS generovat nový bod. Price později navrhl postup, kdy nový bod y se generuje podle (6.1), ale do simplexu je vždy zařazen nejlepší bod 31

32 populace x min s funkční hodnotou f min, f min f(x), x P a zbývajících d bodů simplexu se pak vybere náhodně z ostatních bodů populace. Další možnost je znáhodněná reflexe, která byla navržena v 90. létech. Znáhodněná reflexe v simplexu je popsána vztahem y = g + U (g x H ), (6.2) U je náhodná veličina vhodného rozdělení. Graficky je taková reflexe znázorněna na následujícím obrázku. Pokud bychom užili reflexi podle (6.1), byla by vzdálenost bodů g, y byla stejná jako vzdálenost bodů x, g, tj. U v rovnici (6.2) je rovno jedné. Při užití znáhodněné reflexe je tato vzdálenost určována náhodně podle zvoleného rozdělení náhodné veličiny U. Na testovacích úlohách bylo ověřováno několik rozdělení náhodné veličiny U. Osvědčilo se rovnoměrné rozdělení na [0, α), kde α je vstupní parametr algoritmu. Podle empirických výsledků testů nejrychleji algoritmus konvergoval na většině testovacích funkcí při hodnotách α 4. Střední hodnota je E U = α/2. Za pozornost stojí užití rovnoměrného rozdělení náhodné veličiny U na [s, α s), kde α > 0 a s (0, α/2) jsou vstupní parametry heuristiky. Střední hodnota je opět E U = α/2. Pro další výzkum připadají v úvahu i jiná rozdělení produkující nezáporné hodnoty náhodné veličiny U, např. lognormální rozdělení, případně i jiné heuristiky než reflexe. 32

33 Reflexe podle rovnic (6.1) nebo (6.2) nezaručuje, že nově vygenerovaný bod y bude v prohledávaném prostoru D. Pokud nastane situace, že y D, jsou dvě možnosti, jak postupovat dále. Buď generujeme nový bod opakovaně tak dlouho, než se podaří vygenerovat y D = d i=1 a i, b i nebo použít výpočetně úspornější postup tzv. zrcadlení (perturbace), kdy ty souřadnice y i a i, b i překlopíme dovnitř prohledávaného prostoru D kolem příslušné strany d-rozměrného kvádru D. Toto zrcadlení znázorňuje následující obrázek, jeho algoritmus je zapsán jako funkce zrcad v Matlabu. % zrcadleni, perturbation y into <a,b> function result=zrcad(y,a,b) zrc=find(y<a y>b); for i=zrc while (y(i)<a(i) y(i)>b(i)) if y(i)>b(i) y(i)=2*b(i)-y(i); elseif y(i)<a(i) y(i)=2*a(i)-y(i); end end end result=y; 33

34 Při stochastickém prohledávání podmínku ukončení formuluje uživatel. Obvykle je možné užít podmínku ukončení formulovanou tak, že nejlepší a nejhorší bod populace se ve funkčních hodnotách liší jen málo, tedy f(x worst ) f(x min ) ε, (6.3) kde ε > 0 je vstupní parametr algoritmu, případně podmínka ukončení může být formulována jako disjunkce uvedené relace (6.3) a dosažení maximálního dovoleného počtu vyhodnocení účelové funkce. Shrnutí Prohledávaný prostor D, způsob zadání D Populace bodů náhodně vygenerovaných v D Simplex náhodně vybraný z populace Reflexe a znáhodněná reflexe Podmínka ukončení Kontrolní otázky 1. Jak určíte souřadnice těžiště n bodů v D? 2. Co je to zrcadlení a kdy se užívá? 3. Jak zformulovat podmínku ukončení? 4. Naprogramujte v Matlabu algoritmus CRS 34

35 7 Genetické algoritmy Průvodce studiem Tato stručná kapitola má posloužit k základní orientaci v principech genetických algoritmů a upozornit na postupy, které jsou inspirativní pro jiné evoluční algoritmy. Počítejte asi se dvěma hodinami studia. Genetické algoritmy od svého vzniku v 70. létech [10] představují mohutný zdroj inspirace pro další evoluční algoritmy, pro zkoumání umělé inteligence a pro rozvoj soft computing. O genetických algoritmech existuje řada specializovaných monografií, viz např. Goldberger [9], Michalewicz [18] nebo Bäck [2]. Velmi dobře a srozumitelně napsaný úvod do genetických algoritmů najdete v dostupné knize Kvasničky, Pospíchala a Tiňa [15]. Zde se omezíme jen na stručné vysvětlení základních principů těchto algoritmů. Základní myšlenkou genetických algoritmů je analogie s evolučními procesy probíhajícími v biologických systémech. Podle Darwinovy teorie přirozeného výběru přežívají jen nejlépe přizpůsobení jedinci populace. Mírou přizpůsobení je tzv. fitness jedince. V biologii je fitness chápána jako relativní schopnost přežití a reprodukce genotypu jedince. Biologická evoluce je změna obsahu genetické informace populace v průběhu mnoha generací směrem k vyšším hodnotám fitness. Jedinci s vyšší fitness mají větší pravděpodobnost přežití a větší pravděpodobnost reprodukce svých genů do generace potomků. Kromě reprodukce se v populačním vývoji uplatňuje i tzv. mutace, což je náhodná změna genetické informace některých jedinců v populaci. V genetických algoritmech je fitness kladné číslo přiřazené genetické informaci jedince. Tato genetická informace jedince (chromozom) se obvykle vyjadřuje bitovým řetězcem. Populaci jedinců pak modelujeme jako populaci chromozomů a každému chromozomu (bitovému řetězci) umíme přiřadit hodnotu účelové funkce a podle vhodného předpisu umíme přiřadit i jeho fitness, podrobněji viz [15]. Obvykle chromozomem je binární vektor konstantní délky k α = (α 1, α 2,..., α k ) {0, 1} k a populace velikosti N je potom množina takových chromozomů P = {α 1, α 2,..., α N } Pokud hledáme globální minimum účelové funkce f, pak fitness F je nějaké zobrazení, které vyhovuje následující podmínce f(α i ) f(α j ) F (α i ) F (α j ) > 0, i, j = 1, 2,..., N Nejjednodušší způsob, jak vyhovět této podmínce, je lineární zobrazení funkčních hodnot na fitness, kdy hodnotu fitness určíme podle vztahu F (α) = F max F min f min f max f(α) + f minf min f max F max f min f max, 35

36 kde f min a f max je nejmenší a největší hodnota funkce v populaci, F min a F max je minimální a maximální hodnota fitness, které obvykle volíme F max = 1 a F min = ɛ, kde ɛ je malé kladné číslo, např. ɛ = Pak vztah pro fitness má tvar F (α) = 1 f min f max [(1 ɛ)f(α) + ɛf min f max ]. Pak je vhodné hodnoty fitness renormalizovat, aby jejich součet byl roven jedné. Renormalizovaná fitness i-tého jedince je F (α i ) = F (α i ) N j=1 F (α j) a tato hodnota pak udává i pravděpodobnost účasti jedince na reprodukci jeho genetické informace, tj. vytvoření potomka. Výběr (selekci) jedince s pravděpodobností F (α i ) ukazuje následující algoritmus, vstupem je vektor fitness všech jedinců populace, hodnoty fitness nemusí být renormalizovány. function res=roulette_simple(fits) % % returns an integer from [1, length(fits)] % with probability proportional % to fits(i)/ sum fits % h =length(fits); ss=sum(fits); cp(1)=fits(1); for i=2:h cp(i)=cp(i-1)+fits(i); end cp=cp/ss; res=1+fix(sum(cp<rand(1))); Reprodukce probíhá křížením dvou chromozomů tak, že si vymění své geny (části bitový řetězců). Ze dvou rodičů α, β v jednobodovém křížení vzniknou dva potomci podle následujícího schématu: (α 1,..., α l, α (l+1),..., α k ) (α 1,..., α l, β (l+1),..., β k ) (β 1,..., β l, β (l+1),..., β k ) (β 1,..., β l, α (l+1),..., α k ) Bod křížení l se volí náhodně. Někdy se také užívá dvoubodové křížení, ve kterém se určí náhodně dvě pozice pro křížení, l 1, l 2, l 2 > l 1 a v bitových řetězcích se vymění úseky α l1,..., α l2 β l1,..., β l2 36

37 Mutace je většinou v genetických algoritmech implementována jako změna hodnoty náhodně vybraného bitu v chromozomu, tj. hodnota 0 se změní na 1, hodnota 1 na 0. Mutací je zajištěno, aby mohla v populaci vzniknout genetická informace, která v něm v předcházejících generací nebyla, či obnovení genetické informace ztracené v průběhu dosavadního vývoje. V důsledku toho pak algoritmus může uniknout z oblasti lokálního minima, ke kterému by směřoval, pokud bychom užívali pouze křížení. Naopak, pokud bychom užívali pouze mutaci, genetický algoritmus by se choval podobně jako slepé náhodné prohledávání. Lze ukázat, že genetický algoritmus konverguje ke globálnímu extrému, viz [15]. S genetickými algoritmy a tímto důkazem jste se také setkali v předmětu Neuronové sítě, takže zde se jím nebudeme zabývat. Genetické algoritmy na rozdíl od ostatní algoritmů uváděných v tomto textu reprezentují jedince jako bitový řetězec, nikoliv jako vektor hodnot v pohyblivé řádové čárce. To je často výhodou při řešení tzv. diskrétních úloh globální optimalizace (kombinatorické úlohy jako je problém obchodního cestujícího), ale přínáší to komplikace v problémech, prohledávaná oblast D možných řešení je spojitá. Pokud bychom úseky chromozomu interpretovali jako celá čísla (datový typ integer), pak se potýkáme s obtíží, že sousední číselné hodnoty se jsou reprezentovány řetězci, které se mohou podstaně lišit, dokonce i ve všech bitech, např. dekadická hodnota 7 je binárně (0111), následující číselná hodnota 8 je (1000). Tuto nepříjemnost je nutno v genetických algoritmech nějak ošetřit, pokud mají být úspěšně používány i pro řešení spojitých problémů globální optimalizace. Je to možno řešit buď použitím Grayova kódu [15], kdy řetězce reprezentující sousední celočíselné hodnoty se liší jen v jednom bitu, ale přináší to další časový nárok na konverzi do Grayova kódu a zpět nebo se závádějí varianty genetických algoritmů s reprezentací jedince jako vektoru číselných hodnot v pohyblivé čárce. Pak je ovšem nutné užívat jiné operace křížení a mutace než ty, které jsou uvedeny výše. 37

38 Shrnutí Evoluce v biologických systémech Genetická informace, chromozom, fitness Operátory selekce, křížení a mutace v genetických algoritmech Kontrolní otázky 1. Proč jako fitness nelze užívat přímo hodnotu účelové funkce? 2. Jaká je role mutace v genetických algoritmech? 38

39 8 Evoluční strategie Průvodce studiem V této kapitole jsou vysvětleny základy evoluční strategie, která patří k nejstarším a stále velmi populárním a inspirujícím evolučním algoritmům. Počítejte asi se třemi hodinami studia. Původní nejjednodušší verzi algoritmu navrhli v šedesátých létech Schwefel a Rechenberg. Základní myšlenka je podobná slepému náhodnému prohledávání, ale rozdíl je v tom, že nový bod y se generuje jako mutace bodu x tak, že jednotlivé složky vektoru x se změní přičtením hodnot normálně rozdělených náhodných veličin y = x + u, u N(0, σ 2 I), (8.1) tj. u = (U 1, U 2,..., U d ) je náhodný vektor, jehož každý prvek je náhodná veličina U i N(0, σ 2 ), i = 1, 2,..., d a tyto veličiny jsou navzájem nezávislé. Algoritmus lze zapsat v Matlabu takto: function [x,fx] = es1p1const(fn_name,a,b,t,sigma) % input parameters: % fn_name function to be minized (M file) % a, b row vectors, limits of search space % t iteration number % sigma standard deviation (const) % output: % fx the minimal function value found % x minimum found by search d=length(a); fx=realmax; x=a+(b-a).*rand(1,d); for i=1:t y= x + sigma*randn(1,d); fy= feval(fn_name,y); if fy < fx x=y; fx=fy; end end Evoluční terminologií může být algoritmus popsán tak, že z rodičovské generace velikosti 1 vzniká generace potomků rovněž velikosti 1, potomek vzniká mutací z jednoho rodiče podle rov. (8.1) a operárorem selekce je výběr lepšího jedince z dvojice (tzv. turnajový výběr). Zajímavou otázkou je to, jak volit hodnoty směrodatných odchylek pro mutaci. V rov. (8.1) jsou všechny σ j, j = 1, 2,..., d shodné a konstantní. To 39

40 samozřejmě není nutné, každá dimenze může mít svou hodnotu směrodatné odchylky, tedy budeme pracovat s vektorem směrodatných odchylek σ = (σ 1, σ 2,..., σ d ) a navíc, vektor směrodatných odchylek nemusí být v každém iteračním kroku stejný, ale hodnoty jeho prvků se mohou adaptovat podle průběhu procesu vyhledávání. Rechenberg studoval vliv velikosti mutace při generování potomka, tj. hodnot σ na rychlost konvergence algoritmu a na dvou jednoduchých funkcích odvodil tzv. pravidlo jedné pětiny úspěšnosti. Empiricky se pak byla ověřena užitečnost tohoto pravidla i pro jiné funkce. Hodnoty směrodatných odchylek se v i-té iteraci hledání upravují podle pravidla vyjádřeného rovnicí c 1 σ i 1 když ϕ(n) < 1 5 σ i = c 2 σ i 1 když ϕ(n) > 1 5 σ i 1 jinak (8.2) c 1 < 1 a c 2 > 1 jsou vstupní parametry, kterými se řídí zmenšování či zvětšování hodnot směrodatných podle relativní četnosti úspěchu ϕ(n) v předcházejících n krocích. Úspěchem se rozumí to, že f(y) < f(x). Počet kroků n je vstupní parametr. Obvykle se volí hodnoty c 1 = 0.82 a c 2 = 1/c 1 = Pod vlivem rozvoje jiných evolučních algoritmů bylo dalším krokem v evoluční strategii zavedení populací velikostí větších než jedna. Označíme-li velikost rodičovské populace M a velikost populace potomků L, L > M, pak můžeme uvažovat o dvou variantách algoritmu evoluční strategie, v literatuře obvykle označovaných jako ES(M+L) a ES(M,L): ES(M+L) - generace potomků je vytvořena M jedinci s nejmenšími funkčními hodnotami ze všech M +L jedinců jak rodičovské populace, tak populace potomků. V této variantě se dodržuje tzv. elitismus, tj. nejlepší jedinec vždy přežívá a přechází do nové generace. ES(M,L) - generace potomků je vytvořena M jedinci s nejmenšími funkčními hodnotami z L jedinců populace potomků. Rodičovské generace tedy je kompletně nahrazena nejlepšími jedinci z populace potomků. V literatuře (viz např. [15]) se doporučuje, aby velikost populace potomků L byla volena několikanásobně větší než velikost rodičovské populace M. Také se uvádí, že varianta ES(M,L) obvykle konverguje pomaleji než ES(M+L), ale s menší tendencí ukončit prohledávání v lokálním minimu. Algoritmus ES(M+L) v Matlabu je uveden na následující stránce. 40

41 function [x,fx,func_evals] =... es_mpl(fn_name,a,b,m,k,lfront,my_eps,max_evals) d=length(a); sigma=(b-a)/3; % initial values of sigma fr=rand(1,lfront) < 0.2; % initial values in last lfront steps L=M*k; % k>1, integer P=ones(M,d+1); Q=ones(L,d+1); for i=1:m P(i,1:d)=a+(b-a).*rand(1,d); P(i,d+1)= feval(fn_name,p(i,1:d)); end % 0-th generation initialized P=sortrows(P,d+1); func_evals=m; while ((P(M,d+1)-P(1,d+1))>my_eps)&... (func_evals<d*max_evals) % main loop for t=1:k for i=1:m x=p(i,1:d); y=x+sigma.*randn(1,d); y=zrcad(y,a,b); fy= feval(fn_name,y); func_evals=func_evals+1; Q((t-1)*M + i,:)=[y fy]; fr(1)=[]; if fy < P(i,d+1) fr(end+1)=1; else fr(end+1)=0; end if sum(fr)/lfront < 0.2 sigma=sigma*0.82; elseif sum(fr)/lfront > 0.2 sigma=sigma*1.22; end end end PQ=[P; Q]; PQ=sortrows(PQ,d+1); P=PQ(1:M,:); P(1,d+1) end % main loop - end x=p(1,1:d); fx=p(1,d+1); 41

42 Autoři algoritmu evoluční strategie v minulosti museli čelit výtkám, že evoluční strategie z osvědčených evolučních operátorů evoluční strategie vůbec nevyužívá křížení. Proto byly navrženy pokročilejší varianty evoluční strategie, ve kterých je křížení obsaženo. Základní idea takového křížení spočívá v tom, že u každého jedince v populaci je kromě souřadnic v prostoru D i jeho vektor směrodatných odchylek a vektor směrodatných odchylek potomka se pak generuje křížením s náhodně vybraným jiným jedincem. Máme-li dva rodiče a, b s vektory směrodatných odchylek σ a, σ b, pak vektor směrodatných odchylek jejich potomka je určován např. jako σ = σa + σ b, 2 což je tzv. křížení průměrem nebo podle nějaké obdobného jen o trochu komplikovanějšího pravidla pro křížení. Pro funkce, u kterých je jejich globální minimum v protáhlém údolí, jehož směr není rovnoběžný se žádnou dimenzí prostoru D, se užívá ještě sofistikovanější varianta evoluční strategie, v níž u každého jedince v populaci se kromě souřadnic v prostoru D a jeho vektoru směrodatných odchylek uchovávají i mimodiagonální prvky kovarianční matice (tzv. směrové úhly, viz např. [15]) a křížení probíhá nejen na vektorech směrodatných odchylek, ale na celé kovarianční matici. Takové varianty evoluční strategie jsou však nejenom implemetačně podstatně náročnější, ale také mají větší paměťové nároky i větší časovou spotřebu na jeden iterační krok. Shrnutí mutace v evoluční strategii adaptace hodnot směrodatných odchylek ES(M,L) a ES(M+L) Kontrolní otázky 1. Co je pravidlo jedné pětiny a k čemu se užívá? 2. Porovnejte výhody a nevýhody variant ES(M,L) a ES(M+L). 3. Jak je pravidlo jedné pětiny implementováno ve variantě ES(M+L) v Matlabu a kterým parametrem řídíme délku sledovaného počtu předchozích iterací? 42

43 9 Diferenciální evoluce Průvodce studiem V této kapitole se seznámíte s algoritmem diferenciální evoluce. Tento algoritmus byl navržen nedávno a poprvé publikován v roce Během několika let se stal velmi populární a je často aplikován na problémy hledání globálního minima. Je to příklad jednoduchého heuristického hledání užívajícího evoluční evoluční operátory. Počítejte asi se třemi hodinami studia. Diferenciální evoluce (DE) je postup k heuristickému hledání minima multimodálních funkcí, který navrhli R. Storn a K. Price [27] koncem 90. let. Algoritmus DE dosáhl značné popularity, je často aplikován a dále rozvíjen. Bibliografický přehled prací o diferenciální evoluci naleznete na webových stránkách J. Lampinena. Experimentální výsledky i zkušenosti z četných aplikací ukazují, že často konverguje rychleji než jiné stochastické algoritmy pro globální optimalizaci. Algoritmus diferenciální evoluce vytváří novou populaci Q tak, že postupně pro každý bod x i ze staré populace P vytvoří jeho potenciálního konkurenta y a do nové populace z této dvojice zařadí bod s nižší funkční hodnotou. Algoritmus můžeme zapsat takto: generuj P (N bodů náhodně v D) repeat for i := 1 to N do generuj vektor u vytvoř vektor y křížením u a x i if f(y) < f(x i ) then do Q zařaď y else do Q zařaď x i endfor P := Q until podmínka ukončení Je několik způsobů, jak generovat nový bod u. Zde uvedeme dva nejčastěji užívané. Postup označovaný RAND generuje bod u ze tří bodů ze staré populace podle vztahu u = r 1 + F (r 2 r 3 ), (9.1) r 1, r 2, r 3 jsou navzájem různé body náhodně vybrané z populace P různé od aktuálního bodu x i, F > 0 je vstupní parametr. Generování bodu u podle rovnice 9.1 je graficky znázorněno následujícím obrázkem. 43

44 Postup označovaný BEST využívá nejlepší bod z populace P a čtyři další náhodně vybrané body podle vztahu u = x best + F (r 1 + r 2 r 3 r 4 ), (9.2) kde r 1, r 2, r 3, r 4 jsou navzájem různé body náhodně vybrané z populace P různé od aktuálního bodu x i i od bodu x best s nejnižší funkční hodnotou v P. F > 0 je opět vstupní parametr. Nový vektor y vznikne křížením vektoru u a vektoru x i tak, že kterýkoli jeho prvek x ij je nahrazen hodnotou u j s pravděpodobností C. Pokud žádné x ij nebylo přepsáno hodnotou u j nebo při volbě C = 0, nahrazuje se jeden náhodně vybraný prvek vektoru x i : y j = { uj když R j C nebo j = I x ij když R j > C a j I, (9.3) kde I je náhodně vybrané celé celé číslo z {1, 2,..., d}, R j (0, 1) jsou voleny náhodně a nezávisle pro každé j a C [0, 1] je vstupní parametr. V diferenciální evoluci generování u podle rovnic (9.1) nebo (9.2) představuje mutaci, křížení probíhá podle (9.3), selekcí je výběr lepšího bodu z dvojice y a x i do nové populace Q. V diferenciální evoluci jsou tedy přítomny všechny tři nejdůležitější evoluční operace. 44

45 Ali a Törn nedávno navrhli určovat hodnotu parametru F v každém iteračním kroku podle adaptivního pravidla { max(fmin, 1 fmax f F = min ) max(f min, 1 f min f max ) if fmax f min < 1 jinak, (9.4) kde f min, f max jsou minimální a maximální funkční hodnoty v populaci P a F min je vstupní parametr, který zabezpečuje, aby bylo F [F min, 1). Autoři doporučují volit hodnotu F min Předpokládá se, že tento způsob výpočtu F udržuje prohledávání diverzifikované v počátečním stadiu a intenzivnější v pozdější fázi prohledávání, což má zvyšovat spolehlivost hledání i rychlost konvergence. Výhodou algoritmu diferenciální evoluce je jeho jednoduchost a výpočetně nenáročné generování nového bodu y, které lze navíc velmi efektivně implementovat. Nevýhodou je poměrně velká citlivost algoritmu na nastavení hodnot vstupních parametrů F a C. Storn a Price doporučují volit hodnoty N = 10d, F = 0.8 a C = 0.5 a pak tyto hodnoty modifikovat podle empirické zkušenosti z pozorovaného průběhu hledání. To je ovšem doporučení dosti vágní. K tomu, aby bylo užitečné, je nutná zkušenost a dobrá intuice řešitele problému. V testovacích úlohách v článku [27] sami užívají pro různé úlohy velmi odlišné hodnoty těchto parametrů, a to 0.5 F 1 a 0 C 1. Také velikost populace N volí často menší než doporučovanou hodnotu N = 10d. Porovnáme-li diferenciální evoluci s algoritmem CRS, vidíme, že v diferenciální evoluci se nenahrazuje nejhorší bod v populaci, ale pouze horší bod ve dvojici, což zabezpečuje větší diversitu bodů nové populace po delší období, takže při stejné velikosti populace většinou DE ve srovnání s CRS má menší tendenci ukončit prohledávání v lokálním minimu, ale za to platíme pomalejší konvergencí při stejné podmínce ukončení. Jednoduchost implementace DE s generováním nového bodu postupem RAND ilustruje následující zdrojový text v Matlabu. 45

46 function [x_star,fn_star,func_evals]=... der_smp(fn_name, a, b, N, my_eps, max_evals, F, CR) % input parameters: % a, b row vectors, limits of search space, a < b % N size of population % my_eps small positive value for stopping criterion % max_evals max. evals per one dimension of search space % F,CR mutation parameters % output: % fn_star the minimal function value found by MCRS % x_star global minimum found by search % func_evals number of func_evals for reaching stop d=length(a); P=zeros(N,d+1); for i=1:n P(i,1:d)=a+(b-a).*rand(1,d); P(i,d+1)=feval(fn_name,(P(i,1:d))); end % 0-th generation initialized fmax=max(p(:,d+1)); [fmin, indmin]=min(p(:,d+1)); func_evals=n; Q=P; while (fmax-fmin > my_eps) & (func_evals < d*max_evals) %main loop for i=1:n % in each generation y=derand(p,f,cr,i); y=zrcad(y,a,b); % perturbation fy=feval(fn_name,y); func_evals=func_evals+1; if fy < P(i,d+1) % trial point y is good Q(i,:)= [y fy]; end end % end of generation P=Q; fmax=max(p(:,d+1)); [fmin,indmin]=min(p(:,d+1)); end % main loop - end x_star=p(indmin,1:d); fn_star=fmin; 46

47 function y=derand(p,f,c,expt); N=length(P(:,1)); d=length(p(1,:))-1; y=p(expt(1),1:d); vyb=nahvyb_expt(n,3,expt); % three random points without expt r1=p(vyb(1),1:d); r2=p(vyb(2),1:d); r3=p(vyb(3),1:d); v=r1+f*(r2-r3); change=find(rand(1,d)<c); if length(change)==0 % at least one element is changed change=1+fix(d*rand(1)); end y(change)=v(change); % random sample, k of N without repetition, % numbers given in vector expt are not included function vyb=nahvyb_expt(n,k,expt); opora=1:n; if nargin==3 opora(expt)=[]; end vyb=zeros(1,k); for i=1:k index=1+fix(rand(1)*length(opora)); vyb(i)=opora(index); opora(index)=[]; end Shrnutí Mutace jako přičtení rozdílu vektorů Křížení výměnou náhodně vybraných prvků vektoru Výběr lepšího z dvojice (selekce turnajem) Kontrolní otázky 1. Jaké jsou hlavní odlišnosti řízeného náhodného výběru a diferenciální evoluce? 2. Proč musí být F 0? Co by se stalo, kdybychom zadali F < 0? 3. Co způsobí zadání C = 0? 47

48 10 Algoritmus SOMA Průvodce studiem V této kapitole se stručně seznámíte s algoritmem SOMA, který modeluje chování skupiny mající společný cíl. Počítejte asi se třemi až čtyřmi hodinami studia. Algoritmus SOMA byl publikován nedávno [36] a dosti podrobně, ale nepříliš přehledně je popsán v české knize jednoho z autorů tohoto algoritmu [37]. SOMA je zkratka dlouhého jména algoritmu (Self-Organizing Migration Algorithm), které vystihuje jeho základní principy. Na algoritmus můžeme nahlížet jako na jednoduchý model lovící smečky. Ve smečce je N jedinců a ti se pohybují (migrují) po území D tak, že každý jedinec skáče směrem k vůdci smečky, prověří místo doskoku a zapamatuje si nejlepší místo do dalšího migračního kola. Vůdcem je většinou jedinec s nejlepší hodnotou účelové funkce v celé populaci (smečce) a rovněž kvalita míst (bodů v D) navštívených jedincem při jeho skocích za vůdcem se posuzuje hodnotou účelové funkce. Pohyb migrujícího jedince nemusí probíhat ve všech dimenzích prostoru D, ale jen v některých dimenzích, tedy v prostoru s dimenzí menší než d. Migraci jedince k vůdci ukazuje následující obrázek. Jedinec z výchozího bodu r 0 skáče skoky velikosti δ směrem k vůdci, případně ho může i o trochu přeskočit. Pohyb jedince je buď ve směru naznačeném plnou šipkou, tedy v prostoru dimenze d nebo jen v prodprostoru menší dimenze, tedy v některém ze směrů vyznačených tečkovaně. Kromě vstupních parametrů obvyklých u všech evolučních algoritmů, tj. 48

49 specifikace problému (funkce, prohledávaný prostor, podmínka ukončení) a velikost populace N má algoritmus SOMA ještě tři vstupní parametry popisující uvedený pohyb jedince za vůdcem. Jsou to tyto parametry (jejich označení ponecháme shodné s tím, které užívá ve své knize Zelinka [37]: mass relativní velikost přeskočení vůdce mass = x l r 0 x l r 0, kde x l r 0 je norma vektoru (x l r 0 ), podobně x l r 0 je norma vektoru (x l r 0). Tyto normy vektoru jsou vlastně délky úseček s koncovými body r 0, x l, resp. r 0, x l. Geometrický význam je také zřejmý z obrázku. Doporučeny jsou hodnoty mass [1.1; 3]. step určuje velikost skoků δ, tj. velikost směrového vektoru skoku podle následujícího vztahu δ = step (x l r 0 ), tedy čím je hodnota parametru step menší, tím podrobněji je prostor na cestě k vůdci prozkoumáván. Doporučené hodnoty jsou step [0.11; mass], autoři algoritmu SOMA rovněž doporučují volit hodnotu parametru step tak, aby 1/step nebylo celé číslo, tzn. aby jedinec na své cestě za vůdcem nenavštívil zbytečně místo obsazené vůdcem. prt parametr pro určení směru pohybu jedince za vůdcem, prt [0; 1]. Je to pravděpodobnost výběru dimenze prostoru D, ve které bude pohyb jedince probíhat. Pro směr pohybu se vyberou náhodně ty dimenze, pro které U i < prt, i = 1, 2,..., d. Hodnoty (U 1, U 2,..., U d ) tvoří náhodný vektor velikosti d, jehož složky jsou nezávislé náhodné veličiny rovnoměrně rozdělené na intervalu [0, 1). Při imlementaci algoritmu se tyto hodnoty generují funkcí rand. Pokud by žádná složka U i nesplňovala podmínku U i < prt (např. při volbě prt = 0), vybere se jedna dimenze náhodně z množiny {1, 2,..., d}. Směr pohybu, tzn. ty dimenze, ve kterých probíhají skoky, se volí vždycky pro každý pohyb jedince k vůdci znovu, zatímco velikost skoků, tedy δ je stejná pro celý běh algoritmu SOMA. 49

50 Autoři rozlišují tři základní varianty algoritmu SOMA: all-to-one základní verze algoritmu SOMA, kdy v každém migračním kole všichni jedinci kromě vůdce putují za vůdcem. Tato verze je popsána v předchozím textu a její implementace v Matlabu je uvedena na konci této kapitoly. all-to-all v každém migračním kole se vůdcem stávají postupně všichni jedinci a ostatní putují za nimi. Populace se aktualizuje nově nalezenými body až po skončení migračního kola, tzn. po dokončení putování všech ke všem. all-to-all-adaptive podobně jako u předchozí varianty v každém migračním kole se vůdcem stávají postupně všichni jedinci a ostatní putují za nimi, ale jedinec v populaci je nahražen bezprostředně po ukončení jeho migrace za vůdcem (pokud při této migraci byl nalezen bod s lepší funkční hodnotou), takže ostatní jedinci v průběhu migračního kola už putují k tomuto novému vůdci. 50

51 % SOMA all to 1 function [x_star,fn_star,func_evals]=... soma_to1(fn_name,a,b,n,my_eps,max_evals,mass,step,prt) % input parameters: % obligatory: % fn_name function to be minized (M file) % a, b row vectors, limits of search space, a < b % N size of population % my_eps small positive value for stopping criterion % max_evals max. evals per one dimension of search space % mass,step,prt tunnig parameters of SOMA % output: % fn_star the minimal function value found by GCRS % x_star minimum found by search % func_evals number of func_evals for reaching stop % d=length(a); P=zeros(N,d+1); for i=1:n P(i,1:d)=a+(b-a).*rand(1,d); P(i,d+1)= feval(fn_name,p(i,1:d)); end % 0-th generation initialized P=sortrows(P,d+1); pocet_kroku=fix(mass/step); func_evals=n; while ((P(N,d+1)-P(1,d+1)) > my_eps)... &(func_evals<d*max_evals) % main loop leader=p(1,1:d); for i=2:n r0=p(i,1:d); delta=(leader-r0)*step; yfy=go_ahead(fn_name,r0, delta, pocet_kroku, prt, a, b); func_evals=func_evals+pocet_kroku; if yfy(d+1) < P(i,d+1) % trial point y is good P(i,:)= yfy; end end P=sortrows(P,d+1); end % main loop - end x_star=p(1,1:d); fn_star=p(1,d+1); % 51

52 % find the best point y with function value fy % on the way from r0 to leader function yfy=go_ahead(fn_name,r0,delta,pocet_kroku,prt,a,b); d=length(r0); tochange=find(rand(d,1)>prt); if length(tochange)==0 % at least one is changed tochange=1+d*fix(rand(1)); end C=zeros(pocet_kroku,d+1); r=r0; for i=1:pocet_kroku r(tochange)=r(tochange)+delta(tochange); r=zrcad(r,a,b); fr=feval(fn_name,r); C(i,:)=[r, fr]; end [fmin, indmin]=min(c(:,d+1)); yfy=c(indmin,:); % row with min. fy is returned Shrnutí Model pohybu jedince za vůdcem a parametry mass, step, prt Varianta all-to-one Varianta all-to-all Varianta all-to-all-adaptive Kontrolní otázky 1. Proč parametr step má být volen tak, aby 1/step nebylo celé číslo? 2. Jak se liší varianta all-to-all od all-to-all-adaptive Korespondenční úloha Naprogramujte v Matlabu variantu all-to-all (jde o poměrně snadnou modifikaci varianty all-to-one uvedené v učebním textu), porovnejte alespoň na dvou testovacích funkcích (viz kap. 13) s variantou all-to-one. Pošlete stručnou zprávu o výsledcích testů a m soubor obsahující ověřenou variantu all-to-all. 52

53 11 Evoluční prohledávání Průvodce studiem V této kapitole se budeme zabývat algoritmem vycházejícím ze řízeného náhodného prohledávání a obohaceným o další evoluční operátory. Počítejte asi se dvěma hodinami studia. Evoluční prohledávání (Evolutionary Search) je modifikací algoritmu řízeného náhodného prohledávání (CRS), v níž je posílena role evolučních oprerátorů. Nevýhodou řízeného náhodného prohledávání je to, že nejhorší jedinec je z populace odstraněn v každém iteračním kroku. Tím algoritmus CRS ztrácí schopnost uniknout z oblasti lokálního minima a řízené náhodné prohledávání má někdy tendenci k tzv. přečasné konvergenci, tj. ukončení v lokálním minimu (prodrobněji viz kapitola 13.2). V evolučním prohledávání se pracuje se dvěma populacemi P a Q, obě populace mají stejnou velikost N. Ze staré populace P se vybere M nejlepších bodů, které přejdou do nové populace. Tím se provede selekce nejlepších jedinců pro přežití. Za reprodukci můžeme považovat generování potomků nějakou heuristikou, např. reflexí v simplexu, který se náhodně vybírá ze staré populace P. Potomek je do nové populace Q zařazen tehdy, je-li lepší než nejhorší jedinec ve staré populaci P. Po doplnění nové Q na velikost N se pro další generaci stane starou populací, v té se najde nejvyšší funkční hodnota, která bude sloužit jako kritérium pro zařazeni nového jedince do populace Q. Pak pokud je splněna podmínka pro mutaci, tak se jednomu z vybraných bodů staré populace P nádhodně změní hodnoty jeho prvků, tedy souřadnice v prostoru D. Tím se pak tento zmutovaný jedinec účastní v této generaci reprodukce (např. může být vybrán do simplexu) a podílet se tak na případném úniku z oblasti lokálního minima. Způsob selekce užitý v tomto algoritmu je podobný jako v evoluční strategii typu ES(N + (N M)). 53

54 Algoritmus evolučního prohledávání můžeme zapsat takto: generate P (an old population of N points taken at random from D) find the worst point in P, x worst, with the highest value of f repeat copy M best points of P into new population Q, 1 M < N repeat repeat generate a new trial point y by some heuristics until f(y) < f(x worst ) insert the next trial point into Q until Q is completed to N points replace P by Q find the worst point in P, x worst, with the highest value of f if condition for mutation is true then mutate a point in P until stopping condition is true Vstupní parametry algoritmu evolučního prohledávání jsou stejné jako u CRS a navíc ještě počet jedinců M přecházejících do nové populace a pravděpodobnost mutace p mut. Připomeňme, že algoritmus CRS je speciálním případem algoritmu evolučního prohledávání. Zvolíme-li hodnotu vstupních parametrů M = N 1 a pravděpodobnost mutace rovnou nule (podmínka pro mutaci má pak vždy hodnotu false ), pak evoluční prohledávání je ekvivalentní algoritmu CRS. Algoritmus evolučního prohledávání byl navržen roku 1996 [29] a osvědčil se jako velmi spolehlivý při odhadu parametrů nelineárních regresních modelů v úlohách, kde klasické deterministické algoritmy selhávájí a také algoritmus CRS nebyl stoprocentně spolehlivý [14]. Cenou za spolehlivost je však v případě evolučního prohledávání pomalejší konvergence, tj. k dosažení podmínky ukončení je potřeba větší počet vyhodnocení účelové funkce, většinou zhruba dvakrát až třikrát větši v porovnání s CRS. Pro evoluční prohledávání lze najít podmínky, za kterých algoritmus konverguje s pravděpodobností rovnou jedné. Z výsledků [21] vyplývá, že evoluční prohledávání je konvergentní, když (a) nejlepší bod staré populace vždy přechází do nové populace (tzn. M 1, tzv. elitismus). (b) mutace zaručuje kladnou pravděpodobnost vygenerování nového bodu y S, kde S je libovolná otevřená podmnožina D mající Lebesgueovu míru λ(s) > 0. To je splněno, když jako mutace je užito náhodné generování bodu y ze spojitého rozdělení, jehož sdružená hustota f y (y) > 0 pro y D. Této podmínce vyhovuje např. rovnoměrné rozdělení užívané ve slepém náhodném prohledávání. 54

55 (c) pravděpodobnosti mutace p mut,k v každé z k generací hledání tvoří divergentní řadu, ( k=1 p mut,k = ). Tuto podmínku lze snadno splnit tím, že pravděpodobnost mutace volíme konstantní a kladnou, p mut > 0. Shrnutí Evoluční prohledávání jako zobecnění algoritmu CRS Evoluční operátory a jejich užití v algoritmu evolučního prohledávání Podmínky konvergence algoritmu evolučního prohledávání Kontrolní otázky 1. Jak je v evolučním prohledávání realizována selekce a jak křížení? 2. Jak implementovat mutaci, aby byl algoritmus konvergentní? 3. Zdůvodněte podrobněji, proč je v porovnání s CRS evoluční prohledávání spolehlivější a pomalejší. Korespondenční úloha Naprogramujte v Matlabu evoluční prohledávání a porovnejte je alespoň na dvou testovacích funkcích (viz kap. 13) s algoritmem CRS. Pošlete stručnou zprávu o výsledcích testů a m soubory obsahující ověřované algoritmy evolučního prohledávání a CRS. 55

56 12 Algoritmy se soutěžícími heuristikami Průvodce studiem Tato kapitola je věnována modifikacím algoritmů evolučního a řízeného náhodného prohledávání, ve kterých se heuristiky užívané pro generování nového bodu střídají. Dosahuje se tak adaptibility algoritmů na řešený problém a tím i rozšíření oblasti úspěšných aplikací. Počítejte asi s pěti hodinami studia. V této kapitole se seznámíme s dalším zobecněním algoritmů evolučního a řízeného náhodného prohledávání, ve kterých se heuristiky užívané pro generování nového bodu střídají a pravděpodobnost výběru konkrétní heuristiky je úměrná její dosavadní úspěšnosti. Principy této soutěže vysvětlíme na zobecněném algoritmu řízeného náhodného prohledávání. Algoritmus 1. Zobecněný CRS generuj populaci P, tj. N bodů náhodně v D; repeat najdi x max P, f(x max ) f(x), x P; repeat užij nějakou heuristiku k vygenerování nového bodu y D; until f(y) < f(x max ); x max := y; until podmínka ukončení; Nový bod y se v klasické variantě algoritmu CRS generuje reflexí v simplexu podle (6.1). Samozřejmě je však možné ke generování bodu y užít i jinou heuristiku, jak už bylo zmíněno v kapitole o algoritmu CRS, např. znáhodněnou reflexi podle (6.2). Bod y lze však generovat jakoukoli jinou heuristikou. Odtud už je jen krůček k užítí více heuristik v rámci jednoho algorimu a tyto heuristiky střídat. A pokud v tomto střídání heuristik budou preferovány ty, které byly v dosavadním průběhu hledání úspěšnější, je naděje, že algoritmus bude konvergovat rychleji. V takovém algoritmu heuristiky soutěží o to, aby byly vybrány pro generování nového bodu. Mějme tedy k dispozici h heuristik a v každém kroku ke generování nového bodu vybíráme náhodně i-tou heuristiku s pravděpodobností q i, i = 1, 2,..., h. Pravděpodobnosti q i měníme v závislosti na úspěšnosti i-té heuristiky v průběhu vyhledávacího procesu. Heuristiku považujeme za úspěšnou, když generuje nový bod y takový, že f(y) < f(x max )). Různým hodnocením této úspěšnosti dostaneme různé varianty algoritmu se soutěžícími heuristikami. 56

57 Pokud n i je dosavadní počet úspěchů i-té heuristiky, pravděpodobnost q i je úměrná tomuto počtu úspěchů q i = n i + n 0 h j=1 (n j + n 0 ), (12.1) kde n 0 > 0 je vstupní parametr algoritmu. Nastavením n 0 1 zabezpečíme, že jeden náhodný úspěch heuristiky nevyvolá příliš velkou změnu v hodnotě q i. Algoritmus užívající k hodnocení úspěšnosti heuristik (12.1) je jednou z možných variant. Jinou možností, jak ohodnotit úspěšnost heuristiky, je vážit úspěšnost relativní změnou v hodnotě funkce. Váha w i se určí jako w i = f max max(f(y), f min ) f max f min. (12.2) Hodnoty w i jsou v intervalu (0, 1) a pravděpodobnost q i se pak vyhodnotí jako W i + w 0 q i = h j=1 (W j + w 0 ), (12.3) kde W i je součet vah w i v předcházejícím hledání a w 0 > 0 je vstupní parametr algoritmu. Aby se zabránilo potlačení možnosti výběru některé z heuristik, lze zadat vstupní parametr δ a klesne-li kterákoli hodnota q i pod hodnotu δ, jsou pravděpodobnosti výběru heuristik nastaveny na jejich počáteční hodnoty q i = 1/h. Další prostor pro tvorbu různých variant algoritmu je volba heuristik, které spolu budou soutěžit. Příkladem heuristik jsou reflexe a znáhodněná reflexe v simplexu popsané v kapitole o algortimu CRS. Jiný příkladem jsou heuristiky vycházející z diferenciální evoluce, kdy bod u se generuje jako v diferecíální evoluci a nový vektor y vznikne křížením vektoru u a náhodně vybraného vektoru x. Heuristiky inspirované evoluční strategií generují nový bod y podle následujícího pravidla y i = x i + Y, i = 1, 2,..., d, kde x i je i-tá souřadnice náhodně vybraného bodu x z populace a Y je náhodná veličina, Y N(0, σi 2 ). Zatímco v evoluční strategii je hodnota parametru σi 2 adaptována v průběhu procesu vyhledávání podle tzv. pravidla 1/5 úspěchu, zde může být aktuální hodnota tohoto parametru odvozována z aktuální populace. Např. v heuristice es-pop je hodnota směrodatné odchylky σ i určována z celé populace jako σ i = k(max x P x i min x P x i) + ε, i = 1, 2,..., d, operátory max, min znamenají největší, resp. nejmenší hodnotu i-té souřadnice v aktuální populaci P, ε > 0 (v implementaci můžete užít např. 57

58 ε = ) zabezpečuje, že hodnota σ i je kladná, k je vstupní řídící parametr heuristiky, k > 0. V heuristice es-2pts je směrodatná odchylka σ i určována ze dvou náhodně vybraných bodů r, s σ i = k r i s i + ε, i = 1, 2,..., d, k je opět vstupní parametr heuristiky, ostatní symboly mají stejný význam jako výše. Heuristikou může být samozřejmě také náhodné generování bodu y ze spojitého rovnoměrného rozdělení na D, které se užívá ve slepém náhodném prohledávání. První varianta evolučního algoritmu se soutěžícími heuristikami byla publikována v práci [30], v práci [31] je podrobnější analýza tohto algoritmu. Výsledky ukázaly, že pro sestavení vhodné sady heuristik pro soutěž je užitečné znát vlastnosti jednotlivých heuristik a jejich role v procesu hledání. Zajímavé je, že evoluční algoritmus se soutěžícími heuristikami může být konvergentní, i když v něm není zahrnuta explicitně mutace (p mut = 0). To znamená, že konvergentní může být i Algoritmus 1, uvedený na začátku této kapitoly. Z výsledků [21] vyplývá, že takový evoluční algoritmus se soutěžícími heuristikami je konvergentní, když (a) mezi soutěžícími heuristikami je alespoň jedna heuristika zaručující kladnou pravděpodobnost vygenerování nového bodu y S, kde S je libovolná otevřená podmnožina D mající Lebesgueovu míru λ(s) > 0. (b) pravděpodobnosti výběru takové heuristiky q k v každém z k kroků hledání tvoří divergentní řadu ( k=1 q k = ). (c) nejlepší bod staré populace vždy přechází do nové populace (tzv. elitismus). Podmínku (a) lze zabezpečit zařazením heuristiky, která náhodně generuje bod y ze spojitého rozdělení, jehož sdružená hustota f y (y) > 0 pro y D. Této podmínce vyhovuje např. rovnoměrné rozdělení užívané ve slepém náhodném prohledávání. Podmínky (b) a (c) jsou zajištěny volbou vstupních parametrů algoritmu, tj. u evolučního prohledávání M 1 (u algoritmu CRS je podmínka (b) splněna automaticky) a kladné limitní hodnoty δ pro změnu dosažených hodnot pravděpodobnosti výběru soutěžících heuristik na počáteční hodnoty v průběhu vyhledávacího procesu. Pro usnadnění vaší implementace algoritmů se soutěžícími heuristikami v Matlabu následuje text dvou funkcí, které můžete využít. První z funkcí (ruleta) generuje kladná celá čísla od 1 do length(cutpoints), každé z nich s pravděpodobností úměrnou hodnotě příslušného prvku vektoru cutpoints. Druhá funkce je pro generování nového bodu heuristikou es-pop. Kromě toho je ještě přidán výsek textu funkce, ve kterém je zapsán výběr heuristik podle četnosti jejich dosavadní úspěšnosti. 58

59 function [res, p_min]=ruleta(cutpoints) % returns an integer from [1, length(cutpoints)] % with probability proportional % to cutpoints(i)/ summa cutpoints h =length(cutpoints); ss=sum(cutpoints); p_min=min(cutpoints)/ss; cp(1)=cutpoints(1); for i=2:h cp(i)=cp(i-1)+cutpoints(i); end cp=cp/ss; res=1+fix(sum(cp<rand(1))); % random point from P is mutated by random normal, % standard deviations taken from actual population % k is a coefficient for deriving % standard deviation (sigma) from range function y=es_pop(p,k); N=length(P(:,1)); d=length(p(1,:))-1; x=p(1+fix(n*rand(1)),1:d); % random point of P xmax=max(p(:,1:d)); xmin=min(p(:,1:d)); min_diff=1e-4; % min. value of sigma sigma=(xmax-xmin)*k+min_diff;; y=x+sigma.*randn(1,d); 59

60 ... while (fmax-fmin > my_eps)&(func_evals < d*max_evals) %main loop [hh p_min]=roulete(ni); if p_min<delta cni=cni+ni-n0; ni=zeros(1,h)+n0; nrst=nrst+1; end %reset switch hh % random number of heuristic case 1 y=es_pop(p,0.5); case 2 y=refl_rw(p,2); case 3 y=refl_rw(p,4); case 4 y=refl_fw(p,1); case 5 y=refl_rwd(p,[2 0.5]); case 6 y=refl_rwd(p,[4 0.5]); case 7 y=decrs_rnd(p,[ ]); case 8 y=decrs_radp(p,[ fmin fmax]); end y=zrcad(y,a,b); % perturbation fy=feval(fn_name,y); func_evals=func_evals+1; if fy < fmax % trial point y is good P(indmax,:)= [y fy]; success=success+1; ni(hh)=ni(hh)+1; % zmena prsti qi [fmax, indmax]=max(p(:,d+1)); [fmin, indmin]=min(p(:,d+1)); end end % main loop - end... 60

61 Shrnutí Soutěž heuristik v algoritmu CRS, pravidla pro posuzování dosavadní úspěšnosti Soutěž heuristik v algoritmu evolučního prohledávání Podmínky konvergence algoritmu Kontrolní otázky 1. Co rozumíme pojmem heuristika v algoritmech se soutěží heuristik? 2. V čem se liší pravděpodobnosti výběru heuristiky podle vztahu (12.1) a (12.3)? 3. Jakou kombinaci heuristik navrhnete, aby algoritmus splňoval podmínku konvergence? Korespondenční úloha Naprogramujte v Matlabu algoritmus CRS se soutěží nejméně tří vámi zvolených heuristik a porovnejte je alespoň na dvou testovacích funkcích (viz kap. 13) s algoritmy CRS, ve kterých je každá z heuristik užita sama. Pošlete stručnou zprávu o výsledcích testů a m soubory obsahující ověřovaný algoritmus se soutěžícími heuristikami. 61

62 13 Experimentální ověřování a porovnávání algoritmů Průvodce studiem V této kapitole je uvedeno několik funkcí, které se užívají v testování stochastických algoritmů pro globální optimalizaci. Z nich si vyberte testovací funkce pro vaše experimenty. Druhá část kapitoly se zabývá testováním stochastických algoritmů. K orientaci v této kapitole budete potřebovat asi dvě až tři hodiny Testovací funkce K testování stochastických algoritmů pro globální optimalizaci se užívá celá řada funkcí, u kterých je známé správné řešení, tj. globální minimum (většinou lze najít analyticky). Zde uvádíme několik funkcí, které můžeme užít při experimentální testování vámi implementovaných algoritmů. Další testovací funkce naleznete např. v [1, 2, 27, 37] nebo na Internetu. První De Jongova funkce je jednoduchý rotační paraboloid f(x) = d x 2 i, i=1 při experimentech prohledávaný prostor pro d = 3 je obvykle vymezen podmínkou x i [ 5.12, 5.12]. Je to jednomodální funkce, globální minimum je x = (0, 0, 0), f(x ) = 0. Je považována za velmi snadnou úlohu globální optimalizace, pokud algoritmus selhává nebo pomalu konverguje v této úloze, tak nezaslouží další pozornosti. Graf této funkce pro d = 2 je na následujícím obrázku. 62

63 Druhá De Jongova funkce (Rosenbrockovo sedlo, známá i pod názvem banánové údolí) je definována takto d 1 [ f(x) = 100(x 2 i x i+1 ) 2 + (1 x i ) 2], i=1 prohledávaný prostor je obvykle vymezen podmínkou x i [ 2.048, 2.048], globální minimum je x = (1, 1,... 1), f(x ) = 0, obvykle v testech užívané dimenze jsou d = 2, d = 10 a d = 30. Ač je to jednomodální funkce, nalezení minima iteračními algoritmy není jednoduchá úloha, neboť minimum leží v zahnutém údolí s velmi malým spádem a některé algoritmy končí prohledávání předčasně. Graf této funkce pro d = 2 je na následujícím obrázku. Ackleyho funkce je f(x) = 20 exp d d i=1 x 2 i exp ( 1 d d cos 2πx i )+20+exp(1), i=1 x i [ 30, 30], x = (0, 0,... 0), f(x ) = 0, v testech užívané dimenze d = 2, d = 10 a d = 30. Je to multimodální funkce s mnoha lokálními minimy, středně obtížná. Graf této funkce pro d = 2, x i [ 3, 3], je na následujícím obrázku. 63

64 Griewangkova funkce, f(x) = d i=1 2 x i d 4000 i=1 ( ) xi cos + 1, i x i [ 400, 400], x = (0, 0,... 0), f(x ) = 0, v testech užívané dimenze d = 2 a d = 10. Nalezení minima této multimodální funkce je považováno za obtížnou úlohu globální optimalizace. Graf této funkce pro d = 2, x i [0, 15], je na následujícím obrázku. Rastriginova funkce f(x) = 10d + d [x 2 i 10 cos(2πx i )] i=1 x i [ 5.12, 5.12], x = (0, 0,... 0), f(x ) = 0, v testech nejčastěji užívaná dimenze je d = 5. Nalezení minima této multimodální funkce je považováno za obtížnou úlohu globální optimalizace. Graf této funkce pro d = 2 je na následujícím obrázku. 64

65 Schwefelova funkce f(x) = d x i sin( x i ), i=1 x i [ 500, 500], x = (s, s,... s), s = , f(x ) = d, v testech užívaná dimenze d = 10. Nalezení minima této multimodální funkce je považováno za středně obtížnou úlohu globální optimalizace. Graf této funkce pro d = 2 je na následujícím obrázku. Implementace těchto testovacích funkcí je v Matlabu velmi jednoduchá, jak vidíte v nasledujících zdrojových textech algoritmů. 65

UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY EVOLUČNÍ ALGORITMY. Josef Tvrdík. Opraveno a upraveno, únor 2010

UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY EVOLUČNÍ ALGORITMY. Josef Tvrdík. Opraveno a upraveno, únor 2010 UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY Přírodovědecká fakulta EVOLUČNÍ ALGORITMY Josef Tvrdík Opraveno a upraveno, únor 2010 OSTRAVSKÁ UNIVERZITA 2010 Obsah 1 Úvod 3 2 Problém globální optimalizace 4 2.1 Formulace

Více

Stochastické algoritmy pro globální optimalizaci

Stochastické algoritmy pro globální optimalizaci Stochastické algoritmy pro globální optimalizaci Josef Tvrdík ČÍSLO OPERAČNÍHO PROGRAMU: CZ.1.07 NÁZEV OPERAČNÍHO PROGRAMU: OP VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST PRIORITNÍ OSA: 2 ČÍSLO OBLASTI PODPORY:

Více

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných jakési nádoby na hodnoty jsou různých typů při běžné

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není realmax maximální použitelné reálné kladné číslo realmin minimální použitelné reálné kladné číslo (v absolutní hodnotě, tj. číslo nejblíž k nule které lze použít) 0 pi Ludolfovo číslo π = 3,14159 e Eulerovo

Více

KTE / PPEL Počítačová podpora v elektrotechnice

KTE / PPEL Počítačová podpora v elektrotechnice KTE / PPEL Počítačová podpora v elektrotechnice Ing. Lenka Šroubová, Ph.D. email: lsroubov@kte.zcu.cz http://home.zcu.cz/~lsroubov 3. 10. 2012 Základy práce s výpočetními systémy opakování a pokračování

Více

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi Evoluční algoritmy Použítí evoluční principů, založených na metodách optimalizace funkcí a umělé inteligenci, pro hledání řešení nějaké úlohy. Populace množina jedinců, potenciálních řešení Fitness function

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

Stručný návod k programu Octave

Stručný návod k programu Octave Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,

Více

X37SGS Signály a systémy

X37SGS Signály a systémy X7SGS Signály a systémy Matlab minihelp (poslední změna: 0. září 2008) 1 Základní maticové operace Vytvoření matice (vektoru) a výběr konkrétního prvku matice vytvoření matice (vektoru) oddělovač sloupců

Více

OBJEKTOVÁ KNIHOVNA EVOLUČNÍCH ALGORITMŮ

OBJEKTOVÁ KNIHOVNA EVOLUČNÍCH ALGORITMŮ OBJEKTOVÁ KNIHOVNA EVOLUČNÍCH ALGORITMŮ David Bražina, Hashim Habiballa, Viktor Pavliska Katedra informatiky a počítačů, PřF OU, 30. dubna 22, Ostrava 1 Ústav pro výzkum a aplikace fuzzy modelování, OU,

Více

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění Jan Klíma Obsah Motivace & cíle práce Evoluční algoritmy Náhradní modelování Stromové regresní metody Implementace a výsledky

Více

1. Úvod do genetických algoritmů (GA)

1. Úvod do genetických algoritmů (GA) Obsah 1. Úvod do genetických algoritmů (GA)... 2 1.1 Základní informace... 2 1.2 Výstupy z učení... 2 1.3 Základní pomy genetických algoritmů... 2 1.3.1 Úvod... 2 1.3.2 Základní pomy... 2 1.3.3 Operátor

Více

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004 Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2 * násobení maticové Pro čísla platí: Pro matice - násobení inverzní maticí inv inverzní matice A -1 k dané matici A je taková matice, která po vynásobení s původní maticí dá jednotkovou matici. Inverzní

Více

KTE / PPEL Počítačová podpora v elektrotechnice

KTE / PPEL Počítačová podpora v elektrotechnice 24. 9. 2014 KTE / PPEL Počítačová podpora v elektrotechnice Ing. Lenka Šroubová, Ph.D. email: lsroubov@kte.zcu.cz ICQ: 361057825 http://home.zcu.cz/~lsroubov tel.: +420 377 634 623 Místnost: EK602 Katedra

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Příklady v MATLABu Přednáška 10 30. listopadu 2009 Řídící instrukce if else C Matlab if ( podmínka ) { } else { } Podmíněný příkaz if podmínka elseif podmínka2... else

Více

Heuristiky UNIVERZITA PALACKÉHO V OLOMOUCI KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY. Vypracovala:

Heuristiky UNIVERZITA PALACKÉHO V OLOMOUCI KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY. Vypracovala: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY BAKALÁŘSKÁ PRÁCE Heuristiky Vedoucí bakalářské práce: Mgr. Jaroslav Marek, Ph.D. Rok odevzdání:

Více

Pracovní text a úkoly ke cvičením MF002

Pracovní text a úkoly ke cvičením MF002 Pracovní text a úkoly ke cvičením MF002 Ondřej Pokora, PřF MU, Brno 11. března 2013 1 Brownův pohyb (Wienerův proces) Základním stavebním kamenem simulací náhodných procesů popsaných pomocí stochastických

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu

while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu podmínka je libovolný logický výraz s logickou hodnotou

Více

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

Více

Markov Chain Monte Carlo. Jan Kracík.

Markov Chain Monte Carlo. Jan Kracík. Markov Chain Monte Carlo Jan Kracík jan.kracik@vsb.cz Princip Monte Carlo integrace Cílem je (přibližný) výpočet integrálu I(g) = E f [g(x)] = g(x)f (x)dx. (1) Umíme-li generovat nezávislé vzorky x (1),

Více

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování) Řídící příkazy: if podmíněný příkaz switch přepínač for while cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování) if logický_výraz příkaz; příkaz; příkaz; Podmínka

Více

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu Vytěžování dat, cvičení 1: Úvod do Matlabu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Fakulta elektrotechnická, ČVUT 1 / 24 Úvod do Matlabu Proč proboha Matlab? Matlab je SW pro

Více

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN:

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN: http://portal.zcu.cz > Portál ZČU > Courseware (sem lze i přímo: http://courseware.zcu.cz) > Předměty po fakultách > Fakulta elektrotechnická > Katedra teoretické elektrotechniky > PPEL Doňar B., Zaplatílek

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

Seminář z MATLABU. Jiří Krejsa. A2/710 krejsa@fme.vutbr.cz

Seminář z MATLABU. Jiří Krejsa. A2/710 krejsa@fme.vutbr.cz Seminář z MATLABU Jiří Krejsa A2/710 krejsa@fme.vutbr.cz Obsah kurzu Posluchači se seznámí se základy systému Matlab, vědeckotechnickými výpočty, programováním v Matlabu včetně pokročilých technik, vizualizací

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

Genetické algoritmy. Informační a komunikační technologie ve zdravotnictví

Genetické algoritmy. Informační a komunikační technologie ve zdravotnictví Genetické algoritmy Informační a komunikační technologie ve zdravotnictví Přehled přednášky Úvod Historie Základní pojmy Principy genetických algoritmů Možnosti použití Související metody AI Příklad problém

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina. 11MAMY LS 2017/2018 Cvičení č. 2: 21. 2. 2018 Úvod do Matlabu. Jan Přikryl 21. února 2018 Po skupinách, na které jste se doufám rozdělili samostatně včera, vyřešte tak, jak nejlépe svedete, níže uvedená

Více

5. Lokální, vázané a globální extrémy

5. Lokální, vázané a globální extrémy 5 Lokální, vázané a globální extrémy Studijní text Lokální extrémy 5 Lokální, vázané a globální extrémy Definice 51 Řekneme, že f : R n R má v bodě a Df: 1 lokální maximum, když Ka, δ Df tak, že x Ka,

Více

Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe.

Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe. 4 Afinita Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe. Poznámka. Vzájemně jednoznačným zobrazením rozumíme zobrazení,

Více

Obr. P1.1 Zadání úlohy v MS Excel

Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel. Výpočet budeme demonstrovat

Více

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

Úvod do optimalizace, metody hladké optimalizace

Úvod do optimalizace, metody hladké optimalizace Evropský sociální fond Investujeme do vaší budoucnosti Úvod do optimalizace, metody hladké optimalizace Matematika pro informatiky, FIT ČVUT Martin Holeňa, 13. týden LS 2010/2011 O čem to bude? Příklady

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans = '.' - transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' 1 4 2 5 3-6 {} - uzavírají (obklopují) struktury (složené proměnné) - v případě

Více

Operace s vektory a maticemi + Funkce

Operace s vektory a maticemi + Funkce + Funkce 9. března 2010 Operátory Operátory Aritmetické: Operátory Operátory Aritmetické: maticové + (sčítání), (odčítání), (násobení), / (dělení matematicky je maticové delení násobení inverzní maticí),

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Jak se matematika poučila v biologii

Jak se matematika poučila v biologii Jak se matematika poučila v biologii René Kalus IT4Innovations, VŠB TUO Role matematiky v (nejen) přírodních vědách Matematika inspirující a sloužící jazyk pro komunikaci s přírodou V 4 3 r 3 Matematika

Více

Úloha - rozpoznávání číslic

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.

Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Jednoduché cykly Tento oddíl obsahuje úlohy na první procvičení práce s cykly. Při řešení každé ze zde uvedených úloh stačí použít vedle podmíněných příkazů jen jediný cyklus. Nepotřebujeme používat ani

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

AVDAT Nelineární regresní model

AVDAT Nelineární regresní model AVDAT Nelineární regresní model Josef Tvrdík Katedra informatiky Přírodovědecká fakulta Ostravská univerzita Nelineární regresní model Ey i = f (x i, β) kde x i je k-členný vektor vysvětlujících proměnných

Více

OPTIMALIZACE. (přehled metod)

OPTIMALIZACE. (přehled metod) OPTIMALIZACE (přehled metod) Typy optimalizačních úloh Optimalizace bez omezení Nederivační metody Derivační metody Optimalizace s omezeními Lineární programování Nelineární programování Globální optimalizace

Více

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel 2007. Výpočet budeme demonstrovat

Více

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu http://akademie.ldf.mendelu.cz/cz (reg. č. CZ.1.07/2.2.00/28.

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu http://akademie.ldf.mendelu.cz/cz (reg. č. CZ.1.07/2.2.00/28. Základy lineárního programování Vyšší matematika, Inženýrská matematika LDF MENDELU Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem

Více

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

ADAPTIVNÍ ALGORITMUS PRO ODHAD PARAMETRŮ NELINEÁRNÍCH REGRESNÍCH MODELŮ

ADAPTIVNÍ ALGORITMUS PRO ODHAD PARAMETRŮ NELINEÁRNÍCH REGRESNÍCH MODELŮ ADAPTIVNÍ ALGORITMUS PRO ODHAD PARAMETRŮ NELINEÁRNÍCH REGRESNÍCH MODELŮ Josef Tvrdík Katedra informatiky, Přírodovědecká fakulta, Ostravská univerzita, 30. dubna 22, 701 03 Ostrava e-mail: tvrdik@osu.cz

Více

Princip řešení soustavy rovnic

Princip řešení soustavy rovnic Princip řešení soustavy rovnic Tomáš Kroupa 20. května 2014 Tento studijní materiál je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. Obsah Formulace úlohy Metody řešení

Více

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2. Aproximace funkcí Aproximace je výpočet funkčních hodnot funkce z nějaké třídy funkcí, která je v určitém smyslu nejbližší funkci nebo datům, která chceme aproximovat. Třída funkcí, ze které volíme aproximace

Více

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25 Základy lineárního programování Vyšší matematika, Inženýrská matematika LDF MENDELU Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem

Více

Matematika pro informatiky

Matematika pro informatiky (FIT ČVUT v Praze) Konvexní analýza 13.týden 1 / 1 Matematika pro informatiky Jaroslav Milota Fakulta informačních technologíı České vysoké učení technické v Praze Letní semestr 2010/11 Extrémy funkce

Více

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Lukáš Havrlant Univerzita Palackého 10. ledna 2014 Primární zdroj Jiří Adámek: Foundations of Coding. Strany 137 160. Na webu ke stažení, heslo:

Více

Numerické metody a programování. Lekce 8

Numerické metody a programování. Lekce 8 Numerické metody a programování Lekce 8 Optimalizace hledáme bod x, ve kterém funkce jedné nebo více proměnných f x má minimum (maximum) maximalizace f x je totéž jako minimalizace f x Minimum funkce lokální:

Více

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení

Více

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2014

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2014 Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2014 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Lineární rovnice o 2 neznámých Definice 011 Lineární rovnice o dvou neznámých x, y je rovnice, která může být vyjádřena ve tvaru ax + by = c, kde

Více

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

Více

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo 0. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo (PEF PaA) Petr Gurka aktualizováno 9. prosince 202 Obsah Základní pojmy. Motivace.................................2 Aritmetický vektorový

Více

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: vzdělávací

Více

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

DUM 06 téma: Tvorba makra pomocí VBA

DUM 06 téma: Tvorba makra pomocí VBA DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie

Více

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní

Více

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

Více

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A VEKTORY Vektorem se rozumí množina všech orientovaných úseček, které mají stejnou velikost, směr a orientaci, což vidíme na obr. 1. Jedna konkrétní orientovaná úsečka se nazývá umístění vektoru na obr.

Více

Aplikovaná numerická matematika - ANM

Aplikovaná numerická matematika - ANM Aplikovaná numerická matematika - ANM 3 Řešení soustav lineárních rovnic iterační metody doc Ing Róbert Lórencz, CSc České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB 62 REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB BEZOUŠKA VLADISLAV Abstrakt: Text se zabývá jednoduchým řešením metody nejmenších čtverců v prostředí Matlab pro obecné víceparametrové aproximační funkce. Celý postup

Více

Hledání extrémů funkcí

Hledání extrémů funkcí Hledání extrémů funkcí Budeme se zabývat téměř výhradně hledáním minima. Přes nost nalezeného extrému Obecně není hledání extrému tak přesné jako řešení rovnic. Demonstrovat to můžeme na příkladu hledání

Více

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28. INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.0141 Báze vektorových prostorů, transformace souřadnic Michal Botur Přednáška

Více

4EK213 LINEÁRNÍ MODELY

4EK213 LINEÁRNÍ MODELY 4EK213 LINEÁRNÍ MODELY Úterý 11:00 12:30 hod. učebna SB 324 3. přednáška SIMPLEXOVÁ METODA I. OSNOVA PŘEDNÁŠKY Standardní tvar MM Základní věta LP Princip simplexové metody Výchozí řešení SM Zlepšení řešení

Více

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné

Více

POPISNÁ STATISTIKA Komentované řešení pomocí programu Statistica

POPISNÁ STATISTIKA Komentované řešení pomocí programu Statistica POPISNÁ STATISTIKA Komentované řešení pomocí programu Statistica Program Statistica I Statistica je velmi podobná Excelu. Na základní úrovni je to klikací program určený ke statistickému zpracování dat.

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Práce s maticemi Přednáška 9 23. listopadu 2009 Pole: vektory a matice Vektor (jednorozměrné pole) deklarace statická int v1[5]; dynamická int * v2; + přidělení paměti:

Více

Evoluční výpočetní techniky (EVT)

Evoluční výpočetní techniky (EVT) Evoluční výpočetní techniky (EVT) - Nacházejí svoji inspiraci v přírodních vývojových procesech - Stejně jako přírodní jevy mají silnou náhodnou složku, která nezanedbatelným způsobem ovlivňuje jejich

Více

Programy na PODMÍNĚNÝ příkaz IF a CASE

Programy na PODMÍNĚNÝ příkaz IF a CASE Vstupy a výstupy budou vždy upraveny tak, aby bylo zřejmé, co zadáváme a co se zobrazuje. Není-li určeno, zadáváme přirozená čísla. Je-li to možné, používej generátor náhodných čísel vysvětli, co a jak

Více

Příklad elektrický obvod se stejnosměrným zdrojem napětí

Příklad elektrický obvod se stejnosměrným zdrojem napětí Příklad elektrický obvod se stejnosměrným zdrojem napětí Určete proudy 18, 23, 4, 5, 67 v obvodu na obr., je-li dáno: 1 = 1 Ω, 2 = 2 Ω, 3 = 3 Ω, 4 = 5 Ω, 5 = 3 Ω, 6 = 2 Ω, 7 = 4 Ω, 8 = 4,5 Ω, U = 6 V.

Více

Numerické metody optimalizace - úvod

Numerické metody optimalizace - úvod Numerické metody optimalizace - úvod Petr Tichý 16. února 2015 1 Organizace přednášek a cvičení 13 přednášek a cvičení. Zápočet: úloha programování a testování úloh v Matlabu. Další informace na blogu

Více

Navrženy v 60. letech jako experimentální optimalizační metoda. Velice rychlá s dobrou podporou teorie

Navrženy v 60. letech jako experimentální optimalizační metoda. Velice rychlá s dobrou podporou teorie Evoluční strategie Navrženy v 60. letech jako experimentální optimalizační metoda Založena na reálných číslech Velice rychlá s dobrou podporou teorie Jako první zavedla self-adaptation (úpravu sebe sama)

Více

8 Střední hodnota a rozptyl

8 Střední hodnota a rozptyl Břetislav Fajmon, UMAT FEKT, VUT Brno Této přednášce odpovídá kapitola 10 ze skript [1]. Také je k dispozici sbírka úloh [2], kde si můžete procvičit příklady z kapitol 2, 3 a 4. K samostatnému procvičení

Více

1 Soustavy lineárních rovnic

1 Soustavy lineárních rovnic 1 Soustavy lineárních rovnic 1.1 Základní pojmy Budeme uvažovat soustavu m lineárních rovnic o n neznámých s koeficienty z tělesa T (potom hovoříme o soustavě m lineárních rovnic o n neznámých nad tělesem

Více

Lekce 01 Úvod do algoritmizace

Lekce 01 Úvod do algoritmizace Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním

Více

Popis zobrazení pomocí fuzzy logiky

Popis zobrazení pomocí fuzzy logiky Popis zobrazení pomocí fuzzy logiky diplomová práce Ján Fröhlich KM, FJFI, ČVUT 23. dubna 2009 Ján Fröhlich ( KM, FJFI, ČVUT ) Popis zobrazení pomocí fuzzy logiky 23. dubna 2009 1 / 25 Obsah 1 Úvod Základy

Více

Zdrojem většiny příkladů je sbírka úloh 1. cvičení ( ) 2. cvičení ( )

Zdrojem většiny příkladů je sbírka úloh   1. cvičení ( ) 2. cvičení ( ) Příklady řešené na cvičení LA II - LS 1/13 Zdrojem většiny příkladů je sbírka úloh http://kam.mff.cuni.cz/~sbirka/ 1. cvičení (..13) 1. Rozhodněte, které z následujících operací jsou skalárním součinem

Více

1 Řešení soustav lineárních rovnic

1 Řešení soustav lineárních rovnic 1 Řešení soustav lineárních rovnic 1.1 Lineární rovnice Lineární rovnicí o n neznámých x 1,x 2,..., x n s reálnými koeficienty rozumíme rovnici ve tvaru a 1 x 1 + a 2 x 2 +... + a n x n = b, (1) kde koeficienty

Více

Základy programování: Algoritmizace v systému MATLAB

Základy programování: Algoritmizace v systému MATLAB Základy programování: Algoritmizace v systému MATLAB Magda Francová magda.francova@ujep.cz CN 463 23. února 2010 Úvodní hodina Podmínky pro zápočet 80% účast na hodinách (můžete 3x chybět). Úvodní hodina

Více