Mat-.4 Lineaarinen ohjelmointi 8..7 Luento 8 Verkkotehtävät, simlex ja duaalisuus (kirja 7.-7., 7.6) Lineaarinen ohjelmointi - Syksy 7 /
Motivointi Käsitteitä Verkkotehtävä Verkkosimlex Duaalitehtävä Yhteenveto Luentorunko Lineaarinen ohjelmointi - Syksy 7 /
Motivointi (/) Useat verkkotehtävät voidaan ratkaista LPmenetelmin Käytännössä joa 7 % kaikista LPsovelluksista liittyy verkkotehtäviin Lineaarinen ohjelmointi - Syksy 7 /
Motivointi (/) Esim. Kustannusotimaalinen maakaasuverkosto > minimiviritysuu Kahden kauungin välisen etäisyyden minimointi > lyhyimmän olun tehtävä Maakaasuverkoston kahden isteen välinen maksimaalinen virtauskaasiteetti > maksimivirtaustehtävä Puukuljetusten kustannusotimointi, kun reittien kaasiteetit rajallisia > kaasiteettirajoitettu kuljetustehtävä Projektin tehtävien aloittamisen ajoitus, jotta kokonaiskesto minimoituu > kriittisen olun etsiminen Lineaarinen ohjelmointi - Syksy 7 / 4
Käsitteitä (/) Verkko muodostuu Solmuista Kaarista ( i, j) A Solmun aste siitä lähtevien ja siihen tulevien kaarten lkm Kaari voi olla suunnattu tai suuntaamaton i N Suunnatussa taauksessa ilähtösolmu, jmaalisolmu Jos kaikki verkon kaaret suunnattuja (suuntaamattomia), on verkko suunnattu (suuntaamaton) N{,,,4,5} Lineaarinen ohjelmointi - Syksy 7 / 5 5 A{(,), (,5), (,), (5,), (5,4), (,)} Verkko on suunnattu 4
Käsitteitä (/) Kulku (walk) on äärellinen jono kaaren yhdistämiä solmuja (kaaren suunnasta välittämättä) Jos kuljetaan kaaren suunnan mukaisesti, kaari on eteenäin suunnattu (forward arc) Jos ei, on se taakseäin suunnattu (backward arc) Polku (ath) on kulku, joka ei sisällä samaa solmua kahdesti Lineaarinen ohjelmointi - Syksy 7 / 6 5 4 Kulku {5,,,,} ei ole olku, sillä solmu esiintyy siinä kahdesti Kulun kaari (5,) eteenäin, muut taakseäin suunnattuja
Käsitteitä (/) Sykli on olku, jonka viimeinen solmu yhdistetään olun lähtösolmuun Suuntaamattomassa verkossa syklin solmujen lkm vähintään Sykli on suunnattu, jos se sisältää vain eteenäin suunnattuja kaaria Lineaarinen ohjelmointi - Syksy 7 / 7 5 4 Polusta (,,) saadaan sykli alaamalla lähtösolmuun: (,,,). Sykli on suunnattu.
Verkkotehtävä (/5) Olk. verkko G(N,A) Verkon läi kulkee virtaus, kaarella (i,j) määrä f Kullekin solmulle määritelty divergenssi b i verkon ulkouolelta solmuun tuleva/siitä lähtevä virtaus Jos b > ( b < ), solmu i i i on lähde (nielu) b b b b 4, lähde, nielu, nielu b 5 5 4 Lineaarinen ohjelmointi - Syksy 7 / 8
Verkkotehtävä (/5) Kullakin kaarella on alaja ylärajat l ja u virtauksen määrälle sekä kustannus c yksikkövirtausta kohden Jos alarajat nollia ja ylärajat, sanotaan verkkoa kaasiteettirajoituksettomaksi Alarajat voidaan yleistää nolliksi (kotitehtävä),[,] Virtauksen kaarella (,5) oltava välillä [,] Kahden yksikön virtauksen kustannus ko. kaarella *4 5 4 Lineaarinen ohjelmointi - Syksy 7 / 9
Verkkotehtävä (/5) Minimikustannusvirtaustehtävä (min-cost flow roblem): minimoidaan virtauksen kokonaiskustannusta siten, että divergenssiehdot ja kaasiteettirajoitukset toteutuvat min s.e Solmusta i lähtevä virtaus ( i, j ) A f { j ( i, j) A} c f l f f ji { j ( j, i) A} u b i, Solmuun i tuleva virtaus i N ( i, j) A Lineaarinen ohjelmointi - Syksy 7 /
Verkkotehtävä (4/5) Esim. Moskovasta ja Helsingistä tulee kuljettaa Lontooseen, Pariisiin ja Roomaan tavaroita siten, että kysyntä täyttyy kussakin kauungissa ja kustannukset (reittien ituudet) minimoituvat L 4 P S H 4 B W R M 5 Eräs ratkaisu on viedä Helsingistä kaikki Lontooseen, Moskovasta Wienin kautta Roomaan ja Berliinin kautta Pariisiin Kustannus *(+4)+*(+)+*(4+)45 Mahdollisia rajoitteita: ainorajoitteet reitille osuvilla silloilla tms. Lineaarinen ohjelmointi - Syksy 7 /
Verkkotehtävä (5/5) Erikoistaauksia (käsitellään ensi luennolla): Lyhyimmän olun tehtävä (shortest ath roblem) Maksimivirtaustehtävä (maximum flow roblem) Kuljetustehtävä (transortation roblem) Töiden järjestely (assignment roblem) Lineaarinen ohjelmointi - Syksy 7 /
Verkkotehtävä: Matriisiesitys (/) Määritellään matriisi A kuvaamaan solmujen ja kaarien yhteyksiä rivit vastaavat solmuja, sarakkeet kaaria: a ik, jos i on k. kaaren lähtösolmu -, jos i on k. kaaren maalisolmu, muuten 5 A N{,,,4,5} A{(,), (,5), (,),(5,), (5,4), (,) } 4 Lineaarinen ohjelmointi - Syksy 7 /
Verkkotehtävä: Matriisiesitys (/) Olk. f virtausten muodostama vektori s.e. järjestys on sama kuin A:ssa Tällöin: a' i f f { j ( i, j) A} ji { j ( j, i) A} Siis kaasiteettirajoitukseton minimikustannusvirtaustehtävä matriisimuodossa: min s.e f c'f Af b f f b i Lineaarinen ohjelmointi - Syksy 7 / 4
Verkkotehtävä: Matriisiesitys (/) Kiertokulku (circulation) ei lähteitä eikä nieluja: Af Olk. sykli C, jolle F on eteenäin, B taakseäin suunnattujen kaarten joukko Määritellään C:n yksinkertainen kiertokulku s.e.: C Syklin C kustannus : h, jos ( i, j) F,, jos ( i, j) B,, muuten. c'h C c Ah C ( i, j ) F ( i, j ) B c Lineaarinen ohjelmointi - Syksy 7 / 5
Tehtävä: Verkkosimlex min s.e c'f Af A:n rivit summautuvat nollaan, eli lin. riiuvaisia Syy: divergenssiehdot kiinnittävät viimeisen solmun lääisevän virtauksen Poistetaan viimeinen rivi A:sta A ~ täysiasteinen Tavallinen LP-tehtävä standardimuodossa! f b Lineaarinen ohjelmointi - Syksy 7 / 6
Verkkosimlex: Puuratkaisu (/6) Simlex tarvitsee alustukseen käyvän kantaratkaisun Osoittautuu, että verkkotehtävässä käyä uuratkaisu on käyä kantaratkaisu Lineaarinen ohjelmointi - Syksy 7 / 7
Verkkosimlex: Puuratkaisu (/6) Verkko on yhtenäinen (connected), jos jokaisen solmuarin välillä löytyy olku Suuntaamaton verkko on uu (tree), jos se on yhtenäinen eikä sisällä syklejä. Jos solmun aste on, sanotaan sitä lehdeksi (leaf). 5 Puu, jonka lehdet {,,4} 4 Lineaarinen ohjelmointi - Syksy 7 / 8
Verkkosimlex: Puuratkaisu (/6) Teoreema 7.. a) Jokaisella yhtä solmua suuremmalla uulla on vähintään yksi lehti b) Suuntaamaton verkko on uu joss se on yhtenäinen ja sisältää N - kaarta c) Minkä tahansa solmuarin i,j välille löytyy - käs. olku d) Jos aloitetaan uusta ja lisätään siihen kaari, on tuloksena saatavassa verkossa tasan yksi sykli Lineaarinen ohjelmointi - Syksy 7 / 9
Määritelmä 7.: Verkkosimlex: Puuratkaisu (4/6) f on uuratkaisu, jos se voidaan rakentaa seuraavasti: a)valitaan (n-) uun T muodostavaa kaarta joukosta A (suunnista välittämättä) b)asetetaan f ( i, j) T ~ c)käytetään divergenssiyhtälöä ~ Af b uuta vastaaville virtausmuuttujille,( i, j) T Jos lisäksi f, on f käyä uuratkaisu f Lineaarinen ohjelmointi - Syksy 7 /
Verkkosimlex: Puuratkaisu (5/6) a) Valitaan katkoviivoin merkityt kaaret muodostamaan uu (4 kl) b) Asetetaan uuhun kuulumattomien kaarten virtaukset nolliksi c) Lasketaan uun lehdistä lähtien uuhun kuuluvien lehtien virtaukset siten, että divergenssiehdot toteutuvat 5 4 Lineaarinen ohjelmointi - Syksy 7 /
Verkkosimlex: Puuratkaisu (6/6) Matriisiin A ~ uun kaaria vastaavat sarakkeet muodostavat LP-tehtävästä tutun kantamatriisin B (lin. riiumattomia!). Puuta vastaava virtausvektori -käs., vastaa LP:n kantaratkaisua x B f on (käyä) kantaratkaisu joss se on (käyä) uuratkaisu Lineaarinen ohjelmointi - Syksy 7 /
Verkkosimlex: Idea Olkoon f käyä uuratkaisu Lisätään uuhun uusi kaari joukosta A > syntyy sykli C Koska C C Ah A(f+ θh ) Tutkitaan, ienentääkö virtauksen lisääminen sykliä itkin kustannusta Jos ienentää, työnnetään virtausta kunnes käyyysehto f tulee vastaan > kanta vaihtuu b Lineaarinen ohjelmointi - Syksy 7 /
Verkkosimlex: Kannan vaihto (/5) Kutakin kaarta (i,j) vastaa redusoitu kustannus Red. kustannus yksikkökustannus, joka syntyy kun kaaren uuhun lisäyksen aiheuttamaa sykliä itkin työnnetään yksikkövirtaus c c' h C c c kl kl ( k, l) F ( k, l) B F{(,),(,)}, B{(,)} > c (+ ) Lineaarinen ohjelmointi - Syksy 7 / 4
Verkkosimlex: Kannan vaihto (/5) Kätevää käyttää LP-tehtävistä tuttua kaavaa c ' c'-'a, ~ ' ~ A : n määritelmästä saadaan: Asettamalla c c c c c n ( + i j i,, j ), jos c' B - B jos i, j jos i j (vain erotuksilla merkitystä): c ( ), ( i, j) i j n n n A Lineaarinen ohjelmointi - Syksy 7 / 5
Verkkosimlex: Kannan vaihto (/5) Duaalimuuttuja määrittää solmuhinnat (lisää tulkintaa myöhemmin) saadaan laskettua asettamalla kantavirtausmuuttujien red. kustannukset nolliksi i j n c, ( i, j) T Lineaarinen ohjelmointi - Syksy 7 / 6
Verkkosimlex: Kannan vaihto (4/5) Kaari, jonka red. kustannus on negatiivinen, voidaan valita astuvaksi kantaan Lisäyksestä muodostuvaa sykliä itkin työnnetään verran virtausta, jolloin: Suurin mahdollinen siis: fˆ kl θ θ* f f f kl kl kl + θ, θ,, min ( k, l) B jos ( k, l) F jos ( k, l) B muuten f kl θ : n Lineaarinen ohjelmointi - Syksy 7 / 7
Verkkosimlex: Kannan vaihto (5/5) Mikäli B on tyhjä, asetetaan θ*, ja tehtävä on rajoittamaton Muussa taauksessa edellisen minimoiva kaari (k,l) ois kannasta (uusta) > kaari (i,j) tilalle virtauksella θ * f Muut syklin virtaukset: : f + ( ) θ*, ( k, l) F( B) Jos θ*, kannan vaihto taahtuu muutoksitta virtauksissa (degeneroitunut taaus). f kl kl Lineaarinen ohjelmointi - Syksy 7 / 8
Verkkosimlex: Menetelmä. Lähtötilanteessa käyä kantaratkaisu f ja vastaava uu T.. Ratkaise yhtälöt i j c ( i, j) T lähtien uun juuresta n, s.e. n. Laske redusoidut kustannukset c c ( i j ) ( i, j) T. Jos c ( i, j), ratkaisu otimaalinen. Muuten, valitse (i,j) tuotavaksi kantaan s.e. < 4. Jos kaikki syntyvän syklin kaaret samansuuntaisia, otimikustannus terminoi. 5. Muuten: laske θ * min ( k, l) B fkl ja työnnä θ * yksikköä virtausta sykliä itkin. Päivitä virtausvektori. Poista nollaksi mennyttä virtausta vastaava kaari kannasta. c Lineaarinen ohjelmointi - Syksy 7 / 9
Verkkosimlex: Esimerkki (/) Kaasiteettirajoitukseton tehtävä; kuvassa tarjonnat, kysynnät ja kaarten kustannukset Alla lähtöratkaisu, jolle: c 5 c 5 + c 5 ( ) < Siis kaari (,) kantaan! 5 c 5 Lineaarinen ohjelmointi - Syksy 7 / 5 4 5 4
Verkkosimlex: Esimerkki (/) Syklin kaaret (5,) ja (,5) takaerin suunnattuja θ* Siis kaari (5,) ois kannasta! Nyt c i f min ( k, l) B, f kl f 5 min{,} ( i, j) T i, f 5 c c, c5 c5 Lineaarinen ohjelmointi - Syksy 7 / 5 Kuvan kanta otimaalinen, kustannus! 4
Duaalitehtävä: Duaalitehtävä (/4) max s.e 'b 'A c' A:n rakenteen takia rajoitusehdosta tulee: i c ( i, j) A j Jälleen duaalikäyyys rimaaliotimaalisuus! c c ( ), ( i, j) i j A Lineaarinen ohjelmointi - Syksy 7 /
Tulkintaa esimerkillä: Duaalitehtävä (/4) Haluat kuljettaa tavaroita yksityisen verkostosi kautta varastoiltasi i asiakkaalle solmuun n, kustakin varastosta määrän b. Verkon kaaren kustannus on c. i Kuljetusfirma tarjoutuu toimittamaan tavaran erille solmusta i hintaan i. Voit siis esim. hoitaa itse matkan (i,j) ja käyttää sitten kuljetusfirmaa, jolloin kustannus c +. j Firma haluaa hoitaa kaiken kuljetuksesi, joten hinnat tulee asettaa s.e. i c+ j, n. Lisäksi firma maksimoi tuottoaan b i, joka oikein hinnoiteltuna yhtyy i N i omaan kustannusminimiisi c. ( i, j ) A f Lineaarinen ohjelmointi - Syksy 7 /
Esimerkki: Duaalitehtävä (/4) Yksi yksikkölähde, kaarten kustannukset kuvassa. Otimiratkaisu lasti katkoviivoja itkin. Otimikustannus 4. Kuljetusfirman hinnat enintään omien kulujesi verran: 5,, Maksimoidaan tuottoa max b 4, 4 4, 5 Lineaarinen ohjelmointi - Syksy 7 / 4 4 4 Duaalimuuttujien erotuksen tulkinta siis virtauksen kuljetuksen hinta solmusta i solmuun j! i j
Duaalitehtävä (4/4) Täydentyvyysehdot: [Af ] b a) Jos i i i. Ehto toteutuu automaattisesti b) Jos f > i j c < c Ehdon b) tulkinta: Jos i j, löytyy kaaren (i,j) käyttämistä edullisemi taa siirtää virtausta solmusta i solmuun j, eli kaaren virtauksen oltava nolla Lineaarinen ohjelmointi - Syksy 7 / 5
Yhteenveto Verkkotehtävät tärkeä LP-tehtävien osa-alue Yleinen muoto minikustannusvirtaustehtävä, josta useita erikoistaauksia Voidaan esittää standardimuotoisena LPtehtävänä Ratkaisu esim. verkkosimlexillä, joka analoginen erussimlexin kanssa Duaalimuuttujien tulkinta solmuhintoina Lineaarinen ohjelmointi - Syksy 7 / 6