Kokonaislukuoptiomointi Leikkaustasomenetelmät Systeemianalyysin Laboratorio 19.3.2008
Sisällys Leikkaustasomenetelmät yleisesti Leikkaustasomenetelmät generoivilla kokonaislukujoukoilla Gomoryn leikkaavat tasot ja hilapohjaiset leikkaustasomenetelmät
Tehtävän kuvaus Tarkastellaan tehtävää max c x s.t. Ax b, x Z n, (1) missä A Z m n, b Z m ja c Z n Olkoon P = {x R n Ax b} ja F = P Z n Tehtävän (1) relaksaatiolla tarkoitetaan tehtävää, jossa sallitaan ratkaisut x R n Relaksaation ratkaisemiseen tunnetaan useita algoritmeja
Leikkaustasomenetelmät yleisesti Leikkaustasomenetelmässä ratkaistaan kokonaislukuoptimoinnin ongelma (1) seuraavasti 1. Ratkaistaan relaksoitu ongelma 2. Jos relaksaation ratkaisu ei ole kokonaisluku, muodostetaan uusi rajoitus, joka poistaa käyvästä joukosta relaksaation ratkaisun, mutta ei alkuperäisen tehtävän ratkaisua 3. Palataan kohtaan 1 muutetulla tehtävällä Menetelmässä käypää joukkoa leikataan hypertasoilla siten, että ei-kokonaislukuratkaisut poistuvat Valitsemalla leikkaukset eri tavoin saadaan erilaisia menetelmiä
Leikkaustasomenetelmä generoivilla kokonaislukujoukoilla Eräs tapa leikata käypää joukkoa saadaan käyttämällä generoivia kokonaislukujoukkoja Aloitetaan olettamalla, että ongelman (1) relaksaatiolla on yksikäsitteinen (ekstreemipiste)ratkaisu x Merkitään I :llä niiden indeksien i joukkoa, joille pätee a ix = b i, i I (2)
Merkitään yhtälöiden (2) generoimaa kartioita C = {x R n x = i I y i a i, y i 0, i I } Lyhyemmin merkitään C = cone(a I ) Jokaiselle d C ja x P pätee nyt d x = i I y i a i x i I y i b i = i I y i a i x = d x Jos d Z n, niin jokaisella x F pätee d x Z = jokaisella x F pätee d x d x
Generoivat kokonaislukujoukot (kertausta) Määritelmä: Olkoon D Z n. Joukko H D on generoiva kokonaislukujoukko, jos jokainen x D voidaan esittää muodossa k x = λ i h i, missä λ i Z +, h i H. Lause: Rationaalisen kartion kokonaislukupisteillä on äärellinen generoiva kokonaislukujoukko Polyhedraalijoukon generoivan kokonaislukujoukon etsimiseen on olemassa algoritmeja i=1
Joukolla C Z n on äärellinen generoiva kokonaislukujoukko H = {h 1,..., h k } (C on rationaalinen kartio) = h Z n jokaisella h H, joten h x h x kaikilla x F Epätyhjälle ja rajoitetulle P = {x R n Ax b} voidaan osoittaa, kun x on tehtävän (1) relaksaation ratkaisu: (a) Ratkaisu x on kokonaisluku h i x on kokonaisluku kaikilla i = 1,..., k (b) Jos d C Z n, niin epäyhtälö d x d x saadaan ottamalla ei-negatiivinen kokonaislukukombinaatio epäyhtälöistä h x h x kaikilla h H
Sanakirjajärjestys Aikaisemmin tehtiin oletus, että x on ongelman (1) relaksaation yksikäsitteinen ratkaisu Yleisesti lineaarisella ongelmalla voi esiintyä ylinumeroituva määrä ratkaisuja Toimivaa algoritmia varten täytyy varmistaa, että aina valitaan yksikäsitteisesti määrätty optimaalinen ratkaisu x Määritellään tätä silmälläpitäen ns. sanakirjajärjestys, jolla tehtävän (1) relaksaation ratkaisut voidaan järjestää ja poimia jokin näistä yksikäsitteisesti
Määritelmä: Olkoon K kaikkien tehtävän (1) relaksaation ratkaisujen joukko Ratkaisu x K on sanakirjajärjestyksessä suurin, x lex x jos jokaisella x K on olemassa indeksi k {0,..., n 1} siten, että xi = x i kaikilla i = 1,..., k ja xk+1 > x k+1 Merkitään x = lexmax{c x : x P} Olkoon P = {(x 1, x 2 ) x 1 + x 2 1, x 1, x 2 0} Kaikista tehtävän max{2x 1 + 2x 2 : x P} ratkaisuista ratkaisu (1, 0) on sanakirjajärjestyksessä suurin
Leikkaustasomenetelmän algoritmi generoivilla kokonaislukujoukoilla Algoritmin alustus ja ulostulo Syöte: Matriisi A Z m n, vektorit c Z n ja b Z m Ulostulo: Optimaalinen ratkaisu x tehtävälle max c x : Ax b, x Z n
Algoritmi 1/2 1. Asetetaan t = 0, b 0 = b, A 0 = A, P 0 = {x R n A 0 x b 0 } 2. Ratkaistaan lexmax{c x : x P t } (a) Jos P t =, niin ongelmaan ei ole käypää ratkaisua, pysäytetään algoritmi (b) Muutoin merkitään optimiratkaisua x t :llä 3. Jos x t on kokonaisluku, palautetaan x t ja pysäytetään algoritmi 4. Olkoon I niiden A t x b:n rivien joukko, joille epäyhtälö pätee yhtälönä x t :ssä
Algoritmi 2/2 5. Määritetään kartion cone(a t,i ) Z n generoiva kokonaislukujoukko H = {h 1,..., h k }, merkitään H t Z k n matriisia, jonka rivit muodostuvat kantavektoreista h i 6. Asetetaan A t+1, b t+1 rajoituksia [ At H t ] [ x b t ( h 1 x t,..., h k x t ) vastaaviksi, asetetaan P t+1 = {x R n A t+1 x b t+1 } 7. Asetetaan t = t + 1 ja palataan kohtaan 2 Lause: yo. algoritmi löytää tehtävän (1) ratkaisun äärellisen monella askeleella ]
1/2 Tarkastellaan tehtävää Relaksaatiolla ratkaisu x = (1.5, 2.5) max x 1 + 2x 2 s.t. 4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 Z n (3) Ratkaisussa molemmat tehtävän epäyhtälöt aktiivisia saadaan kartio C = {(d 1, d 2 ) = ( 4y 1 + y 2, 6y 1 + y 2 ), y 1, y 2 0} = {(d 1, d 2 ) d 1 + d 2 0, 3d 1 + 2d 2 0}
2/2 Voidaan osoittaa, että C:lle saadaan generoiva kokonaislukujoukko H = {(0, 1), ( 1, 2), ( 2, 3), (1, 1) } Yhtälön h x h x avulla saadaan lisärajoitukset x 2 2 x 1 + 2x 2 3 2x 1 + 3x 2 4 x 1 + x 2 4 Uuden tehtävän relaksaation ratkaisuna löytyy piste (1, 2), joka on alkuperäisen tehtävän 3 ratkaisu
Gomoryn leikkaavat tasot Gomoryn leikkaavat tasot Leikkaustasot hilojen avulla Tarkastellaan standardimuotoista tehtävää max c x s.t. Ax = b, x Z n, (4) missä A Z m n, b Z m ja c Z n Jos tehtävän relaksaatiota ratkotaan simplex menetelmällä, niin simplexin muodostamista taulukoista voidaan tehdä ns. Gomoryn leikkauksia, jotka rajoittavat käypää joukkoa P
Gomoryn leikkaavat tasot Leikkaustasot hilojen avulla Voidaan osoittaa, että Gomoryn leikkaukset ovat itse asiassa generoivia kokonaislukujoukkoja käyttävän leikkaustasomenetelmän mukaisia Ts. tehtävän (4) relaksaatiota ratkovan simplex menetelmän taulukoista voidaan johtaa kartio C ja sille generoiva kokonaislukujoukko H Gomoryn leikkaukset ovat siis erikoistapaus generoivia kokonaislukujoukkoja käyttävästä leikkaustasomenetelmästä
Leikkaustasot hilojen avulla Gomoryn leikkaavat tasot Leikkaustasot hilojen avulla Voidaan osoittaa, että generoivia kokonaislukujoukkoja käyttävä leikkaustasomenetelmä löytää tehtävän (1) ratkaisun äärellisessä ajassa Menetelmässä täytyy kuitenkin laskea kartiolle generoiva kokonaislukujoukko, mikä on usein laskennallisesti työlästä Hiloihin (lattice) perustuvat leikkaustasot ovat yleensä käyttökelpoisempia Seminaarissa jätettiin väliin kirjan hiloja käsittelevä kappale 6, joten tässä esityksessä tehdään vain yleisluontoinen silmäys hiloihin perustuviin leikkaustasomenetelmiin
Gomoryn leikkaavat tasot Leikkaustasot hilojen avulla Määritelmä: Olkoon B = [b 1,..., b d ] R n d matriisi, jonka sarakkeet ovat lineaarisesti riippumattomia Joukkoa L = L(B) = {y R n y = Bv, v Z d } kutsutaan B:n generoimaksi hilaksi Tehtävän (1) matriisin A avulla voidaan luoda erilaisia hiloja muodossa L(A I 1 U) (U unimodulaarinen matriisi) Saatavasta hilasta voidaan muodostaa leikkaavia tasoja Matriisin U valinnalla hilan muodostamiseen saadaan vaihtoehtoja ja täten algoritmiin joustavuutta sovelluksia ajatellen
leikkaustasomenetelmistä Leikkaustasomenetelmissä käypää joukkoa leikataan tasoilla poistamatta kokonaislukupisteitä kunnes saadaan LP-tehtävä, jonka ratkaisu on kokonaisluku Erilaiset leikkaustavat tuottavat erilaisia algoritmeja Generoivat kokonaislukujoukot Laskennallisesti työläs Gomoryn leikkaukset Ensimmäisiä leikkaustasoalgoritmejä, käyttö simplex menetelmän yhteydessä Hilapohjaiset menetelmät Laskennallisesti käyttökelpoinen, hila kustomoitavissa tehtävän mukaan