Harjoitus 4 (7.4.2014)

Samankaltaiset tiedostot
Malliratkaisut Demot

Harjoitus 3 ( )

Harjoitus 3 ( )

Harjoitus 1 ( )

Malliratkaisut Demot

Harjoitus 1 ( )

Malliratkaisut Demot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Toppila/Kivistö Vastaa kaikkin neljään tehtävään, jotka kukin arvostellaan asteikolla 0-6 pistettä.

10. Painotetut graafit

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Harjoitus 6 ( )

Ovatko seuraavat väittämät oikein vai väärin? Perustele vastauksesi.

T : Max-flow / min-cut -ongelmat

Harjoitus 6 ( )

Harjoitus 2 ( )

Malliratkaisut Demot

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

Tentissä on viisi tehtävää, jotka arvosteellaan asteikolla 0-6. Tehtävien alakohdat ovat keskenään samanarvoisia ellei toisin mainita.

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Matemaattinen optimointi I, demo

Harjoitus 5 ( )

Johdatus graafiteoriaan

Algoritmit 1. Luento 13 Ti Timo Männikkö

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

Harjoitus 5 ( )

A TIETORAKENTEET JA ALGORITMIT

10. Painotetut graafit

Malliratkaisut Demot

Demo 1: Branch & Bound

PARITUS KAKSIJAKOISESSA

Harjoitus 4: Matlab - Optimization Toolbox

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Harjoitus 2 ( )

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

13 Lyhimmät painotetut polut

Malliratkaisut Demot 6,

Graafin virittävä puu 1 / 20

Kokonaislukuoptimointi hissiryhmän ohjauksessa

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Algoritmit 2. Luento 11 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

Algoritmi on periaatteellisella tasolla seuraava:

The CCR Model and Production Correspondence

Kokonaislukuoptimointi

Algoritmit 1. Luento 9 Ti Timo Männikkö

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Kiinalaisen postimiehen ongelma

Malliratkaisut Demo 4

Malliratkaisut Demot

5. Rajoitelaskenta (Constraint Satisfaction)

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

Algoritmit 1. Luento 8 Ke Timo Männikkö

Malliratkaisut Demo 4

Search space traversal using metaheuristics

min x x2 2 x 1 + x 2 1 = 0 (1) 2x1 1, h = f = 4x 2 2x1 + v = 0 4x 2 + v = 0 min x x3 2 x1 = ± v/3 = ±a x 2 = ± v/3 = ±a, a > 0 0 6x 2

v 8 v 9 v 5 C v 3 v 4

Tutki ja kirjoita -kurssi, s-2005

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.

Malliratkaisut Demot

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Talousmatematiikan perusteet: Luento 11. Lineaarinen optimointitehtävä Graafinen ratkaisu Ratkaisu Excel Solverilla

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl.

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

Talousmatematiikan perusteet: Luento 12. Lineaarinen optimointitehtävä Graafinen ratkaisu Ratkaisu Excel Solverilla

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Totaalisesti unimodulaariset matriisit voidaan osoittaa olevan rakennettavissa oleellisesti verkkomalleihin liittyvistä matriiseista

Y56 Laskuharjoitukset 4 Palautus viim. ti klo (luennolla!) Opiskelijan nimi. Opiskelijanumero

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

3. Binääripuu, Java-toteutus

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Arvostus Verkostoissa: PageRank. Idea.

Tietorakenteet, esimerkkivastauksia viikon 12 laskareihin

Mat Lineaarinen ohjelmointi

Operatioanalyysi 2011, Harjoitus 4, viikko 40

Algoritmit 2. Demot Timo Männikkö

Tietorakenteet, esimerkkivastauksia viikon 12 laskareihin

Datatähti 2019 loppu

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

A TIETORAKENTEET JA ALGORITMIT

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot

Luento 7: Kokonaislukuoptimointi

Demo 1: Simplex-menetelmä

DBN Mitä sillä tekee? Dynaamisten Bayes-verkkojen määrittely aikasarja-analyysissä Janne Toivola

SÄHKE-hanke. Abstrakti mallintaminen Tietomallin (graafi) lukuohje

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Graph. COMPUTE x=rv.normal(0,0.04). COMPUTE y=rv.normal(0,0.04). execute.

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Datatähti alkukilpailu

Kimppu-suodatus-menetelmä

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Suomen rautatieverkoston robustisuus

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Talousmatematiikan perusteet: Luento 15. Rajoitettu optimointi Lagrangen menetelmä Lagrangen kerroin ja varjohinta

Englannin lausekerakenteita ja taulukkojäsentäminen

TIE Tietorakenteet ja algoritmit 261

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

Transkriptio:

Harjoitus 4 (7.4.2014) Tehtävä 1 Tarkastellaan Harjoituksen 1 nopeimman reitin ongelmaa ja etsitään sille lyhin virittävä puu käyttämällä kahta eri algoritmia. a) (Primin algoritmi) Lähtemällä solmusta 1 (Turku) lyhimpään virittävään puuhun liitetään ensin solmu 3 (Helsinki), koska olemassa olevasta solmusta päästään sinne 2 tunnissa. Tämän jälkeen lisätään solmu 2 (Tampere). Nyt vapaita solmuja on jäljellä kaksi (Kuopio ja Joensuu), jotka kumpikin ovat 4 tunnin ajomatkan päässä puussa jo olevista solmuista. Voidaan siis valita kumpi tahansa. Jos valitaan ensin solmu 4, niin solmu 5 on vain 2 tunnin päässä somusta 4. Näin virittävään puuhun saadaan kaaret (1,3), (3,2), (2,4) ja (4,5), jotka vastaavat reittiä 1 3 2 4 5. Kyseisen reitin pituus on 10 h. b) (Kruskalin algoritmi) Lyhimpään virittävään puuhun valitaan kaaria lyhimmästä alkaen. Ensin valitaan kaaret (1,3), (3,2) ja (4,5), joiden kaikkien pituus on 2h. Nyt kaari (1,2) olisi seuraavaksi lyhin, mutta se tuottaisi syklin, eikä siten ole sallittu. Valitaan 4h:n pituisista kaarista (joita on siis kaksi vaihtoehtoista) (2, 4). Tampereen ja Helsingin välinen ajomatka saa hidastua 1 h ilman välttämätöntä muutosta lyhimmässä virittävässä puussa. Mikäli ajomatka hidastuu 1h, niin syntyy vaihtoehtoinen puu. Jos matka hidastuu 2 h, niin saadaan virittävä puu muuttuu välttämättä. Tehtävä 2 Harjoituksen 2 Tehtävä 5 voidaan muotoilla selkäreppuongelmaksi seuraavasti: max 35x 1 +20x 2 +25x 3 +10x 4 s.t. 4x 1 +2x 2 +3x 3 +x 4 7 x 1,x 2,x 3,x 4 {0,1}. Laskemalla hyötysuhteet kaavasta h i = u i w i saadaan h 1 = 35 4 = 83 4 h 2 = 20 2 = 10 h 3 = 25 3 = 81 3 h 4 = 10 1 = 10. Valitaan esineitä mukaan yksitellen parhaan hyötysuhteen mukaan, jolloin saadaan taulukko 1

esine kokonaispaino paino 7 hyöty x 2 2 kyllä 20 x 4 3 kyllä 30 x 1 7 kyllä 65 x 3 10 ei (90) Esinettä x 3 ei voida enää ottaa mukaan, koska painorajoitus ylittyy. Ratkaisuna on valita esineet x 1, x 2 ja x 4, jolloin saatava hyöty on 65. Jos vaaditaan, että hyödyn on oltava vähintään 70, niin alkuperäisen tehtävän painorajoitus ei enää voi olla voimassa koska tällöin saisimme optimointitehtävän jolla ei ole sallittuja ratkaisuja. Jos taas meillä on ainoana rajoitteena että hyödyn on oltava vähintään 70, niin alkuperäinen hyötyä maksimoiva kohdefunktio kasvaisi rajatta eikä optimointitehtävällä siis olisi rajoitettua ratkaisua. Optimointitehtävästä saa hyvin määritellyn esimerkiksi siten, että hyödyn maksimoinnin sijaan pyrimme minimoimaan mukaan otettavien esineiden kokonaispainon. Kun muutamme optimointitehtävän kohdefunktiota ja rajoitteita yllä kuvatulla tavalla, niin saamme optimointitehtävän min 4x 1 +2x 2 +3x 3 +x 4 s.t. 35x 1 +20x 2 +25x 3 +10x 4 70. Valitaan aluksi mukaan kaikki esineet, jolloin hyöty on 90 ja paino 10. Sen jälkeen pudotetaan pois esineitä hyötysuhteen mukaan siten, että ensin pudotetaan esine, jolla on heikoin hyötysuhde. esine kokonaishyöty hyöty 70 x 3 65 ei x 1 55 ei x 2 70 kyllä Huonoimman hyötysuhteen omaavaa esinettä x 3 ei voida pudottaa, koska silloin hyöty olisi vähemmän kuin on vaadittu. Jos pudotetaan esine x 2, jolla on toiseksi heikoin hyötysuhde, niin saadaan sallittu ratkaisu. Ratkaisuna on siis valita esineet x 1, x 3 ja x 4, joiden yhteispaino on 8. Tehtävä 3 Muodostetaan ensin maksimivirtausongelma, jossa mahdollisten tanssiparien lukumäärä vastaa virtauksen suuruutta. Merkitään miehiä numeroilla 2,..., 6 ja naisia numeroilla 7,...,11 allaoleva taulukon mukaisesti: Juhani Kimmo Mikko Tommi Vesa Heidi Katja Laura Mia Jonna 2 3 4 5 6 7 8 9 10 11 2

Piirretään graafi, jossa aloitussolmua merkitään numerolla 1. Aloitussolmusta lähtee nuolet kutakin miestä vastaavaan solmuun. Kunkin miehen solmusta taas lähtee nuolet niiden naisten solmuihin, joiden kanssa kyseiset miehet voivat muodostaa tanssiparin. Jokaisen naisen solmusta lähtee lopuksi nuoli lopetussolmuun, jota on merkitty numerolla 12. Koska tanssiparit ovat samanarvoisia, asetetaan kaikkien nuolten painoksi c ij = 1. Koska kukin mies voi muodostaa tanssiparin vain yhden naisen kanssa, asetetaan nuolten kapasiteeteiksi u ij = 1. Koska maksimivirtausongelmassa kunhunkin solmuun tuleva virtaus on yhtä suuri kuin lähtevä virtaus (aloitus- ja lopetussolmua lukuunottamatta), saamme optimointitehtävän joka on muotoa max c ij x ij s.t. j (i,j) E j (k,j) E x kj i (i,k) E missä E on kuvassa 1 esitetyn graafin nuolijoukko. x ik = 0, i = 2,3,...,11, (1a) (1b) 0 x ij u ij = 1, (i,j) E, (1c) 2 7 3 8 1 4 9 12 5 10 6 11 Figure 1: Tehtävän 3 graafi. Tehtävän voi muuttaa minimikustannusvirtausongelmaksi merkitsemällä edellä piirrettyjen nuolten painoiksi 0 ja lisäämällä lopetussolmusta 12 aloitussolmuun 1 menevä nuoli, jonka paino on c 12,1 = 1 ja kapasiteetti u 12,1 =. Tällöin kohdefunktioksi saadaan min x 12,1 = maxx 12,1. Minimoinnin edestä voidaan jättää pois koska se ei muuta tehtävän optimaalisen ratkaisun muuttujia x ij. Lisäksi rajoite (1b) asetetaan myös aloitus- ja lopetussolmulle (i = 1 ja i = 12), koska nuolen (12,1) lisäämisestä johtuen ne ovat nyt kauttakulkusolmuja. Lisättyä nuolta varten tulee myös rajoite x 12,1 0. Näin saatu optimointitehtävä on minimikustannusvirtausongelma, joka on samaa muotoa kuin luentomonisteen sivulla 42 esitetty. 3

Tehtävä 4 Päätösmuuttuja x ij kuvaa paljonko rapuja kuljetetaan ravustajalta i ravintolaan j. Verkosto-ongelmasta saadaan optimointitehtävä min 7x 11 +7x 12 +8x 21 +8x 22 +5x 31 +5x 32 s.t. x 11 +x 12 300 x 21 +x 22 300 x 31 +x 32 300 0,7x 11 +0,8x 21 +0,6x 31 350 0,6x 12 +0,8x 22 +0,7x 32 275 x ij 0, jonka (yksi) ratkaisu on x 11 = 250 (elävänä perille 175) x 12 = 0 x 21 = 218,75 (elävänä perille 175) x 22 = 81,25 (elävänä perille 65) x 31 = 0 x 32 = 300 (elävänä perille 210). Koska 175 + 175 = 350 ja 65 + 210 = 275, niin kumpikin ravintola sai tarvitsemansa määrän rapuja. Kokille tulevat kustannukset ovat 5 650 euroa. Jos vaaditaan, että toimitettavien rapujen määrät ovat kokonaislukuja, toisin sanoen x ij N, niin tehtävän ratkaisuksi LINDOlla saadaan x 11 = 296 (elävänä perille 207,2) x 12 = 0 x 21 = 177 (elävänä perille 141,6) x 22 = 83 (elävänä perille 66,4) x 31 = 2 (elävänä perille 1,2) x 32 = 298 (elävänä perille 208,6). Nyt 207,2+161,6 + 1,2 = 350 ja 66,4+208,6 = 275, joten rapuja on jälleen toimitettu oikea määrä (tarkalleen ottaen tässä pitäisi ottaa huomioon että elävinä toimitettujen rapujen määrät ovat kokonaislukuja). Kokille tulevat kustannukset ovat 5 652 euroa. 4

CPLEXillä saadaan vaihtoehtoinen (eri, mutta yhtä hyvä) ratkaisu: x 11 = 256 x 12 = 0 x 21 = 212 x 22 = 83 x 31 = 2 x 32 = 298 Tehtävä 5 Otetaan käyttöön binääriset kokonaislukumuuttujat 1, jos rehua i valmistetaan (eli x i > 0) y i = 0, jos rehua i ei valmisteta (eli x i = 0), missä i = 1,..., 8. Muotoillaan sitten tuotannolle asetetut vaatimukset rajoitteiksi. a) Kutakin lajiketta i ei joko valmisteta tai sitten valmistetaan vähintään määrä l i ja enintään määrä u j. Tarvittava ehto on l i y i x i u i y i, i = 1,...,8. b) Jos samanaikaisesti saa valmistaa korkeintaan kuutta eri lajiketta, niin kirjoitetaan ehto y 1 +y 2 +y 3 +y 4 +y 5 +y 6 +y 7 +y 8 6. c) Jos valmistetaan lajiketta 1 tai lajiketta 2 tai molempia, niin tulee valmistaa myös lajikkeita 3 ja 4. Tätä vastaavat ehdot ovat esimerkiksi y 1 +y 2 2y 3 y 1 +y 2 2y 4 tai y 1 y 3 y 1 y 4 y 2 y 3 y 2 y 4. d) Jos ei valmisteta lajiketta 5 eikä lajiketta 6, niin myöskään lajikkeita 7 ja 8 ei valmisteta. Tällöin tarvitaan ehtoa y 5 +y 6 y 7 y 5 +y 6 y 8. 5

04/07/15 demo4_4.lp 1 Minimize 7x1 + 7x2 + 8x3 + 8x4 + 5x5 + 5x6 subject to x1 + x2 <= 300 x3 + x4 <= 300 x5 + x6 <= 300-0.7x1-0.8x3-0.6x5 <= -350-0.6x2-0.8x4-0.7x6 <= -275 x1 >= 0 x2 >= 0 x3 >= 0 x4 >= 0 x5 >= 0 x6 >= 0 general x1 x2 x3 x4 x5 x6 end /home/anmheik/opetus/optimointi/cplex_demot/demo4_4.lp

04/07/15 demo4_teht4_ratk.txt 1 CPLEX> read demo4_4.lp Problem 'demo4_4.lp' read. Read time = 0.00 sec. (0.00 ticks) CPLEX> display problem all Minimize obj: 7 x1 + 7 x2 + 8 x3 + 8 x4 + 5 x5 + 5 x6 Subject To c1: x1 + x2 <= 300 c2: x3 + x4 <= 300 c3: x5 + x6 <= 300 c4: - 0.7 x1-0.8 x3-0.6 x5 <= -350 c5: - 0.6 x2-0.8 x4-0.7 x6 <= -275 c6: x1 >= 0 c7: x2 >= 0 c8: x3 >= 0 c9: x4 >= 0 c10: x5 >= 0 c11: x6 >= 0 Bounds x1 >= 0 x2 >= 0 x3 >= 0 x4 >= 0 x5 >= 0 x6 >= 0 Generals x1 x2 x3 x4 x5 x6 %%(voit ratkaista ongelman esim. optimize tai mipopt komennolla, ks help) CPLEX> optimize Tried aggregator 1 time. MIP Presolve eliminated 6 rows and 0 columns. MIP Presolve modified 2 coefficients. Reduced MIP has 5 rows, 6 columns, and 12 nonzeros. Reduced MIP has 0 binaries, 6 generals, 0 SOSs, and 0 indicators. Presolve time = 0.00 sec. (0.01 ticks) Found incumbent of value 6000.000000 after 0.01 sec. (0.05 ticks) Tried aggregator 1 time. Reduced MIP has 5 rows, 6 columns, and 12 nonzeros. Reduced MIP has 0 binaries, 6 generals, 0 SOSs, and 0 indicators. Presolve time = 0.00 sec. (0.01 ticks) MIP emphasis: balance optimality and feasibility. MIP search method: dynamic search. Parallel mode: deterministic, using up to 8 threads. Root relaxation solution time = 0.00 sec. (0.01 ticks) Nodes Cuts/ Node Left Objective IInf Best Integer Best Bound ItCnt Gap * 0+ 0 6000.0000 0.0000 100.00% * 0+ 0 5750.0000 0.0000 100.00% 0 0 5650.0000 2 5750.0000 5650.0000 5 1.74% * 0+ 0 5653.0000 5650.0000 0.05% 0 0 5652.0000 1 5653.0000 MIRcuts: 1 6 0.02% * 0 0 integral 0 5652.0000 MIRcuts: 2 8 0.00% 0 0 cutoff 5652.0000 5652.0000 8 0.00% Elapsed time = 0.02 sec. (0.14 ticks, tree = 0.00 MB, solutions = 4) Mixed integer rounding cuts applied: 2 Root node processing (before b&c): Real time = 0.02 sec. (0.14 ticks) Parallel b&c, 8 threads: Real time = 0.00 sec. (0.00 ticks) Sync time (average) = 0.00 sec. Wait time (average) = 0.00 sec. ------------ Total (root+branch&cut) = 0.02 sec. (0.14 ticks) /home/anmheik/opetus/optimointi/cplex_demot/demo4_teht4_ratk.txt

04/07/15 demo4_teht4_ratk.txt 2 Solution pool: 4 solutions saved. MIP - Integer optimal solution: Objective = 5.6520000000e+03 Solution time = 0.02 sec. Iterations = 8 Nodes = 0 Deterministic time = 0.14 ticks (7.69 ticks/sec) CPLEX> display solution variables 1- Incumbent solution Variable Name Solution Value x1 256.000000 x3 212.000000 x4 83.000000 x5 2.000000 x6 298.000000 All other variables in the range 1-6 are 0. /home/anmheik/opetus/optimointi/cplex_demot/demo4_teht4_ratk.txt