Mat Lineaarinen ohjelmointi

Samankaltaiset tiedostot
Mat Lineaarinen ohjelmointi

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

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Mat Lineaarinen ohjelmointi

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Mat Lineaarinen ohjelmointi

Harjoitus 6 ( )

Mat Lineaarinen ohjelmointi

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

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

Luento 7: Kokonaislukuoptimointi

Harjoitus 6 ( )

Malliratkaisut Demot

Luento 7: Kokonaislukuoptimointi

Demo 1: Branch & Bound

Piiri K 1 K 2 K 3 K 4 R R

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!

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

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Kombinatorinen optimointi

4 Heuristinen haku. Eero Hyvönen Helsingin yliopisto

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

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

Algoritmit 2. Luento 11 Ti Timo Männikkö

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

Algoritmit 2. Luento 12 Ke Timo Männikkö

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

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

Kokonaislukuoptimointi hissiryhmän ohjauksessa

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

Algoritmit 2. Luento 12 To Timo Männikkö

1. Lineaarinen optimointi

Simplex-algoritmi. T Informaatiotekniikan seminaari , Susanna Moisala

Sekalukuoptimointi. Lehtonen, Matti Matemaattisen ohjelmoinnin seminaari, Tietojenkäsittelytieteen laitos Helsingin Yliopisto

Demo 1: Simplex-menetelmä

Lineaarinen optimointitehtävä

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

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

Malliratkaisut Demot

Algoritmit 1. Luento 9 Ti Timo Männikkö

Esimerkkejä vaativuusluokista

Harjoitus 3 ( )

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

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

Luento 4: Lineaarisen tehtävän duaali

Numeeriset menetelmät

Kokonaislukuoptimointi

Johdatus verkkoteoriaan 4. luento

Search space traversal using metaheuristics

Mat Lineaarinen ohjelmointi

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

Tietorakenteet ja algoritmit - syksy

Johdatus verkkoteoriaan luento Netspace

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

Harjoitus 3 ( )

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

Lineaarisen ohjelman määritelmä. Joonas Vanninen

Pisteen x lähistö koostuu kaikista ratkaisuista, jotka on saatu x:stä tekemällä siihen yksi siirto:

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

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

Rationaalilauseke ja -funktio

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Malliratkaisut Demo 1

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

Kimppu-suodatus-menetelmä

Johdatus lukuteoriaan Harjoitus 11 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

BM20A0900, Matematiikka KoTiB3

Algoritmit 1. Luento 1 Ti Timo Männikkö

Kokonaislukuoptimointi

Esimerkkejä kokonaislukuoptimointiongelmista

Numeeriset menetelmät

Luento 3: Simplex-menetelmä

TIEA382 Lineaarinen ja diskreetti optimointi

6. Luennon sisältö. Lineaarisen optimoinnin duaaliteoriaa

Harjoitus 8: Excel - Optimointi

3.4 Peruutus (backtracking)

1 Rajoittamaton optimointi

Monitavoiteoptimointi

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) OT. 1. a) Määritä seuraavat summat:

Lineaarinen optimointitehtävä

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

INFO / Matemaattinen Analyysi, k2016, L0

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ä

Operatioanalyysi 2011, Harjoitus 3, viikko 39

Demo 1: Lineaarisen tehtävän ratkaiseminen graafisesti ja Solverilla

Ohjelmoinnin perusteet Y Python

1 Määrittelyjä ja aputuloksia

Algoritmit 2. Luento 11 Ti Timo Männikkö

Yhden muuttujan funktion minimointi

Malliratkaisut Demot

Malliratkaisut Demot

Matriisi-vektori-kertolasku, lineaariset yhtälöryhmät

Taloustieteen mat.menetelmät 2017 materiaali 1

Transkriptio:

Mat-.34 Lineaarinen ohjelmointi 9..7 Luento Kokonaislukuoptimoinnin algoritmeja (kirja.-.) Lineaarinen ohjelmointi - Syksy 7 /

Luentorunko Gomoryn leikkaava taso Branch & Bound Branch & Cut Muita menetelmiä Yhteenveto Lineaarinen ohjelmointi - Syksy 7 /

Kokonaislukualgoritmit (/) Kokonaislukutehtävien ratkaisu hankalaa ei yleispäteviä, tehokkaita algoritmeja Algoritmien jako: Eksaktit takaavat optimiratkaisun mutta eksponentiaaliaikaisia Approksimatiiviset polynomiaikaisuus, mutta suboptimaalisuuden mahdollisuus määrätyissä rajoissa Heuristiset suboptimaalisuus, rajoista ei tietoa. Käytännössä usein nopeita ja hyviä. Lineaarinen ohjelmointi - Syksy 7 / 3

Kokonaislukualgoritmit (/) Tällä kurssilla keskitytään eksakteihin algoritmeihin: Leikkaava taso Branch & Bound Branch & Cut Lineaarinen ohjelmointi - Syksy 7 / 4

Leikkaava taso (Cutting plane) Idea:. Relaksoidaan tehtävä ja ratkaistaan *. Jos * kokonaisluku, ollaan optimissa. 3. Jos ei, lisätään rajoite (leikkaava taso), jonka alkup. tehtävän kokonaislukuratkaisut täyttävät mutta * ei palaa askeleesen. * Leikkaava taso Lineaarinen ohjelmointi - Syksy 7 / 5

Leikkaava taso: Gomoryn algortimi (/8) Mistä leikkaavan tason yhtälö? Gomoryn leikkaavan tason menetelmä (958) ensimmäinen äärellisessä ajassa terminoituva kokonaislukualgoritmi Käytännössä ei kovinkaan tehokas Lineaarinen ohjelmointi - Syksy 7 / 6

Leikkaava taso: Gomoryn algoritmi (/8) Käytetään hyväksi Simple-taulukkoa: - c B ' B B - b - b c' c B B - 'B A - A Erotetaan kantamuuttujat B ja ei-kantamuuttujat N sekä niitä vastaavat A:n sarakkeet toisistaan, jolloin: B + B A = B N N b Lineaarinen ohjelmointi - Syksy 7 / 7

Leikkaava taso: Gomoryn algoritmi (3/8) Merkitään a ij = ( B A j ) i ja a i = ( B b) i Valitaan optimiratkaisua * vastaavasta taulukosta rivi i s.e. (vastaava kantamuuttuja) on murtoluku: a i Tällöin: i a = i j N + j N ij a + a = a ij, missä = :ta lähin pienempi kokonaisluku j a ij j i ij j i i + a ij j N a Lineaarinen ohjelmointi - Syksy 7 / 8

Leikkaava taso: Gomoryn algoritmi (4/8) Koska muuttujien tulee olla kokonaislukuja, pätee: i + a ij j ai j N Yllä siis epäyhtälö, jonka alkup. tehtävän kokonaislukuratkaisut toteuttavat, mutta * ei, sillä * = i ai, j* = j N a i < ai => leikkaava taso! Lineaarinen ohjelmointi - Syksy 7 / 9

Lineaarinen ohjelmointi - Syksy 7 / Leikkaava taso: Leikkaava taso: Gomoryn algoritmi (5/8) Gomoryn algoritmi (5/8) Esimerkki: Ζ + +,, 4 9 6 4.. min s e Ζ = + + = + +,...,,..., 4 9 6 4.. min 4 4 4 3 s e

Optimitaulukko: = = 7/ 5/ 3/ Leikkaava taso: Gomoryn algortimi (6/8) 3/ / -/ /5 /5 3/5 * + 3 + 5 4 + = 5 = 5 Uusi ey-rajoite; optimikannan päivitys ks. luento 7 Lineaarinen ohjelmointi - Syksy 7 /

Optimitaulukko: = = 4 = 3/4 3/4 5/4 Leikkaava taso: Gomoryn algoritmi (7/8) /4 -/4 /4 / 3/ -5/ * 3 3 3+ 5 = 4 4 + 3 3 3 + 5 5 + 6 = 7 + 5 7 Lineaarinen ohjelmointi - Syksy 7 /

Optimitaulukko: Leikkaava taso: Gomoryn algoritmi (8/8) 3 /3 /6 = * = 5/3 -/3 4 = -8/3 /3 3 = /3-4/3 Kaikki muuttujat ovat kokonaislukuja, eli ollaan alkup. tehtävän optimissa! Joka kierroksella uusi muuttuja ja duaalisimple... Argh. Lineaarinen ohjelmointi - Syksy 7 / 3

Branch & Bound (/7) Idea: Hajotetaan käypä alue osiin, jotka taas hajotetaan pienempiin osiin jne. Käytetään hyväksi jo löydettyjä kustannuksen ala- ja ylärajoja kertomaan, kannattaako tietyn osaalueen tutkimista enää jatkaa Alkup. min c' s. e. F F min s. e. F F F 3 F 4 F 5 i. osatehtävä c' F i = F... F k Lineaarinen ohjelmointi - Syksy 7 / 4

Branch & Bound (/7) Tutkittavalle osatehtävälle lasketaan kustannuksen alaraja jollakin funktiolla b() b( F ) min c' i Ylläpidetään myös pienintä löydettyä kokonaislukuratkaisun antamaa kustannusta U, joka antaa siis optimikustannuksen ylärajan Jos jollekin osatehtävälle i pätee b(f i ) U, ei kyseistä haaraa kannata enää tutkia F i Lineaarinen ohjelmointi - Syksy 7 / 5

Branch & Bound (3/7) Menetelmä on geneerinen, eli sitä voidaan varioida erilaisilla valinnoilla koskien seuraavan tutkittavan osatehtävän valintaa (depth first, breadth first ym.) alarajojen laskutekniikkaa (tällä kurssilla LPrelaksaatiolla) tapaa jakaa tehtävät osatehtäviksi (tällä kurssilla eristämällä murtolukuratkaisut) Lineaarinen ohjelmointi - Syksy 7 / 6

Branch & Bound (4/7) Aktiivisten lista = määritetyt, muttei vielä tutkitut osatehtävät Menetelmä:. Alussa U=, aktiivisten lista = {F}. Valitse listasta aktiivinen osatehtävä F i. Jos F i ei ole käypä, poista se listasta muuten, laske alaraja b(f i )= F i :n relaksaation optimikustannus 3. Jos b(f i ) U, poista osatehtävä listasta 4. Jos b(f i )<U: Joko F i :n relaksaatiolla kokonaislukuratkaisu => päivitä U ja poista osatehtävä listasta Tai murtolukuratkaisu => jaa uusiin osatehtäviin Lineaarinen ohjelmointi - Syksy 7 / 7

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

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

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

Branch & Cut (/3) Branch & Boundin tehokkuus riippuu suuresti siitä, kuinka tiukkoja alarajoja optimikustannukselle pysytään määrittämään Branch & Cut menetelmä muuntaa osatehtäviä lisäleikkauksilla, ts. pienentää osatehtävien käypiä alueita lähemmäs kokonaislukuratkasuja Lineaarinen ohjelmointi - Syksy 7 /

Esimerkki: min s. e. 4 Branch & Cut (/3) + 6 +,, 9 4 Ζ F : 3 F : - + Relaksaation optimiratkaisu (.5,.5) jaetaan osatehtäviin F ja F Tehtävä F ei käypä=> poistetaan listasta. Lisätään tehtävään F rajoite - +, jonka kaikki F :n kokonaislukuratkaisut toteuttavat Lineaarinen ohjelmointi - Syksy 7 /

Branch & Cut (3/3) Relaksoidun tehtävän ratkaisu (,) = kokonaislukuja, eli myös alkuperäisen tehtävän ratkaisu! Mitä syvemmät leikkaukset, sitä nopeammin ratkaisu löytyy valitettavasti hankalaa puuhaa... F : 3 F : * - + Lineaarinen ohjelmointi - Syksy 7 / 3

Muita menetelmiä (/) Dynaaminen ohjelmointi (eksakti): Käypä ratkaisu nähdään sarjana päätöksiä kokonaiskustannus = yksittäisten päätösten kustannusten summa Esim. kauppamatkustajan ongelma: kauppias valitsee aina kaupungista lähtiessään seuraavan kohteen Esim. kapsäkkitehtävä: murtovaras valitsee ensin yhden tavaran ja miettii sitten seuraavaa Kurssi Mat-.348 Lineaarinen ohjelmointi - Syksy 7 / 4

Muita menetelmiä (/) Approksimoivat algoritmit: Pyritään lyhyempään ratkaisuaikaan tehtävän parametreja poikkeuttamalla Suboptimaalisuus vs. ratkaisuaika trade-off Heuristiset menetelmät: Lokaali haku tyydytään lokaaliin optimiin Simuloitu jäähdytys (simulated annealing) parannus lokaaliin hakuun; sallitaan ajoittaiset kustannusfunktion kasvut Lineaarinen ohjelmointi - Syksy 7 / 5

Yhteenveto Kokonaislukutehtävien ratkaiseminen hankalaa Eksakteja algoritmeja: Gomoryn leikkaava taso Branch & Bound, Branch & Cut Suurissa tehtävissä tyydytään usein hyvään (ei välttämättä optimaaliseen) ratkaisuun Käytännössä menetelmillä etsitäänkin usein mahdollisimman tiukkaa ylärajaa kustannukselle Lineaarinen ohjelmointi - Syksy 7 / 6