38 8. Ensimmäisen käyvän kantaratkaisun haku Edellä kuvattu simplex-algoritmi tarvitsee alkuratkaisuksi käyvän kantaratkaisun eli käyvän joukon kärkipisteen. Sellaisen voi konstruoida seuraavilla tavoilla: 1. Jos oikea puoli b 0 ja kerroinmatriisi A sisältää kaikki yksikkömatriisin sarakkeet, niin kanta B saadaan niistä. Tällainen tilanne on mm. silloin, kun tehtävä on alunperin standardimuotoinen epäyhtälöprobleema, joka pelivaramuuttujilla muutetaan yhtälömuotoon. 2. Jos yhtälöön Ax = b ( 0) lisätään jokaiselle riville vasemmalle puolelle keinomuuttujat x n+1,,x n+m (artificial variables), ja ne varustetaan kohdefunktiossa kertoimella M>0 ("suuri luku"), niin kyseessä on M-tekniikka. Silloin probleema on muotoa min z M = c 1 x 1 + +c n x n +Mx n+1 + +Mx n+m a 11 x 1 + +a 1n x n +x n+1 =b 1 a m1 x 1 + +a mn x n +x n+m =b m x 1,, x n, x n+1,, x n+m 0.
39 Ilmeisesti minimointi pitää huolen siitä, että keinomuuttujien arvot tulevat jossain vaiheessa nollaksi, jos alkuperäisellä tehtävällä on käypiä ratkaisuja. Tehtävän kerroinmatriisi sisältää yksikkömatriisin, joten simplex-algoritmi pääsee alkuun. Jos sitten jossain vaiheessa keinomuuttujia vastaavat sarakkeet ovat poistuneet kannasta B, niin ne voidaan poistaa probleemasta ja jatkaa vain alkuperäisillä muuttujilla. Jos optimiratkaisu sisältää keinomuuttujia positiiviarvoisina, alkuperäisen probleeman käypä joukko on tyhjä. 3. Samantapainen menettely on kaksivaihetekniikka, jossa ensimmäinen vaihe on kuten M-tekniikassa, mutta kohdefunktiona on pelkästään keinomuuttujien summa x n+1 + +x n+m, jota minimoidaan. Minimiarvoksi tulee nolla, jos alkuperäisellä probleemalla on käypiä ratkaisuja. Kun keinomuuttujia vastaavat sarakkeet ovat poistuneet kannasta, keinomuuttujat poistetaan probleemasta ja kohdefunktioksi vaihdetaan alkuperäinen kohdefunktio ja jatketaan löydetystä kannasta vaiheena kaksi. Jos optimi löytyy ennen kuin keinomuuttujat ovat tulleet nollaksi, niin alkuperäisen tehtävän käypä joukko on tyhjä. M-tekniikka ja kaksivaihetekniikka antavat aina lopulta käyvän kantaratkaisun tai kertovat käyvän joukon tyhjyydestä. Edellinen ottaa jo iteroinnin alusta huomioon alkuperäisenkin kohdefunktion pienentämisen, mutta oikean kokoisen M:n asettaminen voi olla vaikeaa. Kaksivaihetekniikka etenee nopeammin kohti käypyyttä eikä ota lainkaan huomioon alkuperäistä kohdefunktiota aluksi.
40 9. Duaalisuus ja varjohinnat Jokaisella lineaarisen optimoinnin tehtävällä on olemassa duaaliprobleema. Jos primaaliprobleema on standardi yhtälöprobleema P min z = c T x Ax = b x 0, niin sen duaaliprobleema on D max w = b T u A T u c (u etumerkiltään vapaa) Jokaiselle lineaarisen optimoinnin probleemalle voidaan määritellä duaaliprobleema. Maksimointi vaihtuu minimoinniksi ja päinvastoin. Kohdefunktion kerroinvektori ja oikea puoli vaihtavat paikkaa. Kerroinmatriisi transponoituu ja kutakin primaalin rajoitusehtoa vastaa duaalin muuttuja ja päinvastoin. Rajoitusehtojen tyypit ja muuttujien etumerkkiehdot vastaavat toisiaan oheisen taulukon mukaisesti: Maksimointi Minimointi raj muuttuja 0 raj muuttuja 0 raj = muuttuja vapaa muuttuja 0 raj muuttuja 0 raj muuttuja vapaa raj = Todetaan, että jos primaali on maksimointitehtävä, niin duaalissa minimoidaan, ja päinvastoin. Samoin nähdään, että primaalin rajoitusehtoa vastaa duaalin muuttuja ja rajoitusehdon tyyppi (epäyhtälö tai yhtälö) määrää duaalin muuttujan etumerkkiehdon Vastaavasti primaalin muuttujan etumerkkiehto määrää duaalin rajoitusehdon tyypin.
41 Näistä voidaan osoittaa, että duaalin duaali on primaali. Esimerkki Primaali: max z = 2x 1-3x 2 +5x 3 7x 1 +2x 2-4x 3 = 2 -x 1-4x 2 +2x 3 3 3x 1 +8x 2-5x 3 4 -x 1 +x 3 1 x 1 0, x 3 0 Duaali: min w = 2u 1 +3u 2 +4u 3 +u 4 7u 1 - u 2 +3u 3 -u 4 2 2u 1-4u 2 +8u 3 = -3-4u 1 +2u 2-5u 3 +u 4 5 u 2 0, u 3 0, u 4 0 Duaalitehtävän pääasiallinen käyttö on tarjota ala- tai ylärajoja lineaarisen optimoinnin probleeman kohdefunktiolle: Jos x on primaalin P ja u duaalin D käypä ratkaisu, niin w = b T u = (Ax) T u = x T A T u x T c = z eli aina on w z. Erityisesti on siis w z min ja w max z. Näin mikä hyvänsä duaalitehtävän käypä ratkaisu antaa alarajan minimointitehtävän kohdefunktiolle ja mikä hyvänsä käypä primaalitehtävän ratkaisu antaa ylärajan maksimointitehtävän kohdefunktiolle.
42 Jos joillakin x *, u * on voimassa w = z eli c T x * = b T u *, niin kyseessä ovat optimikohdat: c T x * = b T u * c T x kaikilla x & b T u * = c T x * b T u kaikilla u. Siis optimikohdassa pätee optimiarvojen yhtäsuuruus: w max = z min Tästä seuraa silloin: Jos duaalitehtävän ratkaisu on max w =, niin primaalin käypä joukko on tyhjä. Jos primaalin ratkaisu on min z = -, niin duaalin käypä joukko on tyhjä. Duaalitehtävän ratkaisu tulee simplex-algoritmissa ikään kuin kaupan päälle. Duaalitehtävän optimiratkaisu u * on laskettavissa primaalin optimaalisesta kannasta B seuraavasti: u * = (B -1 ) T c B. Tämä nähdään (tarkka todistus sivuutetaan) siitä, että optimissa z min = c B T x B * = c B T B -1 b = (B -1 b) T c B = b T ( B -1 ) T c B = b T u *.
43 Varjohinnat Jos tarkastellaan standardia epäyhtälötehtävää max z = c T x Ax b x 0 jossa oikea puoli b on parametrina, niin kohdefunktion optimiarvo on silloin b:n funktio: z max (b) = c B T x B = c B T B -1 b. Tästä nähdään (tarkka todistus sivuutetaan) silloin, että duaalitehtävän optimiratkaisut u j * ovat z max :n osittaisderivaattoja oikean puolen lukujen b j suhteen: z max = u * j. b j Lukuja u j * sanotaan tästä syystä varjohinnoiksi (shadow prices). Jos epäyhtälörajoitus j kuvaa jotakin resurssia, niin rajoituksen toteutuminen yhtälönä merkitsee, että resurssi on käytetty loppuun. Silloin resurssin lisääminen yhden yksikön verran lisää optimiratkaisussa katetuottoa varjohinnan verran. Jos siis resurssia saadaan hankittua hintaan, joka on alle varjohinnan, se kannattaa.
44 10. Kokonaislukutehtävän ja LP:n yhteyksiä Minkowskin esityslauseen avulla voidaan osoittaa, että jos P on rationaalinen monitahokas ja S sen sisällä olevien kokonaislukupisteiden joukko, niin co(s) on rationaalinen monitahokas. Tällöin siis luvun 2 tehtävällä (2) on suppein eli paras mahdollinen IP-formulaatio x co(s) = {x n A x b } x n, x 0, missä A ja b ovat monitahokkaan co(s) määrittelevät matriisit. Koska kokonaislukupistejoukon S konveksin verhon kärkipisteet ovat kokonaislukupisteitä, antaa tämän ratkaisu tavallisena lineaarisen optimoinnin tehtävänä (ilman kokonaislukuvaatimuksia) automaattisesti IP:n ratkaisun. Siis kokonaislukuprobleema x S n +, joka oli muotoiltu IP:nä x P = {x n Ax b} x n +, x 0, voidaan ratkaista (jatkuvamuuttujaisena) LP:nä x co(s) = {x n + Ax b}.
45 Tähän ratkaisemiseen voidaan käyttää esimerkiksi simplex-algoritmia. Tämä havainto on kuitenkin vain periaatteellinen: edellä mainitun konveksin verhon monitahokasmuodon co(s) = {x n A x b } löytäminen on laskennallisesti hyvin työläs. Ratkaisun olemassaolon kannalta kokonaislukuprobleemalla IP on kolme vaihtoehtoa: käypiä ratkaisuja ei ole, kohdefunktio saa rajoittamattoman suuria arvoja ("max z = ") tai löytyy äärellinen (mahdollisesti useampikin) optimikohta co(s):n kärkipisteistä. (Kaikkien optimikohtien ei tarvitse olla kärkipisteitä, jos optimaalisten kärkipisteiden konveksissa verhossa on kokonaislukuratkaisuja.) (Tässä edellytetään, että IP:n muotoilussa oleva monitahokas on rationaalinen. Irrationaalidatan tapauksessa voi käydä niin, että sup z ei ole saavutettavissa käyvässä joukossa.) Jos kokonaislukutehtävästä IP x P = {x n + Ax b} x n "unohdetaan" muuttujien kokonaislukuvaatimukset pois, saadaan relaksoitu tehtävä, IP:n LP-relaksaatio x P = {x n + Ax b}. Jos merkitään näiden optimiarvoja z * IP ja z * LP, niin aina pätee z * IP z * LP. Mikäli P = co(s), niin edellä pätee yhtäsuuruus eli tilanne on kokonaislukuoptimoinnin kannalta ihanteellinen, koska LP-relaksaatio ratkaisee IP:n.
46 Eräissä tapauksissa tilanne P = co(s) nähdään matriisin A kertoimista. Matriisi A on totaalisesti unimodulaarinen, jos sen jokainen alideterminantti on 0, 1 tai -1. Heti nähdään, että A:n alkioina voi olla vain lukuja 0, 1 ja -1 (1-rivisinä determinantteina). Ehto on siis varsin rajoittava, mutta kuitenkin moni erityisesti binäärioptimointiin kuuluva probleema on sitä muotoa. Totaalinen unimodulaarisuus säilyy transponoinnissa, rivin tai sarakkeen poistossa, rivien tai sarakkeiden paikan vaihdossa ja rivien tai sarakkeiden monistamisessa. Samoin jos A on totaalisesti unimodulaarinen, niin myös [A I] ja rref(a) ovat sitä. Tällöin voidaan todistaa (Hoffman-Kruskal, 1956): Rajoitetun monitahokkaan P = {x n + Ax b} kärkipisteet ovat kokonaislukupisteitä kaikilla kokonaislukuvektoreilla b täsmälleen silloin, kun A on totaalisesti unimodulaarinen matriisi. Todistus perustuu oleellisesti Cramerin sääntöön sovellettuna yhtälöryhmään Bx B = b, missä B on kärkipisteen eli kantaratkaisun määrittelevä ei-singulaarinen kantamatriisi. Esimerkki. Kuljetusongelma eli Transportation Problem Eräs varhainen sovellus lineaarisessa optimoinnissa oli kuljetusten optimointi. Perusmallissa on yksi tuote, jota valmistetaan useassa eri paikassa ja jota on kuljetettava eri asiakkaille. Yritys valmistaa samaa tuotetta m:ssä tehtaassa O 1,, O m, joista tuotteet on toimitettava n:lle asiakkaalle D 1,, D n. Valmistusmäärät ovat s i, i=1,,m kussakin tehtaassa i, ja asiakkaiden tilaukset ovat d j, j=1,,n kullakin asiakkaalla j. Kuljetuskustannukset tehtaalta i asiakkaalle j ovat c ij kuljetettavaa yksikköä kohti. Muuttujina ovat kuljetusmäärät x ij tehtaalta i asiakkaalle j.
47 Kuljetuskustannukset minimoiva kuljetussuunnitelma saadaan lineaarisen optimoinnin mallista min z = m n i= 1 j= 1 cx ij ij m xij = d j ( j = 1,, n) i= 1 n xij = si ( i = 1,, m) j= 1 x 0 ( i = 1,, m; j = 1,, n) ij Kuljetusongelma voidaan esittää oheisena verkkona (kaikkia nuolia ei ole tässä merkitty näkyviin. s1 O1 D1 d1 si Oi Dj dj sm Om Dn dn Kuljetusmallin tulee ratkaisua varten olla tasapainossa eli kokonaistarjonnan on oltava sama kuin kokonaiskysynnän. Jokainen kuljetusongelma voidaan tarvittaessa tasapainottaa ottamalla käyttöön keinotekoiset dummy tehtaat (jos tuotanto pienempi kuin kysyntä) tai dummy asiakkaat (jos kysyntä pienempi kuin tuotanto). Voidaan osoittaa, että kuljetusongelman kerroinmatriisi on totaalisesti unimodulaarinen.