Kezdőoldal » Számítástechnika » Programozás » Genetikus algoritmus hatékonya...

Ozmium42 kérdése:

Genetikus algoritmus hatékonyabbá tétele?

Figyelt kérdés

Üdv!


Írtam egy genetikus algoritmust, és megfigyeltem egy olyan összefüggést, hogy minél több génből áll a genom, annál nehézkesebben csökken a hibaérték. Létezik valami bevett módszer ennek a problémának a kiküszöbölésére?


2016. nov. 30. 14:41
 1/10 A kérdező kommentje:
Ugyanez a probléma egyébként Részecske Raj Optimalizációnál is fennáll.
2016. nov. 30. 14:42
 2/10 anonim ***** válasza:

Használj más algoritmust.

Sajnos ennyi infóból mást nem lehet írni, mert lehet az algoritmusod rossz, lehet a programozása...

2016. nov. 30. 15:23
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
Mivel maga a probléma sem konkrét, hanem általános, ezért nem tudok konkrétabbat írni. De hogy mondjak egy példát: ha két gént keresek, és a hibaérték úgy adódik, hogy abs(10-x1)+abs(10-x2), akkor hamar ki fog jönni mindkét génre a 10 érték. Ha viszont mondjuk 6 gént keresek (mindegyikre 10 az optimum), akkor jóval több ideig fáradozik ezen, mint első esetben. A program jól van megírva.
2016. nov. 30. 15:42
 4/10 anonim ***** válasza:
Az x értékekből egy lépésben mennyit változtatsz meg és milyen mértékben?
2016. nov. 30. 17:29
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:
Sok fajta mutáció van: átlagolás, felcserélés, különbség, szorzás 0-2 közti random floattal, +/- 0-9 valamelyik helyiértékhez 2-(-15) nagyságrendben, súlyozott átlag (véletlenszerű)
2016. nov. 30. 18:00
 6/10 anonim ***** válasza:

"A program jól van megírva."

Ilyen kijelentések után abszolút nem lehet komolyan venni.

2016. nov. 30. 18:37
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:
Működik. Sokszor lefutott már, több dolgot kiszámoltattam vele. Annyi a problémám, amit fel akartam vetni, hogy minél több a gén, annál lassabban találja meg a megoldást. Szerintem azért, mert egyre kisebb valószínűségű így a szerencsés együttállás, ami a jobb egyedek születéséhez kell. Gondoltam, hátha van erre valakinek bevett módszere, ötlete, trükkje, amivel lehet segíteni ezen. Ne akadékoskodj azon, hogy van megírva a kód.
2016. nov. 30. 19:34
 8/10 anonim ***** válasza:

A feladathoz viszonyítva szerintem túl sok a lehetséges mutáció. Ha a feladat az, hogy el kell találni a 10-hez, akkor ezek töredéke is elég, hiszen ezek közül több is hasonlót végez, csak máshogy.


Egy másik lehetséges ok a lassúságra, hogy túl sok variációt hagysz a memóriában.

2016. nov. 30. 20:15
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

Szia!

Én nem vagyok programozó, csak felhasználói szoftvereket használok, amik GA-t futtatnak, de ezt találtam.:

"Főleg a rossz megfogalmazás az oka, de akár egyes paraméterek nemlineáris volta is hozzájárulhat ahhoz, hogy megalkotott kódunk „beragad”, „megakad” egy lokális minimumon. Lokális minimumnak nevezzük a bemeneti jelek és a belső állapot összefüggéseiből kapott olyan holtponti állapotot, amiből a rendszer önerejéből képtelen kikerülni, miközben az általa szolgáltatott eredmény ugyan viszonylag optimális, de nem a legoptimálisabb. A jelenséget általában az okozza, hogy a legjobb egyed már elég közel van a megoldáshoz, ezért a rosszabb (de az aktuális állapotból kimozdító hatású) vektort nem tudjuk érvényesíteni, képletesen szólva „egy kis rosszat elviselni a nagyobb jó érdekében”. Pl. neurális hálózatoknál a többdimenziós térben egy olyan völgyként lehet ábrázolni, ami elég alacsonyan van a csúcsokhoz képest (azaz kvázi optimális), de magas hegyek határolják (amelyek nagy hibaértékkel bírnak). Létezik alacsonyabb völgy ehhez képest is (lásd még optimálisabb), ám a rendszer „nem képes” ismét növelni a magasságot, mert az ellene van a globális optimumnak és ezért nem tud kimozdulni az aktuális helyzetéből, egy körben forog.


A lokális minimum ellen több módon lehet védekezni:


nagyobb populációval (így többféle elemből tudunk válogatni)

a géneken végzett több öröklődési/mutációs eljárással (mert ekkor nagyobb a variancia)

több egyed örökítésével (mert ekkor több rossz részlépéssel egy jobb állapotba juthatunk)

véletlenszerű elemek bevonásával

több, egymással szinkronban „tenyésztett” populációval (amelyek egymásnak géneket tudnak átadni)" forrás: [link]


Ill.:

[link]


Én javaslom a "genetikus algoritmus"+"elakad"

"megakad", "beragad" stb. keresőszavakat.

2017. jan. 4. 15:33
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

Ill. olvastam, hogy a GA paramétereit lehet véletlenszerűen, ill. "step by step", vagy esetleg másik GA-val keresni, ez is egy optimálás.


Pl. nekem is, hiába van a kezemben egy kész szoftver az optimális GA paraméterek megkeresése nem triviális.

Így felhasználóként is szépen látszik, ahogy lépked előre a generációkban szépen a progi, majd egyszer csak pl. 25000 generáció után nem talál gyakrabban jobb egyedet és pl. az 50000-ik generáció után lefut még 50 000 generáció úgy, hogy semmi újat nem talál.


Pedig pl. 250 paraméter közül keres egy 4-5 változós összefüggést! Egyszóval "hajszállal" több variáció van, mint a lottó ötösnél...


Nyilván GA kód és GA kód között is nagy különbség van hatékonyság tekintetében.

2017. jan. 4. 15:43
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!