Algorytm sympleksowy
Z Wikipedii
Algorytm sympleksowy, inaczej metoda sympleks(ów) to stosowana w matematyce iteracyjna metoda rozwiązywania zadań programowania liniowego za pomocą kolejnego polepszania (optymalizacji) rozwiązania. Nazwa metody pochodzi od sympleksu, figury wypukłej będącej uogólnieniem trójkąta na więcej wymiarów.
Spis treści |
[edytuj] Opis metody
Zadanie programowania liniowego z dowolną liczbą zmiennych można rozwiązać, wyznaczając wszystkie wierzchołkowe punkty wielościanu, a następnie porównując wartości funkcji w punktach wierzchołkowych. W związku z wielością punktów powstaje problem wyznaczenia wartości funkcji celu i znalezienie optymalnego wierzchołka, który spełniłby warunek zadania programowania liniowego. Istota metody sympleks sprowadza się do tego, że jeżeli jest znany jakikolwiek wierzchołkowy punkt i wartość w tym punkcie funkcji celowej, to wtedy wszystkie wierzchołkowe punkty, w których celowa funkcja przyjmuje gorsze wartości, są odrzucane. Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w którym celowa funkcja osiąga lepsze wartości. Iteracja kończy się, gdy kolejny przeglądany punkt wierzchołkowy jest najlepszy pod względem odpowiednich wartości funkcji celowej.
W metodzie sympleks dla układu równań Akx=bk w postaci kanonicznej istnieje tablica sympleksowa Yk o wymiarach (m+1)x(n+1) w postaci:
[edytuj] Kroki algorytmu
Dla wykonania algorytmu sympleks należy wykonać kroki:
- Podstawiamy k=0
- Sprawdzamy kryteria stopu dla j=1,...,n:

- Jeśli kryterium nie jest spełnione, to:
- Wyznaczamy indeksy s macierzy A dla kolumny wprowadzanej do bazy dla j z przedziału 1-n:
- Sprawdzamy kryterium nieograniczoności: dla i=1,...,m

- Jeśli kryterium nie jest spełnione, to:
- Wyznaczamy indeks r dla kolumny macierzy B, która jest usuwana z bazy
- Dokonujemy zmiany zastępując r-tą współrzędną wektora xB przez współrzędną xs i wyznaczamy nową tablicę sympleksową Yk+1
- Podstawiamy k=k+1 i kontynuujemy od kroku (2)
Inaczej, mając układ równań dokonujemy przekształceń:
- Jeśli rozwiązanie podstawowe układu jest nieprawidłowe, wybieramy jedną z nieprawidłowych zmiennych.
- Wybieramy jedną ze zmiennych po prawej stronie mającą dodatni współczynnik. Jeśli takowej by nie było, np.:
- x5 = − 2 − x1 − x3
- To układ nie ma żadnego rozwiązania, w którym lewostronna zmienna jest nieujemna.
- Rozwiązujemy równania ze względu na wybraną zmienną po prawej stronie.
- Podstawiamy za wszystkie wystąpienia xR w pozostałych równaniach oraz w definicji funkcji bazowej, prawą stronę nowego równania.
- Ponieważ
jest dodatnie, tak przekształcone równanie nie łamie warunku nieujemności. Podstawienie pod cR prawej strony równania również nie uczyni żadnego z poprawnych równań niepoprawnym.
- Wybieramy jedną ze zmiennych po prawej stronie mającą dodatni współczynnik. Jeśli takowej by nie było, np.:
- Jeśli rozwiązanie bazowe jest prawidłowe, sprawdzamy postać funkcji celu. Jeśli wszystkie współczynniki przy zmiennych występujące w niej są niedodatnie, przyjęcie zera za ich wartości da rozwiązanie optymalne.
- Jeśli współczynnik ai przy zmiennej xi w funkcji celu jest dodatni, wybieramy jedno z równań i rozwiązujemy je ze względu na xi po czym postępujemy jako wyżej (na wybór zmiennej oraz równania do rozwiązania muszą być nałożone pewne ograniczenia, jeśli chcemy mieć gwarancję, że algorytm kiedyś się skończy).
[edytuj] Tabela sympleksowa
Tworzymy tablicÄ™ sympleksowÄ… w postaci:
| x0 | ... | xj | ... | xk | |
|---|---|---|---|---|---|
| x0 | z00 | ... | y0j | ... | y0k |
| xB1 | z10 | ... | y1j | ... | y0k |
| ... | ... | ... | ... | ... | ... |
| xBr | zr0 | ... | yrj | ... | yrk |
| ... | ... | ... | ... | ... | ... |
| xBm | zm0 | ... | ymj | ... | ymk |
[edytuj] Zobacz też
[edytuj] Linki zewnętrzne
- COIN-OR- Biblioteka Open Source dla programowania liniowego
- GLPK dla win32 – program i biblioteka dla programowania liniowego
- GLPK dla Linuksa – program i biblioteka dla programowania liniowego
- Cplex – Komercyjna biblioteka dla programowania liniowego
- FAQ – programowanie liniowe
- Simplex Algorithm by Elmer G. Wiens. Demonstrates algorithm in detail, using the simplex tableau.
| Noga z RPP: dalsze podwyżki stóp mało prawdopodobne |
|
W tej chwili prawdopodobieństwo dalszych podwyżek stóp procentowych jest niewielkie. Obniżka stóp procentowych w 2009 roku nie jest wykluczona - powiedział Marian Noga, członek Rady Polityki Pieniężnej w TVN CNBC.
|
| Japonia może jako pierwsza z krajów G7 wyjść z globalnego spowolnienia |
|
Japonia może być pierwszym krajem z grupy G7, w którym będzie ożywienie w gospodarce po globalnym spowolnieniu - oceniają ekonomiści Capital Economics Ltd.
|
| Ropa nadal mocno drożeje, bo rządy pomagają bankom |
|
We wtorek ropa naftowa nadal mocno drożeje, drugą sesję z rzędu, w reakcji na działania podejmowane przez rządy na świecie, by pomóc sektorowi bankowemu - podają maklerzy.
|
| Cena miedzi wzrosła na giełdzie w Londynie |
|
Cena miedzi rośnie na giełdzie w Londynie, zmierzając ku największemu dwudniowemu wzrostowi od co najmniej 1986 roku. Ropa również rośnie przewodząc wzrostom cen surowców, ponieważ ceny akcji mocno zwyżkowały, po tym jak rządy różnych krajów na świecie zgodziły się pomóc bankom i zasilić system finansowy.
|
| Prezydent złożył projekt ws. przedłużenia przepisów dot. wcześniejszych emerytur |
|
Prezydent Lech Kaczyński złożył w Sejmie projekt przedłużający o rok - do 31 grudnia 2009 roku - obowiązywanie dotychczasowych przepisów regulujących zasady przechodzenia na wcześniejszą emeryturę.
|
![Y_{k}=\left[ \frac{A_{k} | b^{k}}{-(c^{-k})^{T}) | z_{0}^{k}} \right]](http://upload.wikimedia.org/math/9/a/f/9af12747bb7e1bbbaa2f18d1d722e260.png)
![y_{m+1,s}^{k}=max [y_{m+1,j}^{k}]](http://upload.wikimedia.org/math/9/3/3/9337ef0be705eff0d710a6d49eebd2ec.png)
![\frac{y_{r,n+1}^{k}}{y_{r,s}^{k}}=min \left[ \frac{y_{r,n+1}^{k}}{y_{r,s}^{k}} : y_{i,s}^{k} >0 \right]](http://upload.wikimedia.org/math/4/9/0/49079abb348ec7af6fc10fa55549ff70.png)

