MS-C2105 Optimoinnin perusteet Malliratkaisut 4 Ehtamo Duaalin muodostamisen muistisäännöt Duaalin muodostamisessa voidaan käyttää muistisääntötaulukkoa, jota voidaan lukea vasemmalta oikealle tai oikealta vasemmalle riippuen maksimoidaanko vai minimoidaanko kohdefunktiota. Kohdefunktio max n j=1 c jx j min m i=1 b iy i Kohdefunktio Rajoitusehdot Muuttujat a T i x b i a T i x b i a T i x = b i x j 0 x j 0 vapaa x j y i 0 y i 0 y i vapaa y T a j c j y T a j c j y T a j = c j Muuttujat Rajoitusehdot Demo 1: Duaalitehtävän muodostaminen Muodosta lineaarisen optimointitehtävän duaalitehtävä. Ratkaise primaali- ja duaalitehtävät ja tarkastele ratkaisuja. a) max 3x 1 + 5x 2 + 8x 3 s.e. 9x 1 + x 2 + 7x 3 28 2x 1 + 3x 2 + 6x 3 32 x 1 0, x 2 0, x 3 R b) min 2x 1 + 3x 2 + 5x 3 s.e. x 1 + 2x 2 + x 3 = 8 6x 1 + 3x 2 + 8x 3 10 5x 1 + 7x 2 9x 3 35 x 1 0, x 2 0, x 3 R c) max 2x 1 + x 2 s.e. 3x 1 5 x 1 0, x 2 0 d) max x 1 + x 2 s.e. 3x 1 + 4x 2 2 x 1 0, x 2 0 a) Koska primaalitehtävä on maksimointitehtävä, tulee duaalitehtävästä minimointitehtävä. Merkitään duaalimuuttujia y i, ja niitä on yhtä monta kuin primaalissa on rajoitusehtoja. Duaalin kustannusfunktion duaalimuuttujien ker- 1
toimiksi tulee aina primaalin vastaavan rajoitusehdon vakiotermi, jolloin kohdefunktioksi saadaan min 28y 1 + 32y 2. Duaalille saadaan yhtä monta rajoitusehtoa kuin primaalilla on päätösmuuttujia. Koska primaali on maksimointitehtävä, jonka ensimmäinen päätösmuuttuja on rajoitettu ei-negatiiviseksi (x 1 0), ensimmäiseksi rajoitusehtoon tulee. Vastaavasti toinen muuttuja on ei-positiivinen (x 2 0), jolloin toiseen rajoitusehtoon tulee. Kolmas muuttuja ei ole rajoitettu, joten kolmas rajoitusehto on yhtälörajoitus. Duaalin ensimmäiseen rajoitusehtoon muuttujien kertoimiksi tulee primaalin ensimmäisen päätösmuuttujan kertoimet primaalin rajoitusehtojen mukaisessa järjestyksessä ja duaalin rajoitusehdon vakiotermi saadaan primaalin ensimmäisen muuttujan kertoimesta kohdefunktiossa. Vastaavalla tavalla saadaan myös toinen ja kolmas rajoitusehto. Näin ollen rajoitusehdoiksi saadaan 9y 1 + 2y 2 3 y 1 + 3y 2 5 7y 1 + 6y 2 = 8 Duaalimuuttujien rajoitukset saadaan primaalin rajoitusehtoista. Rajoitusehdot ovat kaikki -rajoitusehtoja, joten kaikista duaalimuuttujista tulee epänegatiivisia eli y 1 0 ja y 2 0. Ratkaistaan primaalitehtävä Excelin Ratkaisimella, jolloin primaalimuuttujien arvoiksi saadaan x 1 = 0, x 2 = 0 ja x 3 = 4 ja kohdefunktion arvo on 32. Ratkaistaan myös duaalitehtävä Excelin Ratkaisimella, jolloin saadaan duaalimuuttujien arvoiksi saadaan y 1 = 1, 143 ja y 2 = 0 ja kohdefunktion arvo on 32. Primaalin ja duaalin kohdefunktion arvot ovat yhtä suuret eli saadut ratkaisut ovat optimaaliset. b) Koska primaali on minimointitehtävä, duaali on vastaavasti maksimointitehtävä. Jälleen primaalin rajoitusehtojen vakiokertoimet siirtyvät duaalin kohdefunktion kertoimiksi eli max 8y 1 + 10y 2 + 35y 3. Primaali on minimointitehtävä, jonka ensimmäinen muuttuja on rajoitettu epänegatiiviseksi (x 1 0), jolloin vastaavasti duaalin ensimmäiseksi rajoitusehdoksi tulee. Vastaavasti x 2 0, jolloin duaalin toiseen rajoitusehtoon tulee, ja koska x 3 ei ole rajoitettu, tulee duaalin kolmannesta rajoitusehdosta yhtälörajoitus. Duaalin rajoitusehtojen kertoimet saadaan vastaavien primaalimuuttujien rajoitusehtojen kertoimista. y 1 6y 2 + 5y 2 2 2y 1 + 3y 2 + 7y 2 3 y 1 + 8y 2 9y 2 = 5. Duaalin muuttujien rajoitusehdot saadaan vastaavien primaalirajoitusehtojen rajoituksista. Koska ensimmäinen rajoitusehto on yhtäsuurusrajoitus, on ensimmäinen duaalimuuttuja rajoittamaton. Toinen on, jolloin toinen duaalimuuttuja y 2 on epänegatiivinen ( 0). Vastaavasti kolmas rajoitusehto on, joten y 3 0. Primaalin ratkaisuksi saadaan x 1 = 3, 86, x 2 = 0 ja x 3 = 4, 14, jolloin primaalin kohdefunktion arvo on 28,43. Duaalin ratkaisuksi saadaan y 1 = 3, 29, y 2 = 0, 21 ja y 3 = 0, jolloin duaalin kohdefunktion arvo on 28,43. Jälleen kohdefunktioiden arvot ovat yhtä suuret eli ratkaisut ovat optimaaliset. 2
c) Tehtävän duaali saadaan samalla tavalla kuin a-kohdassa. min 5y 1 s.e. 3y 1 2 0y 1 1 y 1 0 Primaalin x 2 -muuttujaa ei ole rajoitettu ylhäältä päin, joten se voi kasvaa äärettömään asti, jolloin kohdefunktion arvostakin tulee ääretön. Vastaavasti tehtävän duaalille ei löydy käypää ratkaisua, koska toinen rajoitusehto (0 1) ei päde millään lukuarvoilla. Jos duaali on epäkäypä, primaalin optimi ei ole rajoitettu. d) Tehtävän duaaliksi saadaan min 2y 1 s.e. 3y 1 1 4y 1 1 y 1 0 Tehtävän primaali ei ole käypä, koska ensimmäinen rajoitusehdon mukainen epäyhtälö ei ole voimassa, jos molemmat muuttujat ovat negatiivisia. Duaalin kohdefunktiota minimoidaan ja päätösmuuttujaa y 1 ei ole rajoitettu alhaalta päin, jolloin sen arvo voi mennä asti, jolloin myös kohdefunktion arvo on. Jos primaali ei ole käypä, duaalin optimi ei ole rajoitettu. Demo 2: Äidin ongelma - Duaalimuuttujan tulkinta Perheen äiti pyrkii valmistamaan mahdollisimman vähin kustannuksin aterian, joka tyydyttää perheen päivittäisen proteiinin ja kalsiumin tarpeen: vähintään 50 g proteiinia ja vähintään 800 mg kalsiumia. Formuloi ongelma LP-tehtävänä seuraavan taulukon avulla: Ruoka e/yksikkö proteenia g/yksikkö kalsiumia mg/yksikkö Peruna 0,6 3,7 22,7 Tomaatti 2,7 1,1 6,2 Maito 2,3 8,1 296 Oletetaan toisaalta, että paikallinen apteekkari myy proteiini- ja kalsiumpillereitä. Hänen on päätettävä sellainen proteiinin yksikköhinta y 1 ja kalsiumin yksikköhinta y 2, että pillerit olisivat hinnan suhteen kilpailukykyisiä ruoka-aineiden kanssa, ja toisaalta hän pyrkii voiton maksimoimiseksi nostamaan hinnat mahdollisimman korkeiksi. Tämä tarkoittaa, että hän pyrkii määräämään mahdollisimman korkean hinnan nimenomaan perheenäidin tarvitsemalle yhdistelmälle 50 g proteiinia ja 800 mg kalsiumia. Formuloi myös apteekkarin ongelma LP-tehtävänä. Totea, että perheenäidin ongelma ja apteekkarin ongelma ovat primaali-duaalipari. Tarkastele ratkaisuja. Kiva tietää. Tämä ongelma on yksinkertaistettu versio Nobel-voittaja George J. Stieglerin dieettiongelmasta vuodelta 1945. Tehtävä oli silloin aivan liian monimutkainen ratkaistavaksi tarkasti ja hän joutui käyttämään erilaisia heuristiikkoja. 3
Muodostetaan kotiäidin optimointitehtävä. Valitaan päätösmuuttujiksi ostettavien tuotteiden määrät: x 1 := x 2 := x 3 := perunoiden määrä (yksikkö) tomaattien määrä (yksikkö) maidon määrä (yksikkö) Tavoitteena on minimoida kustannukset: min 0, 6x 1 + 2, 7x 2 + 2, 3x 3. Ostomääriä rajoittavat tarvittavat proteiinin ja kalsiumin määrät: 3, 7x 1 + 1, 1x 2 + 8, 1x 3 50 22, 7x 1 + 6, 2x 2 + 296x 3 800 Ostomäärät eivät voi olla negatiivisia eli rajoitetaan ne vähintään nolliksi: x 1 0, x 2 0 ja x 3 0. Kotiäidin tehtävän ratkaisuksi saadaan x 1 = 9, 12, x 2 = 0 ja x 3 = 2, 00, jolloin kotiäidin kauppalaskuksi muodostuu 10,08 e. Muodostetaan apteekkarin optimointitehtävä, jossa päätösmuuttujiksi valitaan apteekkarin hinnat kotiäidin ostamille kalsium- ja proteiinimäärille: y 1 := y 2 := proteiiniyksikön hinta (e) kalsiumyksikön hinta (e) Maksimoidaan apteekkarin myyntivoittoa eli max 50y 1 + 800y 2. Rajoitusehdoiksi saadaan tabletit korvaavien tuotteiden (peruna, tomaatti ja maito) yksikköhinnat, koska apteekkarin määrittelemillä hinnoilla esim. perunan sisältämän proteiinin ja kalsiumin yhteishinta ei saa ylittää perunan oikeaa hintaa: Hinnat eivät voi olla negatiivisia, joten 3, 7y 1 + 22, 7y 2 0, 6 1, 1y 1 + 6, 2y 2 2, 7 8, 1y 1 + 296y 2 2, 3 y 1 0 ja y 2 0. Apteekkarin tehtävän ratkaisuksi saadaan y 1 = 0, 138 ja y 2 = 0, 004, jolloin apteekkarin tulot ovat 10,08 e. Huomataan, että kotiäidin tehtävän duaali on apteekkarin tehtävä ja päinvastoin. Tehtävien kohdefunktioiden arvot ovat yhtäsuuret eli ratkaisut ovat optimaaliset. Apteekkarin hinnat eli kotiäidin tehtävän duaalimuuttujien y i arvot vastaavat sitä kotiäidin kohdefunktion eli kauppalaskun arvon kasvua, jonka yhden proteiini- tai kalsiumyksikön lisäys alkuperäiseen tarpeeseen aiheuttaa. Vastaavasti kotiäidin ostosten määrät x i eli apteekkarin tehtävän duaalimuuttujien arvot kertovat kuinka paljon apteekkarin tulot kasvavat, jos vastaavan elintarvikkeen hinta kasvaa yhden e:n. 4
Tehtävä 1: Duaalitehtävän muodostaminen Muodosta tehtävän duaali. a) min 2x 1 x 2 + 3x 3 + 5x 4 s.e. 6x 1 + 2x 2 x 3 + x 4 8 2x 1 x 2 + 5x 4 = 8 x 1 + x 2 + 2x 3 + x 4 10 x 1 0, x 2 0, x 3 0, x 4 R b) max 5x 1 + 6x 2 s.e. 3x 1 + 4x 2 16 x 1 + 5x 2 3 x 1 R, x 2 0 c) min 3x 1 + 4x 2 + 6x 3 s.e. 5x 1 + 2x 2 20 x 1 0 x 2 0 x 3 0 d) max x 1 + x 2 s.e. 2x 1 + x 2 = 5 3x 1 x 2 = 6 x 1 R x 2 R a) max 8y 1 + 8y 2 + 10y 3 s.e. 6y 1 + 2y 2 + y 3 2 2y 1 y 2 + y 3 1 y 1 + 2y 3 3 y 1 + 5y 2 + y 3 = 5 y 1 0, y 2 R, y 3 0 b) min 16y 1 + 3y 2 s.e. 3y 1 y 2 = 5 4y 1 + 5y 2 6 y 1 0, y 2 0 5
c) max 20y 1 s.e. 5y 1 3 2y 1 4 0y 1 6 y 1 0 d) min 5y 1 + 6y 2 s.e. 2y 1 + 3y 2 = 1 y 1 y 2 = 1 y 1 R, y 2 R Tehtävä 2: Putte-Possun nimipäivät Puten nimipäiväkutsut alkavat näillä minuuteilla. Kauhistuksekseen hän huomasi, että eihän henellä ole lainkaan mitään juotavaa tarjolla. Pikaisen tutkiskelun jälkeen hän päätyi kolmeen vaihtoehtoon: hedelmämehu, marjamehu ja sekamehu. Hedelmämehuun tarvitaan litraa kohden 0,25 l hedelmätiivistettä, marjamehuun 0,2 l marjatiivistettä ja sekamehuun tarvitaan 0,1 l hedelmä-, ja 0,15 l marjatiivistettä. Lisäksi mehut tarvitsevat sokeria: hedelmämehu 50 g, marjamehu 75 g ja sekamehu 60 g jokaista litraa kohden. Putella on käytössään 20 l hedelmätiivistettä, 45 l marjatiivistettä ja 5 kg sokeria. Kuinka paljon kutakin mehua Puten kannattaa tehdä, jotta hän saisi mahdollisimman paljon mehua? Formuloi LP-tehtävä ja muodosta sen duaalitehtävä. Ratkaise tehtävät ja anna tulkinta duualimuuttujille. Valitaan päätösmuuttujiksi valmistettavien mehujen määrät litroina (l): x 1 := x 2 := x 3 := hedelmämehun määrä (l) marjamehun määrä (l) sekamehun määrä (l) Putte haluaa maksimoida mehun kokonaismäärän: max x 1 + x 2 + x 3 Mehujen määrää rajoittaa marja- ja mehutiivisteiden määrät ja sokerin määrä. 0, 25x 1 + 0, 1x 3 20 + 0, 2x 2 + 0, 15x 3 45 50x 1 + 75x 2 + 60x 3 5000 Mehujen määrät ovat epänegatiivisia eli x 1 0, x 2 0, x 3 0. 6
Tehtävän duaali on vastaavasti min 20y 1 + 45y 2 + 5000y 3 s.e. 0, 25y 1 + 50y 3 1 + 0, 2y 2 + 75y 3 1 0, 1y 1 + 0, 15y 2 + 60y 3 1 y 1 0, y 2 0 y 3 0 Primaalin ratkaisuksi saadaan x 1 = 70, x 2 = 0 ja x 3 = 25, jolloin mehun määrä on 95 l. Duaalin ratkaisuksi saadaan y 1 = 1, y 2 = 0 ja y 3 = 0, 015, jolloin kohdefunktion arvo on 95 eli sama. Duaalimuuttujan arvo kuvaa sitä mehun määrän lisäystä, joka syntyy, kun vastaavaa rajoitusta löystetään eli vakiokerrointa kasvatetaan. Esim. y 1 :n arvo kuvaa kuinka paljon mehua saadaan lisää, jos hedelmämehutiivistettä on 1 litra enemmän. Tehtävä 3: Dualitehtävän muodostaminen Muodosta tehtävän duaali. Mitä erikoista dualitehtävässä on? Mikä on sen ratkaisu? Entä alkuperäisen tehtävän ratkaisu? min 2x 1 x 2 + 3x 3 + 5x 4 s.e. 2x 1 + 2x 2 + 6x 3 + 5x 4 0 3x 1 x 2 + x 4 = 0 7x 1 + 2x 2 + 4x 3 + 2x 4 0 x 1 0, x 2 0, x 3 0, x 4 R Muodostetaan minimointitehtävän duaali. max 0y 1 + 0y 2 + 0y 3 s.e. 2y 1 + 3y 2 + 7y 3 2 2y 1 y 2 + 2y 3 1 6y 1 + 4y 3 3 5y 1 + y 2 + 2y 3 = 5 y 1 0, y 2 R, y 3 0 Koska duaalimuuttujien kertoimet duualin kohdefunktiossa ovat nollia, on kohdefunktion arvo aina 0. Näin ollen riittää löytää tehtävälle jokin käypä ratkaisu. Primaalin ratkaisuksi saadaan x 1 = 0, x 2 = 0, x 3 = 0 ja x 4 = 0, jolloin kohdefunktion arvo on 0. 7