5..0 Tehtävä Ovatko seuraavat väittämät oikein vai väärin? Perustele vastauksesi. (c) (d) Arvostelu Kanta on degeneroitunut jos ja vain jos sitä vastaava kantamatriisi on singulaarinen. Optimissa muuttujan redusoitu kustannus voi poiketa nollasta vain jos muuttujan arvo on nolla. Standardimuotoinen tehtävä on epäkäypä jos ja vain jos sen duaali on epäkäypä tai rajoittamaton. Käytännössä kaikki ratkaisualgoritmit, jotka soveltuvat suurten kokonaislukuoptimointitehtävien ratkomiseen ovat polynomiaikaisia. Oikea johtopäätös ja perustelu (.5 p). Väärä johtopäätös mutta perustelu lähes oikein ( p). Oikea johtopäätös mutta puutteellinen perustelu joka kuitenkin on oikeansuuntainen (0.5 p). Väärin. Kaksi virhettä (toinen riittää): Singulaarisuus vastaa sitä että kaksi tai useampi rajoitussuora on samansuuntaiset, mutta degeneraatioon riittää että riittävän monta suora leikkaa kulmapisteessä. Toiseksi kantamatriisin on määritelmän mukaan oltava kääntyvä, jolloin ehto ei tässä mielessä koskaan toteudu. Oikein. Seuraa suoraan täydentyvyysehdosta, jonka mukaan (c j p A j )x j = 0. (c) Väärin. Jos duaali on epäkäypä tai rajoittamaton voi primaali olla myös rajoittamaton. Voidaan lukea taulukosta jossa mahdolliset ja mahdottomat primaali-duaali-parit (seurausta heikosta ja vahvasta duaalisuudesta). (d) Väärin. Käytetään myös eksponentiaaliaikaisia algoritmeja ja toisaalta heuristisia menetelmiä, joille ei voida taata mitään ylärajaa optimin löytämiseen vaadittavalta laskentamäärälle. Tehtävä Viidestä vaihtoehdosta halutaan toteuttaa mahdollisimman monta seuraavien rajoitusten vallitessa: Vaihtoehtoa ei voi toteuttaa ellei vaihtoehtoa tai 3 ole toteutettu. Vähintään mutta enintään vaihtoehdoista -5 toteutetaan. Vaihtoehto 5 voidaan toteuttaa vain jos vaihtoehtoa ei ole toteutettu, paitsi jos vaihtoehdot 3 ja 4 on toteutettu. Formuloi ongelma lineaarisen kokonaislukuoptimoinnin tehtävänä. Olkoon matriisi A R n m, vektorit b R n ja c R m, c 0 sekä päätösvektori x R m. Formuloi (jatkuvana) lineaarisen ohjelmoinnin tehtävänä Vastaus min m c j x j s.e. Ax b. j= Sivu / 8
5..0 Päätösmuuttuja x i = jos vaihtoehto i valitaan, muulloin 0. M on suuri luku ja y binäärinen indikaattorimuuttuja tai-ehdolle. (0.5 p) 5 max x i (0.5 p) i= s.e. x x + x 3 (0.5 p) 5 (0.5 p) i= x 5 x + My(0.5 p) x 3 + x 4 M( y)(0.5 p) x i, y {0, } Tehtävän voi ratkaista kahdella tavalla josta arvostellaan formulaatio ( p) ja sen selitys ( p). Havaitaan että x i on pienin luku z j jolle pätee x i z i ja x i z i. Tällöin tehtävän min s.e. m c j z j j= Ax b x j z j, j =,..., n x j z j, j =,..., n optimissa z j = x j, kun c j 0 j, sillä formulaatiossa kannattaa aina pienentää muuttujan arvoa mikäli sillä on ylijäämää. Tehtävän voi myös formuloida jakamalla muuttujat positiiviseen ja negatiiviseen osaan: x j = x + j x j, x+ j, x j 0. Tällöin tehtävän min s.e. m c j (x + j + x j ) j= x + j, x j Ax b x j = x + j x j j =,..., n 0, j =,..., n optimissa x + j + x j = x j, sillä tasan toinen muuttujista x + j ja x j poikkaa nollasta kun c j 0 j, koska jälleen kannattaa aina ylijäämän pienentäminen. Tehtävä 3 Tarkastellaan tehtävää min 3x + 0x + 6x 3 s.e. con: 5x + x + 3x 3 = 8 con: 3x + x = 3 x, x, x 3 0. () Sivu / 8
5..0 Muodosta tehtävän Simplex-taulukko, kun kannassa ovat muuttujat x ja x 3. Mitä Simplex-taulukosta löytyy? Anna taulukon osille geometrinen tulkinta. (c) Ratkaise tehtävä Simplex-algoritmilla alkaen muodostamastasi taulukosta. (d) Muodosta tehtävän duaali ja piirrä Simplex-algoritmin kulku duaaliavaruuteen. Vastaus Tehtävä on valmiiksi standardimuodossa ja tehdään muutama alkeisrivioperaatio Simplex-taulukon luomiseksi. Vähennetään puolittain con con:stä, jolloin saadaan x + 3x 3 = 5 3 x + x 3 = 5 3. Asettamalla x = 0 (ei kantamuuttuja) voidaan tehtävästä min 3x + 0x + 6x 3 s.e. 3x + x = 3 3 x + x 3 = 5 3 x, x, x 3 0. (c) (d) lukea kantamuuttujien arvot ja kohdefunktion arvoksi laskea 3 0+6 5 3 = 40. Vähentämällä kohdefunktiosta 0 kertaa rajoite ja ja 6 kertaa rajoite saadaan kohdefunktion riville 3 3 0 3 6 =. Simplex-taulukoksi saadaan siis 40 0 0 x = 3 3 0 (.5p) x 3 = 5 3 3 0 Taulukosta löytyy -(kohdefunktion arvo) Redusoidut kustannukset (.5p) Kantamuuttujien arvot Kantasuunnat Kantasuunnat kertovat mihin suuntaan siirrytään jotta yhtälörajoitteet toteutuvat kun ei-kantamuuttuja tuodaan kantaan (0.5 p). Redusoidut kustannukset kertovat kuinka paljon kohdefunktion arvon muuttuu jos kyseiseen kantasuuntaan liikutan siten että kyseinen muuttuja kasvaa yhden yksikön (0.5 p). Ratkaisu ei ole optimaalinen sillä muuttujan x redusoitu kustannus on negatiivinen. Otetaan se kantaan, jolloin muuttuja x poistuu kannasta kun askelpituus on. Seuraavaksi taulukoksi saadaan 9 0 7 0 x = 3 0 x 3 = 0 9 Taulukko on optimaalinen sillä kaikki redusoidut kustannukset ovat positiivisia. Optimissa x = (, 0, ) ja optimaalinen kustannus on 9. (.5 p) Tehtävän duaali on max 8p + 3p s.e. 5p + 3p 3 p + p 0 3p 6 (0.5 p) Sivu 3 / 8
5..0 Algoritmin kulku saadaan täydentyvyysehdoista: aloituspisteessä aktiivisena duaalin. ja 3. rajoitus, optimissa taas. ja 3. rajoitus (0.5 p). Oheiseen kuvaan on piirretty algoritmin kulku (0.5 p). p p + p = 0 3p = 6 Aloituspiste 5p + 3p = 3 Duaalikäypä alue Optimi p Tehtävä 4 Jatketaan tehtävän 3 lineaarisen ohjelman () tarkastelua. Taulukossa on tehtävän herkkyysanalyysiraportti. Vastaa raportin avulla (ratkaisematta tehtävää uudelleen) seuraaviin kysymyksiin: (c) (d) Vastaus Kuinka paljon muuttujan x kustannus saa muuttua ennen kuin se tulee kantaan? Entä muuttujan x 3 kustannus? Kumpi on kannattavampaa: (i) vähentää rajoitteen con oikeaa puolta yksikköä jos siitä joutuu maksamaan 3 yksikköä vai (ii) lisätä rajoitteen con oikeaa puolta yksikköä jos kustannuksista tällöin saa vähentää 6 yksikköä? Tehtävään lisätään epänegatiivinen muuttuja x 4 ja sitä vastaava yksikkökustannus c 4 = ja rajoitusmatriisin sarake A 4 = (7, 6). Muuttuuko optimaalinen kanta? Oletetaan että tehtävään lisätään epäyhtälörajoite, jonka seurauksena optimaalinen kanta muuttuu. Miten voidaan alkuperäisen tehtävän optimaalista Simplex-taulukkoa hyödyntää duaalisimplex-algoritmin alustamisessa? Muuttujan x kerroin saa vaihdella välillä [3, ] (obj coef range) ennen kuin se tulee kantaan. Kun kustannus on alle kolmen tulee muuttuja kantaan. Muuttuja x 3 on kannassa kun kustannus on välillä [ 5.5, ], eli muuttuja poistuu kannasta jos kustannus on alle -5.5. (toinen oikein p, molemmat oikein.5 p) Sivu 4 / 8
5..0 con varjokustannus (marginal) on p = ja con varjokustannus on p =. Näin ollen vaihtoehdon (i) kustannusvaikutus on p ( ) + 3 = (muutos pysyy sallituissa rajoissa). Vaihtoehdolle (ii) muutos ylittää suurimman sallitun eli kanta vaihtuu kohdalla 4.8, mutta varjokustannuksen avulla saadaan alaraja hyödylle, eli p (4.8 3) 6 = 4.. Näin ollen vaihtoehto (ii) on parempi sillä se antaa pienemmän kustannuksen (olettaen että se johtaa käypään ratkaisuun, mikä tässä tapauksessa pitää paikkansa). (.5 p) (c) Uuden muuttujan lisääminen ei vaikuta käypyyteen mutta vaikuttaa optimaalisuuteen = duaalikäypyyteen, jolloin käytetään kaavaa p T A 4 c 4 7 + ( 6) = 8, eli duaalikäypyys ei säily ja ratkaisu ei ole enää optimaalinen. (.5 p) (d) Optimaaliseen Simplex-taulukkoon tarvitsee vain täydentää rivi uutta rajoitetta ja sarake uutta ylijäämämuuttujaa varten, jotta saadaan duaalikäypä aloitusratkaisu, sillä duaalikäypyys säilyy, vaikka primaalikäypyys menetetään. (.5 p) Tehtävä 5 Tarkasteellaan kuvan kapasiteettirajoituksetonta verkkotehtävää, missä jokaisen kaaren viereen on merkitty kaarikustannus ja kaksoisnuolilla on merkitty lähteiden ja nielujen kapasiteetit. Katkoviivalla on verkkoon merkitty virityspuu. Muodosta ongelmasta standardimuotoinen lineaarisen ohjelmoinnin tehtävä. Ratkaise tehtävä verkkosimplexillä alkaen merkitystä virityspuusta. 0 3 0 3 5 3 8 0 6 4 6 4 7 5 Vastaus Kuva : Verkkotehtävä Tehtävän voi ratkaista kahdella tavalla, joista ensimmäinen lienee yksinkertaisempi: olkoon f ij 0 kaaren (i, j) virtaus, jolloin solmujen divergenssiehtojen Sivu 5 / 8
5..0 ja kohdefunktion seurauksena formulaatio on min 3f + f 3 + f 36 + f 4 + 4f 74 + f 5 + f 54 + 3f 85 + f 68 + f 76 s.e. f 4 + f f 3 = (Solmu ) f 3 f 5 f = (Solmu ) f 3 f 3 f 36 = (Solmu 3) f 54 + f 74 f 4 = 6 (Solmu 4) f 5 + f 85 f 54 = (Solmu 5) f 36 + f 76 f 68 = 0 (Solmu 6) f 87 f 76 f 74 5 (Solmu 7) f 68 f 87 f 85 = 0 (Solmu 8) f ij 0 (i, j) (0.5 p) Koska kaikki rajoitteet ovat lineaarisia yhtälöitä, kohdefunktio lineaarinen ja muuttujat epänegatiivisa on tehtävä standardimuodossa. Toisessa tavassa määritellään virtausmuuttujat vektorissa f = (f 3, f, f 3, f 36, f 4, f 74, f 5, f 54, f 85, f 68, f 87, f 76 ) ja niitä vastaavat kaarikustannukset vektorissa c=(0,3,0,,,4,,,3,,0,) ja lähteet/nielut vekotrissa b = (,,, 6,, 0, 5, 0). Divergenssimatriisin alkio a ij kertoo että onko solmu i kaaren j alku (a ij = ), loppu (a ij = ), vai ei kumpikaan (a ij = 0). Matriisi on A = i\j 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 Tällöin tehtävä on standardimuodossa min c T f s.e. Af = b f 0. Ratkaisemalla puun virrat saadaan nollasta poikkeaviksi virroiksi f 3 =, f 5 =, f 4 =, f 76 = 0, f 74 = 5, f 85 = 0 ja f 54 = 3. Lasketaan redusoidut kustannukset kaavalla c ij = c kl c kl, (k,l) F (k,l) B missä F ja B sisältävät ne eteenpäin/taaksepäin osoittavat kaaret syklissä, joka muodostuu kun kantaan kuulumaton kaari (i, j) lisätään puuratkaisuun (syklin suunta määräytyy kaaren (i, j) mukaan).. Sivu 6 / 8
5..0 Kaaren (, ) redusoitu kustannus on c = 3 = (sillä muodostuu sykli jossa solmut,,4 ja 5), joka on negatiivinen eli suoritetaan kannanvaihto siten että kaari (, ) tulee kantaan. Kasvatetaan virtaa syklissä kunnes ensimmäinen syklin kaari saa nollavirran. Tässä tapauksessa se on kaari (, 5), joten virtaa voidaan kasvattaa syklissä kaaren (, ) suuntaisesti enintään yksikön verran ennen kuin ratkaisusta tulisi epäkäypä. Teemme siis kannanvaihdon jossa kaari (, ) tulee kantaan kaaren (, 5) tilalle. Nyt kaaren (, 3) redusoitu kustannus on 0 + 0 + 3 > 0 (ei oteta kantaan). Kaaren (3, 6) redusoitu kustannus on +4+ 3 0 > 0 (ei oteta kantaan). Kaaren (6, 8) redusoitu kustannus on + 3 + 4 + > 0 (ei oteta kantaan). Kaaren (8, 7) redusoitu kustannus on 0 + 4 3 < 0, joten tuomme sen kantaan, ja havaitsemme että poistuva kaari on (8, 5). Huomaatkaa että tämä on degeneroitunut kannanvaihto sillä poistuvan kaaren virtaus oli nolla. Nyt voidaan tarkistaa että kaikki redusoidut kustannukset ovat epänegatiivisia eli virtaus on optimaalinen. Sivu 7 / 8
5..0 Taulukko : Herkkyysanalyysiraportti. No. Row name St Activity Slack Lower bound Activity Obj coef Obj value at Limiting Marginal Upper bound range range break point variable ------ ------------ -- ------------- ------------- ------------- ------------- ------------- ------------- ------------ con NS 8.00000. 8.00000 5.00000 -Inf 3.00000 x[3].00000 8.00000 +Inf +Inf +Inf con NS 3.00000. 3.00000. -Inf 6.00000 x[].00000 3.00000 4.80000 +Inf 0.80000 x[3] 3 objective BS 9.00000-9.00000 -Inf 40.00000 -.00000. x[]. +Inf 9.00000 +Inf +Inf No. Column name St Activity Obj coef Lower bound Activity Obj coef Obj value at Limiting Marginal Upper bound range range break point variable ------ ------------ -- ------------- ------------- ------------- ------------- ------------- ------------- ------------ x[3] BS.00000 6.00000..66667-5.50000 -.50000 x[]. +Inf.00000 +Inf +Inf x[] NL. 0.00000. -4.50000 3.00000 -.50000 x[3] 7.00000 +Inf 3.00000 +Inf 40.00000 x[] 3 x[] BS.00000 3.00000..00000 -Inf -Inf. +Inf -Inf 34.00000 40.00000 x[] Sivu 8 / 8