Simplex-menetelm menetelmän laskennalliset tekniikat 12. luento: Simplexin implementointi Mallinnusjärjestelmät Matemaattisten algoritmien ohjelmointi Kevät 2008 / 1 Simplexin implementointiin liittyviä asioita Parametrit Profilointi Vaihtoehtoisia tekniikoita Simplex-toteutuksen prototyyppi Mallinnusjärjestelmä Open Optimization Framework (OOF) Matemaattisten algoritmien ohjelmointi Kevät 2008 / 2 1
Parametrit Parametrit tiedostona tai käyttöliittymän kautta Merkkijonoparametrit: MPS-tiedoston nimi Muuttujien, rajoitteiden yms. nimet Algoritmiparametrit: Primaali/duaali Aloituskanta Hinnoittelu Numeeriset parametrit: Minimointi/maksimointi Iteraatioiden määrä, toleranssit jne. Matemaattisten algoritmien ohjelmointi Kevät 2008 / 3 Profilointi Simplex-komponenttien käyttämä aika 50 % 45 % 40 % 35 % 30 % 25 % 20 % 15 % 10 % 5 % 0 % 32,2 % 19,1 % 15,5 % 12,5 % 9,1 % 4,3 % 1,3 % CHKFEZ BTRAN PRICE FTRAN CHUZRO FACTOR HUZKEP Matemaattisten algoritmien ohjelmointi Kevät 2008 / 4 2
Superkantamuuttujat Aiemmin oletettu, että ei-kantamuuttujat ovat jollakin äärellisellä rajallaan Ei-kantamuuttuja voi saada arvon l < x < u, j R j j j Käytetään esim. kannan degeneroitumisasteen pienentämiseksi Hinnoittelussa voidaan käsitellä vapaina muuttujina, kuitenkin huomioiden äärelliset ala- ja ylärajat Simplex-iteroinnin loputtua jäljelle jääneet superkantamuuttujat asetetaan jollekin rajallensa Matemaattisten algoritmien ohjelmointi Kevät 2008 / 5 Rivikanta Kannattaa käyttää, jos rakenteellisten muuttujien määrä pienempi kuin rajoitteiden määrä, n < m Rajoitematriisi A ositetaan riveittäin aktiivisten ja passiivisten rajoitteiden mukaan B b B A =, b =, B = 1, K, n, R = n + 1, K, m R b R Rajoitteet saadaan ositettuun muotoon: Bx = b Ax b Rx b B R { } { } Matemaattisten algoritmien ohjelmointi Kevät 2008 / 6 3
Simplex-toteutuksen prototyyppi Vähintään primaali-simplex, MILP-tehtäviä varten tarvitaan myös duaali MPS-tiedoston luku Esikäsittely Aloituskannan haku Kannan käänteismatriisin käsittely Hinnoittelustrategiat Sarakkeen ja rivin päivitys Pivotointi Algoritmin ohjaus Ratkaisun tulostus Matemaattisten algoritmien ohjelmointi Kevät 2008 / 7 Matemaattisen ohjelmoinnin yleistyminen Työkalujen kehittyminen on helpottanut optimointimallien toteuttamista ja ratkaisemista Mallin esitysmuoto kehittynyt hitaammin kuin ratkaisutekniikat Mallien siirrettävyys ja uudelleen käyttäminen ei ole ollut mahdollista Käytännön mallit yleensä osana suurempaa ohjelmistoa, esim. päätöksenteon tukijärjestelmät, ohjausalgoritmit Joustavuuden puute estänyt laajan kaupallisen käytön Matemaattisten algoritmien ohjelmointi Kevät 2008 / 8 4
Vaatimukset mallin esitysmuodolle Yleisyys Mallin ja sen instanssin riippumattomuus Yksi esitysmuoto Usean näkökulman tukeminen Toimittajariippumattomuus Siirrettävyys Selkeät vastuut esim. mallin esitysmuodolle ja ratkaisun hakemiselle Hajautettu optimointi Internetin hyödyntäminen Avoin ja vapaa jakelu Matemaattisten algoritmien ohjelmointi Kevät 2008 / 9 Mallin esitysmuoto Matriisigeneraattorit Ohjelmakirjasto Generoi ja ratkaisee optimointitehtäviä Mallinnuskielet (MPS) Matriisigeneraattoreiden tiedostomuoto Otettiin käyttöön ratkaisualgoritmien eri toteutuksissa Algebralliset mallinnuskielet (GAMS, AMPL, MPL) Tehtävät annetaan symbolisessa muodossa Muunnetaan matalan tason muotoon, jonka ratkaisualgoritmi voi lukea Rakenteellinen mallintaminen (SML) Matemaattisten algoritmien ohjelmointi Kevät 2008 / 10 5
Matriisigeneraattori Matemaattisten algoritmien ohjelmointi Kevät 2008 / 11 Matriisigeneraattorin ominaisuudet Matalan tason esitysmuoto työläs ja virhealtis (esim. MPS) Mallia ja sen instanssia ei erotella Alustariippumattomuus toteutuu Erilaisia esitysmuotoja on olemassa runsaasti, joista suurin osa on ei-standardeja MPS-muotoa tukee käytännössä kaikki ratkaisualgoritmien toteutukset Matemaattisten algoritmien ohjelmointi Kevät 2008 / 12 6
Aliohjelmakirjasto Matemaattisten algoritmien ohjelmointi Kevät 2008 / 13 Aliohjelmakirjaston heikkoudet Siirrettävyys ja joustavuus rajoitettua Käytännössä sitoo yhteen tiettyyn ratkaisualgoritmin toteutukseen Voi olla mahdotonta hyödyntää ratkaisu-, ohjelmistoja laitteistotekniikoiden kehitystä Kullekin ratkaisumenetelmälle voidaan tehdä ajuri, jota käytetään dynaamisesti tehtävätyypistä riippuen N ratkaisumenetelmälle tarvitaan N ajuria, mikä on työlästä, aikaa vievää ja kallista Matemaattisten algoritmien ohjelmointi Kevät 2008 / 14 7
Mallinnusjärjestelm rjestelmä mallin välittv littäjänä Matemaattisten algoritmien ohjelmointi Kevät 2008 / 15 Mallinnusjärjestelm rjestelmän n heikkoudet Mallin käyttö rajoittuu käytettyyn mallinnusjärjestelmään Jos tarvitaan useaa eri ratkaisualgoritmia, näiden rajapinta voidaan jättää mallinnusjärjestelmän huoleksi Tällöin pitää löytää mallinnusjärjestelmä, josta löytyy riittävästi ominaisuuksia Suurin osa mallinnusjärjestelmistä keskittyy vain muutamaan mallityyppiin Parhaimmillaan hyvin joustamaton, pahimmillaan mahdoton toteuttaa Matemaattisten algoritmien ohjelmointi Kevät 2008 / 16 8
Uusia tuulia SNOML ja OptML ovat matriisitason XML-kieliä LPtehtävien instanssien kuvaukseen SNOML tukee rajoitetusti stokastista optimointia, OptML ei lainkaan Matriisimuodon etuna mahdollisesti helpommin löydettävissä oleva yksikäsitteinen standardi Oletetaan m mallinnuskieltä ja n ratkaisualgoritmia: jos SNOML- tai OptML-pohjainen standardi, tarvitaan m+n ajuria jos standardia ei ole, tarvitaan mn ajuria Matemaattisten algoritmien ohjelmointi Kevät 2008 / 17 Open Optimization Framework Algebraic Markup Language (AML) Optimization Reporting Markup Language (ORML) Optimization Service Connectivity Protocol (OSCP) Web Services Optimization Protocol (WSOP) Matemaattisten algoritmien ohjelmointi Kevät 2008 / 18 9
Algebraic Markup Language AML pohjautuu rakenteelliseen mallintamiseen (Structured Modeling Language, SML) Hierarkinen rakenne mallille Algebrallinen esitysmuoto yhtälöille Mallin instanssin tiedot Riittävän joustava tukemaan suurinta osaa optimointitehtävien tyypeistä AML:stä löytyy mm. operaattorit, joukot, attribuutit ja funktiot Matemaattisten algoritmien ohjelmointi Kevät 2008 / 19 Optimization Reporting Markup Language Matemaattisten algoritmien ohjelmointi Kevät 2008 / 20 10
Optimization Service Connectivity Protocol Matemaattisten algoritmien ohjelmointi Kevät 2008 / 21 OSCP arkkitehtuuri Matemaattisten algoritmien ohjelmointi Kevät 2008 / 22 11
Web Services Optimization Protocol Matemaattisten algoritmien ohjelmointi Kevät 2008 / 23 Kirjallisuutta Ezechukwu, O.C. and Maros, I. (2003). OOF: Open Optimization Framework. Technical Report, Imperial College London, UK, April 2003. Geoffrion, A.M. (1987). An introduction to structured modeling. Management Science, 33(5), 547-588. Maros, I. and Mészáros, C. (1999). A repository of convex quadratic programming problems. Optimization Methods and Software, 11&12, 671-681. Maros, I. and Mitra, G. (2000). Investigating the Sparse Simplex Algorithm on a Distributed Memory Multiprocessor. Parallel Computing 26, 151-170. Murtagh, B. (1981). Advanced Linear Programming: Computation and Prcatice. McGraw-Hill. Nazareth, J. (1987). Computer Solution of Linear Programs. Oxford University Press, New York, Oxford. Matemaattisten algoritmien ohjelmointi Kevät 2008 / 24 12