Mat Lineaarinen ohjelmointi

Samankaltaiset tiedostot
Mat Lineaarinen ohjelmointi

Mat Lineaarinen ohjelmointi

Mat Lineaarinen ohjelmointi

Mat Lineaarinen ohjelmointi

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

Mat Lineaarinen ohjelmointi

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

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

Mat Lineaarinen ohjelmointi

T : Max-flow / min-cut -ongelmat

8. Ensimmäisen käyvän kantaratkaisun haku

Luento 4: Lineaarisen tehtävän duaali

Harjoitus 6 ( )

Demo 1: Simplex-menetelmä

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Malliratkaisut Demot 6,

Harjoitus 6 ( )

Lineaarinen optimointi. Harjoitus 6-7, Olkoon A R m n, x, c R ja b R m. Osoita, että LP-tehtävän. c T x = min!

Malliratkaisut Demot

Jälki- ja herkkyysanalyysi. Tutkitaan eri kertoimien ja vakioiden arvoissa tapahtuvien muutosten vaikutusta optimiratkaisuun

Simplex-algoritmi. T Informaatiotekniikan seminaari , Susanna Moisala

Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

Malliratkaisut Demot

Luento 3: Simplex-menetelmä

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

Johdatus verkkoteoriaan luento Netspace

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Luetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

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

Lineaarinen optimointitehtävä

4. Kokonaislukutehtävän ja LP:n yhteyksiä

Harjoitus 3 ( )

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Johdatus verkkoteoriaan 4. luento

Demo 1: Branch & Bound

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Piiri K 1 K 2 K 3 K 4 R R

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

6. Luennon sisältö. Lineaarisen optimoinnin duaaliteoriaa

Algoritmit 1. Luento 8 Ke Timo Männikkö

Harjoitus 3 ( )

Algoritmit 2. Luento 11 Ti Timo Männikkö

Malliratkaisut Demot

Algoritmit 1. Luento 9 Ti Timo Männikkö

Malliratkaisut Demot

Luento 7: Kokonaislukuoptimointi

3 Simplex-menetelmä. c T x = min! Ax = b (x R n ) (3.1) x 0. Tarvittaessa sarakkeiden järjestystä voidaan vaihtaa, joten voidaan oletetaan, että

Luento 7: Kokonaislukuoptimointi

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

Harjoitus 1 ( )

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Harjoitus 1 ( )

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

Kokonaislukuoptimointi hissiryhmän ohjauksessa

Malliratkaisut Demot

KKT: log p i v 1 + v 2 x i = 0, i = 1,...,n.

Keskeiset tulokset heikko duaalisuus (duaaliaukko, 6.2.1) vahva duaalisuus (6.2.4) satulapisteominaisuus (6.2.5) yhteys KKT ehtoihin (6.2.

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Datatähti 2019 loppu

Luento 12: Duaalitehtävä. Tarkennuksia Lagrangen kertoimen tulkintaan. Hajautettu optimointi.

Trimmitysongelman LP-relaksaation ratkaiseminen sarakkeita generoivalla algoritmilla ja brute-force-menetelmällä

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

13 Lyhimmät painotetut polut

Kirjallisuuskatsaus sisäpistemenetelmiin ja niiden soveltamiseen eri optimointiluokille (valmiin työn esittely)

Luento 2: Optimointitehtävän graafinen ratkaiseminen. LP-malli.

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

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

1 Johdanto LP tehtävän luonteen tarkastelua Johdanto herkkyysanalyysiin Optimiarvon funktio ja marginaalihinta

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

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

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

Harjoitus 8: Excel - Optimointi

Luento 12: Duaalitehtävä. Tarkennuksia Lagrangen kertoimen tulkintaan. Hajautettu optimointi.

Luento 2: Optimointitehtävän graafinen ratkaiseminen. LP-malli.

Insinöörimatematiikka D

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

Mat Lineaarinen ohjelmointi

Malliratkaisut Demot

Malliratkaisut Demo 1

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

Johdatus verkkoteoriaan luento Netspace

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

MS-C2105 Optimoinnin perusteet Malliratkaisut 4

Trimmitysongelman LP-relaksaation ratkaiseminen sarakkeita generoivalla algoritmilla ja brute-force-menetelmällä

Kokonaislukuoptimointi

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

v 8 v 9 v 5 C v 3 v 4

10. Painotetut graafit

Suomen rautatieverkoston robustisuus

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

b 1. b m ) + ( 2b Ax) + (b b)

Matematiikan tukikurssi, kurssikerta 3

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Kytkentäkentät, luento 2 - Kolmiportaiset kentät

PARITUS KAKSIJAKOISESSA

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Kytkentäkentät, luento 2 - Kolmiportaiset kentät

Transkriptio:

Mat-.34 Lineaarinen ohjelmointi 5..7 Luento Kertausta Lineaarinen ohjelmointi - Syksy 7 /

LP ja Simplex Kurssin rakenne Duaalisuus ja herkkyysanalyysi Verkkotehtävät Kokonaislukutehtävät Lineaarinen ohjelmointi - Syksy 7 /

LP-tehtävä Jokainen LP-tehtävä voidaan muuttaa standardimuotoon: min c x s.e. Ax=b x LP:n käypä alue on aina monitahokas LP:n optimiratkaisu löytyy aina käyvän alueen kulmapisteestä Lineaarinen ohjelmointi - Syksy 7 / 3

Simplex Kulmapistettä vastaa käypä kantaratkaisu x Kantamuuttujia x B vastaa kantamatriisi B = A:n kantamuuttujia vastaavat sarakkeet Ei-kantamuuttujat x N = Huomaa: Ax=Bx B +A N x N =Bx B =b => x B =B - b c x = c B x B +c N x N =c B x B = c B B - b Lineaarinen ohjelmointi - Syksy 7 / 4

Simplex Simplex-taulukko: Red. kustannukset -Kustannus - c B ' B - b c' c B 'B - A Kantamuuttujien arvot B - b B - A -Kantasuunnat Red. kustannukset: miten muuttujan tuominen kantaan vaikuttaa kustannukseen? Kantamuuttujilla nollia. j. kantasuunta -B - A j : mitä kantamuuttujille tapahtuu, kun x j tuodaan kantaan? Lineaarinen ohjelmointi - Syksy 7 / 5

Simplex Jos c j <, pienentää x j :n kasvattaminen kustannusta => kantaan! Kasvatetaan, kunnes ensimmäinen kantamuuttuja menee nollaksi eli poistuu kannasta Kannasta poistuva muuttuja x B(l) se, jonka indeksi B(l) minimoi lausekkeen: xb( l), ub( l) > u B( l), jossa u B(l) = Simplex-taulukon j. sarakkeen ja l. rivin alkio eli muuttujaa x B(l) vastaava j. kantasuunta Lineaarinen ohjelmointi - Syksy 7 / 6

Kannan vaihto: Simplex Muutetaan kantaan tulevaa muuttujaa vastaava sarake yksikkövektoriksi, jossa kannasta poistuvan rivin alkio ykkönen ja muut nollia Jos nyt red. kustannukset ei-negatiivisia, ollaan optimissa Jos ei, toistetaan edellinen Lineaarinen ohjelmointi - Syksy 7 / 7

Simplexin implementaatiot Kirjan esimerkki 3.5: min s.e. x x x x + x + x 3 x + x + x 3 x + x + x 3 x x, x, 3 3 s.e. min x x x x + x + x + x 3 4 = x + x + x + x 3 5 = x + x + x + x 3 6 = x,..., x 6 3 Aloitusratkaisuksi x=(,,,,,) eli c = c ' x = ja c c = B B B x B = ( x, x, x ) 4 5 6 Lineaarinen ohjelmointi - Syksy 7 / 8

Simplex x 3 A=(,,) B=(,,) / = / = x 4 = x 5 = x 6 = x x x 3 - - - x 4 x 5 x 6 *- *-.5 *5 / D=(,,) E=(4,4,4) C=(,,) / = x x x Lineaarinen ohjelmointi - Syksy 7 / 9

Simplex x 3 A=(,,) B=(,,) x 4 = x = x 6 = x x -7.5.5 x 3 - - x 4 x 5 5 -.5.5 - x 6 D=(,,) E=(4,4,4) C=(,,) x x Lineaarinen ohjelmointi - Syksy 7 /

Simplex x 3 A=(,,) B=(,,) x 3 = x = x 6 = x x -4.5 -.5 x 3 x 4 - x 5 4 -.5 -.5 x 6 D=(,,) E=(4,4,4) C=(,,) x x Lineaarinen ohjelmointi - Syksy 7 /

Simplex x 3 A=(,,) B=(,,) x 3 = x = x = 36 4 4 4 x x x 3 x 4 3.6.4 -.6.4 x 5.6.4.4 -.6 x 6.6 -.6.4.4 D=(,,) E=(4,4,4) C=(,,) x x Lineaarinen ohjelmointi - Syksy 7 /

Duaalitehtävä LP:lle voidaan muodostaa duaalitehtävä Idea: relaksoidaan rajoite Ax=b, mutta sakotetaan sen rikkomisesta hinnalla p (duaalimuuttuja) P: D: min c x max p b s.e. Ax=b s.e. p A c x p vapaa Jos primaalille ja duaalille löytyy optimiratkaisut, ovat vastaavat optimikustannukset samat, eli c x*=p* b Lineaarinen ohjelmointi - Syksy 7 / 3

Duaalitehtävä Duaaalin ja primaalin optimiratkaisuja yhdistävät täydentyvyysehdot (complementary slackness): p i *(a i x*-b i ) = x j *(p* A j -c j ) = Duaalimuuttuja vastaa primaalin rajoitetta ja toisinpäin Ei-degeneroituneessa tapauksessa em. ehdoista saadaan laskettua x* kun p* tunnetaan tai toisinpäin Lineaarinen ohjelmointi - Syksy 7 / 4

Duaalitehtävä Duaalimuuttujan tulkinnat: Sakko rajoitteen rikkomisesta (tehtävän määritelmästä) Marginaalikustannus (b i b i +, p i b i p i b i +p i ) Oikea hinta Peliteoreettinen näkökulma Lineaarinen ohjelmointi - Syksy 7 / 5

Duaalitehtävä Duaalimuuttuja p =c B B - Sijoitetaan duaalitehtävän rajoitusehtoon: p A c c - c B B - A => duaalikäypyys = primaalin optimaalisuus! Ratkaisu primaalikäypä ja duaalikäypä optimaalinen! Simplex etenee primaalikäypyydestä kohti duaalikäypyyttä duaalisimplex etenee duaalikäypyydestä kohti primaalikäypyyttä Lineaarinen ohjelmointi - Syksy 7 / 6

Duaalisimplex Lähtötilanne: duaalikäypä, muttei primaalikäypä ratkaisu Ts. redusoidut kustannukset ei-negatiivisia, mutta jokin kantamuuttuja negatiivinen Poistetaan neg. muuttuja x B(l) kannasta Kantaan muuttuja x j, jonka indeksi j minimoi lausekkeen: c j, vlj < v lj, jossa v lj on taulukon l. rivin ja j. sarakkeen alkio Lineaarinen ohjelmointi - Syksy 7 / 7

Duaalisimplex Esimerkki: P: min x + x D: s.e x + x x = 3 x x 4 = x,,3,4 max s.e p + p p + p p p, Primaali voidaan esittää kahdessa dimensiossa, kun ja kohdellaan surplus-muuttujina x x3 4 Lineaarinen ohjelmointi - Syksy 7 / 8

Duaalisimplex Aloitetaan duaalikäyvästä ratkaisusta x =(,,-,-), jolla c'= (,,,) Tällöin p' = c ' B = (,) B x c x x 3 x 4 = = -* - x x x x 3 4 - - - / /(-) p / b p Lineaarinen ohjelmointi - Syksy 7 / 9

Duaalisimplex x x =(,,,-), p =(/,) c x x x x 3 4 x x x 4 = = - -* / / - / -/ * *(-) p b / p Lineaarinen ohjelmointi - Syksy 7 /

Duaalisimplex x=(,/,,), p=(/,/) x B optimi! x c x x = = -3/ / x x x x 3 4 / -/ / / - p b x / p Lineaarinen ohjelmointi - Syksy 7 /

Herkkyysanalyysia Optimiratkaisu tehtävälle olemassa Tehtävää poikkeutetaan muuttamalla A:ta, b:tä tai c:tä, tai lisäämällä tehtävään uusi muuttuja tai rajoite Uusi optimiratkaisu voidaan saada johdettua alkuperäisestä ratkaisusta ei tarvetta aloittaa alusta (ks. luento 7) Sama kanta poikkeutuksen jälkeen optimaalinen => tehtävä robusti Kanta vaihtuu => datan suhteen on herkkyyttä Lineaarinen ohjelmointi - Syksy 7 /

Herkkyysanalyysia Data voidaan esittää myös parametrisessa muodossa, jos siitä ei ole täyttä varmuutta min x +(4+ θ) x min x +x s.e. x +x = s.e. x +x = + θ x,x x,x Optimiratkaisu θ:n funktio: Esiintyy c:ssä red. kustannukset & Simplex Esiintyy b:ssä käypyys & duaalisimplex Lineaarinen ohjelmointi - Syksy 7 / 3

Verkkotehtävät Verkon määrittävät solmut N ja kaaret A Solmuille on määrätty divergenssit b i = verkon ulkopuolelta solmuun tuleva/siitä lähtevä virtaus Kaarille on määrätty kustannukset ja virtauskapasiteetit Yleinen tehtävä: etsi virtausvektori, joka täyttää divergenssiehdot minimikustannuksella 3,[,] 3 5 4 Lineaarinen ohjelmointi - Syksy 7 / 4

Verkkotehtävät Verkkotehtävä voidaan esittää standardimuotoisena LP:nä min c f s.e. Af = b f, missä päätösmuuttujat ovat kaarten virtaukset, b divergenssivektori ja A matriisi, joka kuvaa solmujen ja kaarten yhteyksiä Tehtävä voidaan täten ratkaista Simplexillä Tehtävällä erikoisrakenne => verkkosimplex Lineaarinen ohjelmointi - Syksy 7 / 5

Verkkosimplex Verkkotehtävässä käypä kantaratkaisu = käypä puuratkaisu Puuratkaisu: Muodostetaan puu (yhtenäinen verkko, jossa ei syklejä) Asetetaan puuhun kuulumattomien kaarten virtaus nollaksi Lasketaan puun kaarten virtaus divergenssiehdoista 3 3 3 5 4 Lineaarinen ohjelmointi - Syksy 7 / 6

Verkkosimplex Idea: Voidaanko puuhun lisätä kaari siten, että muodostuvaa sykliä pitkin virtausta työntämällä saadaan kustannusta pienennettyä? Jos, työnnetään virtausta, kunnes jonkin kaaren virtaus nollaksi => kanta vaihtuu 3 3 Lineaarinen ohjelmointi - Syksy 7 / 7

Verkkosimplex Kaaren red. kustannus negatiivinen => kaaren tuottama sykli vähentää kustannusta Verkkotehtävissä red. kustannus lasketaan duaalimuuttujien eli solmuhintojen avulla Puun T kaarille pätee: p p i p j n = = c ( i, j) T Käytetään edellä laskettuja solmuhintoja, jolloin red. kustannus: c = c ( p p ) ( i, j) T. ij ij i ij, j Lineaarinen ohjelmointi - Syksy 7 / 8

Solmuhintojen tulkinta: Verkkosimplex p i -p j pienin kustannus solmusta i solmuun j ratkaisupuun kaaria käyttämällä Puun kaarille siis pätee p i -p j =c ij Jos p i -p j > c ij jollekin ( i, j) T (red. kustannus negatiivinen), kannattaisi käyttää mielummin ko. kaarta kuin puuta => kaari kantaan Virtausta työnnetään muodostuvaan sykliin, kunnes jonkin takaperin suunnatun kaaren virtaus menee nollaan => poistuu kannasta Lineaarinen ohjelmointi - Syksy 7 / 9

Verkkosimplex Esimerkki: Kapasiteettirajoitukseton tehtävä; kuvassa tarjonnat, kysynnät ja kaarten kustannukset Alla lähtöratkaisu, jolle: p p c Siis kaari (,) kantaan! 5 = p = = p c 5 + c 5 ( p = p 5 = p c 5 = ) = < 3 3 3 Lineaarinen ohjelmointi - Syksy 7 / 3 3 3 5 4 5 4

Verkkosimplex Syklin kaaret (5,) ja (,5) takaperin suunnattuja θ* = Siis kaari (5,) pois kannasta! Nyt c ij p i = = f min ( k, l) B =, f kl f 5 = min{,3} = = ( i, j) T i, f 5 = c3= c3=, c5 = c5 = 3 3 Lineaarinen ohjelmointi - Syksy 7 / 3 5 Kuvan kanta optimaalinen, kustannus! 4

Verkkotehtävä Verkkotehtävän erikoistapauksilla räätälöityjä algoritmeja Lyhyimmän polun tehtävä: Bellman-Ford nimikettä korjaava Dijkstra nimikkeen asettava Maksimivirtaustehtävä: Ford-Fulkerson tutkitaan, löytyykö polkua, jota pitkin virtausta voidaan lisätä Jos löytyy, lisätään kapasiteettien rajoissa; jos ei, ollaan optimissa Lineaarinen ohjelmointi - Syksy 7 / 3

Kokonaislukutehtävä LP:tä hankalampi ratkaista Ei tunnettuja tehokkaita algoritmeja Kurssilla käsiteltiin Gomoryn leikkaava taso perustuu Simplextaulukkoon Branch & Bound edellistä tehokkaampi; jaetaan tehtävää osatehtäviin, joille lasketaan kustannuksen alarajoja tai kokonaislukuratkaisun löytyessä ylärajoja Branch & Cut tehostaa edellistä syvemmillä leikkauksilla; leikkauksen löytyminen hankalaa Lineaarinen ohjelmointi - Syksy 7 / 33

Esimerkki: min s. e. x 4x x x + 6x + x x, x x, x 4 Ζ Branch & Bound 9 F : x 3 F : x Relaksaation ratkaisu x*=(.5,.5); jaetaan alue x :n suhteen ko. murtoluvun poissulkeviin alueisiin F ja F aktiivisten osatehtävien lista {F, F } x* LP-relaksaation kustannus = -3.5, joten koko alueen alarajaksi b(f)=-3.5 Ei löydettyjä kok.lukuratkaisuja, joten U= Lineaarinen ohjelmointi - Syksy 7 / 34

Branch & Bound Osatehtävä F ei ole käypä poistetaan listasta Ratkaistaan osatehtävän F relaksaatio, josta saadaan alarajaksi b(f )=-3.5 (tiukempi) F 4 : x F : x x * F 3 : x F :n relaksaation optimi x *=(.75, ), joten jaetaan edelleen x :n suhteen osatehtäviksi F 3 ja F 4 aktiivisten osatehtävien lista {F 3, F 4 } Lineaarinen ohjelmointi - Syksy 7 / 35

Branch & Bound Osatehtävän F 3 relaksaation ratkaisu x*=(,), eli kokonaislukuratkaisu! Kustannus -3, joten U:=-3. F 3 tutkittu eli pois aktiivisten listasta Osatehtävän F 4 relaksaation ratkaisu (,3/) ja optimikustannus -3, eli b(f 4 ) U => poistetaan F 4 listasta Lista on tyhjä, eli alkup. tehtävän optimiratkaisu löydetty! x*=(,), c x*=-3. x 4 * x 3 * Lineaarinen ohjelmointi - Syksy 7 / 36

Tentti To.. klo 9-, sali M Uusinta ma 4.. klo 9-, salit D,E,L Viisi tehtävää Kotitehtävä- ja harjoitustyöpisteet voimassa vuoden 9 tammikuun uusintatenttiin asti Lineaarinen ohjelmointi - Syksy 7 / 37