Nelder-Mead módszer



Szekvenciális egyszerűsítések a Nelder-Mead módszerben a Rosenbrock-függvényhez (fent) és a Himmelblau-függvényhez (lent)
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:

  1. "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: .
  2. "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 .
  3. Keressük meg az összes pont súlypontját , kivéve : . Nem szükséges számolni .
  4. "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: .
  5. 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) .
  6. "Tömörítés". Építünk egy pontot , és kiszámítjuk az értéket benne .
  7. Ha , akkor rendeljen értéket a ponthoz , és folytassa a 9. lépéssel.
  8. 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 : , .
  9. 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