Simpleksna metoda. Drago Bokal, Tanja Gologranc Oddelek za matematiko in računalništvo Fakulteta za naravoslovje in matematiko Univerza v Mariboru
Kanonična oblika linearnega programa. min c T x p. p. Ax = b x 0 Kako dobimo iz standardne oblike?
Bazne rešitve kanoničnega linearnega programa. Definicija Naj bo dan kanonični linearni program Ax = b in naj bo x > 0 njegova dopustna rešitev. Potem je b linearna kombinacija stolpcev A, ki ustrezajo neničelnim komponentam x. Če so ti stolpci linearno neodvisni, je x bazna rešitev linearnega programa. Za primer b = 0 definiramo x = 0 kot edino bazno rešitev linearnega programa.
Bazne rešitve kanoničnega linearnega programa. Trditev Baznih rešitev danega linearnega programa je končno mnogo.
Bazne rešitve kanoničnega linearnega programa. Trditev Baznih rešitev danega linearnega programa je končno mnogo. Izrek Če ima dani kanonični linearni program kako dopustno rešitev, potem ima bazno dopustno rešitev. Če ima optimalno rešitev, potem ima bazno optimalno rešitev. Naj obstaja dopustna rešitev in naj bo x taka z najmanj neničelnimi komponentami. Če x nima pozitivnih komponent, potem je x = 0 bazna rešitev.
Dokaz obstoja baznih rešitev. Sicer, BŠS, x 1,..., x k pozitivne komponente. Pokažemo, da so stolpci A 1,..., A k linearno neodvisni. Če ne, potem obstaja netrivialna ničelna linearna kombinacija k i=1 z i A i = 0. Ax = b, Az = 0, A(x λz) = b. z neničelna tam, kjer x pozitivna, zato x λz dopustna za male λ. Za λ = min i x i /z i je x λz dopustna in ima manj neničelnih komponent kot x, protislovje. Torej so stolpci linearno neodvisni in x je bazna rešitev.
Dokaz obstoja baznih rešitev. Podobno dokažemo, da je optimalna rešitev x 0 z najmanj neničelnimi komponentami bazna. Naj kot prej k i=1 z i A i = 0, kjer so 1,..., k stolpci, ki ustrezajo neničelnim komponentam x. Velja Ax = b, torej k i=1 x i A i = b, torej k i=1(x i λz i )A i = b. Zaradi dopustnosti x vemo tudi x 0. Predpostavimo lahko, da je k i=1 z i c i 0, sicer pomnožimo z i z 1. Pokažemo, da velja k i=1 z i c i = 0. Sicer velja c T (x λz) = c T x λ i=1 z i c i < c T x za mali λ, protislovje z optimalnostjo x. Zato je c T z = 0 in je za male λ rešitev x λz optimalna, a ima pri izbranem λ manj neničelnih členov, protislovje. Zato je x bazna in optimalna.
Lema o nedegeneriranosti. Linearni program v kanonični obliki, min c T x, Ax = b, x 0. A ima m vrstic in n stolpcev ter m < n. Nedegeneriran, če: (i) Vrstice A so linearno neodvisne. A ima poln rang. Izognemo se odvisnosti ali nekonsistentnosti enačb j a ij x j = b i. (ii) b ni linearna kombinacija manj kot m stolpcev A. Izognemo se numerični nestabilnosti. b + δ za naključni δ izpolnjuje pogoj.
Lema o nedegeneriranosti. Lema Linearni program v kanonični obliki, min c T x, Ax = b, x 0. A ima m vrstic in n stolpcev ter m < n. Nedegeneriran, če: (i) Vrstice A so linearno neodvisne. A ima poln rang. Izognemo se odvisnosti ali nekonsistentnosti enačb j a ij x j = b i. (ii) b ni linearna kombinacija manj kot m stolpcev A. Izognemo se numerični nestabilnosti. b + δ za naključni δ izpolnjuje pogoj. Naj bo problem min c T x, Ax = b, x 0 nedegeneriran in naj ima A m vrstic. Potem je x bazna dopustna rešitev natanko tedaj, ko ima natanko m pozitivnih komponent.
Dokaz leme o nedegeneriranosti. Naj bo x dopustna bazna rešitev. A ima m vrstic, rang največ m, torej x največ m neničelnih komponent. b ni linearna kombinacija manj kot m stolpcev matrike A, torej ima x vsaj m neničelnih komponent. Naj bo x dopustna rešitev, ki ima natanko m neničelnih komponent. Predpostavimo lahko, da so neničelne komponente natanko x 1,..., x m. Recimo, da x ni bazna. Potem je prvih m stolpcev matrike A linearno odvisnih in matrika A nima polnega ranga. Protislovje z nedegeneriranostjo linearnega programa.
Osnovna simpleksna metoda: predpostavke, skica. Naj bo dani linearni program nedegeneriran. Ali je Ax = b ob tej predpostavki rešljiva? Koliko rešitev ima? Skica simpleksne metode: Faza 1: najdemo bazno rešitev Ax = b ali dokažemo, da je ni. Faza 2: najdemo optimalno bazno rešitev ali dokažemo, da je ni. V Fazi 2 po korakih izboljšujemo bazno rešitev. Ko ni boljše bazne rešitve, smo v optimalni (bazni) rešitvi.
Osnovna simpleksna metoda: Faza I. Linearni program v kanonični obliki, min c T x, Ax = b, x 0. BŠS predpostavimo b 0. Zakaj? Kako popravimo b i < 0? Nov linearni program, min z i, Ax + z = b, x, z 0. Dopustna bazna rešitev: x = 0, z = b. Poženemo fazo II. Optimalna rešitev ima z = 0 natanko tedaj, ko Ax = b nima rešitve. Optimalna rešitev: z = 0, x bazna za Ax = b.
Osnovna simpleksna metoda: Faza II., začetek in konec Linearni program v kanonični obliki, min c T x, Ax = b, x 0, x 0 začetna bazna rešitev. B = {j x j > 0} {1,..., n}: baza rešitve, indeksi neničelnih komponent x. Opazimo B = m. B vsebuje indekse stolpcev, tako da je x-linearna kombinacija teh stolpcev enaka b. M - matrika iz B-stolpcev A; M nesingularna, obrnljiva, b = Mx B, (kjer x B oskubljeni x). y T M = c B ima natanko eno rešitev y (kjer je c B oskubljeni c). Če je y dopustna za dualni problem, tj. y T A c, potem: je y optimalna za dualni problem, je x optimalna za primalni problem (z ničlami na ustreznih mestih). Če y ni dopustna za dualni problem, potem...
Osnovna simpleksna metoda: Faza II., korak... potem obstaja k {1,..., n}, kjer y T A k > c k. Bazo popravimo v B B {k}. Stolpec A k razvijemo po stolpcih M, z = M 1 A k. b = Mx = Mx λ(mz A k ) = λa k + M(x λz). Za 0 λ, z j, x j λz j 0 je x λz dopustna rešitev primala. Izboljšava v kriterijski funkciji je λ(z k c k ) > 0. Če velja z i 0 za vsak i, potem vsak λ < 0 predstavlja boljšo rešitev, problem neomejen, končamo. Če obstaja z i > 0, potem λ = min zi >0 x i /z i vodi do strogo boljše bazne rešitve. Boljših baznih rešitev je končno mnogo, torej se ta korak le nekajkrat ponovi.
Gojenje paradižnikov kot linearni program. 50 ha zemljišča. Gojimo češnjev paradižnik in sorto volovsko srce. Na voljo 300 ur dela na teden. Na voljo 800 ton gnojila. Zakupljena količina za največ 30 hektarov volovskega srca in 40 hektarjev češnjevega paradižnika. Hektar volovskega srca: 10 ur dela na teden, 8 ton gnojila, 100 EUR dobička. Hektar češnjevega: 3 ure dela, 20 ton gnojila, 300 EUR dobička. Poiščimo količino paradižnika z maksimalnim dobičkom.
Gojenje paradižnikov kot linearni program. Kontrolne spremenljivke: x v, x c : število hektarov volovskega srca in češnjevega paradižnika. Omejitve: Maksimalna prodaja: x v 30, x c 40. Gojitvena površina: x v + x c 50. Razpoložljivo delo: 10x v + 3x c 300. Gnojilo: 8x v + 20x c 800. Nenegativne spremenljivke: x v, x c 0. Kriterijska funkcija, dobiček: 100x v + 300x c.
Linearni program. max 100x v + 300x c p. p. x v + x c 50 10x v + 3x c 300 8x v + 20x c 800 x v 30 x c 40 x v, x c 0
Grafična predstavitev. Pozitivnost spremenljivk: pozitivni kvadrant. Škatla maksimalne prodaje: x v = 30; x c = 40. Površina: x v = 0, x c = 50; x v = 50, x c = 0. Delo: x v = 0, x c = 100; x v = 30, x c = 0. Gnojilo: x v = 0, x c = 40; x v = 100, x c = 0. Nivojnice kriterijske funkcije: x v = 3x c. Iščemo največjo nivojnico, ki še seka prostor dopustnih rešitev.
Grafična predstavitev. Aktivne omejitve optimalne rešitve: gnojilo, maksimalna prodaja, nenegativna površina. x v = 0 ha, x c = 40 ha.
Primer s paradižnikom Primal v kanonični obliki (izpustimo odvečne omejitve): min 100x v 300x c + 0x p + 0x d + 0x g p. p. 10x v + 3x c + x d = 300 8x v + 20x c + x g = 800 x v, x c, x d, x g 0 Dopustna rešitev: x v = x c = 0, x d = 300, x g = 800.
Primer s paradižnikom Dual: max 300y d + 800y g p. p. 10y d + 8y g 100 3y d + 20y g 300 y d 0 y g 0
Druga faza, prvi korak B = {d, g} Dualna rešitev: y d = y g = 0 ni dopustna za dual. Kršena omejitev c. z = [0, 1, 3, 20] T. x = [0, 40, 180, 0].
Druga faza, drugi korak B = {c, d} Dualna rešitev: y d = 0, y g = 15 je dopustna za dual. x = [0, 40, 180, 0] je optimalna rešitev. Posadimo 40 ha češnjevega paradižnika. Analiza rešitve: Aktivni omejitvi: gnojilo, pozitivne količine. Realistično: Če bi imeli več gnojila, bi posadili še več češnjevega paradižnika. Nova aktivna omejitev: količina prodaje (smo zanemarili!). Torej bi morali saditi volovsko srce. Nerealistično: Če bi lahko gojili negativno količino volovskega srca, bi pridelali gnojilo in posadili več češnjevega paradižnika. A ga ne bi prodali: omejitev gnojila bi postala neaktivna. Zakaj specializacija, monokulture?