Nelder-Mead módszer
Nem tévesztendő össze a lineáris programozásból származó "
szimplex metódussal ", egy olyan módszerrel, amellyel egy lineáris rendszert korlátokkal lehet optimalizálni.
A Nelder-Mead módszer , más néven deformálható poliéder módszer és szimplex módszer , több változóból álló függvény feltétel nélküli optimalizálásának módszere, amely nem használja a függvény deriváltját (pontosabban gradienseit ), ezért könnyen használható. nem sima és/vagy zajos funkciókra alkalmazható
.
A módszer lényege a szimplex szekvenciális mozgatása és deformálása a szélsőpont körül.
A módszer lokális szélsőséget talál, és az egyikben elakadhat. Ha továbbra is globális szélsőséget kell találnia, megpróbálhat másik kezdeti szimplexet választani. A lokális szélsőségek kiküszöbölésére fejlettebb megközelítést kínálnak a Monte Carlo módszeren alapuló algoritmusok , valamint az evolúciós algoritmusok .
Algoritmus
Legyen szükséges egy n változóból álló függvény feltétlen minimumának megtalálása . Feltételezzük, hogy a függvény definíciós tartományában nincsenek komoly megkötések, vagyis a függvény minden találkozási ponton definiálva van.

A módszer paraméterei a következők:
- a tükrözési együtthatót általában egyenlőnek választják .


- a tömörítési arányt általában egyenlőnek választják .


- a nyújtási tényezőt általában egyenlőnek választják .


- "Kiképzés". Először kiválasztunk egy pontot , amely egy n-dimenziós tér szimplexét alkotja. Ezeken a pontokon számítjuk ki a függvény értékeit: .



- "Válogató". A szimplex csúcsai közül három pontot választunk ki: a függvény legnagyobb (a kiválasztott) értékével, a következő legnagyobb értékkel és a függvény legkisebb értékével . A további manipulációk célja az lesz, hogy legalább .







- Keressük meg az összes pont súlypontját , kivéve : . Nem szükséges számolni .



- "Visszaverődés". A pontot az együtthatóhoz viszonyítva tükrözzük ( ennél központi szimmetria lesz , általános esetben - homothety ), megkapjuk a pontot és kiszámítjuk benne a függvényt: . Az új pont koordinátáit a következő képlet számítja ki:






.
- Ezután megnézzük, mennyit sikerült csökkenteni a funkciót, keressük a helyét a sorozatban .

Ha , akkor az irány sikeres, és megpróbálhatja növelni a lépést. "nyújtást" gyártunk. Új pont és függvényérték .


Ha , akkor a szimplexet kiterjeszthetjük idáig: értéket rendelünk a ponthoz , és befejezzük az iterációt (a 9. lépésben).

Ha , akkor túl messzire került: rendeljen értéket a ponthoz , és fejezze be az iterációt (9. lépésre).

Ha , akkor nem rossz a pont megválasztása (az új jobb, mint az előző kettő). Rendeljen értéket a ponthoz , és folytassa a 9. lépéssel.

Ha , akkor cserélje fel és értékét . Ezenkívül fel kell cserélnie a és az értékeket . Ezt követően továbblépünk a 6. lépésre.



Ha , akkor folytassa a következő 6. lépéssel.
Ennek eredményeként (talán átnevezés után) .
- "Tömörítés". Építünk egy pontot , és kiszámítjuk az értéket benne .


- Ha , akkor rendeljen értéket a ponthoz , és folytassa a 9. lépéssel.



- Ha , akkor a kezdeti pontok bizonyultak a legsikeresebbnek. A szimplex - homotitás "globális összehúzódását" a legkisebb értékű pontig végezzük :


, .
- Az utolsó lépés a konvergencia ellenőrzése. Különböző módon megtehető, például egy ponthalmaz szórásának becslésével. Az ellenőrzés lényege, hogy ellenőrizzük a szimplex kapott csúcsai egymáshoz való közelségét, ami egyben a kívánt minimumhoz való közelségüket is jelenti. Ha még nem érte el a kívánt pontosságot, folytathatja az iterációt a 2. lépéstől.
Források