25. Előadás Dr. Pauler Gábor, Egyetemi Docens

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

Tökéletes verseny Közgazdaságtan 10. hét.
Tamás Kincső, OSZK, Analitikus Feldolgozó Osztály, osztályvezető A részdokumentumok szolgáltatása az ELDORADO-ban ELDORADO konferencia a partnerkönyvtárakkal.
A Szállítási feladat megoldása
Készítette: Kosztyán Zsolt Tibor
Elemi algoritmusok Páll Boglárka.
Adatelemzés számítógéppel
Mikroökonómia szeminárium 4. Termelés elmélet
Rózsa Andrea – Csorba László
Az üzleti rendszer komplex döntési modelljei (Modellekkel, számítógéppel támogatott üzleti tervezés) Hanyecz Lajos.
Vállalat kínálati magatartása
Piaci korlátok.
Vállalati pénzügyek alapjai
Mellár János 5. óra Március 12. v
A lineáris programozási feladatok típusai és grafikus megoldásai
MI 2003/9 - 1 Alakfelismerés alapproblémája: adott objektumok egy halmaza, továbbá osztályok (kategóriák) egy halmaza. Feladatunk: az objektumokat - valamilyen.
Műveletek logaritmussal
TÖBBCÉLÚ LINEÁRIS PROGRAMOZÁS ÉS CÉLPROGRAMOZÁS
Koordináta transzformációk
Matematika II. 2. előadás Geodézia szakmérnöki szak 2012/2013. tanév Műszaki térinformatika ágazat őszi félév.
Euklidészi gyűrűk Definíció.
EGYENSÚLYI MODELLEK Előadás 4.
Operációkutatás szeptember 18 –október 2.
DIFFERENCIÁLSZÁMÍTÁS ALKALMAZÁSA
Számítás intervallumokkal
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Szállítási feladatok Optimalitás vizsgálat
Papp Róbert, Blaskovics Viktor, Hantos Norbert
Lineáris programozás Modellalkotás Grafikus megoldás Feladattípusok
Operációkutatás Kalmár János, Hiperbolikus és kvadratikus programozás.
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
24. Előadás Dr. Pauler Gábor, Egyetemi Docens
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Alkalmazott Informatikai Tanszék 2013/14 1. félév 4. Előadás Dr. Kulcsár Gyula egyetemi docens.
A TERMÉSZETTUDOMÁNYOK ALAPJAI 1. Matematika
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
EGÉSZÉRTÉKŰ PROGRAMOZÁS
Operációkutatás eredete
Lineáris egyenletrendszerek (Az evolúciótól a megoldáshalmaz szerkezetéig) dr. Szalkai István Pannon Egyetem, Veszprém /' /
Hálótervezés Készítette: Kosztyán Zsolt Tibor
Matematikai alapok és valószínűségszámítás
szakmérnök hallgatók számára
Fejmozgás alapú gesztusok felismerése Bertók Kornél, Fazekas Attila Debreceni Egyetem, Informatikai Kar Debreceni Képfeldolgozó Csoport KÉPAF 2013, Bakonybél.
Lineáris programozás.
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
Optimalizáció modell kalibrációja Adott az M modell, és p a paraméter vektora. Hogyan állítsuk be p -t hogy a modell kimenete az x bemenő adatokon a legjobban.
A differenciálszámtás alapjai Készítette : Scharle Miklósné
Többváltozós adatelemzés
Alapsokaság (populáció)
© 2005 The Gallup Organization T HE G ALLUP O RGANIZATION Országos Kreditmonitoring vizsgálat az oktatók körében - ábrasor
Gépészmérnöki kar BSc Levelező képzés szeptember-október
Az üzleti rendszer komplex döntési modelljei (Modellekkel, számítógéppel támogatott üzleti tervezés) II. Hanyecz Lajos.
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
Készítette: Horváth Viktória
Differenciálszámítás
Dr. Bánkuti Gyöngyi Klingné Takács Anna
A termelés költségei.
Mikroökonómia gyakorlat
A derivált alkalmazása
A Függvény teljes kivizsgálása
Operációkutatás eredete második világháború alatt alakult ki különböző szakmájú emberekből álló team: matematikus, fizikus, közgazdász, mérnök, vegyész,
előadások, konzultációk
A termelés költségei.
Készítette: Mátyás István agrár mérnöktanár szakos hallgató,
OPERÁCIÓKUTATÁS TÖBBCÉLÚ PROGRAMOZÁS. Operáció kutatás Több célú programozás A * x  b C T * x = max, ahol x  0. Alap összefüggés: C T 1 * x = max C.
Pécsi Tudományegyetem Pollack Mihály Műszaki Kar Műszaki Informatika Szak Data Mining 16. Gyakorlat Dr. Pauler Gábor, Egyetemi Docens PTE-PMMK Számítástechnika.
Vállalati pénzügyek alapjai
Technológiai folyamatok optimalizálása Dinamikus programozás Ráduly Botond Mészáros Sándor.
Kontinuum modellek 1.  Bevezetés a kontinuum modellekbe  Numerikus számolás alapjai.
A mesterséges neuronhálók alapjai
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Pécsi Tudományegyetem Pollack Mihály Műszaki Kar Műszaki Informatika Szak Data Mining 25. Előadás Dr. Pauler Gábor, Egyetemi Docens PTE-PMMFK Villamos Intézet Számítástechnika Tanszék Iroda: Boszorkány u., B épület 101 Tel: 72/503-650/3725 E-mail: gjpauler@acsu.buffalo.edu

Egészértékű programozás A korlátozás-szétválasztás algoritmusa Az előadás tartalma Egészértékű programozás A korlátozás-szétválasztás algoritmusa Nemlineáris programozás A nemlineáris modellek megoldásának bonyolultsága Nemlineáris modellek linearizálása Szakaszonként lineáris függvények linearizálása Egyszerű nemlináris függvények linearizálása HA-AKKOR szabályok kezelése lineáris modellben Logikai kapcsolatok leírása bináris változókkal Bonyolultabb nemlineáris célfüggvények linearizálása Hiperbolikus programozás Befektetési alap kezelési probléma Dinamikus programozás Szakirodalom

LP modellek egészértékű döntési változókkal 1 A gyakorlatban sok problémában fordulnak elő diszkrét értékű döntési változók (Discrete Variables), amelyeknek csak véges vagy végtelen számú diszkrét értéke értelmezett (pl. oszthatatlan termékek, nem gyárthatunk 23.5 db repülőgépet). Ezek a leggyakrabban egészértékű változóként (Integer Variable) jelennek meg, egészértékű LP modellt (Integer LP, ILP model) eredményezve Ezek speciális esete a bináris {0,1} változók (Binary LP, BLP model) használata, ezek általában nemlineáris modellek linearizálásakor kerülnek elő A simplex algoritmus viszont a sztenderd LP modellben csak folytonos változókat képes kezelni, és az optimális megoldás is bármikor lehet tört értékű Kézenfekvő dolognak látszik, hogy az egészértékű optimális megoldáshoz kerekítsük a folytonos optimális megoldást Ez azonban csak akkor működik jól, ha az egészértékű változó egy egysége csak elenyészően kis részét fogyasztja el a kapacitásoknak (pl. Fradi meccs elött a zacskóba töltendő szotyolamagok számát nyugodtan kerekíthetjük) Más a helyzet, ha az egészértékű változó egy egysége a kapacitások jelentős részét elfogyasztja (pl. az építendő óceánjárók számának optimalizálása). Itt a folytonos eredmény egyszerű kerekítése már lehet, hogy nem megengedett megoldás, vagy pedig, nagyon messze fog esni az optimálistól.

LP modellek egészértékű döntési változókkal 2 Erre látunk példát a következő ábrán: A folytonos feltételrendszer a sárga terület A fekete rácspontok az egészértékű megoldások A folytonos optimum kerekítésével kapott megengedett megoldás célfüggvényértéke jóval alacsonyabb, mint egy teljesen máshol lévő rácspont célfüggvényértéke Mert NEM a folytonos feltételek jelentik a modell valódi feltételrendszerét, hanem ezeken belül a szélső rácspontokra épülő konvex burok (Convex Envelope) (lásd zöld terület)! ILP megoldási módszerek: Adott folytonos feltétlrendszerhez tartozó konvex burok meghatározására Gomory magyar származású amerikai matematikus alkotott algoritmust De a konvex burok számolgatása olyan hosszú ideig tart, hogy ez a megoldás a gyakorlatban nem hatékony Ezért az optimalizációs szoftverek más módszert alkalmaznak

ILP modellek megoldása korlátozás és szétválasztással(Branching and Bounding)1 Az egészértékű változók egész értékei mentén kisebb LP részfeladatokra bontja az eredeti ILP modellt, és ezeket oldja meg De mivel n változó esetén ezekből 2n darab van, és a számolásigény robbanásszerűen nő (NP Hard Problem), igyekszik kizárni a bontásból egy csomó olyan részfeladatot, ahol nem lehet optimum, az összes lehetséges LP részfeladat piciny töredékét oldva meg Algoritmusa: 1. Megoldja az ILP modellt LP feladatként (minden változót folytonosnak vesz), így megkapja a folytonos optimális megoldást, amiben lehetnek egész- és törtértékű változók is. 2. Kiválaszt egy olyan döntési változót az optimális megoldásban, aminek értéke tört : A tört optimális érték ALATTI egészértéket új FELSŐ korlátként alkalmazva, kap egy „kisebb mint” részfeladatot, az adott változó szerint „elfelezve” a feltételrendszert A tört optimális érték FELETTI egészértéket új ALSÓ korlátként alkalmazva, kap egy „nagyobb mint” részfeladatot , az adott változó szerint „elfelezve” a feltételrendszert x1 x2 Kisebb mint Nagyobb mint

ILP modellek megoldása korlátozás és szétválasztással(Branching and Bounding)2 3. Megoldja mindkét részfeladatot LP feladatként. Ezeknek négyféle kimenete lehet: Egészértékű optimális megoldást ad  ha jobb, mint az eddig ismert legjobb egészértékű megoldás, feljegyzi Törtértékű optimális megoldást ad, ami jobb, mint az eddig ismert legjobb egészértékű megoldás  a részfeladatot további részekre kell bontani, ugrás a 2.LÉPÉS-hez Törtértékű optimális megoldást ad, ami rosszabb, mint az eddig feljegyzett legjobb egészértékű megoldás  nem foglalkozik a részfeladattal tovább, mert ennek bármely egészértékű megoldása még a törtértékűnél is rosszabb lenne Nincs megengedett megoldása  nem foglalkozik a részfeladattal tovább 4. Visszatér a következő felsőbb szintű részfeladathoz, ha nincs több, akkor VÉGE Értékelése: +: Lehetővé teszi az ILP feladat megoldását a lehetséges LP részfeladatok kis részének megoldásával, ezért minden szoftver ezt használja -: A számolásigény erősen függ attól, mely tört értékű változó szerint kezd bontani, de ennek optimalizálására nincs egzakt módszer x1 x2 Kisebb mint Nagyobb mint Nagyobb mint Kisebb mint x1 x2

Egészértékű programozás A korlátozás-szétválasztás algoritmusa Az előadás tartalma Egészértékű programozás A korlátozás-szétválasztás algoritmusa Nemlineáris programozás A nemlineáris modellek megoldásának bonyolultsága Nemlineáris modellek linearizálása Szakaszonként lineáris függvények linearizálása Egyszerű nemlináris függvények linearizálása HA-AKKOR szabályok kezelése lineáris modellben Logikai kapcsolatok leírása bináris változókkal Bonyolultabb nemlineáris célfüggvények linearizálása Hiperbolikus programozás Befektetési alap kezelési probléma Dinamikus programozás Szakirodalom

Nemlineáris Programozás Nemlineáris programozás (Nonlinear Programming, NLP) esetén a célfüggvény vagy a feltételek linearitása nem teljesül Az NLP modell megoldásának a nehézségét a következők határozzák meg: A célfüggvény és a feltételek konkavitása/konvexitása: Konvex (Convex) egy függvény, ha a függvényfelület bármely két pontját összekötő szakasz a függvényfelületen vagy felette helyezkedik el Konkáv (Concave), ha alatta Ha egyik sem igaz a függvény teljes értelmezési tartományán, akkor az sem konkáv sem konvex (pl. y = x3, stb.) A szélsőérték fajtája konvex feltételrendszernél: Konvex célfüggvénynek csak egy globális minimuma lehet, de sok lokális maximuma Konkáv célfüggvénynek csak egy globális maximuma lehet, de sok lokális minimuma Konkáv feltételrendszer esetén több lokális szélsőérték lehetséges bármely célfüggvénynél A lokális szélsőértékek nehezítik a megoldást, mert az algoritmusok „beléjük ragadhatnak” Nemlineáris Programozás x y x y Maximalizálás Minimalizálás Konvex célfüggvény Konkáv célfüggvény A legnehezebben megoldható általános NLP modelleknél a célfüggvény vagy a feltételek sem konvexek sem konkávak

Szakaszonként lineáris függvények kezelése 1 Könnyen kezelhető esetek: Szakaszonként lineáris konvex összefüggés minimalizálása (pl. L túlóra emelkedő költségei: c1 ≤ c2 ≤ c3) Plussz változók bevezetése: L felbontása L1+L2+L3 szakasz változókra Szakasz-határ korlátok bevezetése: L1’, L2’, L3’ c1L1 + c2L2 + c3L3 = z → Min (25.1) L1 ≤ L1’ (25.2) L2 ≤ L2’ - L1’ (25.3) L3 ≤ L3’ - L2’ (25.4) L1 + L2 + L3 - L = 0 (25.5) L1, L2, L3, L ≥ 0 (25.6) Szakaszonként lineáris konkáv összefüggés maximalizálása (pl. Q értékesítés mennyiségi árengedménnyel: p1 ≥ p2 ≥ p3) Plussz változók bevezetése: Q felbontása Q1+Q2+Q3 szakasz változókra Szakasz-határ korlátok bevezetése: Q1’, Q2’, Q3’ p1Q1 + p2Q2 + p3Q3 = z → Max (25.7) Q1 ≤ Q1’ (25.8) Q2 ≤ Q2’ - Q1’ (25.9) Q3 ≤ Q3’ - Q2’ (25.10) Q1 + Q2 + Q3 - Q = 0 (25.11) Q1, Q2, Q3, Q ≥ 0 (25.12)

Szakaszonként lineáris függvények kezelése 2 Nehezen kezelhető esetek: Szakaszonként lineáris konvex függvény maximalizálása, konkáv minimalizálása, nem konkáv/konvex függvény kezelése (pl. sin(y), cos(y) közelítése): Kiszámítjuk az f(d0),..f(d4) függvényérték pontokat d0,..d4 tetszőleges osztópontokban Az eredeti y változót az osztópontok l0,..l4 ≥ 0 nemnegatív súly változókkal súlyozott összegeként írjuk fel: d0l0 + d1l1 + d2l2 + d3l3 + d4l4 – y = 0 (25.13) Az függvényértéket a függvényérték pontok hasonlóan súlyozott összegeként írjuk fel: f(d0)l0 + f(d1)l1 + f(d2)l2 + f(d3)l3 + f(d4)l4 (25.14) Hogy ne kelljen a súlyok összegével osztani, legyen az összegük 1: l0 + l1 + l2 + l3 + l4 = 1 (25.15) Hogy a súlyok CSAK a szomszédos függvénypontok közti szakaszokat ábrázolhassák, egyszerre csak két szomszédos súly kaphat nem 0 értéket Ezt úgy érjük el, hogy az x1,..x4 є {0,1} szomszédságot ábrázoló bináris változókat teszünk a súlyok felső korlátjává. Mivel a közbülső súlyoknak két szomszédja is lehet, ezért ezeknél két szomszédsági változó összege lesz a korlát: 0  x1 (25.16) - egy szomszédja van 1  x1+x2 (25.17) - két szomszédja van 2  x2+x3 (25.18) - két szomszédja van 3  x3+x4 (25.19) - két szomszédja van 4  x4 (25.20) - egy szomszédja van Egyszerre csak egy szomszédság „működhet”, ezért a szomsédság jelölő változók összege legyen 1: x1 +x2 +x3 + x4 = 1 (25.21)

Egészértékű programozás A korlátozás-szétválasztás algoritmusa Az előadás tartalma Egészértékű programozás A korlátozás-szétválasztás algoritmusa Nemlineáris programozás A nemlineáris modellek megoldásának bonyolultsága Nemlineáris modellek linearizálása Szakaszonként lineáris függvények linearizálása Egyszerű nemlináris függvények linearizálása HA-AKKOR szabályok kezelése lineáris modellben Logikai kapcsolatok leírása bináris változókkal Bonyolultabb nemlineáris célfüggvények linearizálása Hiperbolikus programozás Befektetési alap kezelési probléma Dinamikus programozás Szakirodalom

Egyszerű nemlineáris függvények linearizálása Bináris változók segítségével az egyszerűbb nemlineáris függvények is linearizálhatók: Függvény Linearizálás Minimum: c:= Min(a,b) c ≤ a, c ≤ b a ≤ b + 9999999×u b ≤ a + 9999999 - 9999999×u c ≥ a - 9999999×u c ≥ b - 9999999 + 9999999×u u є {0,1} Maximum: c:= Max(a,b) c ≥ a, c ≥ b c ≤ a + 9999999 - 9999999×u c ≤ b + 9999999×u u є {0,1} Két bináris változó szorzata: c:= a×b a + b – c ≤1 a, b, c є {0,1} Előjel függvény: y:= sgn(x) y = b1 - b2 x = u1 – u2 b1 + b2 ≤ 1 u1 ≤ 9999999×b1 u1, u2 ≥ 0, b1, b2 є {0,1} u2 ≤ 9999999×b2 Abszolútérték függvény: y:= abs(x) y = u1 + u2 u1 ≤ 9999999×b u1, u2 ≥ 0, b є {0,1} u2 ≤ 9999999 - 9999999×b

HA-AKKOR szabályok kezelése lineáris modellben A mindennapi életben gyakoriak a HA-AKKOR szabályok, emelyek általában nemlineáris modellhez vezetnek, ezeket bináris változókkal linearizáljuk: 1. HA-AKKOR szabály a célfüggvényben: Pl. A termelés fix költségei: Ha egy termék y termelése 0, akkor 0 költség merül fel, de ahhoz, hogy a termékből bármennyit tudjunk termelni, jelentős f fix költségre van szükség (termékfejlesztés, a gyártó gépsor költsége, stb.) c változó költség mellett: c×y + f×x = z  min y ≤ 9999999×x x є {0,1} – nem termelés/termelés változó 2. HA-AKKOR szabály döntési változó értékhatárában: Pl. Minimális termelési sorozatnagyság: egy termék y termelése vagy 0, vagy, legalább d sorozatnagyságot el kell érjen, különben a fejlesztés költségei nem térülnek meg (pl. az Airbus A380 super jumbó 10Md USD fejlesztési költsége legalább 350db termelése esetén térül meg): d – 9999999 + 9999999×x ≤ y y ≤ 9999999×x x є {0,1} – nem termel/termel 3. HA-AKKOR szabály korlátozó feltételben: Pl. Adójog:1996/9.86. „100 fő alatti foglalkoztatási létszámú (F) vállalkozás maximum 5 vállalati autó költségét számolhatja el (A), 100-as létszám felett maximum 10-et.„ A  10 + 9999999×x1 A  5 + 9999999×x2 F  100 – 100×x1 F  100 + 9999999×x2 x1 + x2 =1 x1, x2 є {0,1} - feltételt ki/be kapcsoló változók, köz- tük NOT logikai kapcsolat van: ha az egyik bekapcsol egy konvex feltétel-részhalmazt, a másik kikapcsolja a saját konvex feltétel-részhalmazát, így mindig csak konvex feltételek jelennek meg a modellben!

Logikai kapcsolatok leírása bináris változókkal Bináris változók segítségével bármilyen logikai kapcsolatot megjeleníthetünk linearizálható módon (pl. Csak egyben, nem osztható módon megvalósítható, egymáshoz kapcsolódó befektetések költségének modellezésénél) logikai kapcsolat 2 változóra x1, x2 є {0,1} 3 változóra (x3 az eredmény változó) és (and) x1 = x2 ha x1 = 1, x2 -nek is 1-nek kell lenni és fordítva x3 := x1×x2 x3 csak akkor 1, ha x1, x2 is 1 vagy (or) x1 + x2  1 x1 és x2 közül legalább az egyiknek 1-nek kell lennie x3 := x1 + x2 - x1×x2 x3 csak akkor 1, ha x1 és x2 közül legalább az egyik 1 kizáró vagy (xor) x1 + x2  1 x1 és x2 közül legfeljebb az egyik lehet 1 x3 := x1 + x2 - 2x1×x2 x3 csak akkor 1, ha x1 és x2 közül legfeljebb az egyik 1 tagadás (not) x1 + x2 =1 ha x1 = 1 x2 = 0 és fordítva Nem értelmezett

Egészértékű programozás A korlátozás-szétválasztás algoritmusa Az előadás tartalma Egészértékű programozás A korlátozás-szétválasztás algoritmusa Nemlineáris programozás A nemlineáris modellek megoldásának bonyolultsága Nemlineáris modellek linearizálása Szakaszonként lineáris függvények linearizálása Egyszerű nemlináris függvények linearizálása HA-AKKOR szabályok kezelése lineáris modellben Logikai kapcsolatok leírása bináris változókkal Bonyolultabb nemlineáris célfüggvények linearizálása Hiperbolikus programozás Befektetési alap kezelési probléma Dinamikus programozás Szakirodalom

Bonyolultabb nemlineáris célfüggvények linearizálása 2 Hiperbolikus célfüggvény (Hyperbolic Programming, HP): pl. i = 1..n termékek xi termeléseinek Scixi összköltségre jutó Spixi összbevételét akarjuk maximalizálni (termelés profitabilitásának maximalizálása)  a célfüggvény egy tört lesz: (25.30) Alapfeltételezések: a nevező pozitív, a kapcsolódó feltételrendszer lineáris, konvex: c1x1 + c2x2 + r > 0 a1x1 + a2x2 ≤ b (25.31) Linearizáció: mikor nem számít a célfüggvényt nem lineárissá tévő osztás? Ha pontosan 1-el osztunk. Legyen u≥0 egy változó, amivel a nevezőt megszorozva az értéke pontosan 1 lesz (ez implicite kizárja u = 0-át is): c1x1u + c2x2u + ru = 1 (25.32) Hogy a z célfüggvény ne változzon, u-val végigszorozzuk a számlálót is: p1x1u + p2x2u + qu = z  Max (25.33) Ugyanezt megtehetjük a feltételeknél is, anélkül, hogy az értelmük megváltozna: a1x1u + a2x2u ≤ bu (25.34) Az eredeti xi i = 1..n változók u-val alkotott szorzatát lecseréljük yi = xi × u, i = 1..n változókra: p1y1 + p2y2 + qu = z  Max (25.35) c1y1 + c2y2 + ru = 1 (25.36) a1y1 + a2y2 - bu ≤ 0 (25.37) y1,y2, u ≥ 0 (25.38) Megoldjuk a lineáris modellt, hogy megkapjuk az (yi* i = 1..n, u*) optimális megoldást. Majd u*-gal történő osztással megkapjuk az eredeti változók szerinti optimális megoldást: xi* = yi* / u*, i = 1..n (25.39) x1 x2 z (q,r) c p

Bonyolultabb nemlineáris célfüggvények linearizálása 3 Az exponenciális-, haranggörbe-, bevételi görbe-, logisztikus függvények linearizálását már tárgyaltuk a Session15 -ben. Lássunk ezek használatára egy példát: 25.1. PÉLDA: Befektetési alap kezelési modell (Found Management Model): Egy befektetési alapkezelő k nagyú tőkét kamatoztat t = 1..T időperióduson keresztül i = 1..n befektetési lehetőségben, amelyek éves szintű reálkamatlábai ri, si időperiódusoktól kezdve elérhetőek, lejárati időtartamuk di (ha a lejárati időt megszakítjuk, elvesztjük a kamatokat). Mely befektetési lehetőségeket válasszuk (bi  {0,1}), hogy a T időperióduson keresztül elérhető z jövőbeli érték maximális legyen? Az ilyen modelleknél rendkívül hasznos, ha minden t kamatperiódusú (pl. t=1 éves, t=12 havi) rt reálkamatlábat átváltunk f folytonos kamatlábra (Continuos Interest Rate), amely egy valóságban sohasem létező, fiktív kamatláb: az eredeti befektetéssel egyenértékű olyan befektetés kamatlába, amely végtelenül rövid lejárati idejű és azonnal újrabefektethető: f = t × ln(1 + rt/t) (25.40) Így a modellben nem kell folyton átváltogatnunk a különböző kamatperiódusú kamatlábakat egymásba, és egy t időperiódusnyi lejáratú befektetés z jövőbeli értéke rendkívül egyszerűen, jól linearizálhatóan számolható: z = k × eft (25.41) Ha szükséges, az f folytonos kamatláb bármikor visszaváltható adott kamatperiódusú rt reálkamatlábba: rt = t × (ef/t - 1) (25.42)

Bonyolultabb nemlineáris célfüggvények linearizálása 4 k × e(Sifidibi) = z  Max /Maximális jövőbeli érték (25.43) Subject to bi  {0,1}, i = 1..n /Bináris befektetési változók (25.44) bi + bj ≤ 1, i,j = 1..n| ((si ≤ sj)AND(sj ≤ si+di))OR((sj ≤ si)AND(si ≤ sj+dj)) /Nem valósulhat meg egyszerre két beruházás, amelyek lejárati intervallumai átfedik egymást (25.45) A modell célfüggvénye nemlineáris, de rendkívül egyszerűen log-linearizálható egy ekvivalens lineáris célfüggvénybe: ln(k) + Sifidibi = ln(z)  Max /Max. jövőbeli érték logaritmusa (25.46) A fentiekből láthattuk, hogy a lineáris programozásban nem a linearitás jelenti a fő gondot, mert szinte mindent linearizálni lehet Azonban, minél bonyolultabb egy linearizálás, annál inkább megtöbbszörözi a feltételek és a (gyakran egészértékű) változók számát a modellben 30-40 változós nemlineáris problémákból simán létrejöhetnek több 10000 változós, jelentős részben egészértékű modellek, ami olyan óriási számolásigényt jelent, ami – mégha szuperszámítógépi kapacitás és idő birtokában megoldható is – gazdaságtalanná teszi a probléma megoldását De van egy trükk, ami jelentősen csökkentheti a modellek méretét, és további linearizálási lehetőséget jelent:

Dinamikus programozás 1 A dinamikus programozás (Dynamic Programming, DP) olyan modellek optimalizálásával foglalkozik, amelyeknél a döntési változók és a korlátozó feltételek azonos szerkezetű csoportjai minden egymást követő időperiódusban megjelennek az időperiódusok láncszerűen hatnak egymásra: az előző periódus eredményei a következő periódus bemenetei lesznek A modellt egy időbeli ablakban (Time Window) írjuk fel Lássunk erre egy példát: 25.2 PÉLDA: A Kobe-i kikötőöbölben található a világ leghosszabb kétpilléres függőhídja, erősen ciklonveszélyes területen. Az erős szél hatására a hídpálya lengésbe jön, és az aktuális terheléstől is függő, időben szinuszos hullámmozgást ír le. A híd leszakadását egy automatika akadályozza meg, amely hatalmas hidraulikák segítségével periodikusan megfeszíti/ellazítja a híd tartókábeleit, csillapítva a hullámzást. Jelenítsük meg egy LP modellben korlátként a hullámmozgás at amplitúdóját t = 1..T időperiódusok és a w aktuális terhelés szerint (lásd a mellékelt függvényt), hogy a hidraulikák húzó/nyomó igénybevétele (h, n) tervezhető legyen!

Dinamikus programozás 2 Ha ezt a brutálisan nemlineáris, bonyolult függvényt az előzőekben mutatott szakaszonként lineáris felbontás módszerével szeretnénk megjeleníteni, folytonos súlyvátozók, szomszédsági változók és feltételek ezreire lenne szükség. Ha azonban a modellt dinamikusan írjuk fel, aszerint, hogy bizonyos előző időperiódusok hogyan hatnak a következő időperiódusban, akkor: Eleve változókat takaritunk meg, mert a függvényt nem a teljes időtartamban kell ábrázolni, hanem egy szűk időbeli ablakban A Session15-ben az autoregressziós modelleknél tanultak alapján kihasz- nálhatjuk, hogy egy szinuszos hullám- zást időszeletek szintjén lineárisan is közelíteni lehet, ezért a feltétel megje- lenítése egyszerűsödik: at = +0.355×at-1 – 0.650×at-6, t = 7..T (25.47) a1 = -w, a2 = -w, a3 = -w (25.48) a4 = -w, a5 = -w, a6 = -w (25.49) h ≤ at, n ≥ - at , t = 1..T (25.50)

Szakirodalom 1 Egészértékű programozás: Gömöry algoritmus: http://www.inf.u-szeged.hu/~pluhar/oktatas/or2.pdf Korlátozás és szétválasztás: www.oplab.sztaki.hu/szem_20050506.doc Nemlineáris programozás: Kvadratikus programozás: www.oplab.sztaki.hu/szem_20050318.doc Hiperbolikus programozás: www.freeweb.hu/szmulai/files/ elsoevf/gazdmat/gazdmattetel.doc Dinamikus programozás: www.mimi.hu/informatika/programozas.html Lineáris programozás modell könyvtárak: Gams Inc.: http://www.gams.com/modlib/libhtml/subindx.htm Optimax Inc.: http://www.maximal-usa.com/ Frontline Inc.: http://www.solver.com/sdkplatform.htm Brunel: http://people.brunel.ac.uk/~mastjjb/jeb/or/lp.html Áttekintés az optimalizációs algoritmusokról szoftverekről: http://www-fp.mcs.anl.gov/otc/Guide/SoftwareGuide/Categories/linearprog.html Ingyenes lineáris optimalizációs szoftverek: Dream: http://sourceforge.net/projects/dr-ea-m HQP: http://sourceforge.net/projects/hqp OCC: http://sourceforge.net/projects/occ

Szakirodalom 2 Kereskedelmi optimalizációs szoftverek: Kiegészítések más rendszerekhez: Matlab: nincs shareware http://www.mathworks.com/products/optimization/ Önálló rendszerek: Gams: max. 100000 változó/feltétel, GUI, 300 változóra/feltételre korlátozott időkorlát nélküli shareware: http://www.gams.com/ LINDO Inc. LINGO: max. 100000 változó/feltétel, GUI, 300 változóra/feltétel korlátozott időkorlát nélküli shareware: http://www.lindo.com/cgi/frameset.cgi?leftdwnld.html;opsyslgof.html Cplex: http://www.ilog.com/products/cplex/ Gauss: http://www.aptech.com/ Excel add-in solverek: LINDO Inc. What’s Best: max. 100000 változó, 300 változóra korlátozott időkorlát nélküli shareware: http://www.lindo.com/cgi/frameset.cgi?leftdwnld.html;opsyswbf.html Frontline Inc. Solver: max. 8000 változó, 30 napos shareware: http://www.solver.com/exceluse.htm#Premium%20Solver%20Platform