Professional Documents
Culture Documents
Dmbo 2
Dmbo 2
Programowanie Liniowe 1
• Optymalizacja bez ograniczeń
• Optymalizacja z ograniczeniami
– Programowanie Liniowe
– Programowanie Nieliniowe
programming – arch. planning
• Ograniczenia nieujemności
Parę definicji
• Rozwiązanie (solution)
• Rozwiązanie wierzchołkowe (cornerpoint solution)
• Dopuszczalne rozwiązanie wierzchołkowe (feasible cornerpoint solution)
• Sąsiadujące rozwiązania wierzchołkowe (adjacent cornerpoint solutions)
Kluczowe własności programu liniowego
1. Punkt optymalny jest zawsze w dopuszczalnym rozwiązaniu
wierzchołkowym
2. Jeśli wartość funkcji celu dla danego dopuszczalnego rozwiązania
wierzchołkowego jest wyższa lub równa wartości funkcji celu dla
wszystkich sąsiadujących dopuszczalnych rozwiązań
wierzchołkowych, to to rozwiązanie jest optymalne
3. Jest skończona liczba dopuszczalnych rozwiązań wierzchołkowych
Konsekwencje
4. Szukaj tylko wśród wierzchołków
5. Łatwo stwierdzić kiedy dany punkt jest optimum
6. Jest zagwarantowane, że metoda osiągnie optimum
Metoda simplex
Dwie fazy:
1. Faza pierwsza (start-up) – znajdź jakiekolwiek dopuszczalne rozwiązanie
wierzchołkowe
– dlatego ZPL w postaci standardowej jest wygodne, ponieważ początek układu
współrzędnych zawsze jest dopuszczalnym rozwiązaniem wierzchołkowym
– Jeśli nie ma postaci standardowej, wymagana jest specjalna metoda, o której później
2. Faza druga (iteracje) – przesuwaj się do sąsiadujących dopuszczalnych
rozwiązań wierzchołkowych, które są lepsze od poprzedniego, aż nie będzie
już lepszych
Algebraiczne znajdowanie wierzchołków
• Prawdziwe problemy mają miliony zmiennych
• Nie da się przedstawić graficznie
• Stąd potrzebny algebraiczny sposób
– Dla problemu w postaci standardowej trzeba zamienić ograniczenia w
postaci nierówności w ograniczenia w postaci równości
– A następnie wyznaczyć rozwiązanie układu podzbioru równań
• Podzbiór – ponieważ zwykle wszystkie równości nie mogą jednocześnie
zachodzić
• Potrzebujemy sposobu, aby pamiętać, które równania są obecnie wybrane do
podzbioru (czyli aktywne)
• Rozwiązaniem powyższych problemów jest włączenie
zmiennych luzu (slack variables), na przykład:
x1 ≤ 2 zamieniamy na x1 + s1 = 2, gdzie s1 ≥ 0 jest zmienną luzu
Dla firmy Rowerek
• W naszym przykładzie mianownik był zawsze 1, ale ogólnie może być różny od 1
• Dwa szczególne przypadki:
– Jeśli współczynnik bazowej zmiennej wchodzącej jest 0 (ograniczenie nie przecina ciągle
aktywnych ograniczeń reprezentowanych przez pozostałe zmienne niebazowe)
– Jeśli współczynnik bazowej zmiennej wchodzącej jest ujemny (ograniczenie coprawda
przecina ciągle aktywne ograniczenia, ale kierunek wzrostu bazowej zmiennej wchodzącej
jest w przeciwnym kierunku do punktu przecięcia)
Znajdowanie nowego bazowego rozwiązania
dopuszczalnego
• Znaleźliśmy nową bazę – co dalej?
• Można podstawić wartość zero pod wszystkie zmienne niebazowe i
następnie metodą eliminacji Gaussa rozwiązać pozostały system m×m
równań liniowych
• Bardziej efektywną metodą jest uaktualnienie obecnego zbioru
równań przy wykorzystaniu tylko części eliminacji Gaussa
• Kiedy przerwać iterowanie?
– Kiedy nie możemy znaleźć bazowej zmiennej wchodzącej.
Metoda simplex
Tabelka simplex
• Oto tabelka simplex dla początkowego punktu
• Remis przy wyborze bazowej zmiennej wychodzącej - Wybierz jaką chcesz – i tak
wierzchołek będzie ten sam.
– Zmienna, która nie zostanie wybrana na bazową zmienną wychodzącą pozostanie bazowa, ale
będzie miała wyliczoną wartość 0
– Zmienna, która została wybrana będzie miała przyporządkowaną przez simplex wartość 0