Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 30

DMBO

Programowanie Liniowe 1
• Optymalizacja bez ograniczeń
• Optymalizacja z ograniczeniami
– Programowanie Liniowe
– Programowanie Nieliniowe
programming – arch. planning

Elementy optymalizacji z ograniczeniami:


1. Zmienne decyzyjne [decision variables]
2. Funkcja celu [objective function]
3. Ograniczenia [constraints]
4. Ograniczenia zmiennych [variable bounds]
Firma Rowerek
• Firma Rowerek produkuje ręcznie dwa rodzaje rowerów:
– Rowery górskie
– Ścigacze szosowe
• I chce wyznaczyć tempo produkcji każdego rodzaju roweru tak, aby
zmaksymalizować zysk ze sprzedaży.
• Firma Rowerek zakłada, że może sprzedać wszystko co wyprodukowała.
• Dwa różne zespoły produkują różne rodzaje rowerów:
– Zespół od rowerów górskich max 2 rowery dziennie
– Zespół od ścigaczy szosowych max 3 rowery dziennie
• Do każdego typu roweru potrzebny jest jednakowa ilość czasu na maszynie do
wykańczania metalu
– Maszyna może obrobić do 4 rowerów dziennie
• Księgowy szacuje, że rowery generują następujące zyski:
– Górski $15
– Szosowy $10
Rozwiązanie
• Rozwiązanie intuicyjne:
– Produkujemy najwięcej górali jak się da (max 2) a resztę mocy
przeznaczamy na szosowe (2).
– Tym samym generujemy łączny dzienny zysk równy $50.
• Programowanie liniowe (rozwiązanie musi się zgadzać z
intuicją)
– Zmienne decyzyjne: liczba produkowanych górali x1 oraz szosowych
x2
– Zmienne te muszą być nieujemne x1≥0, x2≥0
– Funkcja celu: max dzienny zysk: max Z=15x1+10x2 (w $ na dzień)
– Ograniczenia:
• Dzienny limit produkcji górali: x1≤2 (w rowerach na dzień)
• Dzienny limit produkcji szosowych: x2≤3 (w rowerach na dzień)
• Limit prod.maszyny do wykańczania metalu: x1+x2 ≤ 4 (w rowerach na dzień)
Ważne są wierzchołki
• Region dopuszczalny (feasible
region)
• Linie jednakowego zysku to linie
równoległe
• Zysk powiększa się w kierunku
gradientu funkcji celu
• Wierzchołki “najbardziej wystają
na zewnątrz”
• Optimum to wierzchołek bądź
ściana razem z wierzchołkami
• Optymalny może być jeden
wierzchołek lub dwa
sąsiadujące ze sobą
• Jeśli dwa wierzchołki są
optymalne, to linia je łącząca też
jest optymalna
Założenia programowania liniowego
• Liniowy względem zmiennych decyzyjnych
– Własność addytywności i proporcjonalności
• Wyklucza krzywe, funkcje krokowe oraz czynniki interakcji,
np. 5x1x2, koszty wystartowania start-up
– Zakłada, że zmienne przyjmują wartości rzeczywiste
• Wyklucza zmienne całkowitoliczbowe
• Programowanie w ogólności zakłada, że znane są
wszystkie parametry
– Jednak można przeprowadzić analizę wrażliwości
(sensitivity analysis)
Zadanie Programowania Liniowego (ZPL) w
formie standardowej [the standard form LP]
Charakterystyka:
• Funkcja celu maksymalizowana
• Wszystkie ograniczenia typu ≤
• Wszystkie ograniczenia mają nieujemną prawą
stronę
• Wszystkie zmienne są nieujemne
Reprezentacja algebraiczna:
• Funkcja celu:
• m ograniczeń funkcjonalnych

• 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

• Problem w dwóch wymiarach jest teraz problemem w 5 wymiarach


– Zmienna luzu przyjmuje dodatnią wartość tylko wtedy, gdy dane ograniczenie nie jest aktywne
Więcej terminologii
• Rozwiązanie rozszerzone (augmented solution): wartości wszystkich zmiennych łącznie
ze zmiennymi luzu, np. optymalne rozwiązanie rozszerzone dla Rowerka to x 1,x2,s1,s2,s3 =
(2,2,0,1,0)
• Rozwiązanie bazowe (basic solution): rozszerzone rozwiązanie wierzchołkowe (może
być dopuszczalne lub niedopuszczalne), np. (2,3,0,0,-1) jest rozwiązaniem bazowym
niedopuszczalnym
• Dopuszczalne rozwiązanie bazowe (basic feasible solution), dopuszczalne rozszerzone
rozwiązanie wierzchołkowe np. (0,3,2,0,1)
Ustalanie wartości dla zmiennych
• Stopnie swobody (degrees of freedom df)
df = (liczba zmiennych w postaci równania) - (liczba niezależnych równań)
• Metoda simplex automatycznie przyporządkuje wartość zero (odpowiednie ograniczenie jest
aktywne) dla df sposród zmiennych a następnie wyznaczy wartości pozostałych zmiennych
– x1=0 znaczy, że ograniczenie x1 ≥ 0 jest aktywne
– x2=0 znaczy, że ograniczenie x2 ≥ 0 jest aktywne
– s1=0 znaczy, że ograniczenie x1 ≤ 2 jest aktywne
– s2=0 znaczy, że ograniczenie x2 ≤ 3 jest aktywne
– s3=0 znaczy, że ograniczenie x1+x2 ≤ 4 jest aktywne
• W naszym przykładzie df=2, zatem simplex przyporządkuje dwóm spośród pięciu zmiennych
wartość 0.
• Ostatnie uwagi terminologiczne:
– Zmienna niebazowa (nonbasic variable): zmienna, której metoda simplex
obecnie przyporządkowuje wartość 0
– Zmienna bazowa (basic variable): zmienna, której metoda simplex obecnie
nie przyporządkowuje wartości 0
• W postaci standardowej dodatnie
• Ale mogą być zerowe w specjalnych okolicznościach
– Baza (a basis): Zbiór obecnych zmiennych bazowych
Niebazowa, wartość zmiennej do zera, ograniczenie aktywne
• Możemy zgadnąć bazę, ale trzeba uważać, ponieważ
– Możemy dostać niedopuszczalny wierzchołek (rysunek wcześniej)
– Możemy nawet nie dostać wierzchołka w ogóle (rysunek poniżej)
Przejście do lepszego dopuszczalnego
rozwiązania bazowego
• Wierzchołek sąsiadujący jest dobrym kandydatem, ponieważ:
– W dwóch sąsiadujących wierzchołkach zbiór bazowy oraz
niebazowy są identyczne za wyjątkiem jednego elementu
– Na przykład:
• Punkt A: zbiór niebazowy = {s2,s3}, zbiór bazowy = {x1,x2,s1}
• Punkt B: zbiór niebazowy = {s1,s2}, zbiór bazowy = {x1,x2,s3}

Nie jest to jednak warunek


wystarczający, aby dwa
wierzchołki sąsiadowały (patrz
punkty (0,4) oraz (4,0))
• Trzy warunki przy przejściu między wierzchołkami:
– Muszą ze sobą sąsiadować
– Oba muszą być dopuszczalne
– Nowy punkt musi mieć lepszą wartość funkcji celu
• Dwa kroki procedury:
1. Wyznacz zmienną niebazową, która najbardziej poprawi funkcję celu, jeśli
będzie miała niezerową wartość. Przesuń tą zmienną ze zbioru niebazowego
do zbioru bazowego (zmienna bazowa wchodząca entering basic variable)
2. Podnieś wartość zmiennej bazowej wchodzącej do momentu, w którym jedna
ze zmiennych bazowych osiągnie wartość zero. Przenieś tą zmienną do zbioru
niebazowego (zmienna bazowa wychodząca leaving basic variable)

• x1 najbardziej poprawi funkcję celu


• Ograniczenie x1 ≥ 0 przestaje być aktywne
• Wiemy, w którym kierunku się poruszamy, bo
tylko x1 może wzrastać
• Ograniczenie, które zostanie “przecięte” jako
pierwsze to x1 ≤ 2.
Algebraicznie
• W początku układu odniesienia sytuacja jest następująca:
– Zmienne bazowe: s1,s2,s3
– Zmienne niebazowe: x2
– Bazowa zmienna wchodząca: x1

• W nowym wierzchołku, który znajduje się na przecięciu


krańcowych wartości ograniczeń x2 ≥ 0 i x1 ≤ 2 (punkt (2,0)), baza to:
– Zmienne bazowe: x1,s2,s3
– Zmienne niebazowe: x2,s1
• Nastąpiła wymiana zmiennych x1 oraz s1
Test minimalnego ułamka (minimum ratio test)
• Aby znaleźć bazową zmienną wychodzącą musimy znaleźć najmniejszą wartość
następującego wyrażenia

• 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

• Tabelka podana jest w formie właściwej (proper form)


– Dokładnie jedna zmienna bazowa na równanie
– Współczynnik zmiennej bazowej jest zawsze +1 a współczynniki nad i pod zmienną
bazową są 0
– Z jest traktowana jak zmienna bazowa równania funkcji celu
• Zaletą formy właściwej jest to, że obecne rozwiązanie można
bezpośrednio odczytać z tabelki
2.1 Czy już jesteśmy w optimum?
Nie, ponieważ mamy 2 ujemne współczynniki w rzędzie pierwszym
2.2 Wybieramy bazową zmienną wchodzącą
Najbardziej ujemny współczynnik jest przy zmiennej x1
2.3 Wybieram bazową zmienną wychodzącą
Test minimalnego ułamka:
• Jeśli w kolumnie pivot (pivot column) jest zero bądź liczba
ujemna wpisz „no limit”
• Najmniejsza wartość 2: to jest wiersz pivot (pivot raw)

Element pivot (Pivot element)


2.4 Uaktualnij tabelkę
a) W kolumnie zmienna bazowa, zastąp bazową zmienną
wychodzącą przez bazową zmienną wchodzącą
b) Jeśli element pivot nie jest równy 1, podziel wszystkie
elementy wiersza pivot przez wartość elementu pivot (my
nie musimy)
c) Eliminujemy wszystkie współczynniki w kolumnie pivot poza
elementem pivot.
Kontynuujemy
• Nowe rozwiązanie (x1,x2,s1,s2,s3)=(2,0,0,3,2), Funkcja celu Z=30
2.1 Nie jesteśmy jeszcze w optymalnym punkcie
2.2, 2.3 Nowa bazowa zmienna wchodząca i zmienna wychodząca

2.4 Z powrotem do formy właściwej


Przypadki specjalne
• Remis przy wyborze bazowej zmiennej wchodzącej, np. Z = 15x1+15x2

• 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

Bazowe rozwiązanie dopuszczalne w takim przypadku


nazywamy rozwiązaniem zdegenerowanym (degenerate
solution) – może prowadzić do cykli (cycles) w więcej niż
dwóch wymiarach (wierzchołki A,C – B,C – A,C)
• Załóżmy, że test minimalnego ułamka daje wszędzie „no limit” –
wówczas problem jest nieograniczony (unbounded) i ma
nieograniczone rozwiązanie
– Najczęściej znaczy, że zapomniałeś/aś ograniczenia

• W optimum współczynniki niektórych zmiennych niebazowych


mają wartość zero w wierszu funkcji celu
– Wybór tej zmiennej do bazy nie ma wpływu na wartość funkcji celu
– Ale zmienia się bazowe rozwiązanie dopuszczalne
– Taka sytuacja znaczy, że mamy wiele więcej niż jedno rozwiązanie
optymalne (multiple optimum solutions)
W praktyce
• Solvery używane w praktyce wykorzystują różne
rodzaje input formats:
– Bezpośrednia reprezentacja algebraiczna z ograniczeniami
zapisanymi explicite
– Reprezentacja arkuszu kalkulacyjnego, ogólnie z
kolumnami jako zmiennymi i wierszami jako ograniczeniami
– Język algebraiczny, który pozwala na wykorzystanie sum i
indeksów przez co model zapisany jest bardzo
kompaktowo – najlepsze w praktyce
– Indywidualne formaty
Model z 1963 roku
• Mamy dwie fabryki (Seattle i San Diego) i trzy rynki zbytu (New York,
Chicago i Topeka)
• Uwzględniając popyt rynków zbytu oraz podaż fabryk celem jest
minimalizacja kosztów transportu homogenicznego towaru pomiędzy
fabrykami a rynkami zbytu

You might also like