Transcript slajdy

Programowanie liniowe
Wykład 3
• 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
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
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
1. Szukaj tylko wśród wierzchołków
2. Łatwo stwierdzić kiedy dany punkt jest optimum
3. Jest zagwarantowane, że metoda osiągnie optimum
Metoda simplex
Dwie fazy:
1. Faza pierwsza (start-up) – znajdź jakiekolwiek dopuszczalne
rozwiązanie wierzchołkowe
–
–
2.
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
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 x1,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 = {s1,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.
2.
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)
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)