További programozási esetek Hiperbolikus, kvadratikus, integer, bináris, többcélú programozás Készítette: Dr. Ábrahám István
Hiperbolikus programozás Gazdasági problémák optimalizálásakor gyakori, hogy nem a bevétel maximalizálása, vagy a legkisebb költségre törekvés a cél, hanem az egységnyi költségre eső bevételre (azaz egy tört alakú célfüggvénnyel) keressük az optimumot. f(x) Ha egy P feladatban a célfüggvény g(x) = opt. alakú, f(x) akkor hiperbolikus programozási feladatról (későbbiekben: HP) van szó. A hiperbolikus elnevezést az indokolja, hogy az egyváltozós, elsőfokú számlálójú és nevezőjű törtfüggvény képe hiperbola (ha a számláló nem többszöröse a nevezőnek). A HP feladat grafikus megoldásában feltételezzük, hogy a lehetséges megoldások halmaza korlátos, a számláló és a nevező elsőfokú és a nevező sehol sem 0. Példa: x 0 x +x x -x g(x) = x + x x + A feltételek teljesülnek: a nevező sehol nem 0 (hiszen x 0 ) és az halmaz korlátos: max. y x
Megoldás: A g(x) célfüggvény értékének konstansnak kell lennie. Ez kétdimenziós esetben ábrázolva olyan egyenes sereget (sugársort) jelent, amelyek mindegyike egy ponton, az halmazon kívül eső póluson megy át. A pólus koordinátáit az f (x)=0 és f (x)=0 egyenletrendszer megoldásával kapjuk. Esetünkben: x +x = 0 x + = 0 Az egyenletrendszer megoldása: P( ; -). Tétel: A feltételeinknek megfelelő HP feladatnak mindig van véges optimuma. Az optimális értéket a célfüggvény az halmaz csúcspontjában veszi fel. Ábrázolás: y S(;) A célfüggvény értékei a sugársor egyenesei pólus körüli forgatásával változnak. egnagyobb értéket az halmazon az S pontban tapasztaljuk. Q(0;0) R(0,5;0) x Így az optimum: x o =[ ; ]* P(;-) A célfüggvény maximuma:,5. Ha az f (x)=0 és f (x)=0 egyenletrendszernek nincs megoldása, akkor a célfüggvénynek megfelelő egyenessereget párhuzamos egyenesek alkotják.
Kvadratikus programozás Kvadratikus programozási feladatban a feltételek elsőfokúak, a célfüggvényben a változó másodfokon is szerepel. A lehetséges megoldások halmazából az optimális érték kiválasztása nem egyenes sereg, hanem más gőrbesereg, például koncentrikus körök segítségével történik. Az optimális megoldás általában nem csúcspontja az halmaznak. Példa: x, x 0 x +x 4 -x +x z= 0x +6x x x max. A lehetséges megoldások halmaza: 5 4 4 5 6 7 8 A z =k egyenlet kört határoz meg, amelyből: (x -5) +(x -) =4-k A képlet C(5;) középpontú köröket jelent. 5 4 T(;) P(5;) 4 5 6 7 8 x o = [ ]* z o =6 A gyakorlati feladatok megoldására megfelelő szoftvereket 4 használnak.
Integer programozás Az optimalizálási problémáknál gyakori, hogy csak egész értékű megoldások jöhetnek szóba. Az integer (egészértékű) programozást ilyenkor alkalmazzuk. Példa: x, x > 0; x, x egész x,5 x +x 4x 4 z=x +x max. Felvesszük az optimális célfüggvény egyenest: 4 y 4 5 x A lehetséges megoldások a rácspontok -ben: 4 y 4 5 Az induló feltétel miatt az optimum nem a (,5; ) pontban van, hanem a célfüggvény egyeneshez legközelebb eső rácspontban. Így: x o =[ ]* és z o = 8. A hiperbolikus, a kvadratikus és az integer programozás algebrailag is megoldható. A gyakorlati feladatokat megfelelő szoftverekkel 5 oldják meg. x
Bináris programozás A döntési változók csak 0 és értékeket vehetnek fel. Példa: Egy kőolajmező feltárásán fúrógép dolgozott. A munka befejeztével a gépet egy másik mezőre viszik át. Adottak az áttelepítés költségei az F i helyekről az R j helyekre. Egy munkahelyen gép dolgozik. R R R Hogyan telepítsék át a fúrógépeket, ha a cél költség F 4 5 minimalizálása? F 5 4 7 Megoldás: ényegében szállítási feladatról van szó. Az x F 5 6 4 ij döntési változó értéke, ha F i -ről R j -be szállítás történik és 0, ha nem szállítanak. A feladat egyszerűen megoldható akár disztribúciós módszerrel, akár számítógéppel. A modell: a.) x ij értéke 0 vagy. b.) x +x +x = x +x +x = x +x +x = x +x +x = x +x +x = x +x +x = c.) z= 4x +x +5x + +4x min 6
Többcélú programozás Gyakran előfordul, hogy az adott feltételekkel felvett modellünkhöz több célfüggvényt veszünk fel. Például pénzügyi, vagy időráfordítást vizsgáló problémáknál sokszor nemcsak a maximum, vagy a minimum érdekel bennünket, hanem mindkettő. ehetséges esetek:.) A felvett célfüggvényekkel külön-külön optimumokat számolunk és ezek alapján adunk válasz a feladat kérdéseire. Ilyen feladatokkal korábbi tanulmányaink során már találkoztunk..) Ha megadjuk a különböző célfüggvények relatív fontossági súlyát, akkor a célfüggvények konvex lineáris kombinációjával egyetlen célfüggvényt állítunk elő. A feladatot ezzel megoldva kompromisszumos megoldást kapunk. (Konvex lineáris kombináció: a fontossági súlyokat százalékosítjuk és így állítjuk elő a feladat egyetlen célfüggvényét.).) Általános eset: előállítjuk az összes célfüggvénynek megfelelő pontok halmazát és ezek közül válaszhatjuk ki mérlegelés után a legjobbakat. Az általános eset felvétele általában eléggé bonyolult, csak ritkán alkalmazzák. Több célt ősszehozni egy problémára akkor lehet, ha a célok konformábilisek. 7
Példa: Adott a következő feladat: x 0 x + x 60 x + x 80 x 0 z =x +5x max. z =x max. A z célfüggvénnyel megoldva a feladatot: x o =[0 0]* és z o =90. A z célfüggvénnyel megoldva a feladatot: x o =[60 0]* és z o =60. Ha az első célfüggvénnyel kifejezett célunkat négyszer olyan fontosnak tartjuk, mint a második célt (azaz 80% és 0% lesznek a súlyok), akkor a konvex lineáris kombinációval előálló kompromisszumos célfüggvény: z k =0,8(x +5x )+0,x =,8x +4x max. Ezzel a célfüggvénnyel megoldva a feladatot: x o =[0 0]* és z o =56. Ha mindkét célunkat egyenlő fontosságúnak vesszük, akkor az optimumok: x o =[40 0]* és z o =0. Egyéb más programozási esetek, formák is ismertek. A számítógépes programok általában tudnak kezelni olyan feladatokat is, ahol mind a feltételekben, mind a célfüggvényben nemlineáris formulák is vannak. 8 A fejezet tárgyalását befejeztük