wykład z programowania liniowego

Transkrypt

wykład z programowania liniowego
Materiały pomocnicze do laboratorium Podstaw Optymalizacji
PROGRAMOWANIE LINIOWE
1. Niech będą dane:
• macierz A o wymiarach M×N,
• wektory: b ∈ ℜ M i c ∈ ℜ N .
Zadanie programowania liniowego (ZPL) w postaci standardowej definiujemy następująco:
min[ f ( x ) = c T x ]
x
(1)
X = { x ∈ ℜ N : Ax = b, x ≥ 0}
Każde ZPL można sprowadzić do postaci standardowej.
Przykład
Sprowadzimy do postaci standardowej problem, w którym poszukujemy minimum wskaźnika jakości postaci:
Q(u)=u2−u3 ,
przy ograniczeniach:
u1+u2 ≤ 3,
u2+2u3 ≤ 1,
u1≥0, u2≥-1.
u2+2u3 ≥ -1,
Dokonamy podstawienia:
u3=u3’− u3’’, u2=u2’−1
i wprowadźmy zmienne bilansowe (osłabiające): y1, y2, y3.
Problem przybierze postać:
Q(u)=u2’−1−u3’+ u3’’
u1+ u2’
+y1
u2’+ 2u3’−2u3’’
+ y2
u2’+ 2u3’−2u3’’
−y3
u1≥0, u2’≥0, u3’≥0, u3’’≥0
y1≥0, y2≥0, y3≥0 .
=4
=2
=0
Zdefiniujmy nowe zmienne decyzyjne:
x1= u1, x2= u2’, x3= u2’’, x3= u3’, x4= u3’’, x5= y1, x6= y2, x7= y3,
oraz nowy wskaźnik jakości: f(x) = Q(x) +1. Ostatecznie sprowadziliśmy problem do postaci standardowej:
f(x) = x2- x3+ x4 ,
x1+ x2+
x5
x2+ 2x3−2x4 + x6
x2+ 2x3−2x4’’
−x7
=4
=2
=0
xi≥0 , i=1,2,...,7.
Macierzą bazową układu Ax = b nazywamy nieosobliwą /* det(A) ≠ 0 */ macierz
kwadratową B o wymiarach M×M, utworzoną z liniowo niezależnych kolumn aj macierzy A.
Rozwiązaniem bazowym układu Ax = b nazywamy jego rozwiązanie x o takiej postaci, że
kolumny aj odpowiadające współrzędnym xj ≠ 0 , tworzą układ liniowo niezależny. Jest ono
dopuszczalne, gdy x ≥ 0. Jest ono niezdegenerowane, jeżeli liczba niezerowych
współrzędnych xj jest równa rzędowi macierzy A. W przeciwnym przypadku nazywamy je
zdegenerowanym. Każdej macierzy bazowej B odpowiada rozwiązanie bazowe określone
następująco: zmienne xj, odpowiadające kolumnom aj tworzącym B, zwane zmiennymi
bazowymi, określa równanie xB = B-1b, pozostałe natomiast zmienne, tzw. zmienne
niebazowe (swobodne), są równe zeru.
1
Materiały pomocnicze do laboratorium Podstaw Optymalizacji
PROGRAMOWANIE LINIOWE
Przykład
Dla przykładowego układu równań
 x1 + 2 x2 + x3 + 2 x4 = 2
,

5 x1 − 3 x2 + 2 x3 − x4 = 6
przykładową macierzą bazową jest macierz:
2
2
B=
,
− 3 − 1
przy czym ogółem układ ten ma 6 macierzy bazowych.
Dla przyjętych oznaczeń układ równań możemy zapisać
BxB+ Sxs = b (*)
2   x2  1 1   x1   2
2
− 3 − 1  x  + 5 2  x  = 6

 4  
 3   
Mnożąc równanie (*) lewostronnie przez B-1 otrzymujemy tzw. postać kanoniczną układu równań
xB+ B-1Sxs = B-1b
s
Przyjmując x
=0 otrzymamy wartości zmiennych bazowych:
−1
2  2 1 − 1 − 2 2 3.5
x   2
=
x =  2 = 
  = 
2  6 4.5
 x4  − 3 − 1 6 4  3
B
Stąd rozwiązanie bazowe (inaczej punkt bazowy) jest postaci
 x1   0 
 x  3.5
xb =  2  =  
 x3   0 
   
 x 4  4.5
2. Weźmy pod uwagę:
ZOmin: x ≡ (x1, ..., xN); f(x) = c1x1 + ... + cNxN – c0 
x1 + a1, M +1 x M +1 + ... + a1N x N = a10
.....................................................
(2)
x M + a M , M +1 x M +1 + ... + a MN x N = a M 0
x1 ≥ 0,..., x N ≥ 0
Założenia:
1) warunki (2) są zapisane w postaci kanonicznej względem M pierwszych zmiennych,
2) wszystkie wyrazy wolne są nieujemne ⇔ ai0 ≥ 0, i = 1, ..., M.
Postaci (1) odpowiada jeden dopuszczalny punkt bazowy:
xb(1) = (a10, ..., aM0, 0,..., 0)
stąd
f0 = c1a10 + ... + cMaM0 - c0
2
Materiały pomocnicze do laboratorium Podstaw Optymalizacji
PROGRAMOWANIE LINIOWE
• Eliminujemy z f(x) zmienne bazowe, wtedy:
f(x) + a 0, M +1 x M +1 + ... + a 0 N x N = a 00
(3)
w równaniu (3) przeniesiono wszystkie składniki zawierające zmienne na lewą stronę, a
współczynniki a0n wyrażają się wzorem:
M
a 0 n = ∑ ci a in − c n , n = 0, M +1, M + 2,..., N
(4)
i =1
~
Obecnie wartość f odpowiadająca punktowi bazowemu xb(1) jest równa a00.
• Traktujemy równanie (3) jako zerowe równanie warunków (2), przy czym zmienna f musi
zawsze być w bazie.
Zadanie pierwotne (2) przekształcamy do postaci:
ZOmin: x ≡ (x1, ..., xN); f 
f + a 0, M +1 x M +1 + ... + a 0 q x q + ... + a 0 N x N = a 00
x1 + a1, M +1 x M +1 + ... + a1q x q + ... + a1N x N = a10
.......................................................................
x p + a p , M +1 x M +1 + ... + a pq x q + ... + a pN x N = a p 0
(5)
........................................................................
x M + a M , M +1 x M +1 + ... + a Mq x q + ... + a MN x N = a M 0
x n ≥ 0; n = 1,..., N
Współczynniki zmiennych swobodnych w równaniu zerowym noszą nazwę wskaźników
optymalności.
METODA SIMPLEKSOWA (jeden krok)
1. Wybór elementu głównego
a) Wybór kolumny głównej (q). Kolumną główną będzie ta kolumna układu (5)
w której, znajduje się największy (dodatni) wskaźnik optymalności a0q, czyli
max{ a0j } = a0q ⇒ q, (j = M +1, …, N)
a0 j > 0
(6)
oraz występuje co najmniej jeden współczynnik dodatni (element główny nie
może być ujemny).
Wybór wiersza głównego (p). Wierszem głównym może być tylko ten
z wierszy mających dodatni współczynnik w kolumnie głównej, który zapewnia
najmniejszą wartość ilorazu współczynnika z kolumny wyrazów wolnych i
współczynnika z kolumny głównej. Zatem wiersz główny wybiera się z warunku
simpleksowego, a jego numer m* oznaczamy przez p:
3
Materiały pomocnicze do laboratorium Podstaw Optymalizacji
PROGRAMOWANIE LINIOWE
 a 
= min  m 0  , amq > 0
m a
a pq
 mq 
2. Przekształcenie współczynników
a) Elementy wiersza głównego przekształca się wg wzoru:
a pn
a’pn =
, n = 0, ..., N
a pq
b) Elementy pozostałych wierszy przekształca się wg wzoru
a pn a mq
a’mn = a mn −
, m ≠ q, m = 0, ..., M ; n = 0, ..., N
a pq
Po wykonaniu kolejnego kroku metody simpleksowej może wystąpić jeden z czterech
przypadków:
1) Można znaleźć co najmniej jedną kolumnę z dodatnim wskaźnikiem optymalności,
w której występuje co najmniej jeden element dodatni.
2) Wszystkie wskaźniki optymalności są ujemne.
3) Wszystkie wskaźniki optymalności są niedodatnie.
4) Wszystkie współczynniki jakiejś kolumny (lub kolumn) z dodatnim wskaźnikiem
optymalności są ujemne.
W przypadku 2 lub 4 zakończ przekształcenia.
W przypadku 1 lub 3 wykonaj kolejny krok, przy czym w przypadku 3 należy
zmodyfikować punkt 1a) METODY SIMPLEKSOWEJ biorąc pod uwagę zamiast (6)
zerowy wskaźnik optymalności.
p = m*,
a p0
Zagadnienie degeneracji
Zdegenerowany punkt bazowy <=> jeśli co najmniej jedna zmienna bazowa jest równa zero.
Fakt:
Wyraz wolny jakiegoś równania (tu: odpowiada wartości zmiennej bazowej) staje się równy
zero po przekształceniu (simpleks) jeżeli równanie to ma taka samą wartość ilorazu
simpleksowego (warunek simpleksowy) co równanie główne. Może to spowodować
wpadnięcie algorytmu w cykl obliczeń, tj. powrotem do postaci kanonicznej już raz
wyznaczonej.
REGUŁA ZAPOBIEGANIA POWSTAWANIU CYKLU
Jeśli po wykonaniu kolejnego kroku (simpleks) otrzymamy co najmniej dwa wiersze o
jednakowych minimalnych ilorazach to należy wybrać jeden z nich przy pomocy
dodatkowego warunku licząc warunek simpleksowy nie bazując na kolumnie wyrazów
wolnych, ale kolumnie współczynników zmiennej swobodnej o najmniejszym numerze.
METODA SZTUCZNEJ BAZY
Rozpoczęcie obliczeń metodą simpleksową jest uwarunkowane znajomością początkowego
dopuszczalnego rozwiązania bazowego. Jeśli nie jest ono łatwo dostępne, to można je
wygenerować rozwiązując metodą simpleksową następujące zadanie:
4
Materiały pomocnicze do laboratorium Podstaw Optymalizacji
PROGRAMOWANIE LINIOWE
min[ w = 1T x a ]
x
Ax + Ix a = b, ,
(7)
x ≥ 0 , x a ≥ 0}
gdzie: xa jest wektorem tzw. zmiennych sztucznych, b ∈ ℜ M oraz b ≥ 0, 1 jest
M-wymiarowym wektorem o współrzędnych równych 1, zaś I jest macierzą jednostkową
o wymiarach M×M.
Dla zadania postaci:
min[ f ( x ) = c T x ]
x
X = { x ∈ ℜ N : Ax = b, x ≥ 0 , b > 0}
,
przekształcimy funkcję celu do postaci
f − cT x = 0
oraz zapiszmy funkcję pomocniczą w (eliminując z w zmienne xa) w postaci:
w + 1T Ax = 1T b
albo
N
w + ∑ d j x j = d0
j =1
gdzie: licząc po „i” (numery wierszy do których wprowadzono sztuczną bazę) mamy:
d j = ∑ a ij ,
j = 1,.., N , d 0 = ∑ bi 0
i
i
Zapiszmy układ równań wprowadzając zamienne sztuczne xN+1, ..., xN+M :
a1,1 x1 + a1, 2 x 2 + ... + a1, N x N + x N +1
a 2,1 x1 + a 2, 2 x 2 + ... + a 2, N x N
= b10
+ x N +2
= b20
........................................................................................
a M ,1 x1 + a M , 2 x 2 + ... + a M , N x N
+ x N + M = bM 0
____________________________________________
− c1 x1 − c 2 x 2 + ...
− cN xN
+ f =0
____________________________________________
d 1 x1 + d 2 x 2 + ...
+ d N xN
+ w = d0
Postępowanie w obu etapach jest jednakowe. W etapie pierwszym jako wskaźniki
optymalności bierze się wartości dj. Wyboru kolumny i wiersza dokonuje się zgodnie z
metodą simpleks. Etap pierwszy kończymy, gdy wartość w = 0.
Jeśli po kolejnej iteracji zachodzi:
- w > 0 oraz nie istnieje dj > 0, to brak rozwiązania dopuszczalnego
- jeśli istnieje dj > 0 oraz dla danego j aij ≤ 0 dla i = 1, ..., M, to brak jest rozwiązania
dopuszczalnego
5
Materiały pomocnicze do laboratorium Podstaw Optymalizacji
PROGRAMOWANIE LINIOWE
-
jeśli w = 0, to przechodzimy do drugiego etapu (wyznaczono rozwiązanie
dopuszczalne).
W drugim etapie jako wskaźniki optymalności bada się wartości cj. Dalsze postępowanie
przebiega zgodnie z już przedstawionymi zasadami.
ZADANIE DUALNE OPTYMALIZACJI LINIOWEJ
Symetryczne zagadnienie dualne
Dla tzw. zadania pierwotnego postaci:
ZOmin: x; f(x) = cTx  Ax ≥ b; x ≥ 0
(8)
zadanie dualne określane jest:
ZOmax: y; F(y) = bTy  ATy ≤ c; y ≥ 0,
(9)
gdzie y to mnożniki Lagrange’a zadania (8).
Ponieważ w zadaniach (powyższych) występują tylko nierówności „parę” tę nazwano
symetrycznymi zadaniami dualnymi.
(*) Zachodzi: f(x*) = F(y*)
Pamiętając, że jeśli rozwiązanie zadania optymalizacji leży wewnątrz zbioru punktów
dopuszczalnych, to odpowiedni mnożnik Lagrange’a jest równy zeru, albo jeśli rozwiązanie
ZO leży na brzegu zbioru punktów dopuszczalnych, to musi wtedy spełniać równanie
odpowiedniego warunku ograniczającego. Zatem słuszne są związki:
(y*)T (b - Ax*) = 0; (x*)T(ATy*- c) = 0
(10)
{albo mnożnik = 0, albo ograniczenie = 0}
Związki te umożliwiają otrzymanie rozwiązania zadania dualnego do danego na podstawie
rozwiązania zadania pierwotnego:
N
Jeżeli
∑a
mn
∑a
*
mn n
∑a
∑a
n =1
N
Jeżeli
n =1
M
Jeżeli
m =1
M
Jeżeli
m =1
x n* > bm ,
7to
y m* = 0
x = bm ,
to
y m* > 0
nm
y m* < c n ,
to
xn* = 0
nm
y m* = c n ,
to
xn* > 0
Uwaga: Jeżeli w zadaniu pierwotnym optymalna wartość funkcji kryterialnej zmierza do + ∝
lub - ∝, to zbiór punktów dopuszczalnych zadania dualnego jest zbiorem pustym.
UWAGA. Zauważmy, że dla zadania pierwotnego postaci:
ZOmin: x; f(x) = cTx  Ax ≤ b; x ≥ 0
(11)
zadanie dualne określane jest:
6
Materiały pomocnicze do laboratorium Podstaw Optymalizacji
PROGRAMOWANIE LINIOWE
ZOmax: y; F(y) = -bTy  -ATy ≤ c; y ≥ 0,
(12)
Dowód.
Zadanie (11) możemy zapisać w postaci (8):
ZOmin: x; f(x) = cTx  -Ax ≥ -b; x ≥ 0 .
Podstawiając odpowiednio do (9) uzyskamy:
ZOmax: y; F(y) = -bTy  -ATy ≤ c; y ≥ 0,
Niesymetryczne zagadnienie dualne
Dla zadania pierwotnego postaci:
ZOmin: x; f(x) = cTx  Ax = b; x ≥ 0
(13)
zadanie dualne określane jest:
ZOmax: y; F(y) = bTy  ATy ≤ c,
(14)
Tak zdefiniowaną parę zadań nazwano niesymetrycznymi zadaniami dualnymi.
Tym razem otrzymanie rozwiązania zadania dualnego do danego na podstawie rozwiązania
zadania pierwotnego uzyskamy korzystając ze związków:
M
Jeżeli
∑a
mn
y n* < c n , to
xn* = 0 ( xn* jest zmienną swobodną).
∑a
mn
y n* = cn , to
xn* > 0 ( xn* jest zmienną bazową, jej wartość wynika z (**)
m =1
M
Jeżeli
m =1
(**)
oraz z ograniczeń Ax = b).
7