Programowanie liniowe

Transkrypt

Programowanie liniowe
Programowanie liniowe
Maciej Drwal
[email protected]
1
Problem programowania liniowego
min cT x
(1)
Ax ≥ b,
(2)
x ≥ 0.
(3)
x
s.t.:
gdzie A ∈ Rm×n , c ∈ Rn , b ∈ Rm .
Oznaczmy przez x∗ rozwiązanie optymalne, tzn. takie rozwiązanie dopuszczalne, Ax∗ ≥ b,
∗
x ≥ 0, które spełnia:
∀x0 ≥ 0 Ax0 ≥ b ⇒ cT x∗ ≤ cT x0 .
Każde rozwiązanie dopuszczalne x daje górne oszacowanie wartości rozwiązania optymalnego.
Dolne oszacowanie możemy uzyskać znajdując odpowiednią kombinację liniową ograniczeń. Warunkiem jest dobranie takiego wektora y ∈ Rm , który spełnia c ≥ y T A. Wówczas
ograniczenia gwarantują nam, że wartość y T b będzie nie większa niż wartość optymalna:
cT x∗ ≥ (y T A)T x∗ = y T (Ax∗ ) ≥ y T b.
Ostatnia nierówność zachodzi, ponieważ rozwiązanie x∗ jest dopuszczalne.
Jak znaleźć najlepsze dolne oszacowanie (tzn. minimalizujące cT x∗ − bT y)? Możemy sformułować następujący problem programowania liniowego:
max bT y
(4)
AT y ≤ c.
(5)
y
s.t.:
Problem programowania liniowego (4)–(5) nazywamy dualnym, natomiast problem (1)–
(3) nazywamy prymalnym. Łatwo zauważyć, że podobnie konstruując problem dualny dla
dualnego problemu (4)–(5) uzyskamy problem prymalny.
Problem dualny można też skonstruować następująco: włączając do funkcji celu ograniczenia (2) poprzez wprowadzenie wektora mnożników Lagrange’a y:
L(x, y) = cT x + y T (b − Ax) = cT x + y T b − (y T A)T x = y T b + xT (c − y T A)
a następnie traktując y jako zmienną decyzyjną, a zmienne x jako mnożniki Lagrange’a,
możemy wyeliminować ograniczenia z funkcji Lagrange’a, uzyskując problem maksymalizacji
y T b przy ograniczeniach c ≥ AT y.
1
2
Twierdzenia o dualności
W poniższych twierdzeniach zakładamy, że istnieją skończone optymalne rozwiązania problemu prymalnego (1)–(3) i dualnego (4)–(5).
Twieredzenie 1. (słaba dualność)
Jeśli x jest rozwiązaniem dopuszczalnym problemu (1)–(3), a y jest rozwiązaniem dopuszczalnym problemu (4)–(5), wówczas cT x ≥ bT y.
Dowód: cT x ≥ (AT y)T x = y T (Ax) ≥ y T b. QED.
Twieredzenie 2. (silna dulaność)
Jeśli x∗ jest optymalnym rozwiązaniem problemu (1)–(3), a y ∗ optymalnym rozwiązaniem
problemu (4)–(5), wówczas cT x∗ = bT y ∗ .
Udowodnimy powyższe twierdzenie przy wykorzystaniu następującego faktu z algebry
liniowej, tzw. alternatywy Farkasa:
Lemat 1. (Farkas)
Niech A ∈ Rm×n i b ∈ Rm . Dokładnie jedno z poniższych zdań jest prawdziwe:
(1) istnieje x ≥ 0, takie, że Ax = b,
(2) istnieje y, takie, że AT y ≥ 0 i bT y < 0.
Dowód (lematu Farkasa):
Zdania (1) i (2) nie mogą być jednocześnie prawdziwe, ponieważ jeśli 0 = Ax − b, wówczas
dla każdego y mamy: 0 = y T (Ax−b) = y T Ax−y T b. Zdanie (2) mówi, że dla x ≥ 0, y T Ax ≥ 0
i jednocześnie −y T b > 0, czyli y T Ax − y T b > 0, co daje sprzeczność.
Teraz należy wykazać, że negacja zdania (1) implikuje (2). Wówczas alternatywa tych
zdań będzie prawdziwa, co w połączeniu z powyższym będzie oznaczało, że dokładnie jedno
z tych zdań jest prawdziwe.
Załóżmy, że nie istnieje x ≥ 0 spełniający Ax = b. Oznaczmy K = {z : z = Ax, x ≥ 0}.
Z założenia b ∈
/ K. Rozważmy rzut wektora b na zbiór K, tzn. taki punkt p ∈ K, który
minimalizuje odległość ||b − z||, z ∈ K. Zbiór K jest niepustym zbiorem wypukłym, więc
zachodzi poniższa nierówność:
(b − p)T (Ax − p) ≤ 0
co wynika z faktu, że kąt pomiędzy wektorem (b − p) a dowolnym wektorem (Ax − p) nie
może być ostry (stąd ich iloczyn skalarny jest nie większy od zera, patrz Rysunek 1.).
Rysunek 1: Ilustracja idei lematu Farkasa.
Niech p = Aw dla pewnego w ∈ K, będzie rzutem wektora b na zbiór K. Zdefiniujmy
y = p − b, stąd −y = b − p i otrzymujemy dla wszystkich x ≥ 0:
−y T (Ax − Aw) = (x − w)T AT (−y) ≤ 0
2
co daje:
∀x ≥ 0 (x − w)T AT y ≥ 0.
Biorąc kolejne wektory ei = [0 . . . 1 . . . 0]T , gdzie 1 znajduje się tylko na i-tej pozycji,
konstruujemy wektory xi = w + ei . Ponieważ powyższa nierówność zachodzi dla wszystkich
x ≥ 0, więc zachodzi też dla xi , skąd otrzymujemy po wstawieniu xi − w = ei :
eTi AT y ≥ 0 ⇒ (AT y)i ≥ 0.
Wobec tego wszystkie elementy wektora AT y muszą być nieujemne. Stąd wniosek, że AT y ≥ 0.
Niech teraz y T b = y T (p − y) = y T p − y T y.
Ponownie, ponieważ nierówność (b − p)T (Ax − p) ≤ 0 zachodzi dla wszystkich x ≥ 0, więc
w szczególności zachodzi dla x0 = 0. Stąd otrzymujemy:
(b − Aw)T (Ax0 − Aw) = (b − Aw)T (−Aw) = −y T (−Aw) = y T Aw = y T p ≤ 0.
Ponieważ b ∈
/ K, więc wektor y 6= 0, więc y T y = ||y|| > 0. Uzyskujemy ostatecznie:
y T b = y T p − ||y|| < 0,
co dowodzi zdania (2). QED.
Wróćmy teraz do Twierdzenia 2 (o silnej dualności).
Dowód (Twierdzenia 2):
Załóżmy, że x∗ jest rozwiązaniem optymalnym zadania (1)–(3). Podzielmy ograniczenia
(2) na dwie grupy: spełnione w sposób równościowy i w sposób ostro nierównościowy:
aTi x∗ = bi , i ∈ I,
aTi x∗ < bi , i ∈
/ I.
Pokażemy, że nie istnieje rozwiązanie d spełniające następujący układ nierówności:
aTi d ≤ 0, i ∈ I,
cT d < 0.
Gdyby takie rozwiązanie istniało, wówczas dla i ∈ I byłoby prawdziwe:
t(aTi d) ≤ 0
dla dowolnej liczby rzeczywistej t > 0, więc z faktu, że aTi x∗ = bi , czyli również aTi x∗ ≤ bi ,
otrzymujemy:
aTi x∗ + t(aTi d) ≤ bi
aTi (x∗ + td) ≤ bi .
Natomiast dla i ∈
/ I, zawsze możemy dobrać odpowiednio małą liczbę t > 0, tak, aby spełnione było:
aTi x∗ + taTi d ≤ bi ,
aTi (x∗ + td) ≤ bi .
Wobec tego wektor x0 = x∗ + td jest rozwiązaniem dopuszczalnym problemu (1)–(3), więc
wartość funkcji celu:
cT x0 = cT x∗ + t(cT d) < cT x∗ ,
ponieważ z założenia t(cT d) < 0.
3
Więc taki wektor d nie istnieje. Zauważmy, że −aTi d ≥ 0, i ∈ I oraz cT d < 0 odpowiada
przypadkowi (2) z lematu Farkasa. Ponieważ pokazaliśmy, że przypadek ten nie zachodzi,
więc zachodzić musi przypadek (1), który przyjmuje tu postać:
−aT yi = c,
dla i ∈ I. Oznaczmy przez y ∈ Rm wektor, który dla i ∈ I przyjmuje wartości yi będące
rozwiązaniem powyższego układu równań, a dla i ∈
/ I przyjmuje wartości yi = 0. Stąd
T
istnieje taki wektor −y, spełniający A (−y) = c, czyli będący rozwiązaniem dopuszczalnym
problemu dualnego (4)–(5).
Wektor ten daje wartość funkcji celu równą wartości optymalnego rozwiązania problemu
prymalnego:
X
X
bT (−y) = −
bi yi = −
(aTi x∗ )yi = (−y)T Ax∗ = cT x∗ .
i∈I
i∈I
QED.
3
Algorytm Simplex
Postać standardowa programowania liniowego:
min cT x
(6)
Ax = b,
(7)
x ≥ 0.
(8)
s.t.:
gdzie A jest macierzą m × n, m < n.
Postać kanoniczna: Ax ≥ b.
Postać ogólna: A1 x ≥ b1 , A2 x = b2 , x – dowolne.
Wszystkie 3 postacie są równoważne.
Wielościan (ang. polyhedron): zbiór P = {x ∈ Rn : Ax ≤ b}, gdzie A ∈ Rm×n ,
b ∈ Rm . Jeśli P jest zbiorem ograniczonym to nazywamy go wielościanem ograniczonym lub
wielokomórką (ang. polytope).
Ściana (ang. face): zbiór będący przecięciem wielościanu i półprzestrzeni, zawierający
się w całości wewnątrz płaszczyzny definiującej półprzestrzeń. Dla wielościanu wymiaru d
wyróżniamy:
• ściana (ang. facet) wymiaru d − 1 (hiperpłaszczyzna)
• krawędź (ang. edge) wymiaru 1 (prosta)
• wierzchołek (ang. vertex) wymiaru 0 (punkt)
Wierzchołek wielościanu nazywany jest również rozwiązaniem bazowym układu Ax ≤ b
(ang. basic solution).
Wypukła otoczka: (ang. convex hull) każdy wielościan jest wypukłą otoczką swoich
wierzchołków. Wypukła otoczka dowolnego skończonego zbioru punktów jest wielościanem.
Baza (ang. basis): zbiór m liniowo niezależnych wektorów {Aj1 , . . . , Ajm }. Inaczej: nieosobliwa macierz m × m, B = [Ajk ].
Rozwiązanie bazowe: dla bazy B, jest to x ∈ Rn , taki, że dla Aj ∈
/ B, xj = 0, a dla
−1
pozostałych Aj : xjk = k-ty element wektora B b, k = 1, . . . , m.
Dalej rozważmy problem (6)–(8), zakładając, że rank(A) = m (macierz A ma m liniowo
niezależnych kolumn).
4
Twieredzenie 3. Niech x będzie rozwiązaniem bazowym Ax = b, x ≥ 0, odpowiadającym
bazie B. Wtedy istnieje wektor c, taki, że x jest jedynym rozwiązaniem zadania LP: min{cT x :
Ax = b, x ≥ 0}.
Dowód. Rozważmy wektor c, zdefiniowany jako cj = 0 dla Aj ∈ B, cj = 1 dla Aj ∈
/ B.
T
Ponieważ c x = 0, oraz z faktu, że wszystkie współczynniki są nieujemne, wektor x musi być
rozwiązaniem optymalnym. Każde inne rozwiązanie o zerowym koszcie musi mieć zera dla
współrzędnych j, takich, że Aj ∈
/ B. Więc takie rozwiązanie musi być równe x.
5