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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

2 Zpracování naměřených dat. 2.1 Gaussův zákon chyb. 2.2 Náhodná veličina a její rozdělení

2 Zpracování naměřených dat. 2.1 Gaussův zákon chyb. 2.2 Náhodná veličina a její rozdělení 2 Zpracování naměřených dat Důležitou součástí každé experimentální práce je statistické zpracování naměřených dat. V této krátké kapitole se budeme věnovat určení intervalů spolehlivosti získaných výsledků

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

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

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

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

e-mail: RadkaZahradnikova@seznam.cz 1. července 2010

e-mail: RadkaZahradnikova@seznam.cz 1. července 2010 Optimální výrobní program Radka Zahradníková e-mail: RadkaZahradnikova@seznam.cz 1. července 2010 Obsah 1 Lineární programování 2 Simplexová metoda 3 Grafická metoda 4 Optimální výrobní program Řešení

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

Simulace. Simulace dat. Parametry

Simulace. Simulace dat. Parametry Simulace Simulace dat Menu: QCExpert Simulace Simulace dat Tento modul je určen pro generování pseudonáhodných dat s danými statistickými vlastnostmi. Nabízí čtyři typy rozdělení: normální, logaritmicko-normální,

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní

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

Souhrnné výsledky za školu

Souhrnné výsledky za školu XYZ třída počet žáků percentil skupinový percentil (G4) čistá úspěšnost skóre směrodatná odchylka skóre x geometrie funkce algebra třída počet žáků percentil skupinový percentil (G4) čistá úspěšnost skóre

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Modul Řešitel (v anglické verzi Solver) je určen pro řešení lineárních i nelineárních úloh matematického programování. Pro ilustraci

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

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

Více

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu 1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu

Více

ANTAGONISTICKE HRY 172

ANTAGONISTICKE HRY 172 5 ANTAGONISTICKÉ HRY 172 Antagonistický konflikt je rozhodovací situace, v níž vystupují dva inteligentní rozhodovatelé, kteří se po volbě svých rozhodnutí rozdělí o pevnou částku, jejíž výše nezávisí

Více

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) 1 Obecný popis metody Particle Image Velocimetry, nebo-li zkráceně PIV, je měřící

Více

VYUŽITÍ MATLABU PRO VÝUKU NUMERICKÉ MATEMATIKY Josef Daněk Centrum aplikované matematiky, Západočeská univerzita v Plzni. Abstrakt

VYUŽITÍ MATLABU PRO VÝUKU NUMERICKÉ MATEMATIKY Josef Daněk Centrum aplikované matematiky, Západočeská univerzita v Plzni. Abstrakt VYUŽITÍ MATLABU PRO VÝUKU NUMERICKÉ MATEMATIKY Josef Daněk Centrum aplikované matematiky, Západočeská univerzita v Plzni Abstrakt Současný trend snižování počtu kontaktních hodin ve výuce nutí vyučující

Více

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují 1. u + v = v + u, u, v V 2. (u + v) + w = u + (v + w),

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

UNIVERZITA OBRANY Fakulta ekonomiky a managementu. Aplikace STAT1. Výsledek řešení projektu PRO HORR2011 a PRO GRAM2011 3. 11.

UNIVERZITA OBRANY Fakulta ekonomiky a managementu. Aplikace STAT1. Výsledek řešení projektu PRO HORR2011 a PRO GRAM2011 3. 11. UNIVERZITA OBRANY Fakulta ekonomiky a managementu Aplikace STAT1 Výsledek řešení projektu PRO HORR2011 a PRO GRAM2011 Jiří Neubauer, Marek Sedlačík, Oldřich Kříž 3. 11. 2012 Popis a návod k použití aplikace

Více

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44 Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251

Více

PHP tutoriál (základy PHP snadno a rychle)

PHP tutoriál (základy PHP snadno a rychle) PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve

Více

Mgr. Ladislav Zemánek Maturitní okruhy Matematika 2013-2014. 1. Obor reálných čísel

Mgr. Ladislav Zemánek Maturitní okruhy Matematika 2013-2014. 1. Obor reálných čísel Mgr. Ladislav Zemánek Maturitní okruhy Matematika 2013-2014 1. Obor reálných čísel - obor přirozených, celých, racionálních a reálných čísel - vlastnosti operací (sčítání, odčítání, násobení, dělení) -

Více

Kreslení grafů v Matlabu

Kreslení grafů v Matlabu Kreslení grafů v Matlabu Pavel Provinský 3. října 2013 Instrukce: Projděte si všechny příklady. Každý příklad se snažte pochopit. Pak vymyslete a naprogramujte příklad podobný. Tím se ujistíte, že příkladu

Více

MATLAB Úvod. Úvod do Matlabu. Miloslav Čapek

MATLAB Úvod. Úvod do Matlabu. Miloslav Čapek MATLAB Úvod Úvod do Matlabu Miloslav Čapek Proč se na FELu učit Matlab? Matlab je světový standard pro výuku v technických oborech využívá ho více než 3500 univerzit licence vlastní tisíce velkých firem

Více

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu } 5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu

Více

Operační výzkum. Teorie her. Hra v normálním tvaru. Optimální strategie. Maticové hry.

Operační výzkum. Teorie her. Hra v normálním tvaru. Optimální strategie. Maticové hry. Operační výzkum Hra v normálním tvaru. Optimální strategie. Maticové hry. Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky

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

Neuronové časové řady (ANN-TS)

Neuronové časové řady (ANN-TS) Neuronové časové řady (ANN-TS) Menu: QCExpert Prediktivní metody Neuronové časové řady Tento modul (Artificial Neural Network Time Series ANN-TS) využívá modelovacího potenciálu neuronové sítě k predikci

Více

Standardní algoritmy vyhledávací.

Standardní algoritmy vyhledávací. Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární

Více

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

Pravděpodobnost v závislosti na proměnné x je zde modelován pomocí logistického modelu. exp x. x x x. log 1

Pravděpodobnost v závislosti na proměnné x je zde modelován pomocí logistického modelu. exp x. x x x. log 1 Logistická regrese Menu: QCExpert Regrese Logistická Modul Logistická regrese umožňuje analýzu dat, kdy odezva je binární, nebo frekvenční veličina vyjádřená hodnotami 0 nebo 1, případně poměry v intervalu

Více

Dotazy tvorba nových polí (vypočítané pole)

Dotazy tvorba nových polí (vypočítané pole) Téma 2.4 Dotazy tvorba nových polí (vypočítané pole) Pomocí dotazu lze také vytvářet nová pole, která mají vazbu na již existující pole v databázi. Vznikne tedy nový sloupec, který se počítá podle vzorce.

Více

Informatika 8. třída/6

Informatika 8. třída/6 Rekurze Jedním z důležitých principů pro návrh procedur je tzv. rekurze. Nejlépe uvidíme tento princip na příkladech dvou velmi jednoduchých procedur (hvězdička označuje násobení). Rekurze vlastně označuje

Více

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3 Obsah Obsah 1 Program přednášek 1 2 Podmínky zápočtu 2 3 Co je algoritmus? 2 3.1 Trocha historie............................ 2 3.2 Definice algoritmu.......................... 3 3.3 Vlastnosti algoritmu.........................

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ

DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast CZ.1.07/1.5.00/34.0963 IV/2 Inovace a zkvalitnění výuky směřující k rozvoji matematické gramotnosti

Více

Obecná rovnice kvadratické funkce : y = ax 2 + bx + c Pokud není uvedeno jinak, tak definičním oborem řešených funkcí je množina reálných čísel.

Obecná rovnice kvadratické funkce : y = ax 2 + bx + c Pokud není uvedeno jinak, tak definičním oborem řešených funkcí je množina reálných čísel. 5. Funkce 9. ročník 5. Funkce ZOPAKUJTE SI : 8. ROČNÍK KAPITOLA. Funkce. 5.. Kvadratická funkce Obecná rovnice kvadratické funkce : y = ax + bx + c Pokud není uvedeno jinak, tak definičním oborem řešených

Více

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace. Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy MQL4 COURSE By Coders guru www.forex-tsd.com -4 Operace & Výrazy Vítejte ve čtvrté lekci mého kurzu MQL4. Předchozí lekce Datové Typy prezentovaly mnoho nových konceptů ; Doufám, že jste všemu porozuměli,

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Vyhledávání, vkládání, odstraňování Vyhledání hodnoty v nesetříděném poli Vyhledání hodnoty v setříděném poli Odstranění hodnoty z pole Vkládání hodnoty do pole Verze pro akademický

Více

Předmluva 11 Typografická konvence použitá v knize 12. 1 Úvod do Excelu 2003 13

Předmluva 11 Typografická konvence použitá v knize 12. 1 Úvod do Excelu 2003 13 Předmluva 11 Typografická konvence použitá v knize 12 1 Úvod do Excelu 2003 13 Spuštění a ukončení Excelu 14 Spuštění Excelu 14 Ukončení práce s Excelem 15 Přepínání mezi otevřenými sešity 16 Oprava aplikace

Více

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu Jméno: Marek Handl Datum: 4. 2. 2009 Cvičení: Pondělí 9:00 Zadání Zvolte si heuristiku,

Více

Programování v jazyku LOGO - úvod

Programování v jazyku LOGO - úvod Programování v jazyku LOGO - úvod Programovací jazyk LOGO je určen pro výuku algoritmizace především pro děti školou povinné. Programovací jazyk pracuje v grafickém prostředí, přičemž jednou z jeho podstatných

Více

DATABÁZE MS ACCESS 2010

DATABÁZE MS ACCESS 2010 DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,

Více

Statistika. Regresní a korelační analýza Úvod do problému. Roman Biskup

Statistika. Regresní a korelační analýza Úvod do problému. Roman Biskup Statistika Regresní a korelační analýza Úvod do problému Roman Biskup Jihočeská univerzita v Českých Budějovicích Ekonomická fakulta (Zemědělská fakulta) Katedra aplikované matematiky a informatiky 2008/2009

Více

Výsledky základní statistické charakteristiky

Výsledky základní statistické charakteristiky Výsledky základní statistické charakteristiky (viz - Vyhláška č. 343/00 Sb. o průběhu přijímacího řízení na vysokých školách a Vyhláška 76/004 Sb. kterou se mění vyhláška č. 343/00 Sb., o postupu a podmínkách

Více

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika FUNKCE 3 Autor: Mgr. Dana Kaprálová Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového

Více

Posloupnosti a jejich konvergence POSLOUPNOSTI

Posloupnosti a jejich konvergence POSLOUPNOSTI Posloupnosti a jejich konvergence Pojem konvergence je velmi důležitý pro nediskrétní matematiku. Je nezbytný všude, kde je potřeba aproximovat nějaké hodnoty, řešit rovnice přibližně, používat derivace,

Více

Maturitní témata profilová část

Maturitní témata profilová část Seznam témat Výroková logika, úsudky a operace s množinami Základní pojmy výrokové logiky, logické spojky a kvantifikátory, složené výroky (konjunkce, disjunkce, implikace, ekvivalence), pravdivostní tabulky,

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

7. přednáška Systémová analýza a modelování. Přiřazovací problém

7. přednáška Systémová analýza a modelování. Přiřazovací problém Přiřazovací problém Přiřazovací problémy jsou podtřídou logistických úloh, kde lze obecně říci, že m dodavatelů zásobuje m spotřebitelů. Dalším specifikem je, že kapacity dodavatelů (ai) i požadavky spotřebitelů

Více

Vzdělávací oblast: Matematika a její aplikace Vzdělávací obor: Matematický kroužek pro nadané žáky ročník 9.

Vzdělávací oblast: Matematika a její aplikace Vzdělávací obor: Matematický kroužek pro nadané žáky ročník 9. Vzdělávací oblast: Matematika a její aplikace Vzdělávací obor: Matematický kroužek pro nadané žáky ročník 9. Školní rok 2013/2014 Mgr. Lenka Mateová Kapitola Téma (Učivo) Znalosti a dovednosti (výstup)

Více

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika.

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika. 4.8.3. Cvičení z matematiky Předmět Cvičení z matematiky je vyučován v sextě a v septimě jako volitelný předmět. Vzdělávací obsah vyučovacího předmětu Cvičení z matematiky vychází ze vzdělávací oblasti

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_33_05 Škola Střední průmyslová škola Zlín Název projektu, reg. č. Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávací oblast Vzdělávání v informačních a komunikačních

Více

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 WSH Windows Script Hosting OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 Co je skript? Skriptování nástroj pro správu systému a automatizaci úloh Umožňuje psát skripty jednoduché interpretované programové

Více

Program a životní cyklus programu

Program a životní cyklus programu Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy

Více

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu Jméno: Marek Handl Datum: 3. 2. 29 Cvičení: Pondělí 9: Zadání Prozkoumejte citlivost metod

Více

Matematika. ochrana životního prostředí analytická chemie chemická technologie Forma vzdělávání:

Matematika. ochrana životního prostředí analytická chemie chemická technologie Forma vzdělávání: Studijní obor: Aplikovaná chemie Učební osnova předmětu Matematika Zaměření: ochrana životního prostředí analytická chemie chemická technologie Forma vzdělávání: denní Celkový počet vyučovacích hodin za

Více

Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití

Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití Proč Excel? Práce s Excelem obnáší množství operací s tabulkami a jejich obsahem. Jejich jednotlivé buňky jsou uspořádány do sloupců

Více

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

Více

Souhrn Apendixu A doporučení VHDL

Souhrn Apendixu A doporučení VHDL Fakulta elektrotechniky a informatiky Univerzita Pardubice Souhrn Apendixu A doporučení VHDL Práce ke zkoušce z předmětu Programovatelné logické obvody Jméno: Jiří Paar Datum: 17. 2. 2010 Poznámka k jazyku

Více

Úvod do programování

Úvod do programování Úvod do programování Základní literatura Töpfer, P.: Algoritmy a programovací techniky, Prometheus, Praha učebnice algoritmů, nikoli jazyka pokrývá velkou část probíraných algoritmů Satrapa, P.: Pascal

Více

Cykly a pole 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116.

Cykly a pole 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. Cykly a pole Tato část sbírky je tvořena dalšími úlohami na práci s cykly. Na rozdíl od předchozího oddílu se zde již v řešeních úloh objevuje více cyklů, ať už prováděných po sobě nebo vnořených do sebe.

Více

Zpracování náhodného výběru. Ing. Michal Dorda, Ph.D.

Zpracování náhodného výběru. Ing. Michal Dorda, Ph.D. Zpracování náhodného výběru popisná statistika Ing. Michal Dorda, Ph.D. Základní pojmy Úkolem statistiky je na základě vlastností výběrového souboru usuzovat o vlastnostech celé populace. Populace(základní

Více

Paradigmata programování 1

Paradigmata programování 1 Paradigmata programování 1 Explicitní aplikace a vyhodnocování Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 6 V. Vychodil (KI, UP Olomouc) Explicitní aplikace a vyhodnocování Přednáška

Více

MAXScript výukový kurz

MAXScript výukový kurz MAXScript výukový kurz Díl čtvrtý jazyk MAXScript, část I. Jan Melichar, březen 2008 Jan Melichar (aka JME) strana 1 OBSAH ÚVOD... 4 ZÁKLADNÍ PŘÍKAZY... 5 OPERÁTORY... 6 PROMĚNNÉ... 6 POLE... 7 ZÁVĚREM...

Více

MATrixLABoratory letný semester 2004/2005

MATrixLABoratory letný semester 2004/2005 1Prostedie, stručný popis okien Command Window příkazové okno pro zadávání příkazů v jazyku Matlabu. Workspace zde se zobrazuje obsah paměti; je možné jednotlivé proměnné editovat. Command History dříve

Více

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu Metoda Monte Carlo a její aplikace v problematice oceňování technologií Manuál k programu This software was created under the state subsidy of the Czech Republic within the research and development project

Více

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet. 4 Stromy a les Jedním ze základních, a patrně nejjednodušším, typem grafů jsou takzvané stromy. Jedná se o souvislé grafy bez kružnic. Přes svou (zdánlivou) jednoduchost mají stromy bohatou strukturu a

Více

MIDAM Verze 1.1. Hlavní okno :

MIDAM Verze 1.1. Hlavní okno : MIDAM Verze 1.1 Podporuje moduly Midam 100, Midam 200, Midam 300, Midam 400, Midam 401, Midam 410, Midam 411, Midam 500, Midam 600, Ghc 2x. Umožňuje nastavení parametrů, sledování výstupních nebo vstupních

Více

Testování prvočíselnosti

Testování prvočíselnosti Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo

Více

Normální (Gaussovo) rozdělení

Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení popisuje vlastnosti náhodné spojité veličiny, která vzniká složením různých náhodných vlivů, které jsou navzájem nezávislé, kterých je velký

Více

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY Jméno a příjmení: Školní rok: Třída: VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf 2007/2008 VI2 PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY Petr VOPALECKÝ Číslo úlohy: Počet

Více

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11.

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11. David Matoušek Programování v jazyce C v pøíkladech Praha 2011 David Matoušek Programování v jazyce C v pøíkladech Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

Náhodná veličina X má Poissonovo rozdělení se střední hodnotou lambda. Poissonovo rozdělení je definováno jako. P(X=k) = 0,036

Náhodná veličina X má Poissonovo rozdělení se střední hodnotou lambda. Poissonovo rozdělení je definováno jako. P(X=k) = 0,036 Příklad : Statistika A, doc. Kropáč, str. 6, příklad 2 K benzínovému čerpadlu přijíždí průměrně 4 aut za hodinu. Určete pravděpodobnost, že během pěti minut přijede nejvýše jedno auto. Pokus: Zjištění,

Více