TIEA382 Lineaarinen ja diskreetti optimointi Jussi Hakanen Tietotekniikan laitos jussi.hakanen@jyu.fi AgC 426.3
Yleiset tiedot Tietotekniikan kandidaattiopintojen valinnainen kurssi http://users.jyu.fi/~jhaka/ldo/
Kurssin sisältö Yleistä optimoinnista Optimointitehtävän muodostaminen Tehtävän ratkaiseminen (Simplex) Tehtävän jälkianalyysi Kombinatorinen optimointi (heuristiikat) Kokonaislukuoptimointi Verkkoteorian optimointitehtävistä Reitin optimointi (vierailuluento)
Esittäytyminen Kuka olet? Mitä opiskelet? Onko sinulla aiempaa kokemusta optimoinnista? Mitä odotat tältä kurssilta?
Optimointi Etsitään parasta mahdollista ratkaisua annetuissa olosuhteissa Ongelman mallintaminen Mallin ratkaiseminen Ratkaisun analysointi
Optimointitehtävä Objektifunktio (tai kustannusfunktio) funktio, jonka arvoa halutaan parantaa engl. objective function, cost function Muuttujat (tai päätösmuuttujat, suunnittelumuuttujat) arvoja muuttamalla ratkaisu (ja mahdollisesti objektifunktion arvo) muuttuu engl. decision variables, design variables Rajoitteet määrittävät sallitut arvot muuttujille engl. constraints Optimoinnin tarkoitus = löytää sellaiset arvot muuttujille, jotta objektifunktion arvo on paras mahdollinen
Esimerkkiharjoitus 3-4 hengen ryhmissä Tarkoituksena on rakentaa tuoleja ja pöytiä Käytettävissä on pussillinen Legoja 8 pientä ja 6 isoa
Kysymys 1 Kuinka monta tuolia ja pöytää tulee rakentaa, jotta niistä saatava tuotto maksimoituu?
Lego-esimerkki Miten tuoli ja pöytä rakennetaan? Paljonko saadaan tuottoa? tuoli 10, pöytä 16
Ratkaisu Eräs mahdollinen ratkaisu 3 pöytää, jolloin jäljelle jää 2 pientä palikkaa tuotto on siis 3*16 = 48 Onko tämä optimaalinen? puretaan yksi pöytä (-16 ) 2 isoa ja 4 pientä legoa tehdään kaksi tuolia (+20 ) tuotto kasvoi 4 Optimiratkaisu 2 pöytää ja 2 tuolia tuotto on siis 2*16 + 2*10 = 52
Kysymys 2 Muotoile tämä optimointitehtäväksi muuttujat objektifunktio rajoitteet
Optimointitehtävä T = tuolien määrä, P = pöytien määrä Tuotto = 10*T + 16*P Pieniä palikoita: 2*T + 2*P 8 Isoja palikoita: 1*T + 2*P 6 0 T ja 0 P
Optimointitehtävä Siis maksimoi 10*T + 16*P kun 2*T + 2*P 8, 1*T + 2*P 6, 0 T, 0 P
Entäpä jos? On mahdollista saada yksi iso palikka lisää käytössä siis 8 pientä ja 7 isoa palikkaa
Kysymys 3 Muuttuuko optimaalinen ratkaisu? Kuinka paljon ylimääräisestä isosta palikasta kannattaa maksaa?
Analyysi Aiempi optimiratkaisu 2 tuolia ja 2 pöytää Yksi iso palikka lisää puretaan tuoli (-10 ) 2 pientä ja 2 isoa tehdään pöytä (+16 ) tuotto kasvaa 6 Uusi optimiratkaisu 1 tuoli ja 3 pöytää, tuotto = 58 Isosta palikasta kannattaa siis maksaa korkeintaan 6 varjohinta isolle palikalle: paljonko objektifunktion arvo muuttuu, jos kyseistä resurssia lisätään yhdellä Tehtävän jälkianalyysi
Kysymys 4 Montako isoa palikkaa kannattaa ostaa 6 :lla?
Analyysi Käytössä 8 pientä ja 8 isoa palikkaa puretaan tuoli (-10 ) ja tehdään pöytä (+16 ) optimiratkaisu 4 pöytää, tuotto = 64 Käytössä 8 pientä ja 9 isoa palikkaa puretaan pöytä (-16 ) 2 pientä ja 3 isoa palikkaa voidaan rakentaa yksi tuoli (+10 ), jää 2 isoa tuotto ei parane isojen palikoiden varjohinta = 0 6 kannattaa maksaa vain kahdesta isosta palikasta Varjohinta riippuu ratkaisusta
Entäpä isoille tehtäville? Lego-esimerkin ratkaisu saatiin kokeilemalla Miten lineaarinen optimointitehtävä ratkaistaan jos muuttujia (ja rajoitteita) on esim. tuhansia tai miljoonia? Miten tehdään jälkianalyysi? Näitä asioita käsitellään tarkemmin kurssin aikana