1 / 16

Evo lúciós algoritmus

Evo lúciós algoritmus. Evo lú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.

lexine
Télécharger la présentation

Evo lúciós algoritmus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Evolúciós algoritmus

  2. 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égesmegoldá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

  3. 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

  4. Az algoritmus alkalmazása

  5. Az evolúciós algoritmus megprogramozása

  6. 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

  7. Fő program

  8. 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); };

  9. Az egyed működése

  10. 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)

  11. 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; };

  12. 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)

  13. 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; };

  14. 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; } };

  15. 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)

  16. Vége 

More Related