Algorytm SLP służy do szukania minimum funkcji (dalej zwanej funkcją celu) przy zadanych ograniczeniach:
nierównościowych:
równościowych:
ograniczeniach ruchu (ang. move limits), które wyznaczają w dziedzinie funkcji f potencjalnie interesujący obszar, w którym są poszukiwane rozwiązania. Ponadto ograniczenia ruchu zapobiegają rozbieżności algorytmu w początkowej fazie obliczeń (gdy pozostałe ograniczenia nie są jeszcze dokładnie uwzględniane). Ograniczenia ruchu są odpowiednio modyfikowane w trakcie wykonywania algorytmu.
Dodatkowo musi być spełnione założenie, że istnieją pochodne funkcji celu oraz funkcji ograniczeń.
Uwaga: Ograniczenia innych postaci można sprowadzić do postaci w/w:
Algorytm SLP polega na sprowadzeniu minimalizacji nieliniowej funkcji celu przy nieliniowych ograniczeniach do ciągu minimalizacji liniowej funkcji celu przy liniowych ograniczeniach (czyli tzw. zadania programowania liniowego - LP). Takie postępowanie jest szczególnie skuteczne dla funkcji słabo nieliniowych, ponieważ ich liniowe przybliżenie jest dość dokładne, a problem LP jesteśmy w stanie rozwiązywać bardzo szybko, nawet przy dużej liczbie zmiennych decyzyjnych.
X0 – będzie pierwszym przybliżeniem rozwiązania (wektor w RN).
G – macierzą zawierającą współczynniki liniowych ograniczeń nie równościowych (o wymiarze N na ilość ograniczeń nie równościowych).
R – macierzą zawierającą współczynniki liniowych ograniczeń równościowych (o wymiarze N na ilość ograniczeń równościowych).
i – licznikiem iteracji
i = 0, X0 = punkt dopuszczalny (spełniający move limits) -każda jego współrzędna jest środkiem przedziału wyznaczonego przez ograniczenia ruchu.
dodaj move limits do macierzy G
zlinearyzuj (rozwiń w szereg Taylora z dokładnością do czynnika liniowego) funkcje f w punkcie Xi, otrzymując w wyniku liniową funkcje flin
i := i + 1
rozwiąż problem LP minimalizując funkcje flin przy ograniczeniach nierównościowych zdefiniowanych przez macierz G, oraz równościowych określonych przez macierz R, rozwiązanie przypisz do Xi
zbadaj w jakim stopniu naruszone są oryginalne ograniczenia w punkcie Xi :
jeśli naruszenie ograniczeń zarówno równościowe jak i nierównościowych mieści się w granicy błędu to zakończ (rozwiązaniem jest Xi)
jeśli którekolwiek z naruszeń ograniczeń równościowych nie mieści się w granicy błędu, to wybierz najbardziej naruszone ograniczenie, zlinearyzuj je w punkcie Xi i dodaj wynik linearyzacji do macierzy R
jeśli którekolwiek z naruszeń ograniczeń nie równościowych nie mieści się w granicy błędu, to wybierz najbardziej naruszone ograniczenie, zlinearyzuj je w punkcie Xi i dodaj wynik linearyzacji do macierzy G
zmodyfikuj ograniczenia ruchu tak by punkt Xi leżał po środku każdego z przedziałów wyznaczonych przez nie (zmiany uwzględnij w macierzy G) oraz popraw ich długość dla każdej (k-tej) współrzędnej, mnożąc ją przez wsp, gdzie:
jeżeli to wsp = 2,5
jeżeli to wsp = 0,5
(to k-ta współrzędna punktu Xi)
jeśli licznik iteracji i nie przekroczył dopuszczalnego limitu to przejdź do punktu 3