Evolúciós algoritmus. Az evolúciós algoritmus Darwin fajfennmaradási elméletén alapszik, és a függvény-minimum meghatározására szolgál. Alapfogalmak:

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Programozás III KOLLEKCIÓK 2..
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Dinamikus tömbök.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Gazdaságmatematika 6.szeminárium.
Programozás Alapjai (2008)
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Optimális részhalmaz keresése Keresési tér. 0,0,0,0 1,0,0,0 0,1,0,0 0,0,1,0 0,0,0,10,0,1,1 1,1,0,0 1,0,1,0 0,1,1,0 1,1,1,0 1,0,1,1 0,1,1,1 1,1,1,11,1,0,1.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
Készítette: Pető László
Statisztika II. VI. Dr. Szalka Éva, Ph.D..
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
C# tagfüggvények.
C# tagfüggvények.
Krizsán Zoltán.  Ha az algoritmus sokáig dolgozik,  de el akarjuk kerülni a „fagyást”.  Kisebb a költsége, mint az új folyamatnak.  Programozás szempontjából.
A lineáris függvény NULLAHELYE
Egyszerű típusok csoportosítása
Dr. Szalka Éva, Ph.D.1 Statisztika II. VI.. Dr. Szalka Éva, Ph.D.2 Regresszióanalízis.
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Problémás függvények : lokális optimalizáció nem használható Globális optimalizáció.
Optimalizáció modell kalibrációja Adott az M modell, és p a paraméter vektora. Hogyan állítsuk be p -t hogy a modell kimenete az x bemen ő adatokon a legjobban.
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Egyenesvonalú (lineáris) adatszerkezetek
2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely
Objektum orientált programozás
Programozás I. Típus algoritmusok
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Informatikai Rendszerek Tervezése 5. Előadás: Genetikus algoritmusok Illyés László Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT.-5.
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
2012. március 21. Paulik Áron.  Ha a függvényünk feladata olyan, hogy nem lenne értelme a visszatérési értéknek, vagy csak nincs rá szükség, void típusúként.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Excel programozás (makró)
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
Adatbázisszintű adatmodellek
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Genetikus algoritmusok
a programegységek között
Excel programozás (makró)
Bevezetés a programozásba Algoritmikus gondolkodás
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Informatikai gyakorlatok 11. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Thread és Task.
A lineáris függvény NULLAHELYE
Függvénysablonok használata
Előadás másolata:

Evolúciós algoritmus

Az evolúciós algoritmus Darwin fajfennmaradási elméletén alapszik, és a függvény-minimum meghatározására szolgál. Alapfogalmak: Egyed: egy adat szerkezet, amely a probléma lehetséges megoldását képviseli. Gén: az egyed része, egy konkrét számadat. Populáció: egyedek halmaza. Generació: a populáció egy adott pillanatban, azaz egy adott ciklusban

Az algoritmus BEGIN hozd létre a kezdő populációt határozd meg az egyedek életképességét REPEAT /* új generáció létrehozása */ a kevésbé életképes egyedek elpusztítása FOR egyedek száma * 2/3 DO /* uj egyedek létrehozása */ válassz ki két szülőt a fennmaradt populációból hozd létre az utódot határozd meg az utód életképességét add hozzá az utódokat a populációhoz END FOR UNTIL a populáció teljesítette az adott feltételt END

Az algoritmus alkalmazása

Az evolúciós algoritmus megprogramozása

Fő program Két féle képpen hívható meg: A program paramétereit megadjuk, a fő program argumenseiként A program paramétereit a billentyűszerkezetről viszi be a felhasználó Működése: Lefoglalja a memórában a működéséhez szükséges helyet Létrehozza az evolúció szálat Megvárja az evolúció befejeződését Felszabadítja a lefoglalt memóriát

Fő program

Egyed Az egyedek mint a program egy szála vannak bemutatva. Létrehozásuk során egy paramétert kakpnak, ami alapján meg tudják határozni: egy mutatót a függvényre, amelynek a minimumját keressük. a független változót, ami alapján meg tudják határozni a függvény értékét az adott pontban. saját azonosítójukat, ami segítségével meg tudjuk különböztetni az egyedeket. Az egyed paramétere: struct specimenThreadParameters { int iSpecimenNumber; double dIndependentVariable; double (*pfChosenFunction)(double); };

Az egyed működése

Az egyed fukciói void InitializeSpecimenThreadSemaphores(int iNumberOfSpecimenThreads) void CleanUpSpecimenThreads(int iNumberOfSpecimenThreads) void StartSpecimenThread(int iThreadToStart) void WaitForWriteDone(int iNumberOfSpecimenThreads) void KillSpecimenThreads(int iNumberOfSpecimenThreads) void KillSpecimenThread(int iThreadToKill)

Evolúció Az evolúció mint a program egy szála van bemutatva. Az evolúció paramétere: struct evolutionThreadParameters { int iNumberOfSpecimens; double (*pfChosenFunction)(double); int iNumberOfIterations; double dInterval[2]; int iNumberOfFuncMinValues; double dToleration; FILE *fLogFile; };

Az evolúció funkciói void InitializeEvolution(int iNumberOfSpecimenThreads); void CleanUpEvolution(int iNumberOfThreads); void StartThreads(double (*pfChosenFunction)(double), double *dInterval, int iNumberOfSpecimenThreads) void EliminateOneThirdSpecimens(int iNumberOfThreads) void CreateOneThirdSpecimens(int iNumberOfThreads, double (*pfChosenFunction)(double)) bool EndOfTheIteration(int iCurrentIteration, int iNumberOfIterations, int iNumberOfFuncMinValues, double dToleration) void PrintTableHeaders(FILE *fLogFile) void PrintCurrentValues(int iCurrentIteration, FILE* fLogFile) void EndReport(int iCurrentIteration, FILE* fLogFile)

Az egyed az adat bázisban Egy egyed az adat bázisban egy struktúrával van modellezve, amely tartalmazza az egyedekről mindazon infomációkat, amlyek szükségessek az evolúció működéséhez: Független változó Függvényérték Azonosító struct stSpecimen { double dIndependentVariable; double dFunctionValue; int iSpecimenID; };

Adat bázis struct stDataBase { double *pdFunctionMinValues; stSpecimen *stSpecimens; static stDataBase* pstDataBase; static stDataBase* GetPointerToDataBase() { if(pstDataBase == NULL) { pstDataBase = (stDataBase*)malloc(sizeof(stDataBase)); } return pstDataBase; } };

Az adat bázis funkciói void InitializeDataBase(int iNumberOfSpecimenThreads, intiNumberOfFuncMinValues) void CleanUpDataBase() void SortByFuncValue(int iNumberOfSpecimenThreads) void SortByIndependentVariable(int iNumberOfSpecimenThreads) void RandomSort(int iNumberOfSpecimenThreads) void GenerateRandomArray(int iNumberOfSpecimenThreads)

Vége