Döntéselméleti Módszerek

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 186

Tartalomjegyzék

Bevezető 3

I. Optimalizálás matematikai modellezéssel 4


1. A modell fogalma, jelentősége, főbb fajtái 5
1.1. A modellek típusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. A modellek szerepe a döntéselőkészítésben . . . . . . . . . . . . . . . . 8
1.3. A gazdasági életben alkalmazott modellek . . . . . . . . . . . . . . . . 8
1.4. Modellalkotás lineáris programozással . . . . . . . . . . . . . . . . . . . 9
1.5. A lineáris programozású modellek és megoldásaik . . . . . . . . . . . . 10

2. Speciális esetek a klasszikus LP modelleknél 33


2.1. A modell felvételekor előforduló esetek . . . . . . . . . . . . . . . . . . 33
2.2. A modell megoldásánál előforduló esetek . . . . . . . . . . . . . . . . . 35

3. További programozási esetek 37


3.1. A hiperbolikus programozás . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2. Kvadratikus programozás . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3. Integer programozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4. Bináris programozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.5. Többcélú lineáris programozás . . . . . . . . . . . . . . . . . . . . . . . 46

4. Dualitás, érzékenységvizsgálat 49
4.1. A dualitás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.1.1. A normál feladat duálja . . . . . . . . . . . . . . . . . . . . . . 49
4.1.2. Az általános LP feladat duálja . . . . . . . . . . . . . . . . . . . 58
4.2. A szimplex-táblázatok ellenőrzése . . . . . . . . . . . . . . . . . . . . . 63
4.2.1. Az ellenőrzés módszerének elméleti alapjai . . . . . . . . . . . . 63
4.3. Variánsszámítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.4. Érzékenységvizsgálat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5. Disztribúciós feladatok 80

1
Vásárló neve: Kalamár Kata

Rendelési szám: 8065343

Vásárlásával támogatta, hogy Magyarországon az elektronikus könyvkiadás fejlõdni tudjon, a digitális

kereskedelemben kapható könyvek választéka egyre szélesebb legyen. Köszönjük, és reméljük

webáruházunkban hamarosan viszontlátjuk.


2 TARTALOMJEGYZÉK

5.1. A szállítási feladat matematikai modellje . . . . . . . . . . . . . . . . . 81


5.1.1. A disztribúciós problémák speciálisabb esetei . . . . . . . . . . . 88

6. Bevezetés a játékelméletbe 96
6.1. Kétszemélyes zérusösszegű mátrixjáték . . . . . . . . . . . . . . . . . . 96
6.2. A lehetséges stratégiák, a játék várható értéke . . . . . . . . . . . . . . 97
6.3. Az optimális stratégia . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.4. A kétszemélyes zérusösszegű mátrixjáték . . . . . . . . . . . . . . . . . 100

II. Matematikai modellezés, esettanulmányok 106


1. Termelésprogramozás az iparban 108
1.1. A termelésprogramozási feladatok megoldásai . . . . . . . . . . . . . . 108
1.1.1. Az alternatív optimumokról . . . . . . . . . . . . . . . . . . . . 115

2. Modellek a kereskedelemből. . . 129


2.1. Termelésprogramozás a kereskedelemben . . . . . . . . . . . . . . . . . 129
2.2. Mezőgazdasági-agráripari modellek . . . . . . . . . . . . . . . . . . . . 138

3. Pénzügyi feladatok 149

4. Idegenforgalom 153

5. Humánerőforrás tervezés 160

6. Műszaki feladatok 166

7. Disztribúciós feladatok 170

8. Egészségügyi feladatok 175

9. „Egyéni” feladatok 180

Irodalomjegyzék 185
Bevezető

A számítógépek pár évtizede történt robbanásszerű elterjedése óta a matematikai mo-


dellezést különösen sok helyen és sok célra használják. Hagyományosan matematikai
modellezésnek lehet nevezni azt is, amit az általános iskolás tanuló végez, amikor egy
egyszerű szöveges matematikai feladathoz felírja a megoldó egyenletet. De a nukle-
áris energia felszabadításához az atomot, atommagot és a megvalósítás eszközeit is
matematikailag modellezik. Az utóbbi években olyan területeken is matematikai mo-
delleket alkalmaznak, ami korábban elképzelhetetlen volt, így például a nyelvészet vagy
a régészet egyes kutatási témáinál. A modellek segítségével a felvetődő problémákra
megoldásokat találhatunk, hasznos következtetéseket vonhatunk le, általánosításokat
fogalmazhatunk meg.
Könyvemben a matematikai modellezést és a felvett modellek megoldásait, a varián-
sok elemzését a gyakrabban előforduló gazdasági és szervezési problémákra fókuszálok.
Így foglalkozom az ipar, a mezőgazdaság, a kereskedelem vonatkozásában a termékszer-
kezet optimalizálásával, szállítási, elosztási-szétosztási problémák modellezésével és a
modellek megoldásával, valamint tárgyalunk olyan érdekes, néha meghökkentő terüle-
teket is, ahol a kvantitatív optimalizálás alig volt elképzelhető. Az alapfogalmak és a
felhasznált elméleti ismeretek rövid összefoglalását követően meghatározó módszerem
az egyes témakörök esettanulmányokon történő bemutatása lesz. Az esettanulmányok
számítógépre letölthetők, illetve a könyvben nyomtatott alakjukat közöljük.
Magasabb fokú matematika nem szükséges a könyvünkben foglaltak megértéséhez.
Az elemi (középfokú) matematikai ismereteken túl mindössze az egyszerűsíti az olvasó
dolgát, ha a lineáris algebra, az operációkutatás alapjaival már találkozott.
Az egyes esettanulmányok részben a felhasznált irodalom jegyzékében felsorolt mű-
vekből származnak, részben a matematikai modellezéssel foglalkozó tantárgyak főiskolai
oktatása során a hallgatók referendumai alapján kerültek összeállításra, és természete-
sen készített feladatokat a szerző is.
A gazdasági életben mindig meghatározó szerepe van a felmerülő feladatok optimá-
lis megoldásának. Könyvemben ehhez kívánok segítséget nyújtani.

Budapest, 2011. január

3
I. rész

Optimalizálás matematikai
modellezéssel

4
1. fejezet

A modell fogalma, jelentősége, főbb


fajtái

Az emberi tevékenységben meghatározó szerepe van a döntéshozatalnak: a mindennapi


életben naponta számos, gyakran rutinszerű döntést kell hoznunk. A döntések között
fontosságuk tekintetében igen nagy különbségek vannak, hiszen például az is döntést
igényel, hogy sétálás közben egy akadályt jobbról, vagy balról kerüljünk ki, de az is
döntés kérdése, hogy egy országok közötti konfliktusban bevessék-e fegyveres erőket,
vagy diplomáciai megoldást találjanak.
A jelentősebb döntések meghozatala komoly felelősséggel jár, a döntéshozási fo-
lyamat elemzéseket, mérlegelést, gyakran speciális számításokat igényel. A döntések
előkészítésére gyakran használnak különféle modelleket.
A modell a vizsgált objektumot, szituációt, folyamatot reprezentálja, általában je-
lentős egyszerűsítésekkel, az adott szempont szerinti lényegre koncentrálva.
Az élet különböző területein a modellek eltérő formában és különböző korokban
jelentek meg. Például a gyermeknevelésben évezredek óta alkalmazott játékok is mo-
dellek, ugyanakkor a jelenkorunkra fontos hatással bíró atom- és atommagmodellek is
a lényeget megragadó egyszerűsítésekkel írják le – igen komoly matematikai apparátus
felhasználásával – a valóságot.
A 20. század közepétől a tudományos élet számos területén új szemléletmód kezdett
elterjedni, megjelentek az ún. kognitív tudományok. Az utóbbi néhány évtizedben
kiteljesedő irányzat az emberi megismerést az információfeldolgozás fogalomrendszeré-
vel tárgyalja és annak eszközeivel modellezi. A kognitív tudományok sok esetben két
vagy több klasszikus tudományág metszetében helyezkednek el, mint a biokémia, szo-
ciálpszichológia, vagy egy tudományág megújulását jelentik, mint például a kognitív
pedagógia. E tudományterületek létjogosultsága és az elért jelentős eredményeik össze-
függnek a számítástechnika fejlődésével. A számítógépek megalkotása előtti korban
olyan problémákkal, modellekkel érdemben nem lehetett foglalkozni, amelyek megol-
dása a szokásos manuális módszerekkel beláthatatlanul hosszú időt igényelt. A kompu-
terek és az egyes modellek kezelésére kifejlesztett szoftverek segítségével a modellezés

5
6 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

nemcsak a tudományokban, hanem a mindennapi gyakorlatban is felértékelődött. A


közgazdaságban, a gazdasági életben is ez a jellemző.

1.1. A modellek típusai


Többféle szempont szerint kategorizálhatók a modellek. Vázolunk egyfajta osztályo-
zást, amely szerint a modelleknek alapvetően két nagy csoportja van:

I. Anyagi modellek
Általános jellemzőjük valamilyen kézzelfogható megjelenés. A főbb kategóriák:
a) Geometriai modellek: ezek legtöbb esetben makettek, a valóságos tárgyak egy-
szerűsített, kicsinyített másai, mint például a létesítendő lakópark épületei egy terep-
asztalon.
b) Fizikai modellek: a valósággal való fizikai hasonlóság ad alapot a modell ké-
szítéséhez, például amikor az elektromos áram töltéshordozóinak mozgását folyadék
áramlásával próbálták modellezni.
c) Tárgyi-matematikai modellek: általában a mennyiségi viszonyok, számolási eljá-
rások modellezésére szolgálnak, ide sorolható például a „golyós számológép”.
d) A Kibernetikai modellezés eszközei: a vezetési–irányítási folyamatban használa-
tos tárgyakat szokás tágabb értelemben ide sorolni, így például az elektronikus számí-
tógépet és perifériáit.

II. Eszmei modellek


A valóságot ez esetben gondolatilag modellezzük. Természetesen lehet az eszmei mo-
delleknek is „kézzel fogható” alakja, mert egy írásban, rajzon is megjelenő eszmei modell
ezzel nem válik tárgyivá. Az eszmei modellek főbb fajtái:
a) Képmásmodell: a létező vagy létesítendő objektum egyszerűsített (vagy eset-
leg speciális jellemzőkkel kiegészített) gondolati mását jelenti. Ilyen például egy ház
tervrajza.
b) Jelmodell: az illető tárgyat, eseményt, folyamatot speciális jelekkel jeleníti meg.
Ide sorolhatók például a matematikai formulákkal kivitelezett modellek.
c) Vegyes eszmei modell: a valóság leírásához, értelmezéséhez jeleket is, képmásokat
is használ. Egyszerű példa a kémiában használt szerkezeti képlet.
A közgazdaságban modellezésre általában jelmodelleket, konkrétan többnyire je-
lentős elvonatkoztatásokat, absztrakciót igénylő, matematikai alakban megfogalmazott
modelleket használnak.

Az absztrakt jelmodellek
A gazdasági élet egyes területein a nagyobb feladatokra a 20. századtól kezdtek al-
kalmazni tudományosan is megalapozott modelleket. Ezek a modellek alapvetően a
1.1. A MODELLEK TÍPUSAI 7

gazdasági döntések előkészítésére szolgáltak, illetve esetenként egy lezajlott folyamat


szakszerű elemzése, általánosítások megfogalmazása volt a cél. A modellek a fenti ka-
tegorizálás szerint legtöbbször az eszmei jelmodellek sorába tartoznak, és a 20. század
második felétől egyre jelentősebbekké váltak a számítógépes szimulációs (kibernetikai)
modellek.
A gazdasági folyamatok modellezhetőségéhez szükséges: a megoldandó probléma olyan
legyen, hogy abban a szubjektív emberi tényezők, vagy a természeti erők csekély szerepet
kapjanak, illetve megfelelően szabályozni, befolyásolni lehessen azokat. Nehéz hatéko-
nyan modellezni egy autokrata, az egyéni elképzeléseit, érdekeit, érzelmeit mindenek
felett lévőnek tartó vezető felügyelete alatt álló folyamatot. Ugyancsak nagy a té-
vedés lehetősége egy olyan területen felállított modell alapján hozott döntésnél, ahol
bizonyos társadalmi vagy természeti tényezők hatása nehezen kiszámítható: például
a mezőgazdaságban az időjárási változásokat csak átlagoltan tudjuk figyelembe venni.
Megjegyezzük, hogy a jelzett „problémás” esetekre valószínűségi változókkal különböző
sztochasztikus modellek vehetők fel, amelyekkel bizonyos tűréssel és valószínűségi szin-
ten jó eredményeket lehet elérni. Ezek tárgyalása túlmutat a mi anyagunkon.
A gazdasági folyamatok modellezéséhez általában a következő lépéseket kell ten-
nünk:
1. Absztrakció: egyszerűsítés, elvonatkoztatás a konkrét problémától, a feladat lé-
nyegének megragadása, a megoldás szempontjából lényeges adatok elkülönítése a töb-
bitől. A probléma modellezhetőségének megállapítása is alapvető fontossággal bír.
Különböző minták szolgálhatnak útmutatásul ezen a téren. Könyvünkben példákat
közlünk ezekre.
Gyakran előfordul, hogy az adatok kezeléséhez az adott terület speciális szakisme-
rete szükséges, például a műszaki feladatoknál a mértékegységek átváltása nem mindig
egyszerű. Így a modell felvétele csoportmunkát igényelhet. Az absztrakció helyes végre-
hajtása általában nem kis feladat, gyakran feleslegesen sok tényezőt veszünk figyelembe,
illetve lényeges feltételek kimaradhatnak.
2. A matematikai megfogalmazás. A helyes matematikai modell felvétele a prob-
léma megoldásának kulcsa. A modellalkotás előismereteket kíván, a kezdetben szinte
rendszeresen előforduló kudarcok tűrését, a hibák kijavításának képességét is igényli.
Gyakorlatot szerezni ezen a téren általában az egyszerű feladatok kézi megoldásával,
illetve esettanulmányok megismerésével, az azokban leírt modellek elemzésével lehet.
3. A modell megoldása. A gyakorlati feladatoknál a legegyszerűbb esetektől elte-
kintve szinte kizárólag számítógépes megoldásokat alkalmaznak. A modellek megol-
dásánál különleges esetek fordulhatnak elő, amelyek az egyszerű feladatok manuális
megoldásával jól szemléltethetők, és kezelésükre, értékelésükre módszereket gyakorol-
hatunk be.
4. Az elméleti eredmények elemzése. A megoldásból adódó primál és duál optimu-
mok, az érzékenységvizsgálatok megállapításainak és egyéb eredmények közgazdasági
értelmezéséhez, elemzéséhez szintén nagy segítséget adnak a kézi módszerekkel megol-
dott egyszerűbb feladatok.
8 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

5. Visszacsatolás. Technikai ellenőrzést is jelenthet a modellbe való helyettesítéssel,


de nagyobb jelentősége van a későbbi (vagy korábbi) gyakorlati alkalmazásoknak, az
eredmények ismeretében történő összehasonlításnak. Sokszor előfordul, hogy a gya-
korlat tükrében a modellünk finomításra szorul. A matematikai modell megoldásából
adódó eredményeket értelmezni kell, és más szakterületekből szerzett ismeretek felhasz-
nálásával gyakran ki kell egészíteni.

1.2. A modellek szerepe a döntéselőkészítésben


Matematikai modelleket optimális döntések előkészítésére néha egymástól merőben kü-
lönböző területeken is fel lehet venni. A helyes, a valóságot jól leíró, illetve jól megkö-
zelítő modell elkészítése szaktudást és gyakorlatot, időt és nemritkán komoly türelmet
igényel. Összetettebb feladatok esetén ugyanis gyakori, hogy az elsőként felvett model-
lünk megoldhatatlan, vagy a józan észnek is ellentmondó megoldást eredményez. Így
eléggé általános, hogy első próbálkozásunkat javítani, kiegészíteni szükséges. A mate-
matikai modellek megoldására készült számítógépes szoftverek a hiba helyét általában
jelzi, illetve már a számítógép segítségével is egyszerűen változtathatunk a modellen.
Célszerű a megoldásokat a modell különböző változataira megadni, hiszen a matema-
tikai modellek a döntések előkészítését szolgálják, alapot adnak, adhatnak a megfelelő
intézkedések meghozatalához. Fontos, hogy ne misztifikáljuk a modell megoldásával
kapott eredményeket – hisz a modell, mint tudjuk, a valóság egyszerűsített formája. A
helyes döntésekhez a modell eredményeit gyakran ki kell egészíteni a szakismeretből,
tapasztalatból származó információkkal, figyelembe kell venni az objektív körülménye-
ket, sőt egyéb, nem ritkán szubjektív tényezőket is. Ha azonban a döntés alapvetően
ellentmond a matematikai modellből kapott eredményeknek, akkor vagy a modell nem
felel meg a vizsgált jelenségnek, folyamatnak (és ez a modell készítőjének felelőssége),
vagy a döntés következményeit kell összevetni a modellből adódó, illetve megvalósult
eredményekkel. Természetesen egy-egy rossz döntés esetén felmerül a döntéshozó sze-
mélyes felelőssége is.

1.3. A gazdasági életben alkalmazott modellek


A gazdasági életben (is) optimális megoldásokat eredményező döntéseket akarunk hozni.
Ehhez modelleket, szakismeretet, korábbi tapasztalatokat, józan eszünket használjuk
fel. A modellek alkalmazása – különösen a nagyobb feladatoknál és az utóbbi időben
– hangsúlyossá vált.
A modellek típusainál korábban felsorolt változatok lényegében mind előfordulhat-
nak a döntések előkészítésében, hiszen például egy új autó, üzemcsarnok vagy akár
városrész jól elkészített geometriai modellje is jelentősen befolyásolhatja a döntések
meghozatalát.
Természetes az is, hogy egy modelltípuson belül más-más jellegű modellek és azok
1.4. MODELLALKOTÁS LINEÁRIS PROGRAMOZÁSSAL 9

kiegészítései szükségesek a gazdasági élet különböző területein. Sőt egy adott tevékeny-
ségi körben a volumen nagyságától is függhet, hogy milyen specifikumokkal alkalmazzák
a modelleket, azaz például a jelmodell mellett használnak-e geometriai, képmás- vagy
egyéb modelleket. Ugyanakkor megállapítható, hogy a gazdaságban a különféle fo-
lyamatok vizsgálatára a matematikai modellek közül a lineáris programozási modellek
változatait általában jól lehet alkalmazni. Lineárisnak azért nevezzük ezeket az eszmei
jelmodelleket, mert a feltételek megfogalmazása elsőfokú egyenletek, egyenlőtlenségek
alkalmazásával történik. A lineáris programozási modellek körében is lényeges eltérések
lehetnek, a következőkben mutatunk ezekre is példákat.
Ismeretes, hogy optimumokat (függvények szélsőértékeit) nemcsak lineáris progra-
mozási módszerekkel lehet kiszámolni, más matematikai eljárásokat is használhatunk:
például egy adott térfogatú egyenes henger alakú konzervdoboz optimális méreteinek
meghatározása differenciálszámítással egyszerűen elvégezhető.

1.4. Modellalkotás lineáris programozással


Az oktatásban tárgyalt egyszerűbb mintafeladatoknál, az összetettebb esettanulmá-
nyoknál és a gyakorlatban előforduló gazdasági döntési problémáknál is azonos a line-
áris programozású matematikai modell felvételéhez alkalmazott lépések sorrendje. A
matematikai modell felépítésénél felhasznált algoritmus egyben a a modell szerkezetét
is meghatározza. Így a modell felvételéhez szükséges:
1. A döntési változók meghatározása, az induló feltételek felvétele. Egyszerűbb fel-
adatoknál ez a lépés kézenfekvő, például egy termékszerkezet optimalizálásakor leg-
többször a gyártásra kerülő termékek mennyisége a döntési változó. Egyes problé-
máknál viszont nagy körültekintést igényel a feladat döntési változóinak megadása, a
probléma megoldásának néha ez a legnehezebb lépése.
A lineáris programozási feladatok „tiszta” matematikai tárgyalásmódjánál az induló
feltételek felvételének nem tulajdonítanak különösebb figyelmet, az alaplevezetések a
folytonos változók nemnegatív voltának feltételezésére épülnek, ezért ezt gyakran külön
nem is hangsúlyozzák. A konkrét gazdasági („szöveges”) feladatoknál a döntési változók
típusának meghatározása kiemelten fontos feladat!
Magukra a döntési változókra azok felvételekor már adunk induló feltételeket, pél-
dául csak nemnegatívak lehetnek, vagy csak egész értékeket vehetnek fel, vagy csak 0
és 1 lehet az értékük, és így tovább.
2. A feltételrendszer felírása. A lineáris programozásnál csak olyan kérdésekkel
tudunk foglalkozni, ahol a korlátozó feltételek, a feltétel-relációk (egyenlőségek, egyen-
lőtlenségek) elsőfokúak. A feltételek száma és azok megfogalmazásának bonyolultsága
nagyon eltérő lehet. A feltételek felvételénél fordulnak elő leggyakrabban a hibák: a
rosszul vagy hiányosan felvett feltételek használhatatlan modellt eredményezhetnek, de
problémát okozhatnak a felesleges feltételek is.
A feltételek felírásánál „szabványszerű” az az elrendezés, hogy minden feltétel egyet-
10 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

len relációként legyen felírva, és a változók a bal oldalon szerepeljenek, a jobb oldalon
pedig a konstansok álljanak.
Megjegyezzük, hogy léteznek és számítógépen kezelhetők olyan modellek is, ahol
nem kötelező a szabványszerű elrendezés, és a korlátozó feltételek nem lineáris függvé-
nyek is lehetnek. Ezek felvételének módját, alakját a megoldásra alkalmazott szoftver
felhasználói útmutatója határozza meg.
3. A cél megfogalmazása. A felvett célfüggvényeinkben optimumokat keresünk. Az
optimum a lehető legnagyobb vagy legkisebb megoldások megtalálását jelenti. Előfor-
dulhat, hogy a célfüggvény adott számértékéhez keresünk optimumot. Gyakori, hogy
adott feltételrendszerhez több célfüggvény is tartozik, illetve nemcsak elsőfokú függvény
lehet célfüggvény.
4. A számolási eljárás megadása. Az Operációkutatásban az egyszerű kétváltozós
gyakorló feladatoknál a szemléletes geometriai megoldással találkozhatunk, manuáli-
san, algebrai úton a szimplex-módszert választjuk, bonyolultabb feladatoknál számító-
gépes szoftvereket használunk. Szemléltetésül példákat hozunk fel ezekre, amelyek egy
része az operációkutatást ismerők számára ismétlést jelent.

1.5. A lineáris programozású modellek és megoldá-


saik (példák)
1.1. Példa: Egy üzem kétféle terméket készít 3 erőforrás felhasználásával, amelyek
a termékek egy-egy egységébe rendre 3, 4, 2, illetve 2, 0, 4 mennyiségben épülnek be.
Az egyes erőforrás-kapacitásokból legfeljebb 18, 16, 24 egységnyi használható fel. A
késztermékek egységnyi mennyiségeinek árai: 4, illetve 2 pénzegység. Adjuk meg azt a
termelési programot, amellyel a lehető legnagyobb árbevétel érhető el!
Megoldás: Célszerű az adatokat táblázatba foglalni. Jelölje az erőforrásokat A, B,
C, a termékeket I, II. A táblázat:

I II Kapacitás
A 3 2 18
B 4 0 16
C 2 4 24
E. ár 4 2

Az első termékből gyártott egységnyi mennyiség („darab”) legyen x1 , a másodikból x2 ,


ezek lesznek a feladat döntési változói. Nyilvánvalóan igaz, hogy az induló feltételünk :
x1 , x2 ≥ 0. A feltétel vektoriális alakban is írható:

x = [x1 x2 ]∗ ≥ 0.
Ha a döntési változók folytonosak, és az induló feltételünk szerint nemnegatívak, akkor
ezt szokás triviális feltételnek is nevezni.
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 11

A korlátozó feltételeket a kapacitáskorlátok figyelembevétele jelenti: az I. termék


egységnyi mennyiségébe (darabjába) az A erőforrásból 3 egységnyi épül be, a gyártásra
kerülő x1 darabhoz tehát 3 · x1 mennyiséget kell felhasználni. A II. termék minden
darabjába az A erőforrásból 2 egységnyi épül be, tehát x2 darabhoz 2 · x2 mennyiséget
használunk fel, összesen: 3x1 + 2x2 a felhasznált mennyiség, ami nem lehet több, mint
amennyi rendelkezésre áll:

3x1 + 2x2 ≤ 18
A második erőforrásra hasonló megfontolással adódó feltétel:

4x1 + 0 · x2 ≤ 16
A harmadik erőforrásra:

2x1 + 4x2 ≤ 24
Az erőforrásokra felírt korlátozó feltételek a gyártási technológiából erednek, így a

3x1 + 2x2 ≤ 18
4x1 + 0 · x2 ≤ 16
2x1 + 4x2 ≤ 24

egyenlőtlenségeket technológiai feltételeknek is nevezhetjük.


A technológiai feltételek mátrixaritmetikai alakban is írhatók: jelöljük a termelés
mátrixát A-val, a jobb oldalon lévő számokat b-vel :
   
3 2 18
A= 4 0 , b= 16 . Esetünkben: b ≥ 0.
2 4 24

Tehát a feltételrendszerünk mátrixaritmetikai alakja:


   
3 2 · ¸ 18
 4 0  · x1 ≤  16 .
x2
2 4 24

Általánosan:

A·x ≤ b.

A feladatban a cél a maximális árbevétel. Az I. termék egységnyi mennyiségéért


(darabjáért) 4 pénzegységet kapunk, az x1 darabért 4x1 -et, a II. termékért pedig össze-
sen 2x2 -t. A célfüggvényt jelöljük z-vel, ekkor z = 4x1 + 2x2 , és ennek legnagyobb
értékét keressük. Képlettel:
12 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

z = 4x1 + 2x2 → max .

A z függvényt tekinthetjük az x vektorváltozó skalárfüggvényének: z = f (x).


A z célfüggvény felírható az árvektor: c ∗ = [4 2] és az x vektor skalárszorzataként:

z = f (x) = c∗ · x → max .

Összefoglalva: az 1.1. Példa problémájának matematikai modellje:

x≥0
A · x ≤ b (b ≥ 0)
z = c ∗ · x → max .

Ezt a matematikai modellt normálfeladatnak nevezzük.

A normálfeladat megoldása geometriai módszerrel


Jelöljük a koordináta-rendszer vízszintes tengelyét x1 -gyel, a függőleges tengelyt pedig
x2 -vel. Az x1 , x2 ≥ 0 feltételnek eleget tevő pontok a koordináta rendszer I. síknegye-
dében találhatók.
A 3x1 + 2x2 ≤ 18 feltétel azokat a pontokat határozza meg, amelyek a 3x1 +
+2x2 = 18 egyenes határolta félsíkon találhatók. Az egyenes többféle módon, ese-
tünkben célszerűen a Salmon-féle tengelymetszetes alakkal ábrázolható. (A tengely-
x1 x2
metszetes alak: + = 1, ahol az egyenes az x1 tengelyt a-nál, az x2 -t b-nél
a b
metszi.)
x1 x2
A 3x1 + 2x2 = 18 egyenletből: + = 1, az egyenes x1 -et 6-nál, x2 -t 9-nél
6 9
metszi.
Természetesen az egyenes ábrázolása sok más módon is lehetséges, például elemi
iskolás módszerrel két különböző pontjának felvételével.
Ábrázolva:
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 13

Az egyenlőtlenségnek megfelelő félsíkot legegyszerűbben úgy állapíthatjuk meg,


hogy megvizsgáljuk: egy kiválasztott pont koordinátái kielégítik-e az egyenlőtlenség
feltételét. Ha igen, akkor az egyenlőtlenség azt a félsíkot határozza meg, amelyen a
kiválasztott pont található. Ha nem, akkor a másik félsíkot.
Legyen a kiválasztott pont az origó: P (0; 0). A P koordinátáit behelyettesítjük a
3x1 + 2x2 ≤ 18 egyenlőtlenségbe. Azt kapjuk, hogy 0 ≤ 18, tehát az egyenlőtlenség
az I. síknegyednek azokat a pontjait határozza meg, amelyek közé tartozik az origó is
(„balra” vannak az egyenestől).
A 4x1 ≤ 16 feltétel írható x1 ≤ 4 alakban, ami az x1 = 4 egyenestől (tehát az x2
tengellyel párhuzamos egyenestől) balra található pontokat jelenti.
x1 x2
A 2x1 + 4x2 ≤ 24 tengelymetszetes alakja: + ≤ 1, a félsíkot határoló egye-
12 6
nes a tengelyeket 12-nél és 6-nál metszi. Az origó koordinátáit behelyettesítjük az
egyenlőtlenségbe, az igaz lesz, így az „érvényes” félsík tartalmazza az origót.
Az induló és a 3 feltételi egyenlőtlenségnek egyszerre eleget tevő pontok (a négy
halmaz közös része) alkotja a lehetséges megoldások L halmazát. Ábrázolva:

Az L halmazt meghatározó Q1 , Q2 , . . ., Qn csúcspontokat extremális pontoknak ne-


14 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

vezzük. Koordinátáik kiszámolása a megfelelő egyenesek metszéspontjainak meghatá-


rozásával történik.
Az L halmaz bármely pontjának koordinátái a feladat lehetséges megoldását adják.
Közülük kell kiválasztani azt (vagy azokat), amelyek a feladat optimális megoldását
szolgáltatják. Ehhez a z = 4x1 + 2x2 célfüggvényt használjuk fel, amely a z különböző
számértékeihez egymással párhuzamos egyeneseket rendel.
Kiindulásul válasszuk a z értékét 0-nak. A 0 = 4x1 + 2x2 , azaz x2 = −2x1 egy
origón átmenő −2 iránytangensű egyenes, ez a célfüggvények között az alapegyenes.
Ha a z számértékét növeljük, az alapegyenessel párhuzamosan „ jobbra felfelé” toló-
dik el az egyenes, ha pedig csökkentjük a z értékét, akkor „balra lefelé” tolódnak el
az egyenesek. Mindez fordítva is működik: ha növelni akarjuk a z értékét, akkor az
alapegyeneshez képest „ jobbra felfelé” kell eltolni a z egyenesét. A maximális z érték-
hez tartozó egyenesnek még kell, hogy legyen legalább egy közös pontja a lehetséges
megoldások halmazával. Ez a közös pont esetünkben a Q3 (4; 3) pont.
Ábrázolva:

A célfüggvény maximális értéke 22, ezt az x1 = 4 és x2 = 3 értékeknél veszi fel.


Az eredeti feladat kérdésére tehát a válaszunk: optimális akkor lesz a termékszerkezet,
ha az első termékből 4-et, a másodikból 3-at gyártunk. Maximálisan 22 pénzegység
árbevétel érhető el.
Megadhatjuk még optimális gyártás esetén a kapacitások maradványait, az ún.
eltérésváltozókat, amelyeket ui -vel jelölünk, és ha hozzáadjuk az optimális esetben
felhasznált erőforrás mennyiséghez, akkor egyenlőséget kapunk:

– ha az első feltételi egyenlőtlenségbe helyettesítjük az x1 és az x2 optimális értékeit:


3 · 4 + 2 · 3 + u1 = 18 esetén az u1 = 0, nincs maradvány.

– ha a második feltételi egyenlőtlenségbe helyettesítünk: 4 · 4 + u2 = 16, ebben az


esetben sincs maradvány, az u2 = 0.
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 15

– ha a harmadik feltételi egyenlőtlenségbe helyettesítjük az x1 és az x2 optimális


értékeit: 2 · 4 + 4 · 3 + u3 = 24 esetén a maradvány, az u3 = 4. Ez azt is
jelenti, hogy optimális lenne a termelés akkor is, ha a harmadik erőforrást 4-gyel
csökkentenénk.

A megoldás vektoriális alakban írható fel:

x0 = [4 3]∗ u0 = [0 0 4]∗ és z0 = 22.


A modellünk egyszerűen megoldható algebrai úton is, a szimplex-módszerrel:

B0 x1 x2 b B1 u2 x 2 b B2 u2 u1 b
u1 3 2 18 u1 −3/4 2 6 x2 −3/8 1/2 3
u2 4 0 16 x1 1/4 0 4 x1 1/4 0 4
u3 2 4 24 u3 −1/2 4 16 u3 1 −2 4
−z 4 2 0 −z −1 2 −16 −z −1/4 −1 −22

A leolvasható optimális megoldás azonos a geometriai úton kapott eredménnyel. (A


szimplex-módszert itt nem részletezzük, az operációkutatás tantárgyban a szükséges
lépések megtalálhatók. A geometriai megoldást azért ismételtük, mert az esettanulmá-
nyok megoldásánál is előforduló egyes speciális esetek, valamint az integer-, hipergeo-
metriai és kvadratikus modellek geometriai úton jól szemléltethetők.)

A feladatmegoldásoknál a matematikai modell felvétele szokta a „szűk keresztmet-


szetet” jelenteni, ezen belül is néha a döntési változók meghatározása. A modellek
megoldása már többnyire rutinmunka. Tekintsük a következő példát:
1.2. Példa: Van 1000 darab 7 méteres oszlopunk, amelyekből 1,5 és 2,5 méteres
oszlopokat kell vágnunk. Legalább négyszer annyi 1,5 méteres oszlopra van szükségünk,
mint 2,5 méteresre. Hogyan vágjuk fel az 1000 darab 7 méteres oszlopot, hogy a
hulladékképződés minimális legyen? Írjuk fel a matematikai modellt és adjuk meg az
optimális megoldást! A hulladékdarab nem lehet 1 méternél hosszabb.
Megoldás: A lehetséges darabolási változatok:
I. 2 darab 2,5 méteres, 1 darab 1,5 méteres oszlop és marad 0,5 méter.
II. 1 darab 2,5 méteres, 3 darab 1,5 méteres oszlop és marad 0 méter.
III. 0 darab 2,5 méteres, 4 darab 1,5 méteres oszlop és marad 1 méter.
A döntési változók kijelölése: az x1 , x2 , x3 jelentse azt, hogy az I., a II., illetve a
III. változatot hány egész (7 méteres) oszlopnál alkalmaztuk.
Elkezdjük a feltételek felírását. Induló feltételként nyilván igaz, hogy x1 , x2 , x3 ≥ 0.
A korlátozó feltételek : az összes egész oszlopot felvágjuk: x1 + x2 + x3 = 1000.
A 2,5 méteres oszlopokból lesz összesen 2x1 + x2 darab (mert az I. és a II. vágási
módnál keletkezik ilyen oszlop). Az 1,5 méteres oszlopokból lesz összesen x1 +3x2 +4x3
16 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

darab. Ha legalább négyszer annyi 1,5 méteres oszlopra van szükségünk, mint 2,5
méteresre, akkor

x1 + 3x2 + 4x3 ≥ 4(2x1 + x2 ) = 8x1 + 4x2 .

Rendezve:
7x1 + x2 − 4x3 ≤ 0.
A célfüggvényt a maradékokra írjuk fel: z = 0, 5x1 + x3 → min.
A matematikai modell tehát:

x1 , x 2 , x 3 ≥0
x1 + x2 + x3 = 1000
7x1 + x2 − 4x3 ≤0
z = 0, 5 x1 + x3 → min .

A feladat egyszerűen megoldható szimplex-módszerrel:

x1 x2 x3 b x1 x2 b x1 u2 b
û1 1 1 1 1000 x3 1 1 1000 x3 −6/5 −1/5 200
u2 7 1 −4 0 u2 11 5 4000 x2 11/5 1/5 800
z −0, 5 0 −1 0 z 1/2 1 1000 z −17/10 −1/5 200
−ẑ 1 1 1 1000 −ẑ 0 0 0

Az optimális megoldás: x 0 = [0 800 200]∗ , u 0 = 0, z0 = 200.


Tehát 800 darab 7 méteres oszlopot a II. módon, 200 darabot a III. módon kell
darabolni. Keletkezik: 800 darab 2,5 méteres, 3 · 800 = 2400 és 4 · 200 = 800, összesen
3200 darab 1,5 méteres oszlop és összesen 200 méternyi hulladék.

Számítógépes megoldás
A modellünk egyszerűen megoldható számítógép alkalmazásával. Ehhez megadjuk a
megoldás algoritmusát. Az Excel egyik bővítményét, valamint a Lingo programot
használjuk.
A lineáris programozású matematikai modellek számítógépes megoldásának lépéseit
példákkal mutatjuk be.
Példa: Négy erőforrás felhasználásával négyféle terméket gyártanak. Az egyes termé-
kek egy-egy egységébe az erőforrásokból rendre 1, 0, 2, 1; 1, 2, 2, 0; 0, 2, 2, 1 és 1,
2, 0, 0 épül be az egyes erőforrásokból. Az erőforrások felső korlátai: 100, 160, 100,
60. A termékek eladási egységárai rendre: 6, 6, 5, 4. Milyen termékszerkezetnél lesz
maximális az árbevétel?
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 17

Adatainkat célszerű táblázatba foglalni:

I II III IV Kap.
A 1 1 0 1 100
B 0 2 2 2 160
C 2 2 2 0 100
D 1 0 1 0 60
Ár 6 6 5 4 Max.

A matematikai modell: A döntési változók a gyártandó mennyiségek: x1 , x2 , x3 , x4 .


Az induló feltétel: a) x1 , x2 , x3 , x4 ≥ 0.
A korlátozó feltételek: b) x1 + x2 + x4 ≤ 100
2x2 + 2x3 + 2x4 ≤ 160
2x1 + 2x2 + 2x3 ≤ 100
x1 + x3 ≤ 60

A célfüggvény: c) z = 6x1 + 6x2 + 5x3 + 4x4 → max.

A feladat egyszerűen megoldható szimplex-módszerrel, az optimumok:

x 0 = [35 0 15 65]∗ u 0 = [0 0 0 10]∗ z0 = 545.


A duál optimumok:

y 0 = [2, 5 0, 75 1, 75 0]∗ w 0 = [0 1, 5 0 0]∗ .

I. Megoldás az Excel Solverjével

1.) Adatbevitel
Az adatokat az előbb felvett adattáblázathoz hasonló formában vihetjük be.
Célszerű a termékek oszlopait xi -vel, a feltételek sorait fi -vel elnevezni.
A feltételek sorai alatt legyen a célegyütthatók sora (c*), alatta legyen az x* sora,
induláskor nullákkal feltöltve.
Az x4 oszlopa után töltsünk fel egy oszlopot nullákkal a c* soráig, majd legyen egy
oszlop a relációjeleknek és egy újabb oszlop a kapacitásoknak.
Az induló táblánk:
18 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

x1 x2 x3 x4 b
f1 1 1 0 1 0 <= 100
f2 0 2 2 2 0 <= 160
f3 2 2 2 0 0 <= 100
f4 1 0 1 0 0 <= 60
c* 6 6 5 4 0
x* 0 0 0 0

Az adattáblázatot az Excelben bárhol elhelyezhetjük. Legyen x1 a B1 cellában.


Az x4 utáni oszlopban lévő cellákban állítjuk elő a modell feltételeinek bal oldalát
és a célfüggvényt. (Az adatok és a változók skaláris szorzataként.)
Konkrétan: az Excel F2 cellájába behívjuk a szorzatösszeg függvényt.
Az első tömbbe kerül a B2E2 sor, a másodikba a B7E7 sor „dollárjelekkel”, amit az
F4 billentyűvel vihetünk fel.
Ezután az F2 cellában előállított skaláris szorzatot alkalmazzuk a többi sorra, cél-
szerűen úgy, hogy az F2 cella jobb alsó sarkában megjelenő vonszoló füllel lejövünk az
F6 celláig.
Majd külön rákattintunk az F6 cellára, ez lesz a célcella.

2. Megoldás
Az Excel eszközök menüjéből behívjuk a Solvert.
Ha nincs ott, akkor a Bővítmények menüpontból bekérjük.

A célcella tehát most az F6 (rákattintunk).


Maximumot keresünk (bejelölés).
Módosuló cellák: x* sora (B7E7), rákattintunk a sorra.
Korlátozó feltételek: A Hozzáadás gombbal egyesével bevihetjük a feltételeket:
F2<=H2 (rákattintunk a cellákra), majd a Felvesz gomb után jön a következő:
F3<=H3 és a többi.
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 19

Megjegyzés: a korlátozó feltételek mind egytípusúak (<=), így azokat nem szükséges
egyesével felvenni.
Ezután a „Beállításáá gombon a nemnegatív és a lineáris feltételeket jelöljük be.
Ezt követően indulhat a megoldás.
A megoldás gombra kattintva megkapjuk az optimális (primál) megoldást:

x1 x2 x3 x4 b
f1 1 1 0 1 100 <= 100
f2 0 2 2 2 160 <= 160
f3 2 2 2 0 100 <= 100
f4 1 0 1 0 50 <= 60
c* 6 6 5 4 545
x* 35 0 15 65 max

Leolvashatjuk a megoldásokat: Az x * sorából az optimum:

x 0 = [35 0 15 65]∗ , valamint: z0 = 545.


Az eltérésváltozó optimumok a kapacitás „maradványok”: u 0 = [0 0 0 10]∗ . Ezeket
az értékeket megkaphatjuk úgy, hogy képezzük a kapacitásértékek és a Solver által
kiszámolt, a relációjelek előtti oszlopban lévő számok különbségét.
A megoldáskor 3 jelentést kérhetünk, amelyekből értékes információkhoz jutunk.
Az u 0 értékei a Solver eredményjelentéséből is kiolvashatók.
A duál optimumok, az érzékenységvizsgálat az érzékenységjelentésből adódnak.

Redukált Objective Megengedhető Megengedhető


Cella Név Végérték költség Célegyüttható növekedés csökkenés
$B$7 x* x1 35 0 6 3 3,000000001
$C$7 x* x2 0 −1, 500000001 6 1,500000001 1E+30
$D$7 x* x3 15 0 5 5 3
$E$7 x* x4 65 0 4 7 3

Shadow Feltétel Megengedhető Megengedhető


Cella Név Végérték Árnyékár jobb oldala növekedés csökkenés
$F$2 f1 100 2,5 100 30 70
$F$3 f2 160 0,75 160 140 60
$F$4 f3 100 1,75 100 20 60
$F$5 f4 50 0 60 1E+30 10

A „Shadow Árnyékárak” oszlopából a duáloptimum: y 0 = [2, 5 0, 75 1, 75 0]∗


20 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

A redukált költség oszlopából: w 0 = [0 1, 5 0 0]∗ .


Ezek az értékek természetesen egybeesnek a szimplex-módszerrel kapott megol-
dásokkal. Jól használható információkat tartalmaznak a „Megengedhető növekedés”,
„Megengedhető csökkenés” oszlopok. A „Módosuló cellák” táblázat a célfüggvény-
együtthatókra ad meg olyan határokat, amelyek között az optimális primál megoldás
változatlan marad. A „Korlátozó feltételek” utolsó két oszlopában a kapacitásokra ka-
punk olyan határokat, amelyek között az optimális megoldás szerkezete nem változik
meg. Az árnyékár oszlopában lévő számok, az y 0 értékei azt mutatják meg, hogy a
megfelelő kapacitásértéket egy egységgel megnövelve mennyivel változik meg a célfügg-
vény értéke. A kapacitásnövelés közben nem léphetünk ki a megengedhető növekedés
– csökkenés határai közül.
A w0 értékei a feladatunknál azt mutatják meg, hogy ha az x 0 -ban 0 értékkel sze-
replő termékből (ez most az x2 ) mégis történne gyártás, akkor egységnyi mennyiség
gyártása mennyivel csökkentené a célfüggvény értékét, vagyis egy egységnyi x2 bekerü-
lése a gyártási programba 1,5-del csökkenti a célfüggvény értékét.
Így a bi kapacitásokra az érzékenységvizsgálat:

b1 -re: 100 − 70 ≤ b1 ≤ 100 + 30, b2 -re: 160 − 60 ≤ b2 ≤ 160 + 140, és így tovább.

Az érzékenységvizsgálat szerint, ha a bi értékekkel kilépünk a kapott intervallumból,


akkor az optimális tábla szerkezete megváltozik.
Például: Ha a b1 értéke 140 lesz, akkor: x 0 = [50 0 0 80]∗ .
Az érzékenységjelentésből a célegyütthatókra is kapunk határokat:
c1 -re: az eredeti érték mindkét irányban 3-mal változhat: 3 ≤ c1 ≤ 9.
c2 -re: az eredeti érték felfelé 1,5-del, lefelé 1030-nal (azaz végtelennel) változhat:
Így: −∞ < c2 ≤ 7, 5.
Hasonlóan: 2 ≤ c3 ≤ 10 és 1 ≤ c4 < ∞.
Például: Ha a c1 értéke 10 lesz, akkor: x 0 = [50 0 0 50]∗ .
Ha a célfüggvény-együtthatók a termékek egységárait jelentették, akkor a ci érté-
kekre kapott határok az optimális megoldás árrugalmassági korlátait mutatják.
A szimplex-módszerrel számolva az érzékenységvizsgálatra hasonló eredményeket
kapunk. (Kisebb eltérés lehet, ugyanis az Excel közelítő számolást végez.)
A számítógépes megoldásnál nem kell megkülönböztetni a normál feladatot (ez volt
a példánk) az általános lineáris programozási feladattól. Így a relációjelek lehetnek
tetszőlegesek és a cél is lehet minimum.
A Solverben kérhetjük, hogy a döntési változók egész értékűek, vagy bináris számok
legyenek. Ezekben az esetekben a program nem tud érzékenységi vizsgálatot végezni.

Az 1.2. Példánk számítógépes megoldása az Excel Solverjével


Az induló táblát a matematikai modell alapján vesszük fel:
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 21

x1 x2 x3 b
f1 1 1 1 0 = 1000
f2 7 1 -4 0 <= 0
c* 0,5 0 1 0
x* 0 0 0 min
A számítógépes megoldás módszerével a következő optimális táblát kaptuk:

x1 x2 x3 b
f1 1 1 1 1000 = 1000
f2 7 1 -4 0 <= 0
c* 0,5 0 1 200
x* 0 800 200 min

Természetesen ebből is a szimplex-módszerrel kapott eredmények olvashatók ki:


x 0 = [0 800 200]∗ u 0 = 0 z0 = 200.
Tekintsünk egy más jellegű példát a modell felírására:
1.3. Példa: Egy üzem termelési programjához a következő A mátrix tartozik:
 
0 1 4 2
A= 3 1 0 0 
1 1 1 0
Az A mátrix aij eleme azt jelenti, hogy az i-edik erőforrásból mennyi épül be a
j-edik termék egy-egy egységébe. A kapacitásvektor: b = [ 300 100 150 ]∗ , a termékek
eladási egységárvektora, amelynek maximalizálására törekszünk: p = [6 5 8 7]∗ .
Írjuk fel az adatok alapján az LP modellt és az induló szimplex-táblát, ha:
a) az erőforrások felhasználása a kapacitásokat nem lépheti túl;
b) az első és a második termékből összesen annyit kell termelni, mint a negyedikből;
c) a második termékből legalább 3 egységgel többet kell termelni, mint a negyedik-
ből!
Adjuk meg a feladat gépi megoldását is!
Megoldás: A döntési változók a gyártandó termékek egységnyi mennyiségei: xi .
A matematikai modell:
x1 , x2 , x3 , x4 ≥ 0
x2 + 4x3 + 2x4 ≤ 300
3x1 + x2 ≤ 100
x1 + x2 + x3 ≤ 150
x1 + x2 − x4 = 0
x2 − x4 ≥ 3
22 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

z = 6x1 + 5x2 + 8x3 + 7x4 → max .


(A matematikai modell feltételrendszerében a változók mindig a bal oldalon legye-
nek, a konstansok pedig a jobb oldalon.)
Kézi megoldásnál a szimplex induló tábla:
x1 x2 x3 x4 v 5
u1 0 1 4 2 0 300
u2 3 1 0 0 0 100
u3 1 1 1 0 0 150
û4 1 1 0 −1 0 0
û5 0 1 0 −1 −1 3
−z 6 5 8 7 0 0
−ẑ 1 2 0 −2 −1 3
A manuális megoldás eléggé hosszadalmas. Ha végrehajtjuk, azt vehetjük észre, hogy
speciális esetbe botlunk, nem kapunk optimális megoldást.
A feladat Solver induló táblája:

x1 x2 x3 x4 b
f1 0 1 4 2 0 <= 300
f2 3 1 0 0 0 <= 100
f3 1 1 1 0 0 <= 150
f4 1 1 0 −1 0 = 0
f5 0 1 0 −1 0 >= 3
c* 6 5 8 7 0
x* 0 0 0 0 max

A Solver erre nem talált megoldást, hiszen a modellben nyilvánvaló ellentmondás


van a 4. és az 5. feltétel között: ha x2 − x4 ≥ 3, akkor ezt a különbséget az utolsó előtti
feltételben a nemnegatív x1 -hez hozzáadva nem kaphatunk nullát. Ha az 5. feltételt
úgy módosítjuk, hogy a második termékből legalább 3 egységgel többet kell termelni,
mint a harmadikból, azaz x2 − x3 ≥ 3, akkor lesz optimuma a feladatnak:

x1 x2 x3 x4 b
f1 0 1 4 2 300 <= 300
f2 3 1 0 0 100 <= 100
f3 1 1 1 0 100 <= 150
f4 1 1 0 −1 0 = 0
f5 0 1 −1 0 100 >= 3
c* 6 5 8 7 1200
x* 0 100 0 100 max

Az optimális megoldást a szokásos módon felírhatjuk:


1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 23

x 0 = [0 100 0 100]∗ u 0 = [0 0 50 0 97]∗ és z0 = 1200.

Ha a duál optimumokra is szükségünk van, akkor azokat az érzékenységjelentésből


kiolvashatjuk.
Oldjunk meg még egy gyakorló feladatot:
1.4. Példa: 4 gép felhasználásával kétféle terméket állítanak elő. Az egyes termékek-
hez egységnyi mennyiségének gyártásához szükséges gépidő órában: 4, 0, 2, 1, illetve
2, 4, 3, 1. Az összes gépóra kapacitás: 240, 160, 180, 100, amelyek közül az első kettő
felső korlátot jelent, a harmadikat teljesen ki akarjuk használni, a negyedik gépet pe-
dig legalább 100 órában működtethetjük. Az egyes termékek hozama egységenként 20,
illetve 40 Ft. Az első termékre már beérkezett 30 egységre szóló megrendelés. Szeret-
nénk elérni, hogy a hozam legalább 1000 Ft legyen. Írjuk fel a maximális árbevételt
biztosító termelési program matematikai modelljét, az induló szimplex-táblázatot és
adjuk meg a számítógépes megoldást!
Megoldás: A döntési változók a gyártandó termékek darabszámai: x1 és x2 .
A matematikai modell:

x1 , x2 ≥ 0

4x1 + 2x2 ≤ 240


4x2 ≤ 160
2x1 + 3x2 = 180
x1 + x2 ≥ 100
x1 ≥ 30
20x1 + 40x2 ≥ 1000
z = 20x1 + 40x2 → max .

Manuálisan a szimplex-módszert használhatjuk a feladat megoldására.


A szimplex induló tábla az első generáló elemmel:

x1 x2 v4 v5 v6
u1 4 2 0 0 0 240
u2 0 4 0 0 0 160
û3 2 3 0 0 0 180
û4 1 1 −1 0 0 100
û5 1 0 0 −1 0 30
û6 20 40 0 0 −1 1000
−z 20 40 0 0 0 0
−ẑ 24 44 −1 −1 −1 1310

A szimplex-módszerrel a feladat (nem túl egyszerűen) megoldható.


A Solverrel történő megoldás induló táblája:
24 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

x1 x2 b
f1 4 2 0 <= 240
f2 0 4 0 <= 160
f3 2 3 0 >< 180
f4 1 1 0 >= 100
f5 1 0 0 >= 30
f6 20 40 0 >= 1000
c* 20 40 0 0
x* 0 0

Az optimális megoldás táblája:

x1 x2 b
f1 4 2 240 <= 240
f2 0 4 120 <= 160
f3 2 3 180 >< 180
f4 1 1 75 >= 100
f5 1 0 45 >= 30
f6 20 40 2100 >= 1000
c* 20 40 2100 0
x* 45 30

Tehát: x 0 = [45 30]∗ , u 0 = [0 40 0 25 15 1100]∗ és z0 = 2100.


Tekintsünk egy pénzügyi problémát, amelyben a modell felvételéhez előkészületeket
kell tenni.
1.5. Példa: Négy részvény jelenlegi árfolyamai és a tőzsde néhány hónappal későbbi
árfolyamelvárásai:

jelenlegi árfolyam (Ft/db) árfolyamelvárás(Ft/db)


A 13 800 16 600
B 14 600 15 500
C 2 800 3 100
D 3 800 4 200

Mindegyik részvényből legalább 500 000 Ft értékben szeretnénk vásárolni és port-


foliót kialakítani. Összesen legfeljebb 4 millió forintot akarunk befektetni. Az „A”
részvényből legfeljebb 100 darabot vennénk. A vásárlást követően minden részvényre
azonnal limitáras eladási megbízást is adunk az árfolyamelvárásokon. A brókeri jutalék
vásárláskor részvényenként a vételi ár 1%-a, eladáskor az árbevétel 1%-a.
Ha minden eladási megbízás teljesülne, akkor milyen portfolió esetén lenne az elvárt
hozam maximális? Írjuk fel a matematikai modellt!
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 25

Megoldás: A változók legyenek a részvények darabszámai, jelöljük xi -vel (1 ≤ i ≤ 4).


A darabszámok jelenlegi, mindig felfelé kerekített értékeire az alsó határok az
500 000 forintos vásárlási határból adódnak:
500 000 500 000
Az A részvényre (x1 -re): ≈ 37. A B részvényre (x2 -re): ≈ 35.
13 800 14 600
500 000 500 000
A C részvényre (x3 -ra): ≈ 179. A C részvényre (x4 -re): ≈ 132.
2800 3800
A matematikai modellt elkezdjük felírni. Az induló (a „triviális”) feltétel:

xi ≥ 0 (1 ≤ i ≤ 4).
Az 500 000 forintos vásárlási határból a változókra alsó határok adódnak:

x1 ≥ 37 x2 ≥ 35 x3 ≥ 179 x4 ≥ 132

Megadták továbbá, hogy az A részvényből legfeljebb 100 darabot veszünk, azaz:

x1 ≤ 100

Az összes befektetés határának (4 millió forint) figyelembevételéhez a részvények


árához hozzá kell számítanunk az 1%-os brókeri jutalékot, így az egyes részvények
nekünk rendre 13938, 14746, 2828 és 3838 forintba kerülnek. Az ebből adódó feltétel:

13 938x1 + 14 746x2 + 2828x3 + 3838x4 ≤ 4 000 000

A cél a hozam maximalizálása. A hozamot az árfolyamelvárás és a jelenlegi árfolyam


különbsége adja, a brókeri jutalék figyelembe vételével. Ha az A részvénynél az elvárás
16 600 forint, akkor ebből lejön a bróker részére 1%, tehát megkapunk 16 434 forintot.
Így ebben az esetben a hozam: 16 434 − 13 938 = 2496. A hozam nagysága hasonló
számítással a többi részvény esetén rendre: 599, 241, 320. A célfüggvény:

z = 2496x1 + 599x2 + 241x3 + 320x4 → max .

A matematikai modellből szimplex-módszerrel is nem túl nagy fáradtsággal kiszá-


molható az optimális megoldás. Írjuk fel „összesítetten” a matematikai modellt:

xi ≥ 0 (1 ≤ i ≤ 4).

x1 ≥ 37

x1 ≤ 100

x2 ≥ 35
26 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

x3 ≥ 179

x4 ≥ 132

13 938x1 + 14 746x2 + 2828x3 + 3838x4 ≤ 4 000 000

z = 2496x1 + 599x2 + 241x3 + 320x4 → max .

A feladat géppel történő megoldása a számítógéptől csupán néhány másodpercet


igényel. Gyakorlásul adjuk meg a megoldást!
A felsorolt példákban ún. egyindexes döntési változók voltak. Gyakran egysze-
rűbb, áttekinthetőbb a probléma megoldása, ha a döntési változók két (vagy több)
indexesek. Az ilyen típusú feladatok megoldása történhet egyindexes változókra való
visszavezetéssel, de léteznek speciális megoldási módszerek is.
1.6. Példa: Két feladóhelyről (F1 és F2 ) három célállomásra (R1 , R2 , R3 ) kell árut
szállítani. Az egységnyi áru szállítási költsége az egyes relációkban a következő:

F1 → R 1 : 2 F 1 → R2 : 4 F 1 → R3 : 3

F2 → R 1 : 1 F 2 → R2 : 5 F2 → R3 : 6.

Az első feladóhelyről összesen 5, a másodikról 4 egységnyi árut kell elvinni, a célál-


lomások igényei rendre 3; 4 illetve 2 egységnyi áru. Készítsünk minimális költségű szál-
lítási programot! A matematikai modell felírása után oldjuk meg a feladatot szimplex-
módszerrel és disztribúciós módszerrel is!
Megoldás: A döntési változó xij , amely az i-edik feladóhelyről a j-edik célállomásra
szállítandó mennyiséget jelöli.
A modell:
a) xij ≥ 0 (1 ≤ i ≤ 2, 1 ≤ j ≤ 3)
b)
x11 + x12 + x13 =5
x21 + x22 + x23 =4
x11 + x21 =3
x12 + x22 =4
x13 + x23 =2

c) z = 2x11 + 4x12 + 3x13 + x21 + 5x22 + 6x23 → min


A szimplex megoldás:
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 27

x11 x12 x13 x21 x22 x23 b x11 x23 b


û1 1 1 1 0 0 0 5 x12 1 −1 3
û2 0 0 0 1 1 1 4 x22 −1 1 1 · ¸
û3 1 0 0 1 0 0 3 x21 1 0 3 0 3 2
... X = z0 = 26
û4 0 1 0 0 1 0 4 û4 0 0 0 0 3 1 0
û5 0 0 1 0 0 1 2 x13 0 1 2
z −2 −4 −3 −1 −5 −6 0 z −3 −3 26
−ẑ 2 2 2 2 2 2 18 −ẑ 0 0 0

A megoldás disztribúciós módszerrel, a szállítási viszonylatok megfelelő kiválasztá-


sával is egyszerű. A kritikus szám: 4. Az induló tábla (például):
3 2
2 4 3 5 · ¸
3 1 0 3 2
1 5 6 4 A tábla optimális: X0 = 3 1 0 Az összköltség: 26.
3 4 2

A számítógépes megoldás történhet a felvett matematikai modellünkből az Excel


Solverével a megismert módon (a kivitelezést az olvasóra bízzuk).
Az ilyen típusú (kétindexes) modellek megoldására létezik egy, általában egyszerűbb
és gyorsabb számítógépes módszer is, amit az alábbiakban mutatunk be.

Disztribúciós feladat megoldása az Excel Solverével

Az elosztási–szétosztási feladatok az ún. mátrixcsere módszerével is megoldhatók.


Az eljárást példán keresztül mutatjuk be.
Példa: Egy szállítási feladatban az F1 és F2 feladótól a teljes készletet el kell szállítani.
Az F1 feladó az R1 megrendelőnek nem szállíthat. Adatok:

R1 R2 R3 R4
F1 4 3 5 6 40
F2 3 6 4 7 80
F3 2 3 5 4 90
70 70 40 20

Az Fi sorok végén a szállítandó mennyiségek, az Rj oszlopok „alján” az igényelt


mennyiségek állnak. A táblázat belsejében lévő számok az Fi-ből Rj-be történő egy-
ségnyi mennyiség szállításának költségét mutatják.
A megoldáshoz névleges állomást (ötödik rendeltetési helyet) és a feltételeknek meg-
felelő tiltótarifákat (M) kell felvennünk:
28 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

M 3 5 6 M 40
3 5 4 7 M 80
2 3 5 4 0 90
70 70 40 20 10
A tiltásokat a többi költségelemhez képest relatíve nagy számok beírásával (M )
valósítjuk meg. Például: M = 99.
Cél: az Fi-ből az Rj-be szállítandó xij mennyiségek mátrixának meghatározása úgy,
hogy az összköltség minimális legyen.
A feladat számítógépen megoldható a már ismert, a „szokásos” matematikai model-
lel, 15 változóval.
Egyszerűbb, gyorsabb megoldást kapunk a „mátrixcsere”-módszerrel.
Ehhez felvesszük az Excelben a névleges állomással, tiltásokkal kiegészített táblá-
zatunkat:

R1 R2 R3 R4 R5
F1 99 3 5 6 99 40
F2 3 6 4 7 99 80
F3 2 3 5 4 0 90
70 70 40 20 10

Az adattáblázatot az Excelben bárhol elhelyezhetjük. Legyen most R1 a B2 cellá-


ban.
Ezután a megoldás X=[xij ] mátrixot jelöljük ki, például az adatok alatt. Ez az „el-
rendezés” célszerűen olyan szerkezetű legyen, mint a felvett adataink. Minden adatunk
értéke legyen 0.

R1 R2 R3 R4 R5
F1 0 0 0 0 0 0
F2 0 0 0 0 0 0
F3 0 0 0 0 0 0
0 0 0 0 0

Ebben a táblázatban legyen az R1 helye (például) a B9 cellában, a célcella pedig


legyen a H13.
A megoldást jelentő X mátrix oszlopaiban és soraiban összesen az előírt mennyisé-
gek legyenek. Ehhez: a B13 cellába az összegfüggvényt hívjuk be: SZUM(B10;B12),
majd a vonszoló füllel a többi oszlopösszeget is előállítjuk R5-ig.
A sorcellák összegzése: a G10 cellába összegzünk: SZUM(B10;F10) és ezután a
vonszoló füllel összegezzük a többi sort F3-ig.
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 29

A célcellába (H13) szorzatösszeg kerül. A két tömb: B3-F5 és B10-F12 ($ jel!).


A H13 cellán állva ezután behívjuk a Solvert.
Célcellaként H13 jelenik meg (ha nem: írjuk oda), bejelöljük a minimumot, és
módosuló cellák legyenek a B10-F12.
A korlátozó feltételek: a B6-F6 és B13-F13 sorok egyenlők, valamint legyenek egyen-
lők a G3-G5 és a G10-G12 oszlopok is.
A Solverbe célszerű az egérmutatóval bevinni az adatokat.
Végül beállítjuk a nemnegatív és a lineáris modell-feltételeket.
A megoldás gombot lenyomva megkapjuk az eredményt:

R1 R2 R3 R4 R5
F1 0 40 0 0 0 40
F2 40 0 40 0 0 80
F3 30 30 0 20 10 90
70 70 40 20 10 630

Az összköltség minimuma 630.


Az egyes relációkban szállítandó mennyiségeket a szállítási mátrix mutatja.
Például: F1-ből R1-be nincs szállítás, az R2-be pedig 40 egységnyit szállítunk és
így tovább. A korlátozó feltételek (tiltótarifák) is teljesülnek. Ez azt is jelenti, hogy a
3. feladónál 10 egység marad (a névleges állomásnak szállít).
Az 1.6. Példánk gépi megoldásának induló táblája az Excelben:

R1 R2 R3
F1 2 4 3 5
F2 1 5 6 4
3 4 2

A megoldás a Solver felhasználásával:

R1 R2 R3
F1 0 3 2 5
F2 3 1 0 4
3 4 2 26

A fenti táblázatból természetesen ugyanazok a megoldások olvashatók ki, mint ami-


ket a másik két módszerrel kaptunk.
A gépi megoldások a gyakorlati feladatokra is alkalmazhatók. A gyakorlatban ter-
mészetesen az optimalizálandó problémáknál sokkal több változó és jóval több feltétel
30 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

szerepel, mint amit példáinkban bemutattunk. A matematikai modellek megoldására


jól használható a könnyen hozzáférhető Lingo szoftver.

Számítógépes megoldás a Lingóval

A program a lingo.com lapról tölthető le (a demováltozat – ez oktatási célra megfelel).


A szoftver előnye, hogy a matematikai modell a szokásos alakban írható be, tud
speciális modelleket kezelni és pontosabb az Excelnél.
Használatához szükséges tudni:
1.) A nemnegatív feltételt külön nem kell beírni, a program ezt feltételezi.
2.) A feltételek sorait pontosvesszővel kell lezárni, a szorzásjelet ki kell írni.
3.) A nagyobb-egyenlő, kisebb-egyenlő relációknál nem kell egyenlőséget írni.
4.) A célt (min vagy max) sor elején ki kell írni és utána egyenlőségjel következik.
5.) Ha felkiáltójelet írunk egy sor elejére, akkor azt a sort a program megjegyzésként
kezeli, azaz nem számol az ott lévő adatokkal.
A program indítása után begépeljük a modellt (legyen ez a 15. oldalon lévő példa).

x1+x2+x4<100;

2*x2+2*x3+2*x4<160;

2*x1+2*x2+2*x3<100;

x1+x3<60;

max=6*x1+6*x2+5*x3+4*x4;

A megoldást a solve parancsra lépve kapjuk.


A megoldásból leolvasható mind a primál, mind a duál optimum:

Global optimal solution found.

Objective value: 545.0000

Total solver iterations: 4


Variable Value Reduced Cost

X1 35.00000 0.000000

X2 0.000000 1.500000

X4 65.00000 0.000000

X3 15.00000 0.000000
1.5. A LINEÁRIS PROGRAMOZÁSÚ MODELLEK ÉS MEGOLDÁSAIK 31

Row Slack or Surplus Dual Price


1 0.000000 2.500000
2 0.000000 0.7500000
3 0.000000 1.750000
4 10.00000 0.000000

A program globális optimumot talált, ehhez 4 lépésben jutott el.


Emlékeztetőül a jelöléseinkkel:

z0 = 545 x 0 = [35 0 15 65]∗ u 0 = [0 0 0 10]∗


y 0 = [2, 5 0, 75 1, 75 0]∗ w 0 = [0 1, 5 0 0]∗

Az egyes optimális megoldások elhelyezkedése a táblázaton jól látható.


A Lingo segítségével viszonylag egyszerűen oldhatunk meg olyan feladatokat, ahol
mind a feltételek, mind a célfüggvény speciális, és az Excel Solverjével körülményes a
megoldás. Tekintsük a következő példát:

Példa: Egy üzem 2 terméket gyárt, két erőforrás felhasználásával. Az egyes termékek
egy-egy darabjába az erőforrásokból 2, 2, illetve 3, 1 egységnyi épül be. A kapacitások
felső korlátai: 3000 és 4000. A piaci igény az egyes termékekre maximum 1200, illetve
1500 darab. A termékek eladási egységárai 110 és 80, az önköltségi egységárak: 70, 50.
A gyártás fix költsége: 5000. Adjuk meg azt a termékösszetételt, amelynél az egységnyi
költségre eső fedezeti összeg maximális!
A matematikai modell
A döntési változók legyenek az egyes termékek darabszámai: x1 és x2.
Az induló feltétel : x1, x2 ∈ N . (A darabszámok csak természetes számok lehetnek!)
A korlátozó feltételek (A Lingo írásmódjával):

2 ∗ x1 + 3 ∗ x2 < 3000;
2 ∗ x1 + x2 < 4000;
x1 < 1200;
x2 < 1500;

A célfüggvény a fedezeti ősszeg és a költség hányadosa (hiperbolikus programozás):

max = (40 ∗ x1 + 30 ∗ x2)/(70 ∗ x1 + 50 ∗ x2 + 5000);

(A fedezetet legyen az eladási egységár és az önköltségi egységár különbsége.)


Az egészértékűséget első lépésként még ne vigyük be a modellbe.
A program futtatása után a következő eredményt kapjuk:
32 1. FEJEZET: A MODELL FOGALMA, JELENTŐSÉGE, FŐBB FAJTÁI

Local optimal solution found.


Objective value: 0.5454545
Variable Value Reduced Cost
X1 705.8824 0.000000
X2 529.4118 0.000000

Row Slack or Surplus Dual Price


1 0.000000 0.1123967E-04
2 2058.824 0.000000
3 494.1176 0.000000
4 970.5882 0.000000
A megoldásból mind a négy (folytonos) optimum leolvasható.
Az x1 -re és x2 -re kapott megoldásaink nem egészek. A Lingoban az egészértékű-
séget egy gin elnevezésű függvény felvételével kérhetjük. A modellben az írásmód a
következő: @gin(xi );. Így a modell a Lingoban:

2 ∗ x1 + 3 ∗ x2 < 3000;
2 ∗ x1 + x2 < 4000;
x1 < 1200;
x2 < 1500;
@gin(x1); @gin(x2);
max = (40 ∗ x1 + 30 ∗ x2)/(70 ∗ x1 + 50 ∗ x2 + 5000);
A megoldás pedig:
Local optimal solution found.
Objective value: 0.5454545
Variable Value Reduced Cost
X1 1200.000 −0.1836547E-04
X2 200.0000 −0.2754821E-04

Row Slack or Surplus Dual Price


1 0.000000 0.000000
2 1400.000 0.000000
3 0.000000 0.000000
4 1300.000 0.000000
Láthatjuk, hogy az integer (egészértékűség) feltétel jelentősen eltérő optimumokat
szolgáltatott, mint az első megoldásunk.
2. fejezet

Speciális esetek a klasszikus LP


modelleknél

A lineáris programozással történő optimalizálásnál a döntési változók meghatározása


után mind a modellek felvételénél, mind azok megoldásánál adódhatnak az alapválto-
zatoktól eltérő esetek is.

2.1. A modell felvételekor előforduló esetek


Az induló feltételeknél a döntési változókra többnyire azt írjuk elő, hogy folytonosak
legyenek, azaz bármilyen valós szám értéket felvehessenek. Ezen belül leggyakrabban
a változók nem negatív voltát kötjük ki. Előfordulnak olyan esetek is, amikor nincs
előjel-korlátozás, erre külön fel szoktuk hívni a figyelmet, illetve a gépi megoldásnál ezt
állítjuk be feltételként a döntési változókra.
Ha a döntési változónak egyértelműen egész számnak kell lennie, akkor az integer
(egészértékű) feltételt kötjük ki. Az ilyen problémákat leíró modellekben a változó
többnyire darabszám vagy sorszám, így a nemnegativitás is feltétel.
Az induló feltétel bináris akkor, ha a döntési változó csak a 0 és az 1 értéket veheti
fel. Ez olyan esetekben fordul elő, amikor csak két lehetőségünk van, ezek közül kell
választani, azaz, hogy a vizsgált eset bekövetkezik-e, vagy sem.
Ugyancsak nem ritka döntési változókra az az előírás, hogy azok egy adott inter-
vallumba essenek. Ezt a feltételt viszont a korlátozó feltételeknél vesszük figyelembe.
A korlátozó feltételeknél a modell felírásakor az a kiindulópont, hogy a válto-
zók rendezett formában (ami azt jelenti, hogy a változók indexei növekvő sorrendben
legyenek) mindig a lehetséges relációk (kisebb, egyenlő, nagyobb) bal oldalain legye-
nek, a jobb oldali konstansok között pedig ne legyenek negatív számok. A formuláink
rendezésével ez mindig elérhető. Megjegyezzük, hogy a modellek megoldására szol-
gáló egyes szoftverek akkor is működnek, ha ezt a feltételt nem tartjuk be. Az adott
probléma megoldásához tartozó egyes változatok áttekinthetősége, kezelhetősége szem-

33
34 2. FEJEZET: SPECIÁLIS ESETEK A KLASSZIKUS LP MODELLEKNÉL

pontjából viszont célszerű, ha mindig ragaszkodunk a matematikai modell fent leírt,


szabványszerűnek is nevezett elrendezéséhez.
Két különleges eset szokott előfordulni: ha a korlátozó feltételek között ellentmon-
dás van, akkor a feladatnak nincs lehetséges megoldása, így természetesen optimum
sem létezik. Például ha az egyik feltétel: 2x1 +3x2 ≤ 6, ami a geometriai megoldásnál a
határoló egyenestől az origó felé eső pontokat jelenti, a másik pedig: 2x1 +3x2 ≥ 9, ami
az előző határoló egyenessel párhuzamos, de „az felett” lévő egyenestől az origóval ellen-
kező irányba eső pontokat határozza meg. A két halmaznak ekkor nyilván nincs közös
eleme. A két feltétel közötti ellentmondás „ránézésre” látszik: ugyanaz a mennyiség
nem lehet egyszerre 6-nál kisebb és 9-nél nagyobb. Ilyenkor vagy a modell felvételekor
követtünk el fatális hibát, vagy a problémára nem létezik megoldás. Hasonló ellent-
mondó feltételekkel találkozhattunk az előző fejezet 3. példájában az először felvett
modellünknél.
Nagyobb feladatnál gyakori, hogy felesleges feltételek fordulnak elő a korlátok kö-
zött, például ha a 2x1 + 3x2 ≤ 6 feltételt követően a 2x1 + 3x2 ≤ 7 is szerepel, akkor
ez utóbbi nyilván felesleges, hiszen ha valami 6-nál kisebb, akkor nyilván 7-nél is. A
felesleges feltételek a megoldás folyamatát lassíthatják, a modell bonyolultabb lesz, de
a végeredményt nem befolyásolják.
A korlátozó feltételek általában lineárisak, de a számítógépes szoftverek többnyire
képesek kezelni nem lineáris feltételrendszert is.
A korlátozó feltételekben az együtthatókat, valamint a jobb oldalon szereplő számok
értékeit a felhasználók gyakran megváltoztathatják, különböző variánsokra kíváncsiak.
Ezzel a területtel később még foglalkozunk.
A célfüggvény általában a döntési változók lineáris függvénye, és a cél egyaránt
lehet maximum vagy minimum. A kézi számolásnál (szimplex-módszer) az optimum
csak maximum lehet, a számítógépes megoldásoknál a megfelelő célt be kell állítani.
A célfüggvény lehet hiperbolikus, azaz két elsőfokú függvény hányadosa. Ilyet alkal-
mazunk például olyan esetekben, amikor a termelési költségre eső nyereség optimumát
keressük. A hiperbolikus célfüggvényű feladatok kézi megoldását visszavezethetjük li-
neáris célfüggvényű probléma megoldására. A számítógépes szoftvereknél általában
külön beállítás nélkül lehet hiperbolikus célfüggvényt alkalmazni.
Találkozhatunk másodfokú (kvadratikus) célfüggvénnyel is. A kézi megoldást ek-
kor is visszavezethetjük lineáris célfüggvényű feladat megoldására. A gépi megoldásnál
általában ebben az esetben is (sőt, még bonyolultabb célfüggvényeknél is) külön be-
avatkozás nélkül megkapjuk az eredményt.
A gyakorlatban sokszor előfordul, hogy az adott feladathoz rendelt matematikai
modellben több célfüggvény szerepel. A célfüggvényben szereplő együtthatók gyak-
ran tervezett, vagy kalkulált egységárak, hozamok, amelyek megváltoztatása más-más
optimumot eredményezhet, azaz ilyenkor is különböző variánsokat kell számolni.
Az is lehetséges, hogy egy adott modellnél a maximumot is és a minimumot is kéri
a felhasználó, illetve a több célfüggvény közül más-más súllyal vesszük figyelembe a
felvett formulákat.
2.2. A MODELL MEGOLDÁSÁNÁL ELŐFORDULÓ ESETEK 35

2.2. A modell megoldásánál előforduló esetek


A gyakorláskor megoldott lineáris programozási modellekben többnyire egy meghatá-
rozott optimum adódik eredményül. Előfordulhatnak továbbá a következő esetek:

Van lehetséges megoldás, de nincs optimum


Ez az eset például akkor következhet be, ha a lehetséges megoldások halmaza csak
alulról korlátos, és a feladatban maximum a cél. Ilyenkor – hivatkozva a geometriai
megoldásra – a célfüggvény alapegyenesének „emelésekor” minden határnál nagyobb
értékeket kapunk, a célfüggvényre nincs felső korlát. Más esetek is lehetségesek, szem-
léletesen például akkor, ha a lehetséges megoldások halmaza nyitott szögtartomány, és
a célfüggvény egyenesek a szögtartományba esnek. Például:

A gépi megoldások ezt a tényt megfelelő üzenet küldésével közlik a felhasználóval.

Nem egy optimális megoldás létezik


A geometriai megoldásoknál jól szemléltethetjük azokat az eseteket, amikor az op-
timális megoldást jelentő célfüggvényegyenes a lehetséges megoldások halmazán egy
szakasszal, vagy egy félegyenessel esik egybe.
36 2. FEJEZET: SPECIÁLIS ESETEK A KLASSZIKUS LP MODELLEKNÉL

a) Az optimális megoldást egy szakasz pontjai jelentik, például az ábrán a Q4 és


Q5 pontok által meghatározott szakasz.
Ekkor a szakasz pontjait a végpontokba mutató vektorok konvex lineáris kombiná-
ciójával írhatjuk fel, tehát az általános megoldás:

x0 = λx01 + (1 − λ)x02 , ahol 0 ≤ λ ≤ 1.

Az eltérésváltozókra ilyenkor az általános megoldást hasonlóan írjuk fel:

u0 = λu01 + (1 − λ)u02 , ahol 0 ≤ λ ≤ 1.

b) Az optimális megoldást egy félegyenes pontjai jelentik. Például:

Az L felülről nem korlátos, a célfüggvény: z = 2x1 − 4x2 , a z = 0 alapegyenest


ábrázoltuk. Az optimumot jelentő zmin a P (4; 0) pontból kiinduló félegyenes, az op-
timális megoldások ennek a félegyenesnek a pontjai. A félegyenes egyenlete az adott
ponton átmenő, adott irányvektorú egyenes ismert egyenlete (r0 + t · v , ahol most r0 a
(4; 0) pontba mutató vektor, a v irányvektor koordinátái: [2 1]∗ , a t szorzó helyére λ-t
írunk és r = x 0 ) alapján felírható:
· ¸ · ¸
4 2
x0 = +λ , és félegyenes esetén: λ ≥ 0.
0 1

A grafikus megoldásokat elsősorban a probléma szemléltetésére, egyes fogalmak,


kapcsolatok, speciális esetek egyszerű bemutatására használjuk. A gyakorlatban az LP
feladatok algebrai (számítógépes) megoldásával számolnak optimumokat.
A kettőnél több változós feladatok megoldásánál az alternatív optimumok felírása
szintén a konvex lineáris kombinációval történik. A gépi megoldásokkor az alternatív
optimumoknak viszonylag kicsi a jelentősége.
3. fejezet

További programozási esetek

A matematikai modellekben az induló és a korlátozó feltételek a lehetséges megoldások


halmazát szűkítik, a modellekben ezek formulái struktúrájukban általában megegyez-
nek. A célfüggvények lehetnek a klasszikus modellben szereplő lineáris függvények
helyett más típusúak.

3.1. A hiperbolikus programozás


Ha egy LP feladatban a célfüggvény

f1 (x )
g(x ) = → opt.
f2 (x )
alakú, akkor hiperbolikus programozási feladatról (későbbiekben: HP) van szó.
A HP feladatok geometriai megoldásánál feltétel még, hogy a nevező sehol ne legyen
0 (azaz f2 (x ) minden lehetséges változó értéknél vagy csak pozitív, vagy csak negatív
értéket vehet fel).
Feltétel még, hogy a lehetséges megoldások (nem üres) L halmaza korlátos legyen.

3.1. Példa:

x ≥0

x1 + x2 ≤ 2

2x1 − x2 ≤ 1
x1 + 2x2
g(x ) = → max .
x2 + 1
A feltételek teljesülnek, a lehetséges megoldások halmazát ábrázoljuk:

37
38 3. FEJEZET: TOVÁBBI PROGRAMOZÁSI ESETEK

A g(x ) célfüggvény értékének konstansnak kell lennie. Ez kétdimenziós esetben áb-


rázolva olyan egyenessereget (sugársort) jelent, amelyek mindegyike egy ponton, ese-
tünkben az L halmazon kívül eső póluson megy át.
A pólus koordinátáit az f1 (x ) = 0 és f2 (x ) = 0 egyenletrendszer megoldásával
kapjuk, azaz: x1 + 2x2 = 0 és x2 + 1 = 0.
Az egyenletrendszer megoldása: P (2; −1). Bebizonyítható, hogy a feltételeink-
nek megfelelő HP feladatnak mindig van véges optimuma, és az optimális értéket a
célfüggvény az L halmaz csúcspontjában veszi fel. A célfüggvény értékei a sugársor
egyeneseinek a pólus körüli forgatásával változnak.
Legnagyobb értéket az L halmazon az S pontban tapasztaljuk:

Így az optimum: x0 = [1; 1]∗ . A célfüggvény maximuma: 1,5. A gyakorlatban


előforduló (sokkal több változós) problémák megoldására megfelelő szoftvereket hasz-
nálnak.
A fenti példa számítógépes megoldása a Lingo szoftverrel:
Az adatok (a szoftver előírásokat tartalmaz az adatbevitel formájára):

x1 + x2 < 2;

2 ∗ x1 − x2 < 1;

max = (x1 + 2 ∗ x2)/(x2 + 1);


3.2. KVADRATIKUS PROGRAMOZÁS 39

A megoldást a gép a következő alakban közli:

Local optimal solution found.

Objective value: 1.500000

Variable Value
X1 1.000000
X2 1.000000

(A megoldásban további információk is találhatók, például az optimumig hány lé-


pésben jutott el a gép, duál optimumok, érzékenységvizsgálat, stb.)
A hiperbolikus programozásra a későbbiekben közlünk szöveges esettanulmányt, és
további feladatok találhatók a könyvünkhöz tartozó feladatgyűjteményben is.

3.2. Kvadratikus programozás


Kvadratikus programozási feladatban a feltételek elsőfokúak, a célfüggvényben a vál-
tozó másodfokon is szerepel.
A lehetséges megoldások halmazát a geometriai megoldásban a korábban megismert
módon állítjuk elő. A célfüggvény jellegéből adódóan lényegesen másképp történik az
optimum meghatározása.

3.2. Példa:

x1 , x 2 ≥ 0
x1 + x2 ≤ 4
−2x1 + x2 ≤ 1
z = 10x1 + 6x2 − x21 − x22 → max

Az L halmaz:
40 3. FEJEZET: TOVÁBBI PROGRAMOZÁSI ESETEK

A lehetséges megoldások halmazából az optimális érték kiválasztása nem egyenesse-


reg, hanem esetünkben koncentrikus körök segítségével történik. Az optimális megoldás
általában nem csúcspontja az L halmaznak.
A z = k (k állandó) egyenlet kört határoz meg, amelyből:
(x1 − 5)2 + (x2 − 3)2 = 34 − k, ahol 0 ≤ k ≤ 34.
A képlet C(5; 3) középpontú köröket jelent.

Az optimális értéket azon a körvonalon kapjuk, amely már „éppen eléri” a lehet-
séges megoldások halmazát. Ehhez merőlegest húzunk a középpontból az L halmaz
legközelebbi határoló vonalára, és a kapott metszéspont koordinátái jelentik azokat az
x1 és x2 értékeket, amelyeknél maximális lesz a célfüggvény értéke. Így a megoldások:
x 0 = [3 1]∗ és z0 = 26. A gyakorlati feladatok megoldására megfelelő szoftvereket
használnak.

A 3.2. Példa megoldása Lingóval:


Adatok:
max = 10 ∗ x1 + 6 ∗ x2 − x1ˆ2 − x2ˆ2;
x1 + x2 < 4;
−2 ∗ x1 + x2 < 1;
A megoldás optimális értékei:
Local optimal solution found.
Objective value: 26.000000
Variable Value
X1 3.000000
X2 1.000000
A Lingót használva megoldásokat kaphatunk akkor is, ha a célfüggvényben más,
bonyolultabb függvények is szerepelhetnek.
3.3. INTEGER PROGRAMOZÁS 41

3.3. Integer programozás


Az integer (egészértékű) programozásnál az induló feltétel az, hogy a változók csak
egész, legtöbbször nem negatív egész értékeket vehetnek fel. Általában akkor alkalmaz-
zák az egészértékű programozást, amikor nagy egyedi értékű termékek (repülőgépek,
hajók, haditechnikai eszközök stb.) gyártásának optimalizálásáról van szó. Gyakori,
hogy ha az adott feltételrendszer és célfüggvény esetén kiszámoljuk az optimumot foly-
tonos értékeket felvevő változókkal, akkor az egész értékű optimum nem egyszerűen a
folytonos értékű optimum kerekítésével adódik, bár természetesen általában nem tér el
nagyon attól.

3.3. Példa:

x1 , x2 ≥ 0; x1 , x2 pozitív egész,
x1 ≤ 3, 5
2x1 + 2x2 ≤ 11
4x2 ≤ 14,
z = 2x1 + x2 → max.

Grafikus megoldást készítünk. A lehetséges megoldásokhoz először a hagyományos


módon elkészítjük az L halmazt, majd kijelöljük ebben azokat a pontokat, amelyeknek
mindkét koordinátája egész szám (rácspontok).

A változók felvehetnek 0 értéket is. Ilyenkor rácspontok a tengelyeken is vannak.


Felvesszük az optimális célfüggvényegyenest, szintén a szokásos módon:
42 3. FEJEZET: TOVÁBBI PROGRAMOZÁSI ESETEK

Az induló feltétel miatt az optimum nem a (3, 5; 2) pontban van, hanem a cél-
függvényegyeneshez legközelebb eső rácspontban. A rajzról jól látható: x0 = [3 2]∗ és
ekkor: z0 = 8.
A feladatunkat egyszerűen megoldhatjuk Lingóval.
A változókra egész értékeket akarunk, ezt a programban @GIN jelöléssel tehetjük
meg, a modellt a szokásos módon visszük be:

x1 < 3.5;

2 ∗ x1 + 2 ∗ x2 < 11;

4 ∗ x2 < 14;

max = 2 ∗ x1 + x2;

@GIN(x1); @GIN(x2);

A megoldást a Lingo szabvány szerint kapjuk:

Global optimal solution found

Objective value: 8.000000

Variable Value
X1 3.000000
X2 2.000000
3.4. BINÁRIS PROGRAMOZÁS 43

3.4. Bináris programozás


A bináris programozásban az induló feltétel az, hogy a változók csak 0 vagy 1 értéke-
ket vehetnek fel. A korlátozó feltételek és a célfüggvény a szokás szerintiek lehetnek.
Viszonylag sok gyakorlati probléma optimalizálása bináris programozással történik.

3.4. Példa: Egy kőolajmező feltárásán 3 munkahelyen 1–1 fúrógép dolgozott. A


munka befejeztével a 3 gépet egy másik mezőre viszik át. Adottak az áttelepítés költ-
ségei az Fi régi helyekről az Rj új munkahelyekre. Egy munkahelyen 1 gép dolgo-
zik.Hogyan telepítsék át a fúrógépeket, ha a cél a költség minimalizálása? Az adatok:

R1 R2 R3
F1 4 3 5 1
F2 5 4 7 1
F3 5 6 4 1
1 1 1

Megoldás: Lényegében szállítási feladatról van szó. Az ilyen szerkezetű disztribúciós


problémát hozzárendelési feladatnak nevezik.
Az xij legyen a döntési változó, és az értéke 1, ha Fi -ről Rj -be szállítás történik,
valamint akkor 0, ha nem szállítanak.
A modell:
a) xij értéke 0 vagy 1.
b) x11 + x12 + x13 = 1
x21 + x22 + x23 = 1
x31 + x32 + x33 = 1
x11 + x21 + x31 = 1
x12 + x22 + x32 = 1
x13 + x23 + x33 = 1

c.) z = 4x11 + 3x12 + 5x13 + 5x21 + 4x22 + 7x13 + 5x31 + 6x32 + 4x33 → min.
A feladat megoldása a Lingóval egyszerű. Példaként először az integer programozás-
nál bemutatott feladatot oldjuk meg úgy, hogy a változók bináris értékeket vehetnek
fel. Ezt a Lingo bemenő adataiban úgy tehetjük fel, hogy a változókra @BIN(Xi )
feltételt alkalmazzuk:

x1 < 3.5;
2 ∗ x1 + 2 ∗ x2<11;
4 ∗ x2<14;
max = 2 ∗ x1 + x2;
@BIN(x1); @BIN(x2);
44 3. FEJEZET: TOVÁBBI PROGRAMOZÁSI ESETEK

Az integer programozásnál látható ábrából nyilvánvaló, hogy ha a változók csak 0


és 1 értékeket vehetnek fel, akkor a maximum az x1 = 1 és x2 = 1 értékeknél lesz, és a
célfüggvény optimális értéke 3. A Lingo megoldása természetesen ugyanezt adja:

Global optimal solution found.

Objective value: 3.000000

Variable Value
X1 1.000000
X2 1.000000

A kőolajfúró berendezések áthelyezésére vonatkozó feladatunkban a változók bináris


értékeire vonatkozó @BIN(xi,j ) feltételeket bárhol elhelyezhetjük a Lingo szoftverre
történő adatközlésnél:

x11 + x12 + x13 = 1;

x21 + x22 + x23 = 1;

x31 + x32 + x33 = 1;

x11 + x21 + x31 = 1;

x12 + x22 + x32 = 1;

x13 + x23 + x33 = 1;

min = 4 ∗ x11 + 3 ∗ x12 + 5 ∗ x13 + 5 ∗ x21 + 4 ∗ x22 + 7 ∗ x23 + 5 ∗ x31 + 6 ∗ x32 + 4 ∗ x33 ;

A megoldás:

Global optimal solution found.

Objective value: 12.00000

Variable Value
X11 1.000000
X12 0.000000
X13 0.000000
X21 0.000000
X22 1.000000
X23 0.000000
X31 0.000000
X32 0.000000
X33 1.000000
3.4. BINÁRIS PROGRAMOZÁS 45

Optimális megoldást kapunk tehát, ha F1 -ről R1 -be, F2 -ről R2 -be, és F3 -ról R3 -ba
telepítjük a berendezéseket, és ekkor a minimális költség 12.
(Kereshetnénk maximális költséget is, ennek értéke 17 lenne, és ekkor az 1 értéket
az x11 , x23 és az x32 venné fel.)
A feladat a felvett modell alapján egyszerűen megoldható az Excel Solverével, a
„táblázatos” módszerrel, de gyorsabban kapunk megoldást a „mátrixcserével”:

R1 R2 R3
F1 4 3 5 1
F2 5 4 7 1
F3 5 6 4 1

1 1 1

R1 R2 R3
F1 1 0 0 1
F2 0 1 0 1
F3 0 0 1 1

1 1 1 12

Megjegyzés: a feladatnak alternatív optimumai vannak. Ha ismételten lefuttat-


juk a Solvert, a gépi megoldás sajátossága miatt más optimális megoldást kaphatunk,
például:

R1 R2 R3
F1 0 1 0 1
F2 1 0 0 1
F3 0 0 1 1

1 1 1 12

A matematikai modellek gépi megoldásai során általában egyszerűen megváltoztat-


hatjuk mind a változókra vonatkozó előírásokat, mind pedig a feltételekben és a cél-
függvényben szereplő együtthatókat. Alkalmazhatunk egy feladaton belül különböző
célfüggvényeket, más-más optimum feltételeket. A szoftverek információt nyújtanak a
duál megoldásokra, és a változókra érzékenységvizsgálat lehetséges.
46 3. FEJEZET: TOVÁBBI PROGRAMOZÁSI ESETEK

3.5. Többcélú lineáris programozás


Gazdasági problémák optimális megoldásai keresésekor gyakran előfordul, hogy az
adott feltételekkel felvett modellünkhöz több célfüggvényt veszünk fel. A termékszerke-
zet optimalizálásánál is sokszor érdekel bennünket a maximumok mellett a feltételeket
kielégítő minimum is, de például pénzügyi, vagy időráfordítást vizsgáló problémáknál
sokszor az elérhető legnagyobb és legkisebb értékek közötti megoldásokat használjuk
fel. Egy feltételrendszerhez néha több, egészen különböző célnak megfelelő célfüggvényt
szerepeltetünk és keressük az optimális megoldásokat. Egyszerűsítésként feltételezzük,
hogy a lehetséges megoldások halmaza korlátos és a célfüggvények lineárisak.

Lehetséges esetek:
1. 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.

3.5. Példa: Adjuk meg grafikus úton az alábbi feladatok összes optimális megoldását:

x ≥0
x1 − 2x2 ≤2
x2 ≥1 a) f (x ) = −5x1 + 10x2 → min
2x1 + x2 ≥6 b) g(x ) = −4x1 − 2x2 → max
−2x1 + x2 ≤0 c) h(x) = −2x1 + 2x2 → min

Megoldás: A lehetséges megoldások halmazát és a különböző célfüggvények alapegye-


neseit ábrázoljuk. Az optimumokat párhuzamosok húzásával kapjuk.

A lehetséges megoldások halmaza nyílt, az extremális pontok: Q1 (1, 5; 3), Q2 (2, 5; 1),
Q3 (4; 1).
Az f célfüggvény optimumai a Q3 kezdőpontú félegyenesen vannak:
3.5. TÖBBCÉLÚ LINEÁRIS PROGRAMOZÁS 47

x 01 = [4 1]∗ v = [2 1]∗ x 0 = [4 + 2λ1 + 1λ]∗ λ ≥ 0 z0 = −10.


A g célfüggvény optimumai a Q1 Q2 szakaszon vannak:
x 01 = [1, 5 3]∗ , x 02 = [2, 5 1]∗ , x 0 = λx 01 + (1 − λ)x 02 , z0′ = −12.
u 01 = [0 0 2 13/2]∗ , u 02 = [4 0 0 3/2]∗ , u 0 = λu 01 + (1 − λ)u 02 , 0 ≤ λ ≤ 1.
A h célfüggvénynek nincs optimuma, mert a h alapegyenessel párhuzamos egyene-
seknek az L-en nincs alsó korlátjuk (felső sem).
2. Ha megadjuk az azonos jellegű, de különböző alakú célfüggvények relatív fon-
tossági súlyát, akkor a célfüggvények konvex lineáris kombinációjával egyetlen célfügg-
vényt állítunk elő. A feladatot ezzel megoldva kompromisszumos megoldást kapunk.
A célfüggvények azonos jellege azt jelenti, hogy az egyes célfüggvények dimenziója és
nagyságrendje nem lehet különböző, valamint a célfüggvények értékkészlete sem lehet
más és más.

3.6. Példa: Két terméket gyártunk 3 erőforrás felhasználásával. A termékek egységnyi


mennyiségébe 1, 1, 0 és 1, 2, 1 egység épül be. Az egységárak: 2 és 5. Olyan optimális
termékszerkezetet szeretnénk kialakítani, hogy az árbevétel a lehető legnagyobb legyen,
és az első termékből maximális mennyiséget gyártsunk.
A feladat matematikai modellje:

x1 , x 2 ≥ 0
x1 + x2 ≤ 60
x1 + 2x2 ≤ 80
x2 ≤ 30
z1 = 2x1 + 5x2 → max .
z2 = x1 → max .
Kiszámolhatjuk az optimumokat külön az első és külön a második célfüggvénnyel.
A z1 célfüggvénnyel megoldva a feladatot: x 0 = [20 30]∗ , u 0 = [10 0 10]∗ és
z10 = 190.
A z2 célfüggvénnyel az optimum: x 0 = [60 0]∗ , u 0 = [0 20 30]∗ és z20 = 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 20% lesznek a súlyok), akkor a konvex lineáris kombiná-
cióval előálló kompromisszumos célfüggvény:
zk = 0, 8(2x1 + 5x2 ) + 0, 2x1 = 1, 8x1 + 4x2 → max .
Ezzel megoldva a feladatot az optimum: x 0 = [20 30]∗ , u 0 = [10 0 10]∗ és z0 = 156.
Ha mindkét célunkat egyenlő fontosságúnak vesszük, tehát a súlyok a kompro-
misszumos célfüggvény felvételéhez 0,5 és 0,5, akkor az optimumok:
48 3. FEJEZET: TOVÁBBI PROGRAMOZÁSI ESETEK

x 0 = [40 20]∗ u 0 = [0 0 10]∗ és z0 = 110.

3. Általános eset: előállítjuk az összes célfüggvénynek megfelelő pontok halmazát,


és ezek közül választhatjuk ki mérlegelés után a legjobbakat.
Az általános eset felvétele általában eléggé bonyolult. A többcélúság általános
vizsgálata túlmutat könyvünk anyagán.
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.
4. fejezet

Dualitás, érzékenységvizsgálat

4.1. A dualitás
A lineáris programozást gyakran használják gazdasági problémák optimalizálására. A
gazdasági műveleteket többnyire két szempontból vizsgálhatjuk, amelyeknek megvaló-
sulása lehet például az eladó és a vevő nézőpontja, a beszállító és a felhasználó érdek-
viszonya, vagy hasonló, az adott gazdasági operációhoz tartozó elkülönülő érdek. A
lineáris programozási feladatok megfogalmazásában és megoldásában érvényesíthető a
kétféle nézőpont: az adott optimalizálási problémához elsőként felírt matematikai mo-
dellt primál modellnek nevezzük, az ugyanezen folyamatot a gazdasági partner szem-
pontjából tárgyaló feltételrendszert és célt pedig a duál modell írja le.

4.1.1. A normál feladat duálja


A dualitás fogalmának megértéséhez egy egyszerű feladatból indulunk ki.

4.1. Példa: Egy üzemben kétféle terméket (I és II) készítenek négy erőforrás (A, B,
C, D) felhasználásával. A technológiai mátrix:

I. II.
A 0 2
B 8 12
C 4 3
D 3 0

Az erőforrásokból rendre maximum 120, 960, 360, 225 egységnyi áll rendelkezésre. Az
első termék egységára 90, a másodiké 32 euró. Cél: olyan termelési program meg-
adása, amely a lehető legnagyobb árbevételt eredményezi. Írjuk fel a primál és duál
matematikai modellt!
Megoldás: A döntési változó az egyes termékek darabszáma. A szokásos módon

49
50 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

felírhatjuk a feladat matematikai modelljét, a primál modellt:

x ≥ 0
2x2 ≤ 120
8x1 + 12x2 ≤ 960
4x1 + 3x2 ≤ 360
3x1 ≤ 225
z = 90x1 + 32x2 → max .

A duál értelmezés: A feladat szövegében foglalt feltételekkel készen állunk a gyártásra.


Valamilyen ok miatt mégsem kezdődik el a termelés, a meglévő erőforrás-kapacitásain-
kat el akarjuk adni. Az yi jelentse az erőforrások egységárát. Nyilvánvalóan felírható
az induló feltétel: y1 ≥ 0, y2 ≥ 0, y3 ≥ 0 és y4 ≥ 0. Az első termék minden egységébe
az egyes erőforrásokból 0, 8, 4, 3 egységnyi mennyiség épül be, azaz egy termék ára az
erőforrás-egységárakkal felírva: 8y2 + 4y3 + 3y4 . Ehhez a termékhez a piacon 90 euró
ár tartozhat, ezért jogos az elvárás: kapjunk az egy darabba beépülő erőforrásokért
legalább 90 eurót, azaz:

8y2 + 4y3 + 3y4 ≥ 90.

A második termék egységára az erőforrás-egységárakkal felírva: 2y1 + 12y2 + 3y3 és


ez legyen legalább 32 euró, azaz

2y1 + 12y2 + 3y3 ≥ 32.

A célfüggvény: az erőforrásokból 120, 960, 300, 225 egységnyi áll rendelkezésre. Az


egységárakkal kifejezhető, hogy összesen mindez mennyibe kerül:

120y1 + 960y2 + 300y3 + 225y4

A vevő a vásárláskor kiadásai minimalizálására törekszik, a célja tehát:

z = 120y1 + 960y2 + 300y3 + 225y4 → min .

Így a duál modellünk:

y ≥ 0
8y2 + 4y3 + 3y4 ≥ 90
2y1 + 12y2 + 3y3 ≥ 32
z = 120y1 + 9602 + 3003 + 225y4 → min .
4.1. A DUALITÁS 51

Észrevehetjük, hogy a duál modellben a feltételek soraiban szereplő yi változók


együtthatóit a primál modell feltételeiben szereplő oszlopvektorok adják. A primál
modell jobb oldali b oszlopvektora komponensei szolgáltatják a duál célfüggvény sorá-
ban az együtthatókat. Mindezt úgy is mondhatjuk, hogy a primál–duál kapcsolatban
az oszlopok és a sorok felcserélődnek: primál modell oszlopvektoraiból lesznek a duál
modell sorvektorai és viszont. („Sor-oszlop csere.”)
Láthattuk, hogy a primál modell feltételi relációi és a cél ellenkezőjükre változnak a
duál modellben. („A relációk és a célfüggvény átfordulnak.”). A primál-duál kapcsolat
általánosabb vizsgálatához a fogalmat definiáljuk:

Definíció: az
Ax ≤ b (x ≥ 0)
z = f (x ) = c ∗ x → max.
és az A∗ y ≥ c (y ≥ 0)
z ′ = g(y) = b ∗ y → min .
feladatokat egymás duáljainak nevezzük. (Figyelem: a definícióban a b vektor nemne-
gatív voltát nem kötöttük ki!)

A feltételrendszerek kanonikus alakjai:


Ax + u = b és A∗ y − w = c.
(Tehát a duál feladat eltérésvektorát w-vel jelöljük.)

Tétel: Ha az
Ax ≤ b (x ≥ 0)
z = f (x ) = c ∗ x → max .
és az A∗ y ≥ c (y ≥ 0)
z ′ = g(y) = b ∗ y → min .
primál-duál párnál az x, illetve y lehetséges megoldás, akkor f (x ) ≤ g(y).

Bizonyítás: az Ax ≤ b egyenlőtlenséget szorozzuk balról y ∗ -gal: y ∗ Ax ≤ y ∗ b = b ∗ y (a


skalárszorzatra alkalmazható a kommutativitás). Majd az A∗ y ≥ c egyenlőtlenségnél
vegyük mindkét oldal transzponáltját, felhasználva, hogy ekkor a szorzatban a ténye-
zőket fel kell cserélni: y ∗ A ≥ c ∗ . Ezután szorozzuk meg az egyenlőtlenséget jobbról
x -szel: y ∗ Ax ≥ c ∗ x .
A következőket kaptuk:
y ∗ Ax ≤ y ∗ b = b ∗ y = g(y)
és y ∗ Ax ≥ c ∗ x = f (x ).
52 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

Tehát: f (x ) ≤ y ∗ Ax ≤ g(y), s ezzel az állítást igazoltuk.

A tételünk következménye: ha a primál feladat f célfüggvényének értéke egy x 0


helyen megegyezik a duál feladat g célfüggvényének y0 értékével, akkor az f (x 0 ) a primál
feladat f célfüggvényének maximuma, a g(y 0 ) pedig a duál feladat g célfüggvényének
minimuma, azaz az x0 a primál, az y0 pedig a duál feladat optimális megoldása.
A tétel állításából az is következik, hogy ha a primál feladatnak van megoldása,
és az f célfüggvénye nem korlátos felülről, akkor a duál feladatnak nincs lehetséges
megoldása. Hasonló érvényes „fordítva”: Ha a duál feladat g célfüggvénye nem korlátos
alulról, akkor a primál feladatnak nincs lehetséges megoldása.
A fenti gondolatmenetünk lehetővé teszi, hogy a primál és a duál feladat optimális
megoldásait algebrailag egy optimális táblázatról olvassuk le: a primál optimumokat
a „szokásos” módon, a szimplex-táblázat utolsó oszlopából, a duál megoldásokat pedig
a sor–oszlopcserének megfelelően a legalsó, a célfüggvény sorából, ellenkező előjellel,
hiszen a minimumfeladat célfüggvényét −1-gyel szorozni kellett a szimplex-módszer
alkalmazhatóságához. Ugyancsak a sor–oszlop csere miatt a primál feladat oszlopfő-
kön lévő ui eltérésváltozói „alatt” olvassuk le a duál feladat yi („valódi”) változóit a
célfüggvény sorából és fordítva: az xi változók „alatt” lesznek az optimális wi értékek.
A duál optimumok szimplex-táblázatról történő leolvasását tehát a következő algo-
ritmus szerint végezzük:
1. El kell érni és leolvasni a primál normál feladat optimális megoldását.
2. Ha z0 a primál feladat optimuma, akkor ugyanennyi lesz a duál optimum értéke
is.
3. A duál feladat y0 megoldásait a táblázat legalsó sorából olvassuk le, ellenkező
előjellel. Az yi optimális értékei a táblázat oszlopfőin lévő ui értékek alatt találhatók.
Ha valamelyik ui nincs oszlopfőn, akkor a hozzá tartozó yi értéke 0.
4. A duál feladat w0 optimális eltérésváltozóit szintén a táblázat legalsó sorából
olvassuk le, ellenkező előjellel. A wi optimális értékei a táblázat oszlopfőin lévő xi
értékek alatt találhatók. Ha valamelyik xi nincs oszlopfőn, akkor a hozzá tartozó wi
értéke 0.

4.2. Példa: Számoljuk ki a primál feladat optimumait és olvassuk le a duál optimális


megoldásokat is, ha a primál modell:

x ≥ 0
2x2 ≤ 120
8x1 + 12x2 ≤ 960
4x1 + 3x2 ≤ 360
3x1 ≤ 225
z = 90x1 + 32x2 → max .
4.1. A DUALITÁS 53

Megoldás:
A duál modell:
y ≥ 0
8y2 + 4y3 + 3y4 ≥ 90
2y1 + 12y2 + 3y3 ≥ 32
z = 120y1 + 960y2 + 300y3 + 225y4 → min .

A primál feladat szimplex-módszerrel történő megoldása:

B0 x1 x2 b B1 u4 x2 b B2 u4 u3 b
u1 0 2 120 u1 0 2 120 u1 8/9 −2/3 80
u2 8 12 960 u2 −8/3 12 360 u2 8/3 −4 120
u3 4 3 360 u3 −4/3 3 60 x2 −4/9 1/3 20
u4 3 0 225 x1 1/3 0 75 x1 1/3 0 75
−z 90 32 0 −z −30 32 −6750 −z −142/9 −32/3 −7390

x 0 = [75 20]∗ u 0 = [80 120 0 0]∗ z0 = 7390.

A duál optimumok leolvasása az optimális tábla legalsó sorából történik, u3 -hoz


tartozik (ellenkező előjellel) az y3 optimális értéke, az u4 -hez pedig az y4 optimális
értéke. A táblázatban u1 és u2 „sorkezdő” pozícióban van, a hozzájuk tartozó y1 és
y2 értékek nullák. Hasonlóan nullák az optimális duál eltérésváltozók, nincs xi az
oszlopfőn.
· ¸∗
32 142
y0 = 0 0 w 0 = 0 z0 = 7390.
3 9

A duál feladatban szereplő y vektor komponenseit árnyékáraknak is nevezik, ese-


tünkben az y0 elemei jelentik az optimális erőforrás egységárakat. A w0 komponenseit
pedig redukált költségnek is nevezik.

Példa: Egy normál lineáris programozási feladatban ismert:


 
1 −3 2
 −2 0 2 
A=  0
 b = [4 6 5 4]∗ és c ∗ = [2 1 3].
1 4 
2 −2 1

Írjuk fel a (részletes) matematikai modell primál és duál alakját, adjuk meg az
optimális primál és duál megoldást, végezzünk ellenőrzést is!
54 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

Megoldás:
A modellek:
Primál: x ≥ 0 Duál: y ≥ 0
x1 − 3x2 + 2x3 ≤ 4 y1 − 2y2 + 2y4 ≥ 2
−2x1 + 2x3 ≤ 6 −3y1 + y3 − 2y4 ≥ 1
x2 + 4x3 ≤ 5 2y1 + 2y2 + 4y3 + y4 ≥ 1
2x1 − 2x2 + x3 ≤ 4 g(y) = 4y1 + 6y2 + 5y3 + 4y4 → min
f (x ) = z = 2x1 + x2 + 3x3 → max

A szimplex-módszerrel történő megoldás:

x1 x2 x3 b x 1 u3 x 3 b u4 u3 x3 b
u1 1 −3 2 4 u1 1 3 14 19 u1 −1/2 2 19/2 12
u2 −2 0 2 6 u2 −2 0 2 6 u2 1 2 11 20
u3 0 1 4 5 x2 0 1 4 5 x2 0 1 4 5
u4 2 −2 1 4 u4 2 2 9 14 x1 1/2 1 9/2 7
−z 2 1 3 0 −z 2 −1 −1 −5 −z −1 −3 −10 −19

Az optimális megoldások:

x 0 = [7 5 0]∗ u 0 = [12 20 0 0]∗ z0 = 19.

y 0 = [0 0 3 1]∗ w 0 = [0 0 10]∗

Az ellenőrzést a kanonikus alakba történő helyettesítéssel is végezhetjük:

x1 − 3x2 + 2x3 ≤ 4-ből: x1 − 3x2 + 2x3 + u1 = 4. Helyettesítés: 7 − 15 + 12 = 4 (igaz).

−2x1 + 2x3 ≤ 6-ból: −2x1 + 2x3 + u2 = 6. Helyettesítés: −14 + 0 + 20 = 6 (igaz).

Hasonlón haladhatunk a többi sor esetén, vagy akár a duál feladat sorainál is.
A célfüggvények:

f (x ) = z = 2x1 + x2 + 3x3 = 14 + 5 = 19

és

g(y) = 4y1 + 6y2 + 5y3 + 4y4 = 15 + 4 = 19.

A feladatunk az Excel Solverjével egyszerűen megoldható.


4.1. A DUALITÁS 55

Az adattáblázat:

x1 x2 x3 b
f1 1 -3 2 0 <= 4
f2 -2 0 2 0 <= 6
f3 0 1 4 0 <= 5
f4 2 -1 1 0 <= 4
c* 2 1 3 0
x* 0 0 0

A megoldás táblázata:

x1 x2 x3 b
f1 1 -3 2 -8 <= 4
f2 -2 0 2 -14 <= 6
f3 0 1 4 5 <= 5
f4 2 -2 1 4 <= 4
c* 2 1 3 19
x* 7 5 0

Tehát az optimális megoldás (x* és c* sorából): x 0 = [7 5 0]∗ és z0 = 19.


A Solver jelentéseiből olvashatók le az eltérésváltozók és a duál optimumok.
Az eredményjelentésben az eltérés oszlopból: u 0 = [12 20 0 0]∗

Korlátozó feltételek
Cella Név Cellaérték Képlet Status Eltérés
$E$3 f1 –8 $E$3<=$G$3 Bőven 12
$E$4 f2 –14 $E$4<=$G$4 Bőven 20
$E$5 f3 5 $E$5<=$G$5 Éppen 0
$E$6 f4 4 $E$6<=$G$6 Éppen 0

A duál optimumok az érzékenységjelentésből láthatók:


56 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

Módosuló cellák
Redukált Objective Megengedhető Megengedhető
Cella Név Végérték költség Célegyüttható növekedés csökkenés
$B$8 x* x1 7 0 2 1E+30 2
$C$8 x* x2 5 0 1 1E+30 2,5
$D$8 x* x3 0 -10 3 10 1E+30

Korlátozó feltételek
Shadow Feltétel Megengedhető Megengedhető
Cella Név Végérték Árnyékár jobb oldala növekedés csökkenés
$E$3 f1 -8 0 4 1E+30 12
$E$4 f2 -14 0 6 1E+30 20
$E$5 f3 5 3 5 1E+30 5
$E$6 f4 4 1 4 24 14

Az y 0 a „Shadow Árnyékár” oszlopból, a w 0 a „Redukált költség” oszlopból (ellenkező


előjellel): y 0 = [0 0 3 1]∗ , w 0 = [0 0 10]∗ .
Az y 0 vektor elemei a feladatunkban azt jelentik, hogy ha a megfelelő erőforrás
mennyiségét 1 egységgel megnöveljük vagy csökkentjük, akkor az optimális célfüggvény
érték mennyivel nő vagy csökken. Az első két erőforráshoz 0 tartozik, azaz ezeknek a
növelése-csökkentése a célfüggvény értékét nem változtatja meg, csak a maradvány (az
u1 és u2 értéke) lesz más. A harmadik erőforrás árnyékára y3 = 3, ami azt jelenti, hogy
ha 1 egységgel megnöveljük a harmadik erőforrást, akkor a célfüggvény értéke 3-mal nő.
A negyedik erőforrás árnyékára 1, tehát az erőforrás 1 egységnyi változása az optimális
célfüggvény értékét is 1-gyel változtatja meg. De csak bizonyos érzékenységi határokon
belül! Ha az erőforrás értékének növelése meghaladja a 24-et (lásd: megengedhető
növekedés oszlopa), vagy a csökkentése a 14-et (a megengedhető csökkenés oszlopa),
akkor már nem marad változatlanul a feladat optimuma!
A redukált költség jelentése a feladatunkban: az optimális megoldásban x3 = 0
(azaz a 3. terméket nem gyártjuk). Ha mégis gyártani kellene, akkor 1 darab gyártása
10-zel csökkentené a célfüggvény értékét. Erre is érzékenységi határok vannak: az x3 -
ból maximum 10 darabot gyárthatnánk úgy, hogy az optimális x 0 megmaradjon. (A
Solver jelentéseinek további értelmezéseire még visszatérünk.)
Gyakran előfordul, hogy kiindulási („primál”) feladatnak a minimumfeladatot te-
kintjük, a definícióval képzett duál feladat lesz egyszerűbben megoldható. Az optimu-
mok leolvasását a közölt algoritmus szerint végezzük.

4.3. Példa: Egy gazdaságban az állatok etetésére négyféle takarmánykeveréket hasz-


nálhatnak, amelyeket három tápanyagból készítenek. Az egyes keverékek a tápanya-
gokból rendre 2; 1; 1 és 1; 2; 0 és 1; 0; 2, valamint 0; 2; 1 egységnyit tartalmaznak. A
tápanyagokból legalább 5; 4; és 10 egységnyi felhasználása szükséges. Az egyes keve-
rékek beszerzési árai: 5; 3; 4; 1 pénzegység. Cél a minimális költségű takarmányozási
4.1. A DUALITÁS 57

program. Írjuk fel a primál és duál optimumokat!

Megoldás: A döntési változó az egyes keverékek darabszáma.

A primál modell:

x ≥ 0
2x1 + x2 + x3 ≥ 5
x1 + 2x2 + 2x4 ≥ 4
x1 + 2x3 + x4 ≥ 10
z = 5x1 + 3x2 + 4x3 + x4 → min .

A szimplex induló tábla:

x1 x2 x3 x4 v1 v2 v3 b
û1 2 1 1 0 −1 0 0 5
û2 1 2 0 2 0 −1 0 4
û3 1 0 2 1 0 0 −1 10
z −5 −3 −4 −1 −1 −1 −1 0
−ẑ 4 3 3 3 −1 −1 −1 19

A duál modellben yi jelentse a tápanyagok egységárát:

y ≥ 0
2y1 + y2 + y3 ≤ 5
y1 + 2y2 ≤ 3
y1 + 2y3 ≤ 4
2y2 + y3 ≤ 1
z = 5y1 + 4y2 + 10y3 → max

A szimplex induló tábla ez esetben jóval egyszerűbb:

y1 y2 y3 b
w1 2 1 1 5
w2 1 2 0 3
w3 1 0 2 4
w4 0 2 1 1
−z 5 4 10 0
58 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

A megoldás:
B0 y1 y2 y3 b B1 y1 y2 w4 b B2 w3 y2 w4 b B3 w3 w1 w4 b
w1 2 1 1 5 w1 2 −1 −1 4 w1 −2 7 3 0 y2 − 72 − 71 − 73 0
w2 1 2 0 3 w2 1 2 0 3 w2 −1 6 2 1 w2 . − 67 . 1
4
w3 1 0 2 4 w3 1 −4 −2 2 y1 1 −4 −2 2 y1 . −7 . 2
w4 0 2 1 1 y3 0 2 1 1 y3 0 2 1 1 y3 . − 27 . 1
−z 5 4 10 0 −z 5 −16 −10 −10 −z −5 4 0 −20 −z − 27
7 − 74 − 12
7 −20

y 0 = [2 0 1]∗ w 0 = [0 1 0 0]∗ z0 = 20

x 0 = [4/7 0 27/7 12/7]∗ u 0 = 0z0 = 20.

A minimális költségű takarmányozási programhoz tehát az x0 komponenseinek meg-


felelő mennyiségekben kell a takarmánykeverékeket alkalmazni.
Számítógép alkalmazásakor természetesen hasonló „ügyeskedésre” nincs szükség, a
gép kezelni tudja a különböző modelleket. Például a primál modellünk megoldása
Solverrel:
x1 x2 x3 x4 b
f1 2 1 1 0 5 >= 5
f2 1 2 0 2 4 >= 4
f3 1 0 2 1 10 >= 10
c* 5 3 4 1 20
x* 4/7 0 3 6/7 1 5/7

A duál modell megoldása:

y1 y2 y3 b
f1 2 1 1 5 <= 5
f2 1 2 0 2 <= 3
f3 1 0 2 4 <= 4
f4 0 2 1 1 <= 1
c* 5 4 10 20
y* 2 0 1

Az eltérésváltozók a kiegészítő táblázatokból leolvashatók.

4.1.2. Az általános LP feladat duálja


Ha a modellünk feltételei között nincs egyenlőség, akkor a primál – duál feladatpár
definíciója szerint járunk el: átalakítjuk a formulákat úgy, hogy a modell vagy tiszta
4.1. A DUALITÁS 59

maximum-, vagy tiszta minimumfeladat legyen. Ezután alkalmazzuk a definíciót („sor


és oszlop cseréje, a relációk átfordulnak”), nem feledkezve meg arról, hogy a feltételek
jobb oldalain negatív számok is lehetnek.

Példa: Adott a következő modell:

x >= 0

3x1 + 2x2 − x3 <= 13

4x1 − 5x2 + 6x3 >= 21

z = 2x1 + 7x2 − 3x3 → max .

Írjuk fel a duál modellt!


Ehhez a második feltételt szorozzuk meg −1-gyel és ekkor a formulánk:

x >= 0

3x1 + 2x2 − x3 <= 13

−4x1 + 5x2 − 6x3 <= −21

z = 2x1 + 7x2 − 3x3 → max .

A tisztán maximumfeladat alakú modellre felírjuk a definíció szerint a duál modellt:

y1 , y2 >= 0

3y1 − 4y2 >= 2

2y1 + 5y2 >= 7

−y1 − 6y2 >= −3

z ′ = 13y1 − 21y2 → min .

Természetesen eljárhatunk úgy is, hogy első lépésként a modellünkből tiszta mini-
mumfeladatot készítünk, és arra alkalmazzuk a definíciót.
Ha egy LP feladatban valamelyik feltétel egyenlőség, akkor a duáljában a neki
megfelelő változóra nincs előjelkorlát. Ha pedig valamelyik változóra nincs előjelkorlát,
akkor a duál feladatban a neki megfelelő feltétel egyenlőség. Az indoklást egy példával
mutatjuk be.

4.4. Példa: Adott a következő matematikai modell:


60 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

x >= 0

3x1 + 2x2 − x3 <= 13

4x1 − 5x2 + 6x3 = 21

z = 2x1 + 7x2 − 3x3 → max .

Írjuk fel a duál modellt!


Ismert, hogy ha A = B, akkor ez a reláció megfogalmazható úgy is, hogy az A <= B
és A >= B egyszerre érvényes legyen. Ennek megfelelően a második feltételt átírjuk,
azaz a 4x1 −5x2 +6x3 = 21 helyett felvehető: 4x1 −5x2 +6x3 <= 21 és 4x1 −5x2 +6x3 >=
>= 21. Az utóbbi relációt −1-gyel megszorozhatjuk: −4x1 +5x2 −6x3 <= −21. Tehát
a primál modellünk a következő alakban is írható:

x >= 0

3x1 + 2x2 − x3 <= 13

4x1 − 5x2 + 6x3 <= 21

−4x1 + 5x2 − 6x3 <= −21

z = 2x1 + 7x2 − 3x3 → max .

Az átalakított modellre alkalmazható a dualitás definíciója. A második feltétel


„megkettőzése” miatt ideiglenesen bevezetjük az y2′ és az y2′′ változókat:

y1 , y2′ , y2′′ >= 0

3y1 + 4y2′ − 4y2′′ >= 2

2y1 − 5y2′ + 5y2′′ >= 7

−y1 + 6y2′ − 6y2′′ >= −3

z ′ = 13y1 + 21y2′ − 21y2′′ → min .

Ha bevezetjük az y2′ − y2′′ = y2 jelölést, akkor az induló feltételben az y2 előjelét


nem tudhatjuk, hiszen az y2′ − y2′′ különbség lehet negatív is és pozitív is. A 3 feltétel
viszont egyszerűbb lesz. Így a duál modell:

y1 >= 0 és y2 -re nincs előjelkorlát.

3y1 + 4y2 >= 2


4.1. A DUALITÁS 61

2y1 − 5y2 >= 7

−y1 + 6y2 >= −3

z ′ = 13y1 + 21y2 → min .

Ha az általános feladat algebrai megoldásából duál optimumokat is akarunk leol-


vasni, akkor a szimplex algoritmus alkalmazása során a kalapos változók oszlopait nem
hagyhatjuk el. Azt a duál változót, amelyre nincs előjelkorlát, a szimplex-táblázatban
kalapos változóként vesszük fel. A gépi megoldások viszont általában automatikusan
kezelik a problémát.

4.5. Példa: Adott egy LP feladat matematikai modellje:

x ≥ 0
x1 + 2x2 + 2x3 ≥ 3
x1 + x3 = 2
x1 + x2 + x3 ≥ 1
z = f (x ) = 2x1 + 5x2 + 4x3 → min .
Írjuk fel a duál modellt és mindkét feladatot oldjuk meg!

Megoldás:
A duál modell: y1 ≥ 0, és y3 ≥ 0 (de y2 -re nincs előjelkorlát!)

y1 + y2 + y3 ≤ 2
2y1 + y3 ≤ 5
2y1 + y2 + y3 ≤ 4
z = g(y) = 3y1 + 2y2 + y3

→ max .

A primál feladat optimális megoldása a Solverrel:

x1 x2 x3 b
f1 1 2 2 3 >= 3
f2 1 0 1 2 <> 2
f3 1 1 1 2 >= 1
c* 2 5 4 6
x* 1 0 1

Ebből és az érzékenységvizsgálat táblájából a teljes megoldás leolvasható:


62 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

Módosuló cellák
Redukált Objective Megengedhető Megengedhető
Cella Név Végérték költség Célegyüttható növekedés csökkenés
$B$6 x* x1 1 0 2 2 0,5
$C$6 x* x2 0 1 5 1E+30 1
$D$6 x* x3 1 0 4 0,5 2

Korlátozó feltételek
Shadow Feltétel Megengedhető Megengedhető
Cella Név Végérték Árnyékár jobb oldala növekedés csökkenés
$E$2 f1 3 2 3 1 1
$E$3 f2 2 0 2 1 0,5
$E$4 f3 2 0 1 1 1E+30

x 0 = [1 0 1]∗ u 0 = [0 0 1]∗ z0 = 6 y 0 = [2 0 0]∗ w 0 = [0 1 0]∗ .

A duál modell megoldásából azonos eredményeket kapunk:

y1 y2 y3 c
f1 1 1 1 2 <= 2
f2 2 0 1 4 <= 5
f3 2 1 1 4 <= 4
b* 3 2 1 6
y* 2 0 0 max

Ebből a táblázatból már látható: z0 = 6y 0 = [2 0 0]∗ és w 0 = [0 1 0]∗ .


Az érzékenységjelentésből az eredeti primál feladat optimumai adódnak:

Redukált Objective Megengedhető Megengedhető


Cella Név Végérték költség Célegyüttható növekedés csökkenés
$B$7 y* y1 2 0 3 1 1
$C$7 y* y2 0 0 2 1 0,5
$D$7 y* y3 0 -1 1 1 1E+30

Korlátozó feltételek
Shadow Feltétel Megengedhető Megengedhető
Cella Név Végérték Árnyékár jobb oldala növekedés csökkenés
$E$3 f1 2 1 2 2 0
$E$4 f2 4 0 5 1E+30 1
$E$5 f3 4 1 4 0 2

Az árnyékár és a redukált költség oszlopából: x 0 = [1 0 1]∗ , u 0 = [0 0 1]∗ .


4.2. A SZIMPLEX-TÁBLÁZATOK ELLENŐRZÉSE 63

4.2. A szimplex-táblázatok ellenőrzése


A szimplex-módszer kézi alkalmazása során könnyű számolási hibát véteni. Gyakran
szükség van arra is, hogy egy adott probléma olyan változatát dolgozzuk ki, amelyben
például a kapacitásértékek megváltoznak, vagy a célfüggvény-együtthatókon akarunk
módosítani. Az ellenőrzési módszer lehetőséget nyújt arra, hogy az esetleges számolási
hibákat egyszerűen észrevegyük és kijavítsuk, illetve az adott feladatnál kért varián-
sokat a teljes eljárás megismétlése nélkül meg tudjuk adni. Az ellenőrzés módszerére
épül az érzékenységvizsgálat, amelynek a gyakorlati feladatok megoldásában nagy je-
lentősége van.
Az ellenőrzési módszert normál feladatra mutatjuk be. Az általános feladatnál csak
annyi az eltérés, hogy a módszerünk alkalmazhatóságához a kalapos változókat benn
kell hagynunk a szimplex-táblázatokban.

4.2.1. Az ellenőrzés módszerének elméleti alapjai


Az x ≥ 0, A · x ≤ b (ahol b ≥ 0), valamint z = f (x ) = c ∗ x → max normál feladatnál
az induló szimplex-táblázat általános alakja:

x∗
u A b
−z c∗ 0

A lehetséges bázistranszformációk után a vektorainkat particionált alakban vegyük fel:


jelölje x1 az x vektor komponensei közül azokat, amelyek bekerültek az új bázisba, x2
pedig a bázisba nem kerülteket (az oszlopfőn maradottakat). Hasonlóan bontsuk fel az
u vektort: u1 a báziscserében részt vett komponenseket tartalmazza, u2 a többit. Az A
mátrixnak, valamint a b és c ∗ vektoroknak a bázistranszformációk után új elemei lesz-
nek. A b1 ’ és c∗1 ’ legyenek a báziscserékben részt vett vektorokhoz tartozó koordináták,
a b2 ’ és c∗2 ’ pedig a báziscserékben részt nem vettek koordinátái. A szimplex-táblázat
alakja így a bázistranszformációk után:

u∗1 x∗2
x1 i bi1
A
u2 bi2
−z c∗i
1 c∗i
2 −z0

Felírhatjuk a táblázatból adódó egyenletrendszer általános megoldását:


   i 
x1 b1 · i ¸ · ¸
i A u
 u2  =  b 2  − · 1
, ahol c ∗ ’= [c ∗1 ’ c∗2 ’]
c∗i x2
−z −z0
64 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

A normál feladatnak mindig létező triviális megoldása az x = 0, u = b és z = 0.


Helyettesítünk (az u = [u 1 u 2 ]∗ helyett a b = [b 1 b 2 ]∗ -t írva):
   i 
01 b1 · i ¸ · ¸
 b2  =  b2  −i A b 1
· .
c∗i 02
0 −zo

Rendezés után:  i   
· i
¸ · ¸ b1 0
A b1
· =  bi2  −  b2 
c ∗i
02
−zo 0
Ez a képlet teszi lehetővé azt, hogy a szimplex-módszer alkalmazása során bármelyik
táblázatunk sorait ellenőrizzük.
A dualitás elvéből levezethető a táblázatok oszlopai ellenőrzésére szolgáló összefüg-
gés:

[ c1 * 0* ]·[A’] = [ 0* c2 * ] – [ c1 *’ c2 *’ ].

Az ellenőrzést a gyakorlatban úgy végezzük, hogy a szimplex-táblázathoz kiegészítő


(ún. perem) sorokat és oszlopokat csatolunk a következőképpen:

b∗1 0∗
u∗1 x2
c 1 x1 bl1 0
Ai
0 u2 bl2 b2
−z c∗i
1 c∗l
2 zo 0

0 c∗2 0

Konkrétan:
1.) A peremsorokkal a táblázat kiegészítése úgy történik, hogy a legfelső sorba került
ui értékek fölé írjuk az eredeti kapacitásvektor megfelelő komponenseit, a szemközti
legalsó peremsorba a megfelelő helyekre nullákat írunk. Az ui értékekkel azonos sorban
lévő xi értékek fölé nullák kerülnek, a legalsó peremsorba a megfelelő helyekre pedig az
eredeti célfüggvény megfelelő együtthatóit írjuk.
2.) A peremoszlopokkal történő kiegészítés: a bal oldali oszlopba került xi értékek
mellé írjuk a megfelelő célfüggvény-együtthatókat, a szemközti jobb oldali peremosz-
lopba a megfelelő helyekre nullákat írunk. A bal oldali oszlopban maradt ui értékek
mellé nullák kerülnek, a szemközti jobb oldali oszlopba pedig a megfelelő kapacitásvek-
tor-komponensek.
A célfüggvényérték (z0 ) alá és mellé 0 kerül.
A táblázatunk kiegészítésével az ellenőrzés elméletileg levezetett módszere egysze-
rűen, szinte mechanikusan végrehajtható.
4.2. A SZIMPLEX-TÁBLÁZATOK ELLENŐRZÉSE 65

4.6. Példa: Egy normál LP feladat induló táblájában adott b = [40 37 27 26]∗ és
c = [5 8 5 7 2]∗ . Optimális táblaként a következőt kaptuk:

x 1 u4 u1 x 4 u2 b
x3 0 −1 1 0 0 14
x5 −1 −1 0 1 1 11
.
u3 2 2 −1 −2 −1 2
x2 1 1 0 1 0 26
−z −1 −1 −5 −3 −2 −300

Vegyük fel az ellenőrzéshez szükséges peremsorokat és -oszlopokat!


Megoldás: A felső peremsorba került ui értékek „vitték magukkal” a megfelelő
kapacitásértékeket, az oszlopfőn maradt xi változók fölé nullák kerülnek. A bal ol-
dali oszlopba került xi változók szintén „vitték magukkal” a megfelelő célfüggvény-
együtthatókat, az u3 sorkezdő maradt, 0-t írunk mellé. A szemközti sorok és oszlopok
kitöltése a fenti leírásnak megfelelően történik. A kiegészített táblázat:

0 26 40 0 37
x 1 u4 u1 x 4 u2 b
5 x3 0 −1 1 0 0 14 0
2 x5 −1 −1 0 1 1 11 0
0 u3 2 2 −1 −2 −1 2 27
8 x2 1 1 0 1 0 26 0
−z −1 −1 −5 −3 −2 −300 0
5 0 0 7 0 0

Az ellenőrzés végrehajtása az elméleti összefüggések alapján a kiegészített táblázat


felhasználásával a következő algoritmus szerint történik:
1.) Sorellenőrzés: a felső peremsor elemeit komponáljuk az A’ mátrix soraival (a
megfelelő értékeket rendre megszorozzuk a „belső táblázat” soraiban lévő számokkal és
a szorzatokat összeadjuk). A kapott összegnek meg kell egyeznie az utolsó sorban és a
peremsorban lévő számok különbségével.
2.) Oszlopellenőrzés: a bal oldali peremoszlop elemeit komponáljuk az A’ mátrix
oszlopaival. A kapott összegnek meg kell egyeznie az alsó peremsorban és az utolsó
sorban lévő számok különbségével.

Példa: Az előző példa feladatában végezzünk sor- és oszlopellenőrzést!


Megoldás: Sorellenőrzés:
?
1. sorra: 0 · 0 + 26 · (−1) + 40 · 1 + 0 · 0 + 37 · 0 = 14 − 0. Valóban: 14 = 14.
2. sorra: −26 + 37 = 11
3. sorra: 52 − 40 − 37 = 2 − 27, azaz −25 = −25.
4. sorra: 26 = 26.
66 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

A sorellenőrzés a célfüggvény sorára is érvényes: −26 − 200 − 74 = −300.


Oszlopellenőrzés:
?
1. oszlopra: 5 · 0 + 2 · (−1) + 0 · 2 + 8 · 1 = 5 − (−1). Valóban: 6 = 6.
2. oszlopra: −5 − 2 + 8 = 0 − (−1), valóban: 1 = 1.
3. oszlopra: 5 = 0 − (−5).
4. oszlopra: 2 + 8 = 7 − (−3).
5. oszlopra: 2 = 0 − (−2).
A szimplex tábla utolsó oszlopára is érvényes az eljárás: 5 · 14 + 2 · 11 + 8 · 26 =
= 0 − (−300).
Az ellenőrzés módszerével egyszerűen befejezhetővé tehetünk „félbehagyott” opti-
mumszámítási feladatokat, amint azt a következő példa is mutatja.

4.7. Példa: Egy lineáris programozási feladat kapacitásvektora: b = [60 50 100]∗ ,


célfüggvénye: z = 3x1 + 9x2 + 3x3 + 6x4 + 7x5 → max. Az optimális tábla részlete:

x 1 u2 x 3 u1 u3 b
x4 2 −1 −1 0 1
x2 −1 1 2 1 −1
x5 1 0 −1 −1 1
−z

Írjuk fel a primál és duál optimális megoldást! Ha a c2 értékét az eredeti feladatban


9-ről 7-re változtatjuk, akkor mi lesz az optimális megoldás?
Megoldás: A táblázatban hiányzó értékek az ellenőrzéssel kiszámolhatók.
A számolásnál eljárhatunk úgy is, hogy peremsorokkal és peremoszlopokkal kiegé-
szítjük a táblázatot, valamint ideiglenes változókat vezetünk be a hiányzó értékekre és
egyenletmegoldást végzünk.
A b oszlopában hiányzó három számot jelöljük β1 , β2 és β3 -mal. A sorellenőrzés
szerint igaz az első sorra: 50 · (−1) + 100 · 1 = β1 − 0, azaz a hiányzó szám: β1 = 50.
A második sorra: 50 · 1 + 60 · 1 + 100 · (−1) = 10 = β2 .
A harmadik sorra: 60 · (−1) + 100 · 1 = 40 = β3 .
A −z sorában lévő 5 célfüggvény-együtthatót jelöljük γ1 , γ2 , γ3 , γ4 , és γ5 -tel. Az
oszlopellenőrzés szabálya szerint az első oszlopra: 6 · 2 + 9 · (−1) + 7 · 1 = 3 − γ1 . Így:
γ1 = −7.
A második oszlopra: 6 · (−1) + 9 · 1 = 0 − γ2 , azaz γ2 = −3.
Hasonló számolással a hiányzó 3 szám: −2, −2 és −4.
A célfüggvény értéke akár sorellenőrzéssel, akár oszlopellenőrzéssel most már ki-
számolható: −z0 = −670. Így a peremsorokkal és -oszlopokkal kiegészített optimális
táblázatunk és az abból leolvasható optimumok:
4.3. VARIÁNSSZÁMÍTÁS 67

0 50 0 60 100
x 1 u2 x 3 u1 u3 b
6 x4 2 −1 −1 0 1 50 0
9 x2 −1 1 2 1 −1 10 0
7 x5 1 0 −1 −1 1 40 0
−z −7 −3 −2 −2 −4 −670 0
3 0 3 0 0 0

x 0 = [0 10 0 50 40]∗ u 0 = [0 0 0]∗ z0 = 670.

y 0 = [2 3 4]∗ w 0 = [7 0 2 0 0]∗ .

A kérdés második része a feladat egy változatának (variánsának) számolását jelenti.


Ha c2 9-ről 7-re változik, akkor a táblázat a fentihez hasonló számítások után:

x 1 u2 x 3 u1 u3 b x 1 u2 x 2 u1 u3 b
x4 2 −1 −1 0 1 50 x4 . . . . . 55
x2 −1 1 2 1 −1 10 Javítás: x3 . . . . . 5
x5 1 0 −1 −1 1 40 x5 . . . . . 45
−z −9 −1 2 0 −6 −650 −z −8 −2 −1 −1 −5 −660

A primál optimum: x0 = [0 0 5 55 45]∗ u 0 = 0 z0 = 660.

A duál optimum: y0 = [1 2 5]∗ w 0 = [8 1 0 0 0]∗

4.3. Variánsszámítás
A variáns számításnál alapvetően azt vizsgáljuk, hogy a kapacitásvektor komponensei-
nek, vagy a célfüggvény-együtthatóknak a megváltozása a szimplex-táblázat szerkezetét
hogyan befolyásolja. Elvileg lehetnek változások az A mátrix elemei között is, de ez
egyrészt ritka, hiszen a megfelelő gazdasági feladatban ez többnyire technológia vál-
tozást jelent, másrészt az eljárás analóg azzal, amit a kapacitás, vagy a célfüggvény
megváltozásakor követünk.
A variánsszámításnál az ellenőrzés módszerét használjuk. A megfelelő szimplex-
táblázat peremértékeit egyszerűen kicseréljük a megváltozott értékekre és ezekkel ki-
számoljuk a táblázat új értékeit. Az új táblázatot javítjuk, ha szükséges.

4.8. Példa: Egy normál LP feladatban adott a célfüggvény-együtthatók vektora:


68 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

c ∗ = [3 9 3 6 7], és a kapacitásvektor: b = [80 50 100]∗ . Az optimális tábla részlete:


x 1 u2 x 3 u1 u3 b
x4 2 −1 −1 0 1
x2 −1 1 2 1 −1
x5 1 0 −1 −1 1
−z
Írjuk fel a primál és duál optimális megoldást!
Adjuk meg a feladat következő variánsának optimális megoldásait: a kapacitás-
vektor első komponense 10-zel, a harmadik 20-szal nő; a második célegyüttható 2-vel
csökken, a negyedik pedig 1-gyel csökken!

Megoldás: A táblázat kiegészítése az eredeti feladatra:


0 50 0 80 100
x 1 u2 x 3 u1 u3 b
6 x4 2 −1 −1 0 1 50 0
9 x2 −1 1 2 1 −1 30 0
7 x5 1 0 −1 −1 1 20 0
−z −7 −3 −2 −2 −4 −710 0
3 0 3 0 0 0
Optimumok leolvasása:
x 0 = [0 30 0 50 20]∗ u 0 = [0 0 0]∗ z0 = 710.
y 0 = [2 3 4]∗ w 0 = [7 0 2 0 0]∗ .
Variánsszámítás: az új értékeket beírjuk a peremekre, és ezekkel a számokkal ismét
kiszámoljuk a szimplex-táblázat utolsó sorát és oszlopát.
0 50 0 90 120
x 1 u2 x 3 u1 u3 b
5 x4 2 −1 −1 0 1 70 0
7 x2 −1 1 2 1 −1 20 0
7 x5 1 0 −1 −1 1 30 0
−z −7 −2 1 0 −5 −700 0
3 0 3 0 0 0
A tábla nem optimális, a célfüggvény sorában van pozitív szám is. Így az x2 és x3 csere
után a táblázatunk:
x1 u2 x2 u1 u3 b
x4 3/2 −1/2 1/2 1/2 1/2 80
x3 −1/2 1/2 1/2 1/2 −1/2 10
x5 1/2 1/2 1/2 −1/2 1/2 40
−z −13/2 −5/2 −1/2 −1/2 −9/2 −710
4.4. ÉRZÉKENYSÉGVIZSGÁLAT 69

Optimumok leolvasása:

x 0 = [0 0 10 80 40]∗ u 0 = [0 0 0]∗ z0 = 710.

y 0 = [0, 5 2, 5 4, 5]∗ w 0 = [6, 5 0, 5 0 0 0]∗ .

Gépi megoldásoknál a variánsokat igen egyszerűen megkaphatjuk: a megfelelő szá-


mok megváltoztatása után futtatjuk a programot és leolvassuk az új eredményeket.

4.4. Érzékenységvizsgálat
Az érzékenységvizsgálat algebrai módszerénél az a célunk, hogy meghatározzuk: az
optimális táblázat szerkezete milyen mértékű változtatásokat visel el, azaz a bi és a ci
értékek megváltoztatása után is optimális marad a megoldásunk.
Konkrétan: az érzékenységvizsgálatban arra keresünk válaszokat, hogy
a) milyen határok között módosíthatjuk a célfüggvény-együtthatóit úgy, hogy op-
timális maradjon a (primál) megoldás;
b) hogyan változtathatjuk meg a b, a kapacitásvektor komponenseit, hogy az adott
táblázat szerkezete (optimális volta) ne változzon meg.
Ha arra törekszünk, hogy a megváltoztatott kiindulási adatokkal ne változzon az
optimális tábla, akkor a szimplex-táblázatban kizárólag az utolsó oszlop, illetve az
utolsó sor adatai módosulhatnak.
Ha egy szimplex-táblázat optimális, akkor az utolsó oszlopában nem szerepelhetnek
negatív számok, és a célfüggvény sorában nem lehetnek pozitív értékek. Az érzékenység-
vizsgálatnál ezt a tényt használjuk ki. Módszerünket egy példán keresztül mutatjuk
meg.

4.9. Példa: Egy normál LP feladat matematikai modelljében adott a kapacitásvektor


és a célfüggvény-együtthatók vektora: b = [100 200 350 150]∗ és c ∗ = [6 − 6 − 3 3]. A
megoldás során kapott szimplex tábla részlete:

u1 x 2 x 3 u4
x1 1/2 2 1/2 0
u2 0 −1 5 −1
u3 1 3 5 −2
x4 −1/2 −1 −1/2 1
−z

Adjuk meg a feladat optimális primál és duál megoldását! Végezzünk teljes érzékeny-
ségvizsgálatot!
70 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

Megoldás: Az ellenőrzés módszerével a peremértékek felírása után meghatározhatjuk


a hiányzó értékeket:
100 0 0 150
u1 x2 x3 u 4 b
6 x1 1/2 2 1/2 0 50 0
0 u2 0 −1 5 −1 50 200
0 u3 1 3 5 −2 150 350
3 x4 −1/2 −1 −1/2 1 100 0
−z −3/2 −15 −9/2 −3 −600 0
0 −6 −3 0 0
Leolvashatjuk az optimumokat:
x 0 = [50 0 0 100]∗ u 0 = [0 50 150 0]∗ z0 = 600.
y 0 = [1, 5 0 0 3] ∗ w 0 = [0 15 4, 5 0]∗
Az érzékenységvizsgálathoz a szimplex tábla utolsó oszlopában és utolsó sorában
lévő értékeket célszerűen ideiglenes változókkal helyettesítjük:
100 0 0 150
u1 x 2 x 3 u4 b
6 x1 1/2 2 1/2 0 β1 0
0 u2 0 −1 5 −1 β2 200
0 u3 1 3 5 −2 β3 350
3 x4 −1/2 −1 −1/2 1 β4 0
−z γ1 γ2 γ3 γ4 −z0 0
0 −6 −3 0 0
A kapacitásértékekre végzünk először érzékenységvizsgálatot. Ehhez azt használjuk fel,
hogy az optimális megoldásban a βi értékek nem lehetnek negatívak. Ebben az esetben
csak az utolsó oszlopban vesszük fel az ideiglenes változókat.
Ha az első kapacitásértékre, a b1 -re végezzük a vizsgálatot, akkor az u1 -hez tartozó
kapacitásérték (ez 100) helyett a b1 változót írjuk, és sorellenőrzést végzünk. Az egyen-
lőségekben szereplő βi értékek mindegyikéről az optimális megoldás miatt fel kell ten-
nünk, hogy nem negatívak. A feltételekből b1 -re korlátokat kapunk:
b1 0 0 150
u1 x2 x 3 u4 b
6 x1 1/2 2 1/2 0 β1 0
0 u2 0 −1 5 −1 β2 200
0 u3 1 3 5 −2 β3 350
3 x4 −1/2 −1 −1/2 1 β4 0
−z −3/2 −15 −9/2 −3 −z0 0
0 −6 −3 0 0
4.4. ÉRZÉKENYSÉGVIZSGÁLAT 71

Az első sorból: b1 · 21 + 0 = β1 − 0. Mivel β1 ≥ 0, ezért b1 · 21 ≥ 0, így b1 ≥ 0.


A második sorból b1 -re nem kapunk feltételt, hiszen b1 -et nullával szorozzuk.
A harmadik sorból: b1 − 300 = β3 − 350, azaz β3 = b1 + 50 ≥ 0, tehát b1 ≥ −50.
A negyedik sorból: b1 · −12
+ 150 = β4 ≥ 0, így b1 ≤ 300.
A feltételeknek egyszerre kell teljesülniük, azaz b1 -re az alsó határ 0, a felső 300.
A táblázatunk tehát optimális marad, ha: 0 ≤ b 1 ≤ 300.
A b1 -re kapott határokhoz a célfüggvény sorában lévő értékekkel kiszámolhatjuk
az optimális célfüggvényérték határait is. A célfüggvény sorában most az eredetileg
kiszámolt számok vannak, nem az ideiglenes változók.
Először megadjuk, hogy a célfüggvény hogyan függ a b1 -től, ehhez sorellenőrzést
végzünk a −z sorában:
−3 −9
b1 · 2
+ 0 · (−15) + 0 · 2
+ 150 · (−3) = −z0 − 0.

Tehát z0 = 1, 5b1 + 450. Ez azt jelenti, hogy az első erőforrás árnyékára 1,5 (ez
az y 0 vektor első komponense), azaz az érzékenységi határok között az első erőforrás
értékét 1 egységgel növelve a célfüggvény értéke 1,5-del nő.
A b1 és a z0 között lineáris kapcsolat van, így a z0 határait a b1 határainak behe-
lyettesítésével kapjuk : 450 ≤ z 0 ≤ 900.
A b2 -re és a b3 -ra nem kell az ellenőrzési eljárást végigvinni. Ebből a két kapaci-
tásértékből az optimális táblázatban maradvány van, például a b2 -nél 50 egység. Az
eredeti kapacitásvektorban a b2 értéke 200 volt, így minden olyan b2 mellett optimális
marad a táblázat, amelyben b2 ≥ 200−50 = 150. A b2 ebben az intervallumban történő
változása a célfüggvény optimális értékét nem érinti, az marad 600.
Az érzékenységvizsgálat eredménye tehát b 2 -re: 150 ≤b 2 < ∞ és z 0 =600.
Hasonlóan b3 -ra (ez esetben is maradvány van: 150, eredetileg volt 350, tehát most
b3 ≥ 350 − 150 = 200): 200 ≤b 3 < ∞ és z0 =600.
Az érzékenységvizsgálat b4 -re ugyanúgy történik, mint b1 -re: a táblázatban u4 fölé
150 helyett b4 -et írunk és sorellenőrzést végzünk (az u1 fölé visszakerült a 100):

100 0 0 b4
u1 x2 x 3 u4 b
6 x1 1/2 2 1/2 0 β1 0
0 u2 0 −1 5 −1 β2 200
0 u3 1 3 5 −2 β3 350
3 x4 −1/2 −1 −1/2 1 β4 0
−z −3/2 −15 −9/2 −3 −zo 0
0 −6 −3 0 0

A feltételek:
Az első sorból b4 -re nincs feltétel (nullával szorozzuk az ellenőrzéskor).
A második sorból: −b4 = β2 − 200, azaz β2 = 200 − b4 ≥ 0, így b4 ≤ 200.
A harmadik sorból: 100 − 2b4 = β3 − 350, azaz β3 = 450 − 2b4 ≥ 0, így b4 ≤ 225.
72 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

A negyedik sorból: −50 + b4 = β4 ≥ 0, vagyis b4 ≥ 50.


A három feltételből adódó halmazok közös része:

50 ≤b 4 ≤ 200.

A b4 és a z0 összefüggése:

100 · −3
2
+ 0 · (−15) + 0 · −9
2
+ (−3) · b4 = −z0 − 0, azaz: z0 = 3b4 + 150.

Tehát a negyedik erőforrás árnyékára 3, és a z0 határai: z0 ∈ [300; 750].


(Természetesen minden esetben teljesülnie kell annak, hogy a bi értékekre az érzé-
kenységvizsgálattal kapott határok közé kell esnie az eredeti kapacitásvektor megfelelő
értékeinek, azaz például a b4 eredeti értéke 150, ez 50 és 200 közé esik.)
Érzékenységvizsgálat a célfüggvény-együtthatókra: az ellenőrzés módszerét használ-
juk ez alkalommal is. A célfüggvény sorában ideiglenes változókat helyezünk el, a b
oszlopában maradnak a korábban kiszámolt számértékek.
Ha a c1 vizsgálatával kezdünk, akkor a kiegészített táblázatban a c1 eredeti szám-
értéke helyett c1 -et írunk paraméterként, a többi érték marad:

100 0 0 150
u1 x 2 x 3 u4 b
c 1 x1 1/2 2 1/2 0 50 0
0 u2 0 −1 5 −1 50 200
0 u3 1 3 5 −2 150 350
3 x4 −1/2 −1 −1/2 1 100 0
−z γ1 γ2 γ3 γ4 −zo 0
0 −6 −3 0 0

Akkor optimális a szimplex-táblázat, ha a célfüggvény sorában nincs pozitív szám,


tehát minden γi ≤ 0. Az oszlopellenőrzés módszerével az első oszlopra:
c1 · 12 + 3 · −1
2
= 0 − γ1 . Ha γ1 ≤0, akkor −γ1 ≥0, tehát c1 · 21 + 3 · −1
2
≥ 0, azaz: c1 ≥ 3.
A második oszlopra: 2c1 − 3 = −6 − γ2 , így −γ2 = 2c1 + 3 ≥ 0, vagyis c1 ≥ −1, 5.
A harmadik oszlopra: 0, 5c1 − 1, 5 = −3 − γ3 , ebből: −γ3 = 0, 5c1 + 1, 5 ≥ 0, így
c1 ≥ −3.
A negyedik oszlopból nincs feltétel c1 -re (0 a c1 szorzója).
A három alsó korlát közül legnagyobb a 3, így az érzékenységvizsgálat eredménye:

3 ≤ c1 < ∞

Kiszámoljuk a c1 változásának határát a célfüggvényre (a kapacitás oszlopából):

50c1 + 300 = 0 − (−z0 ) = z0 .


4.4. ÉRZÉKENYSÉGVIZSGÁLAT 73

Így a célfüggvényre: 450 ≤ z0 < ∞.


Az x2 és az x3 nem került a báziscserék során az optimális táblán „sorkezdő po-
zícióba”, így a hozzájuk tartozó c2 és c3 megváltozása nem befolyásolja az optimális
célfüggvény értéket. A duál leolvasás szabályából következően a c2 és c3 lehetséges
értékeinek felső korlátait az optimális táblából leolvasható eltérésváltozók értéke és az
induló célértékek összege adja:

c 2 ≤ 15 + (−6) = 9 és c 3 ≤ 4, 5 + (−3) = 1, 5. A z 0 = 600 mindkét esetben.

(Természetesen ugyanezeket az eredményeket kapjuk akkor is, ha a c1 érzékenységvizs-


gálatánál látott eljárást alkalmazzuk, például c2 esetében: az alsó peremsorban ekkor a
−6 helyett c2 -t írunk, és oszlopellenőrzést végzünk erre az oszlopra, ugyanis a többiben
nincs c2 : 12 − 3 = c2 − γ2 , azaz −γ2 = 9 − c2 ≥ 0, ebből: c2 ≤ 9.)
Befejezésül a c4 érzékenységvizsgálata:

100 0 0 150
u1 x 2 x 3 u4 b
6 x1 1/2 2 1/2 0 50 0
0 u2 0 −1 5 −1 50 200
0 u3 1 3 5 −2 150 350
c4 x4 −1/2 −1 −1/2 1 100 0
−z γ1 γ2 γ3 γ4 −zo 0
0 −6 −3 0 0

Az első oszlopból: 3 − 0, 5c4 = 0 − γ1 ≥ 0, ebből: c4 ≤ 6.


A második oszlopból: 12 − c4 = −6 − γ2 , tehát −γ2 = 18 − c4 ≥ 0, ebből: c4 ≤ 18.
A harmadik oszlopból: 3 − 0, 5c4 = −3 − γ3 , tehát −γ3 = 6 − 0, 5c4 ≥ 0, ebből:
c4 ≤ 12.
A negyedik oszlopból: c4 = −γ4 ≥ 0, ebből: c4 ≥ 0.
A négy feltételből adódó halmazok közös része:

0 ≤ c 4 ≤ 6.

A célfüggvényre: 300 + 100c4 = z0 , így: 300 ≤ z 0 ≤ 900.


Megjegyzés: a célfüggvényre az eredeti optimális táblázatban kapott értéket is tar-
talmaznia kell az érzékenységvizsgálattal a célfüggvény értékre kapott optimális inter-
vallumoknak, ugyanúgy, ahogy a kapacitásoknál láttuk. Például a c4 eredeti értéke 3
volt, ez a c4 -re kapott érzékenységi intervallumba esik.
Az érzékenységvizsgálat az ellenőrzési módszer elméleti indoklásában lévő mátrix-
aritmetikai formulák felhasználásával is elvégezhető.
Gyakorlásul tekintsük át egy LP feladat kézi, majd gépi megoldását és az érzékeny-
ségvizsgálatokat:
74 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

4.10. Példa: Adott egy LP modell és a feladat optimális táblájának részlete:

x >= 0

x1 + 2x2 + x3 <= 30

x1 + x3 <= 20

2x1 + x2 + x3 <= 35

z = 2x1 + x2 + 4x3 → max .

x1 u1 u2
x2 0 1/2 −1/2
u3 1 −1/2 −1/2
x3 1 0 1
−z
Adjuk meg a primál és a duál optimális megoldást és végezzünk teljes érzékenységvizs-
gálatot!

Megoldás: A modellből leolvasható a kapacitásvektor: b = [30 20 35]∗ és a célfüggvény-


együtthatók: c = [2 1 4]∗ .
A táblázatot kiegészítjük az ellenőrzés módszerével és leolvassuk az optimumokat:

0 30 20
x1 u1 u2
1 x2 0 1/2 −1/2 5 0
0 u3 1 −1/2 −1/2 10 35
4 x3 1 0 1 20 0
−z −2 −1/2 −7/2 −85 0
2 0 0 0

x 0 = [0 5 20]∗ u 0 = [0 0 10]∗ z0 = 85.

y 0 = [0, 5 3, 5 0]∗ w 0 = [2 0 0]∗ .

Érzékenységvizsgálat a kapacitásra (nem részletezzük a lépéseket):


b1
20 ≤ b1 ≤ 50 80 ≤ z0 = 70 + 2
≤ 95.

0 ≤ b2 ≤ 30 15 ≤ z0 = 15 + 3, 5b2 ≤ 120.

25 ≤ b3 < ∞ z0 = 85.
4.4. ÉRZÉKENYSÉGVIZSGÁLAT 75

A célfüggvény-együtthatókra:

−∞ < c1 ≤ 4 z0 = 85.

0 ≤ c2 ≤ 8 80 ≤ z0 = 80 + c1 ≤ 120

2 ≤ c3 < ∞ 45 ≤ z0 = 5 + 20c3 < ∞.

4.11. Példa: Egy üzemben három terméket gyártanak, 3 erőforrás felhasználásával.


A technológiai mátrix, a kapacitásvektor és a célfüggvény-együtthatók vektora:
 
1 2 1
A= 1 0 1  b = [30 20 35]∗ c∗ = [2 1 4].
2 1 1

A kapacitások felső korlátok, a célfüggvényre maximumot keresünk.


Adjuk meg a primál és duál optimális megoldásokat, valamint a teljes érzékenység-
vizsgálatot az Excel Solverjével!
(A példánk azonos a 4.10. Példa feladatával, bár más a megfogalmazás.)
Megoldás: A feladat normál LP feladat, a modell felírása nem szükséges.
A Solver adattáblázata:
x1 x2 x3 b
f1 1 2 1 0 <= 30
f2 1 0 1 0 <= 20
f3 2 1 1 0 <= 35
c* 2 1 4 0
x* 0 0 0

A megoldás táblázata:

x1 x2 x3 b
f1 1 2 1 30 <= 30
f2 1 0 1 20 <= 20
f3 2 1 1 25 <= 35
c* 2 1 4 85
x* 0 5 20 0

A leolvasható optimum:

x 0 = [0 5 20]∗ z0 = 85.
76 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

A teljes primál és duál optimumot a Solver jelentéseiből olvashatjuk ki.

Korlátozó feltételek
Cella Név Cellaérték Képlet Status Eltérés
$E$3 f1 30 $E$3<=$G$3 Éppen 0
$E$4 f2 20 $E$4<=$G$4 Éppen 0
$E$5 f3 25 $E$5<=$G$5 Bőven 10

Az eltérésváltozók optimumát tehát az eredményjelentésből kapjuk:

u 0 = [0 0 10]∗

A duál optimumok az érzékenységjelentésből olvashatók ki:

Módosuló cellák
Redukált Objective Megengedhető Megengedhető
Cella Név Végérték költség Célegyüttható növekedés csökkenés
$B$7 x* x1 0 -2 2 2 1E+30
$C$7 x* x2 5 0 1 7 1
$D$7 x* x3 20 0 4 1E+30 2

Korlátozó feltételek
Shadow Feltétel Megengedhető Megengedhető
Cella Név Végérték Árnyékár jobb oldala növekedés csökkenés
$E$3 f1 30 0,5 30 20 10
$E$4 f2 20 3,5 20 10 20
$E$5 f3 25 0 35 1E+30 10

Az y 0 az „Árnyékár” oszlopból adódik, a w 0 a „Redukált költség” oszlopból (ellenkező


előjellel): y 0 = [0, 5 3, 5 0]∗ w 0 = [2 0 0]∗ .
Vegyük észre, hogy ez a feladat az optimumok vonatkozásában (természetesen) pon-
tosan ugyanarra az eredményre vezetett, mint az előző, manuálisan megoldott feladat.
Ott az érzékenységvizsgálatkor a kapacitásértékekre a következőket kaptuk:

20 ≤ b1 ≤ 50 0 ≤ b2 ≤ 30 25 ≤ b3 < ∞.

Az érzékenységjelentésben azt láthatjuk, hogy az eredeti kapacitásértékekhez (a „fel-


tétel jobb oldala” oszlop) mekkora lehet a megengedhető növekedés, illetve csökkenés.
Így a b1 eredeti értéke (30) növekedhet 20-szal és csökkenhet 10-zel, azaz:

30 − 10 = 20 ≤ b1 ≤ 30 + 20 = 50.
4.4. ÉRZÉKENYSÉGVIZSGÁLAT 77

A gép eredménye természetesen megegyezik a korábban kiszámolt értékkel. Ugyanez


igaz b2 -re és b3 -ra is. (A gép számára a végtelent egy nagy szám, 1E +30 = 1030 jelenti.)
A célfüggvény optimális értékeinek változása a kapacitáshatárok megváltozásával az
árnyékárak segítségével adható meg. Az előző feladatban a 20 ≤ b1 ≤ 50 határokhoz
az optimális célfüggvény értékhatáraira kaptuk, hogy 80 ≤ z0 ≤ 95. Az érzékenység-
jelentés az eredeti optimumhoz (85) képest a megengedhető növekedést a felső határig
adja meg az árnyékárral: 20 · 0, 5 = 10 és a megengedhető csökkenést: 10 · 0, 5 = 5. Így
természetesen ugyanazt kapjuk, mint a kézi számolással:

20 ≤ b1 ≤ 50 és 80 ≤ z0 ≤ 95.

A b2 esetén a z0 felső határáig 10 · 3, 5 = 35-öt, alsó határáig 20 · 3, 5 = 70-et


„haladhatunk”, tehát ez esetben: 85 − 70 = 15 ≤ z0 ≤ 85 + 35 = 120, ami azonos a
korábban kiszámolttal.
A célfüggvény-együtthatókra kapott érzékenységi határok az érzékenységjelentés
„Módosuló cellák” táblázatából olvashatók le, a kapacitásoknál látottakhoz hasonlóan.
Az előző feladatban kaptuk:

−∞ < c1 ≤ 4, 0 ≤ c2 ≤ 8, 2 ≤ c3 < ∞.

Az érzékenységjelentésből c1 -re: 2 − 1030 ≈ −∞ < c1 ≤ 2 + 2 = 4.


A c2 -re: 1 − 1 = 0 ≤ c2 ≤ 1 + 7 = 8 és c3 -ra 4 − 2 = 2 ≤ c3 < 4 + 1030 ≈ ∞.
A megfelelő célfüggvény optimális értékeinek változása a „Módosuló cellák” táblá-
zatából a „Végérték” oszlop, valamint a megengedhető növekedés-csökkenés oszlopaiból
következik. Így c1 -hez 0-val szorzunk, marad z0 = 85,
A c2 -höz 80 ≤ z0 ≤ 120 tartozott, ez az érzékenységjelentésből:

85 − 5 · 1 = 80 ≤ z0 ≤ 85 + 7 · 5 = 120.

A c3 esetén: 45 ≤ z0 < ∞, a táblázatból: 85 − 2 · 20 = 45 ≤ z0 ≤ 85 + 1030 ≈ ∞.


A számítógépes szoftverek többségét gyakorlati felhasználásra készítik, így az el-
nevezések és az adatok megjelenési formái eltérhetnek az elméleti megfontolásokban,
levezetésekben szereplő terminológiától.
A Lingo is alkalmas az optimalizálás mellett az érzékenységvizsgálatra is. Az előző
feladatunk megoldása és érzékenységvizsgálata ezzel a szoftverrel:
Adatbevitel:

x1+2*x2+x3<30;

x1+x3<20;

2*x1+x2+x3<35;

max=2*x1+x2+4*x3;
78 4. FEJEZET: DUALITÁS, ÉRZÉKENYSÉGVIZSGÁLAT

Az optimális megoldások:
Global optimal solution found.
Objective value: 85.00000
Variable Value Reduced Cost

X1 0.000000 2.000000
X2 5.000000 0.000000
X3 20.00000 0.000000
Row Slack or Surplus Dual Price

1 0.000000 0.5000000
2 0.000000 3.500000
3 10.00000 0.000000
A szokásos írásmóddal:
x 0 = [0 5 20]∗ u 0 = [0 0 10]∗ z0 = 85.
y 0 = [0, 5 3, 5 0]∗ w 0 = [2 0 0]∗ .
Az érzékenységvizsgálat nem alapbeállítás, ehhez a következők szükségesek:
– Felvisszük a modellt a Lingóban megkövetelt módon.
– A program fejlécén középen a LINGO oszlopban behívjuk az opciókat (Option,
rákattintunk).
– A felugró ablakban a General Solver fül bejelölése után az első oszlopban a Dual
Computations-nál a Prices § Ranges-t állítjuk be és okézzuk.
– Ezután megoldatjuk a modellt (Solve, vagy a „piros” ikon).
– A megoldásablak bezárása után a LINGO oszlopban a Range-re kattintva kapjuk
az érzékenységvizsgálat eredményeit:
Objective Coefficient Ranges
Current Allowable Allowable
Variable Coefficient Increase Decrease
X1 2.000000 2.000000 INFINITY
X2 1.000000 7.000000 1.000000
X3 4.000000 INFINITY 2.000000

Righthand Side Ranges


Row Current Allowable Allowable
RHS Increase Decrease
2 20.00000 10.00000 20.00000
3 35.00000 INFINITY 10.00000
1 30.00000 20.00000 10.00000
4.4. ÉRZÉKENYSÉGVIZSGÁLAT 79

Az Increase a megfelelő értékre vonatkozóan az elmozdítás felső határát, a Decrease


az alsó határát, az INFINITY pedig a végtelent jelenti.
Eredményeink rendezés után természetesen azonosak a manuálisan, illetve az Excel
Solverrel kapottakkal.
5. fejezet

Disztribúciós feladatok

Az elosztás, szétosztás (disztribúció), optimális („legigazságosabb”) voltának igénye


sokféle problémánál felmerül. Gondoljunk például arra, hogyan járjunk el, ha adott
pénzösszeg befektetésével a lehető legnagyobb nyereséget akarjuk elérni. Konkrétan:

5.1. Példa: 10 millió forintot elhelyezünk 3 alapba, legyenek ezek a következők: 5


milliót részvénybe, 3 milliót államkötvénybe, 2 milliót lekötött betétbe fektetünk. Négy
társaságnál fektetjük be a tőkét, azaz portfoliót hozunk létre. Az egyes társaságoknál
4, 3, 2 és 1 millió forintot helyezünk el. A társaságok adott időszakra az alapok szerinti
bontásban megadták a százalékos hozamokat a következő táblázat szerint:

A B C D
I 19 17 20 16 5
II 9,4 9,8 8,9 9,2 3
III 7,8 8 7,2 6,6 2
4 3 2 1

(Az A, B, C, D a társaságokat, az I, II, III az alapokat jelentse.)


Hogyan, milyen bontásban helyezzük el a pénzünket, milyen portfóliót hozzunk
létre, ha a maximális hozam elérése a célunk?
A fenti pénzügyi allokációs feladat mellett sokszor találkozhatunk valamilyen szál-
lítási probléma optimalizálásának szükségességével.
A gyakorlatban személyek, termékek, nyersanyagok szállításának lehető leggazdasá-
gosabb megszervezése fontos kérdés. A gazdaságosság mutatója lehet a lehető legkisebb
szállítási összköltség megvalósulása, vagy a legrövidebb úton, vagy időben a lehető leg-
hamarabb történő szállítás megszervezése. Tekintsünk egy egyszerű példát:

5.2. Példa: Adott két feladóállomás, a tőlük elszállítandó áru mennyisége rendre
70 és 30 egységnyi. 3 rendeltetési hely van, igényeik rendre 30, 20, 50 egységnyi. A
feladóhelyek és a rendeltetési állomások között minden esetben lehetséges szállítás. Az
egyes relációkban a szállítási költségek egy egység szállítására vonatkozóan:

80
5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 81

F1 -ből R1 -be: 1, F1 -ből R2 -be: 4, F1 -ből R3 -ba: 2, valamint F2 -ből R1 -be: 3, F2 -ből
R2 -be: 2, F2 -ből R3 -ba: 1. Készítsük el a minimális költségű szállítási tervet!
Áttekinthetőbb a probléma, ha táblázatot készítünk!
Az F1 és F2 feladóhelyekről az R1 , R2 , R3 célállomásokra adottak a mozgatandó
mennyiségek, és az egyes relációkban (Fi -ből Rj -be) az egységnyi szállítandó mennyi-
ségre jutó költségek:
R1 R2 R3
F1 1 4 2 70
F2 3 2 1 30
30 20 50

A célunk tehát minimális költségű szállítási terv.


A szállítási probléma modellez sok más optimalizálandó gazdasági-szervezési hely-
zetet, így általánosítva és részletesebben a szállítási feladattal foglalkozunk.
A probléma felvetése: Adott m feladóállomás, amelyeknél ismertek a róluk el-
szállítandó mennyiségek, valamint adott n célállomás, (rendeltetési hely) és a közöttük
történő szállítások költsége, egy egységnyi szállítandó mennyiségre vonatkozóan. Elő-
ször keressük azt az optimális szállítási programot, amelynek során a feladóhelyekről
minden árut elszállítanak, minden rendeltetési állomás megkapja az igényelt mennyi-
séget, és az összköltség minimális lesz.
A szállítási feladatokat más, bonyolultabb további feltételekkel is tárgyalni fogjuk.
A szállítási feladat megoldása többféleképpen történhet:
1. A lineáris programozás szokásos módszereivel: matematikai modellt írunk fel a
feladathoz, majd az megoldjuk (manuálisan vagy gépi úton).
2. A disztribúciós módszerrel, amelynek során először előállítunk egy lehetséges
disztribúciót („szállítási relációk szétosztását”), majd ezt javítjuk az optimum eléréséig.
A szállítási feladatok megoldására más módszerek is léteznek, kezdve az ötletszerű
szervezéstől az összes lehetséges változat kiszámításáig és közülük az optimális kiválasz-
tásáig. Ezek a megoldások többnyire nem optimálisak, nagy az idő- és költségigényük,
így mi a lineáris programozáson alapuló optimalizálásokkal foglalkozunk.

5.1. A szállítási feladat matematikai modellje és meg-


oldása
Ismeretes, hogy a matematikai modell felírásához először a döntési változókat kell de-
finiálni. Ezután a feltételek és a cél matematikai megfogalmazása következik, majd
a modell megoldása, esetünkben számítógépes szoftverekkel. Egyszerűbb (legfeljebb
5-6 feladó és rendeltetési hely) feladatok esetén a manuális megoldásokat is viszonylag
rövid idő alatt megkaphatjuk. Az eljárást az 5.2. Példa adataival mutatjuk be.
82 5. FEJEZET: DISZTRIBÚCIÓS FELADATOK

A feladat adatainak szokásos felírása:


R1 R2 R3
F1 1 4 2 70
F2 3 2 1 30
30 20 50

Célunk tehát a minimális költségű szállítási terv.

Megoldás: A döntési változó, az xij változó jelentse az egyes relációkban (azaz Fi -ből
az Rj -be) szállításra kerülő áru mennyiségét.
Felírható a modell induló feltétele: xij ≥ 0, ahol 1 ≤ i ≤ 2 és 1 ≤ j ≤ 3.
A feltételi relációkat a szállítandó mennyiségek határozzák meg:

x11 + x12 + x13 = 70

x21 + x22 + x23 = 30

x11 + x21 = 30

x12 + x22 = 20

x13 + x23 = 50

(Ügyeljünk arra, hogy a feltételek felvételénél ne kövessünk el elemi hibát, azaz a


szállítási költségeket ne tegyük egyenlővé a szállítandó mennyiségekkel, például abszolút
hozzá nem értésre vall, ha valaki feltételként x11 + 4x12 + 2x13 = 70 formulát ír fel!)
A célunk a szállítás összköltségének minimalizálása:

z = x11 + 4x12 + 2x13 + 3x21 + 2x22 + x23 → min .

A feladat szimplex induló táblája:

x11 x12 x13 x21 x22 x23 b


û1 1 1 1 0 0 0 70
û2 0 0 0 1 1 1 30
û3 1 0 0 1 0 0 30
û4 0 1 0 0 1 0 20
û5 0 0 1 0 0 1 50
z −1 −4 −2 −3 −2 −1 0
−ẑ 2 2 2 2 2 2 200

(A matematikai modell – nem triviális – feltételei mind egyenlőségek és a cél a mini-


mum, eszerint írtuk fel az induló táblázatot.)
5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 83

A szimplex-táblázat néhány bázistranszformáció után optimális megoldást szolgál-


tat:
x12 x21
x13 1 −1 40
x23 −1 1 10
x11 0 1 30
x22 1 0 20
û5 0 0 0
z −1 −3 160
Leolvassuk az optimális megoldást: x11 = 30, x13 = 40, x22 = 20, x23 = 20, a többi
relációban 0 a szállított mennyiség, és az összköltség minimuma 160.
Az optimális megoldás megadható mátrixalakban:
· ¸
30 0 40
X= és Kmin =160.
0 20 20

Az adatok táblázatán is megadható az optimális (vagy egy lehetséges) megoldás:

R1 R2 R3
30 40
F1 1 4 2 70
20 10
F2 3 2 1 30
30 20 50

(A szállítási programba bekerült szállítási relációt bekereteztük, és a szállított mennyi-


séget fölé írtuk.)
Az optimalizálást az Excellel kétféleképpen végezzük el.
1. Felvesszük a matematikai modell alapján az adattáblázatot:

x11 x12 x13 x21 x22 x23


F1 1 1 1 0 0 0 0 >< 70
F2 0 0 0 1 1 1 0 >< 30
F3 1 0 0 1 0 0 0 >< 30
F4 0 1 0 0 1 0 0 >< 20
F5 0 0 1 0 0 1 0 >< 50
c* 1 4 2 3 2 1 0
x* 0 0 0 0 0 0

A megoldás:
84 5. FEJEZET: DISZTRIBÚCIÓS FELADATOK

x11 x12 x13 x21 x22 x23


F1 1 1 1 0 0 0 70 >< 70
F2 0 0 0 1 1 1 30 >< 30
F3 1 0 0 1 0 0 30 >< 30
F4 0 1 0 0 1 0 20 >< 20
F5 0 0 1 0 0 1 50 >< 50
c* 1 4 2 3 2 1 160
x* 30 0 40 0 20 10

Az optimális megoldások a táblázatról leolvashatók. Természetesen készíthetünk


különböző jelentéseket, amelyek vizsgálata tanulságos.
2. A feladat megoldható az ún. mátrixcsere módszerével is. Az induláshoz az
adattáblázat alá X0 -ra üres táblázatot veszünk fel:

R1 R2 R3
F1 1 4 2 70
F2 3 2 1 30
30 20 50

R1 R2 R3
F1 0 0 0 0
F2 0 0 0 0
0 0 0

Az optimális táblázatot a szokásos módon kapjuk:


R1 R2 R3
F1 30 0 40 70
F2 0 20 10 30
30 20 50 160

A feladat Lingóval történő megoldásához felvesszük az adatokat:


x11 + x12 + x13 = 70;
x21 + x22 + x23 = 30;
x11 + x21 = 30;
x12 + x22 = 20;
x13 + x23 = 50;
min = x11 + 4 ∗ x12 + 2 ∗ x13 + 3 ∗ x21 + 2 ∗ x22 + x23;
5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 85

Az optimális megoldás a korábbi eredményekkel természetesen azonos:

Global optimal solution found.

Objective value: 160.0000

Total solver iterations: 4

Variable Value Reduced Cost


X11 30.00000 0.000000
X12 0.000000 1.000000
X13 40.00000 0.000000
X21 0.000000 3.000000
X22 20.00000 0.000000
X23 10.00000 0.000000

Általánosítás: Egy szállítási feladatban Fi jelentse a feladóhelyeket, fi a tőlük el-


szállítandó áru mennyiségét, Rj a rendeltetési helyeket és rj az általuk igényelt áru-
mennyiséget (1 ≤ i ≤ m és 1 ≤ j ≤ n). A C = [cij ] mátrix elemei jelentsék az egyes
relációkban az egységnyi áru szállításának költségeit, az X = [xij ] mátrix elemei pe-
dig az egyes relációkban szállításra kerülő árumennyiségeket. Az adataink táblázatos
alakja:
R1 R2 .. .. Rn
F1 c11 c12 .. .. c1n f1
F2 c21 c22 .. .. c2n f2
: .. .. .. .. .. ..
: .. .. .. .. .. ..
Fm cm1 cm2 .. .. cmn fm
r1 r2 .. .. rn
Feltételeink: A kiindulást jelentő ún. zárt feladatban a szállítandó és az igényelt
mennyiségek összege egyezzen meg:
m
X n
X
fi = rj
i=1 j=1

és a cél legyen az összköltség minimuma.


A matematikai modell:

xij ≥ 0 (1 ≤ i ≤ m és 1 ≤ j ≤ n)
Xn
xij = fi (1 ≤ i ≤ m)
j=1
86 5. FEJEZET: DISZTRIBÚCIÓS FELADATOK

m
X
xij = rj (1 ≤ j ≤ n)
i=1
m X
X n
z= cij xij → min .
i=1 j=1

A zárt szállítási feladat általános matematikai modellje mátrixalgebrai jelölésekkel


is felvehető. Ehhez jelöljük az adott elszállítandó mennyiségek [f1 , f2 . . . fm ∗
] oszlop-
vektorát f-fel, az igényelt mennyiségek [r1 r2 . . . rn ] sorvektorát pedig r -gal. A feladat

akkor zárt, ha: 1 ∗ ·f = r ∗ ·1 . A C és X mátrixok jelentése azonos a fent megadottakkal.


Az X mátrix elemei a döntési változók.
Az induló feltétel: X ≥ 0.
A korlátozó feltételek: X · 1 = f és 1 ∗ · X = r ∗ .
m
A célfüggvény: z = (e ∗i · C )(X ∗ · e i ) → min.
P
i=1

A szállítási feladat modelljéhez hasonló, de más területről származó disztribúciós


problémánál célként maximum is lehetséges, amint azt az 5.1. Példa pénzügyi alloká-
ciós feladatában láthatjuk.
A feladat adatainak táblázata:

A B C D
I 19 17 20 16 5
II 9,4 9,8 8,9 9,2 3
III 7,8 8 7,2 6,6 2
4 3 2 1

A maximális hozam elérése a célunk.

Megoldás: Az xij döntési változó jelentse az egyes alapokba valamelyik társaságnál


elhelyezett tőkét. Felírható a modell induló feltétele: xij ≥ 0, ahol 1 ≤ i ≤ 3 és
1 ≤ j ≤ 4.
A feltételi relációkat a „peremértékek” határozzák meg:

x11 + x12 + x13 + x14 = 5


x21 + x22 + x23 + x24 = 3
x31 + x32 + x33 + x34 = 2
x11 + x21 + x31 = 4
x12 + x22 + x32 = 3
x13 + x23 + x33 = 2
5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 87

x14 + x24 + x34 = 1

A célunk a hozam maximalizálása:

z = 0, 19x11 + 0, 17x12 + 0, 2x13 + 0, 16x14 + 0, 094x21 + 0, 098x22 + 0, 089x23 +


+0, 092x24 + 0, 078x31 + +0, 08x32 + 0, 072x33 + 0, 066x34 → max

A modell megoldása kézi eszközökkel hosszadalmas, a gépi megoldás a megfelelő


szoftver használatával az adatok bevitele után gyorsan eredményt szolgáltat, például a
Lingóval a beolvasás:

x11 + x12 + x13 + x14 = 5;


x21 + x22 + x23 + x24 = 3;
x31 + x32 + x33 + x34 = 2;
x11 + x21 + x31 = 4;
x12 + x22 + x32 = 3;
x13 + x23 + x33 = 2;
x14 + x24 + x34 = 1;
max = 19 ∗ x11 + 17 ∗ x12 + 20 ∗ x13 + 16 ∗ x14 + 9.4 ∗ x21 + 9.8 ∗ x22 +
+8.9 ∗ x23 + 9.2 ∗ x24 + 7.8 ∗ x31 + +8 ∗ x32 + 7.2 ∗ x33 + 6.6 ∗ x34 ;

A megoldás:

Global optimal solution found.

Objective value: 141.6000

Variable Value Reduced Cost


X11 3.000000 0.000000
X12 0.000000 2.200000
X13 2.000000 0.000000
X14 0.000000 2.600000
X21 0.000000 0.2000000
X22 2.000000 0.000000
X23 0.000000 1.700000
X24 1.000000 0.000000
X31 1.000000 0.000000
X32 1.000000 0.000000
X33 0.000000 1.600000
X34 0.000000 0.8000000
88 5. FEJEZET: DISZTRIBÚCIÓS FELADATOK

5.1.1. A disztribúciós problémák speciálisabb esetei


A szállítási–elosztási feladatok matematikai modellje felírásánál speciális előírásokat
is figyelembe tudunk venni. Az egyes eseteket a szállítási feladattal mutatjuk be, de
természetesen más disztribúciós problémáknál is előfordulhatnak hasonlók.

5.1.1.1. Mennyiségi korlátozás adott szállítási viszonylatban


Gyakran előfordul, hogy bizonyos feladóhelyek és célállomások között a szállítás adott
korlátok között valósulhat csak meg. Lehetséges az is, hogy meghatározott relációkban
az alsó és felső korlát egybeesik, nulla is lehet, azaz tiltjuk abban a viszonylatban a
szállítást. Figyeljük meg ezt a következő példán:

5.3. Példa: Írjuk fel a következő szállítási feladathoz tartozó matematikai modellt, a
szimplex induló táblát, ha a harmadik feladóhelyről az első célállomásra legalább 5, de
legfeljebb 10 egységnyi mennyiség szállítható! Cél a költség minimuma.

1 5 2 2 12
1 3 2 1 8
2 6 4 3 21
16 14 6 5

Megoldás: A döntési változó xij , amely az i-edik feladóhelyről a j-edik célállomásra


szállítandó mennyiséget jelöli.
A modell:

a) xij ≥ 0 (1 ≤ i ≤ 3, 1 ≤ j ≤ 4)

b) x11 + x12 + x13 + x14 = 12


x21 + x22 + x23 + x24 = 8
x31 + x32 + x33 + x34 = 21
x11 + x21 + x31 = 16
x12 + x22 + x32 = 14
x13 + x23 + x33 = 6
x14 + x24 + x34 = 5
x31 ≥ 5
x31 ≤ 10

(Az x31 -re vonatkozó alsó és felső korlátokat a modellbe külön sorokban kell bevinni!)
c) z = x11 +5x12 +2x13 +2x14 +x21 +3x22 +2x23 +x24 +4x31 +6x32 +4x33 +3x34 → min.
5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 89

A szimplex induló tábla:

x11 x12 x13 x14 ... x31 ... x34 v8


û1 1 1 1 1 . 0 . 0 0 12
û2 0 0 0 0 . 0 . 0 0 6
..
.. . . . . . . . . .
û7 0 0 0 1 . 0. . 1 0 5
û8 0 0 0 0 . 1 . 0 −1 5
u9 0 0 0 0 . 1 . 0 0 10
z −1 −5 −2 −2 . −2 . 0 0 0
−ẑ 2 2 2 2 . 4 . 2 −1 97
A manuális megoldás is lehetséges, de hosszadalmas, így a későbbiekben ezzel nem fog-
lalkozunk. A számítógépes megoldás többféle módon elvégezhető. Lingóval az adatbe-
vitel:

x11+x12+x13+x14=12;

x21+x22+x23+x24=8;

x31+x32+x33+x34=21;

x11+x21+x31=16;

x12+x22+x32=14;

x13+x23+x33=6;

x14+x24+x34=5;

x31>5;

x31<10;

min=x11+5*x12+2*x13+2*x14+x21+3*x22+2*x23+x24+4*x31+6*x32+4*x33+3*x34;

A megoldás az xij értékekre:

Global optimal solution found.

Objective value: 128.0000


90 5. FEJEZET: DISZTRIBÚCIÓS FELADATOK

Variable

X11 11.00000

X12 0.000000

X13 1.000000

X14 0.000000

X21 0.000000

X22 8.000000

X23 0.000000

X24 0.000000

X31 5.000000

X32 6.000000

X33 5.000000

X34 5.000000

Természetesen a gépi megoldásban megtalálhatók a duál optimumok, az eltérésvál-


tozók és érzékenységvizsgálat is kérhető.
Ha valamelyik szállítási viszonylatban tiltótarifát alkalmazunk, azaz nem történhet
szállítás, akkor az X mátrix megfelelő elemére nullát írunk elő a modellben. Például
tételezzük fel, hogy F1 -ből nem lehet szállítani R1 -be, azaz x11 = 0. A modellünkbe
ezt a feltételt felvesszük, és ezzel az optimális alapmegoldás módosul:

Objective value: 145.0000

Variable

X11 0.000000

X12 6.000000

X13 6.000000

X14 0.000000

X21 6.000000
5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 91

X22 2.000000

X23 0.000000

X24 0.000000

X31 10.00000

X32 6.000000

X33 0.000000

X34 5.000000

A tiltótarifa a modellbe úgy is bevihető, hogy az adott szállítási viszonylatban


a szállítási költséget a többihez képest nagyságrendekkel nagyobbra vesszük, ekkor
ugyanis a program automatikusan kikerüli ezt a relációt.

5.1.1.2. Névleges állomás beiktatása


Ha az elszállítandó mennyiségek összege nem egyezik meg az igényelt mennyiségek
összegével, akkor névleges állomás beiktatásával előbb zárttá kell tenni a feladatot. A
névleges állomás lehet feladóhely vagy célállomás és ez az állomás „viszi el” a különb-
séget. A szállítási költség a névleges állomás sorában, illetve oszlopában mindig 0. A
megoldásokat azután a tárgyalt módokon kaphatjuk meg.

5.4. Példa: Adjuk meg a következő szállítási feladat optimális megoldását, ha a 2.


célállomás nem kaphat árut az első feladótól, a 4. szállító a második rendeltetési helyre
nem szállíthat és a második feladónál nem maradhat áru.
R1 R2 R3
F1 6 5 8 70
F2 7 6 7 60
F3 2 5 3 70
F4 8 4 7 20
80 70 40
Megoldás: Névleges célállomást kell beiktatni, mert az elszállítandó mennyiségek
összege 220, a rendeltetési helyek igény pedig 190. A névleges célállomás „igénye”
30, oszlopában a szállítási költségek nullák. Így az adatokat tartalmazó táblázat a
következő lesz:
6 5 8 0 70
7 6 7 0 60
2 5 3 0 70
8 4 7 0 20
80 70 40 30
92 5. FEJEZET: DISZTRIBÚCIÓS FELADATOK

Ha lehetséges szállítási programot akarunk felvenni, akkor a kritikus szám 7 lesz, és az


induló tábla például:
40 30
6 M 0 70
50 10
7 6 7 M 60
40 30
2 5 3 0 70
20
8 M 7 0 20
80 70 40 30
M az adott szállítási költségekhez képest nagy költséget jelent, például M = 99. Ezeket
az értékeket a feladat feltételeinek megfelelően helyeztük el az adatok között, tehát
például az x12 = 0 tiltást jelzi a c12 = M . A második feladónál nem maradhat áru
feltétel pedig úgy fejezhető ki, hogy ez a feladó nem szállíthat a névleges állomásnak,
a névleges állomásra történő „szállításkor” ugyanis nem mozog az áru, azaz az adott
állomáson marad.
A matematikai modell felvételével a feladat egyszerűen megoldható a Lingóval, vagy
az Excel Solverjével. Ez utóbbival gyors eredményt kapunk az ún. „mátrixcsere” mód-
szerével. Ehhez az Excelben felvesszük az adatokat és az „üres” X mátrixot:

R1 R2 R3 R4
F1 6 99 8 0 70
F2 7 6 7 99 60
F3 2 5 3 0 70
F4 8 99 7 0 20

80 70 40 30

R1 R2 R3 R4
F1 0 0 0 0 0
F2 0 0 0 0 0
F3 0 0 0 0 0
F4 0 0 0 0 0

0 0 0 0 0

A korábban ismertetett eljárással kapjuk az optimális megoldást:


5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 93

R1 R2 R3 R4
F1 60 0 0 10 70
F2 0 60 0 0 60
F3 20 10 40 0 70
F4 0 0 0 20 20

80 70 40 30 930

A megoldás érdekessége, hogy ismét lefuttatva a megoldást, az optimum nagyságára


azonos eredményt, de más optimális szállítási programot kaphatunk:

R1 R2 R3 R4
F1 40 0 0 30 70
F2 0 60 0 0 60
F3 40 10 20 0 70
F4 0 0 20 0 20

80 70 40 30 930

A feladatnak ugyanis alternatív optimuma van, ahol a „másik” alapmegoldásra a


közelítő számításokat alkalmazó szoftver „rátalálhat”. Az érzékenységvizsgálat eredmé-
nyeit felhasználva tudatosan is előállíthatjuk az alternatív alapmegoldásokat.
A disztribúciós feladatokhoz számos további feltétel is köthető, ezekre konkrét pél-
dákat közlünk az esettanulmányokban.

5.1.1.3. Hozzárendelési feladat

A disztribúciós feladatoknál gyakran előfordul, hogy a döntési változókra különböző


feltételeket szabnak meg (alsó és felső korlátok, egészértékűség, csak kétféle értéket
vehetnek fel stb.), és a korlátozó feltételek, valamint a célok között is lehetnek extrém
esetek. Az egyik ilyent, az ún. hozzárendelési problémát egy példán keresztül mutatjuk
be.

5.5. Példa: Egy beruházó négy nagyobb ingatlan (F1 , F2 , F3 , F4 ) létesítésére kér ár-
ajánlatokat négy kivitelezőtől (R1 , R2 , R3 , R4 ). Mindegyik kivitelező csak egy munkát
kaphat meg. A beérkezett ajánlatok:
94 5. FEJEZET: DISZTRIBÚCIÓS FELADATOK

R1 R2 R3 R4
F1 52 48 54 55 1
F2 65 68 62 63 1
F3 48 50 46 45 1
F4 33 36 38 35 1
1 1 1 1
(Tehát például az F1 ingatlan kivitelezését az R2 48 pénzegységért vállalná.)
Minimálisan, illetve maximálisan mekkora összegért és milyen elosztásban valósít-
ható meg a beruházás?

Megoldás: A matematikai modell felvétele után (ahol az xij döntési változó értékei,
ha az i-edik ingatlant a j-edik kivitelező kapja, és 0 ez az érték, ha nem kapja meg –
tehát bináris programozásról lesz szó) a szállítási feladatnál megismert módon felírjuk
a feltételeket és a célfüggvényeket, majd, akár az Excel, akár a Lingo felhasználásával
megoldásokat kaphatunk. Rövidebb és talán áttekinthetőbb a „mátrixcsere”-módszerrel
történő megoldás. Az induló táblázat:

R1 R2 R3 R4
F1 52 48 54 55 1
F2 65 68 62 63 1
F3 48 50 46 45 1
F4 33 36 38 35 1

1 1 1 1

R1 R2 R3 R4
F1 0 0 0 0 0
F2 0 0 0 0 0
F3 0 0 0 0 0
F4 0 0 0 0 0

0 0 0 0 0

A minimális költségre a megoldás (bináris eset!):


5.1. A SZÁLLÍTÁSI FELADAT MATEMATIKAI MODELLJE 95

R1 R2 R3 R4
F1 0 1 0 0 1
F2 0 0 1 0 1
F3 0 0 0 1 1
F4 1 0 0 0 1

1 1 1 1 188

A maximális költségre a megoldás:

R1 R2 R3 R4
F1 0 0 0 1 1
F2 0 1 0 0 1
F3 1 0 0 0 1
F4 0 0 1 0 1

1 1 1 1 209

A táblázatokból a megfelelően értelmezett optimális megoldások leolvashatók. Ter-


mészetesen különböző változatokat (például az F3 kivitelezését egy korábbi elkötele-
zettség miatt mindenképpen az R2 kapja, vagy az R4 biztosan nem tudja elvállalni
az R1 kivitelezését és így tovább) a már egyszer felvett táblázatok kis módosításaival
egyszerűen megkaphatunk. Tanulságos lehet az érzékenységvizsgálat eredményeinek
elemzése is.
6. fejezet

Bevezetés a játékelméletbe

A gazdasági életben is gyakran előfordul, hogy kettő vagy több döntéshozó egyidejűleg
tesz ajánlatot valamilyen cselekvés elvégzésére. Az egyénileg kiválasztott lehetőségek
befolyásolják a többi döntéshozó által elérhető eredményeket, azaz ellentétes érdekeltsé-
gűek a szereplők. Előfordulhat, hogy valamelyik résztvevő („ játékos”) nem természetes
személy, hanem például egy árucikk iránti kereslet valószínűsége vagy az időjárás. Te-
kintsük a következő döntési szituációt:

Példa: Egy mezőgazdasági termelő kétféle gabonát termelhet a földjén, G1 és G2


fajtát. Az időjárásnak megfelelően a korábbi megfigyelések szerint a nyeresége valamely
pénzegységben nagyon különböző lehet:

Száraz Átlagos Esős


G1 25 20 0
G2 5 20 45

Az adott feltételek mellett döntést igényel, hogy milyen arányban vesse a termelő a G1
és a G2 fajtát, hogy a nyeresége a lehető legnagyobb legyen.
Hasonló problémák megoldása jól modellezhető a játékelmélet legegyszerűbb eseté-
vel, az ún. kétszemélyes zérusösszegű játékkal.

6.1. Kétszemélyes zérusösszegű mátrixjáték


Adott egy P = [pij ] valós számokból álló mátrix. Két játékos, A (a „sorjátékos”) és
B (az „oszlopjátékos”) a következő játékot játsza: az A játékos kijelöli a mátrix i-edik
sorát, a B játékos tőle függetlenül kiválasztja a mátrix j-edik oszlopát és ekkor az
oszlopjátékos (B) fizet A-nak pij pénzegységet. Például, ha

96
6.2. A LEHETSÉGES STRATÉGIÁK, A JÁTÉK VÁRHATÓ ÉRTÉKE 97

 
0 3 −1
 −1 1 2 
P =
 5

0 1 
−1 1 1
és ha az A a második sort, a B a harmadik oszlopot jelöli ki, akkor B fizet a sorjáté-
kosnak 2 pénzegységet. Ha az A a negyedik sort jelöli ki, a B pedig az első oszlopot,
akkor a sorjátékos −1 pénzt „fizet” az oszlopjátékosnak, azaz ekkor a B kap A-tól 1
pénzt.
Mindegyik játékban az A nyeresége megegyezik a B veszteségével, így a két játé-
kos nyereségének, illetve veszteségének összege nullával egyenlő. Ez indokolja a játék
„zérusösszegű mátrixjáték” elnevezését. A P mátrixot fizetési mátrixnak nevezzük.
Ha a játékot ismétlődően sokszor játszák, akkor a játékosok a sorokat, illetve osz-
lopokat célszerűen két alapelv szerint jelölik ki:
1. Azokat a sorokat, illetve oszlopokat részesítik előnyben a kijelöléskor, azaz na-
gyobb valószínűséggel úgy választanak, amelyek alapján a nyereségük várható értéke a
lehető legnagyobb.
2. Az egyes sorokat, illetve oszlopokat véletlenszerűen, tehát nem valamilyen kiis-
merhető rendszer szerint kell kiválasztaniuk. Ha valamelyikük kiismerhető stratégiával
játszik, akkor ezt az információt az ellenfél a döntésénél kihasználhatja.
A játékosok stratégiáját kifejezhetjük azokkal a valószínűségekkel, amelyekkel a so-
rokat, illetve oszlopokat kiválasztják. Az A játékos az egyes sorokat x1 , x2 ,..., xm
valószínűséggel, a B az oszlopokat y1 , y2 ,. . . , yn valószínűséggel választja ki. A valószí-
nűségeket vektoralakban is felírhatjuk:
x = [x1 , x2 , ..., xm ]∗
y ∗ = [y1 , y2 , ..., yn ]
Mind az A, mind a B a játékban biztosan választ, azaz az egyes valószínűségek
összege mindkét játékos esetén 1, azaz 1∗ · x = 1 és y ∗ · 1 = 1.

6.2. A lehetséges stratégiák, a játék várható értéke


Ha egy játékos mindig ugyanazt a sort, illetve oszlopot választja, azaz:
x = e i (i = 1, 2, ..., m), vagy y ∗ = e j (j = 1, 2, ..., n),
akkor tiszta stratégiáról beszélünk.
Példa: Legyen a fizetési mátrix a következő:
 
4 4 9
P = 2 3 1 
6 5 7
98 6. FEJEZET: BEVEZETÉS A JÁTÉKELMÉLETBE

A sorok minimális értékei: 4, 1, 5. Ezek közül a legnagyobb a 3. sorban van, tehát


ha a sorjátékos stratégiája x = [0 0 1]∗ = e 3 , akkor B bármely oszlopválasztásánál
legalább 5 pénzegység lesz a nyereménye.
Az oszlopok maximális értékei: 6, 5, 9. Közülük a legkisebb a 2. oszlopban talál-
ható. Ha tehát az oszlopjátékos stratégiája: y ∗ = [0 1 0] = e ∗2 , akkor az A bármely
sorválasztásánál legfeljebb 5 pénzegység lesz a vesztesége.

Elnevezés: Ha egy fizetési mátrixban a sorminimumok legnagyobb értéke megegyezik


az oszlopmaximumok legkisebb értékével, akkor a játéknak nyeregpontja van.

Definíció: Ha egy mátrixjátéknak nyeregpontja van, akkor a nyeregpont számértékét


a játék értékének nevezzük.

Tehát a fenti példában adott játék értéke 5.


A tiszta stratégiák a játékelméletben viszonylag ritkán fordulnak elő, általában
kevert stratégiákkal találkozunk, azaz az xi és az yj értékei nemcsak 0 és 1 lehetnek.
Particionáljuk az adott P fizetési mátrixot sorvektorokra, jelentse például a p∗i sor-
vektor a mátrix i-edik sorát. Ha az A játékos ezt a sort választja, akkor az adott
játszmában a nyereségének várható értéke:

pi1 · y1 + pi2 · y2 + · · · + pin · yn = p∗i · y,

hiszen az egyes oszlopokat a B játékos yj valósínűséggel választja.


Az i-edik sort viszont az A játékos xi valószínűséggel választja ki, így az adott játék
várható értéke:

x1 · p∗1 · y + x2 · p∗2 · y + · · · + xm · p∗m · y = (x1 · p∗1 + x2 · p∗2 + · · · + xm · p∗m ) · y = x∗ · P · y = M.

(A fenti zárójelben lévő kifejezés az x ∗ sorvektor és a P mátrix szorzata.)


A játék M várható értéke azt fejezi ki, hogy sok játék átlagában az A játékos mennyit
nyer játékonként a B-től. Ez a nyeremény a fizetési mátrix szerkezetének függvényében
lehet negatív is, ekkor a B nyer pénz az A-tól.

Példa: Számoljuk ki a játék várható értékét, ha


 
0 3 −1
 −1 1 2 
P = 5
 , x = [1/61/31/31/6]∗ , y ∗ = [1/302/3].
0 1 
−1 1 1

Képletünk szerint: M = x∗ · P · y, a megfelelő mátrixműveleteket végrehajtva:


M = 19/18.
Eredményünk azt jelenti, hogy sok játék átlagában a fenti adatok mellett az A
játékos nyeresége 19/18 pénzegység.
6.3. AZ OPTIMÁLIS STRATÉGIA 99

Adott fizetési mátrix esetén a játék várható értékére alsó és felső korlátokat adha-
tunk, ezt fejezi ki a következő

Tétel: A játék várható értéke a P mátrix legkisebb és legnagyobb értékei között talál-
ható, azaz: min pij ≤ x ∗ · P · y ≤ max pij .

A tétel igazának belátása nyilvánvaló, hiszen ha mindkét játékos rendre a legkisebb,


illetve legnagyobb mátrixelemre játszik, akkor a játék értéke ezt a két értéket veszi fel,
sem kisebb, sem nagyobb érték nem fordulhat elő. Például ha a fenti P mátrixnál a
sorjátékos stratégiája: x = [0 0 1 0]∗ , az oszlopjátékosé: y ∗ = [1 0 0], ekkor minden
játéknál a harmadik sor első eleme kerül kiválasztásra, ez a mátrix maximális eleme, a
játék várható értékének felső korlátja. Hasonlóan megfelelő stratégiákkal kiválasztható
a játék minimális várható értéke: M = −1.

6.3. Az optimális stratégia


Egy mátrixjátékot különféle stratégiákkal kellően sokszor eljátszva észrevehető, hogy
létezik valamilyen egyensúlyi állapot, azaz eljuthatunk optimális stratégiákhoz. Ehhez
előbb a játék megoldhatóságát definiáljuk.

Definíció: A P mátrix által meghatározott játék akkor megoldható, ha bármely le-


hetséges x és y ∗ stratégia esetén létezik olyan x0 és y∗0 stratégia, amire fennáll:

x ∗ · P · y 0 ≤ V ≤ x ∗0 · P · y.

A definícióból következik, hogy az x 0 stratégiát játszó A játékos nyeresége bármelyik


játékban, B tetszőleges stratégiája esetén legalább V -vel lesz egyenlő. Hasonlóan: B
vesztesége az y ∗0 stratégiát alkalmazva legfeljebb V értékű lehet.
Az x 0 és y ∗0 stratégiákat a két játékos optimális stratégiájának nevezzük.
A definícióban lévő egyenlőtlenségnek akkor is fenn kell állnia, ha mindkét játékos
a saját optimális stratégiáját követi, azaz:

x ∗0 · P · y 0 ≤ V ≤ x 0 ∗ ·P · y 0 .

Következésképpen: ha a játék megoldható, akkor a játék értéke:

V = x ∗0 · P · y 0 .

Ha egy P mátrix optimális stratégiáit és így a játék értékét is ismerjük, akkor arra
a Q mátrixra vonatkozóan, amely a P-ből úgy keletkezik, hogy a P minden eleméhez
ugyanazt a k valós számot adjuk hozzá, az optimális stratégiák változatlanok marad-
nak. A Q által meghatározott játék értékét úgy kapjuk meg, hogy a P játék értékéhez a
100 6. FEJEZET: BEVEZETÉS A JÁTÉKELMÉLETBE

k számot hozzáadjuk. Így mindig elérhető, hogy az optimális stratégiákat olyan fizetési
mátrixra határozzuk meg, amelynek elemei között nincsenek negatív számok.

Tétel: Minden fizetési mátrix által meghatározott játéknak van megoldása.

A játékelméletnek ezt az egyik legfontosabb állítását Neumann János bizonyította,


a tételt Neumann-tételnek is nevezik. Az állítás igazolását nem részletezzük.
A Neumann-tétel teszi lehetővé az optimális stratégiák és a játék értékének nume-
rikus meghatározását.

6.4. A kétszemélyes zérusösszegű mátrixjáték opti-


mális megoldása
A P fizetési mátrix által meghatározott játékban az A játékos optimális stratégiájára
veszünk fel matematikai modellt. A modell megoldásával duál optimumként megkapjuk
a B játékos optimális stratégiáját is.
Az A játékos minden stratégiájára fennáll az induló feltétel : x ≥ 0, hiszen az x
vektor elemei valószínűségek.
A korlátozó feltételek között nyilvánvaló: x1 + x2 + · · · + xm = 1, mert az A játékos
minden esetben valamelyik sort kiválasztja. Ezt az összefüggést korábban 1∗ · x = 1
alakban írtuk fel.
A játék megoldhatóságára felvett definíciónk jobb oldala szerint:

V ≤ x ∗0 · P · y.

Az összefüggés a B játékos minden lehetséges stratégiája esetén érvényes, így akkor is,
ha y = e j (j = 1, ] 2, . . . , n), azaz ha egységvektorok jelentik a B stratégiáját. Így:

V ≤ x ∗0 · P · e 1

V ≤ x ∗0 · P · e 2

..
.
V ≤ x ∗0 · P · e n
Az n egyenlőtlenség összevont alakban:

V · 1 ∗ ≤ x ∗0 · P · (e 1 , e 2 , ...e n )

A zárójelben egy egységmátrix oszlopvektorokra paticionált alakja van, a megfelelő


egységvektorral szorozva egy mátrixot, az változatlan marad, tehát:
6.4. A KÉTSZEMÉLYES ZÉRUSÖSSZEGŰ MÁTRIXJÁTÉK 101

V · 1 ∗ ≤ x ∗0 · P

A mátrixszorzásra vonatkozó szabályt ((A · B )∗ = A∗ · B ∗ ) felhasználva:

1 · V ≤ P ∗ · x 0.

Ez a korlátozó feltétel írható 1 · V − P ∗ · x 0 ≤ 0 alakban is.


A matematikai modell célfüggvényeként a V maximális értékét keressük:

z = V → max .

A P fizetési mátrixú kétszemélyes zérusösszegű mátrixban az optimális stratégiákat


és a játék értékét a a következő lineáris programozási modell megoldásával kapjuk:

x ≥0

x1 + x2 + · · · + xm = 1

1 · V ≤ P ∗ · x 0 , vagy más alakban: 1 · V − P ∗ · x 0 ≤ 0

z = V → max .

A modell megoldása történhet a szokásos módon az Excel vagy a Lingo felhasz-


nálásával. A matematikai modell klasszikus alakjában a korlátozó feltételek változói a
relációk baloldalán helyezkednek el, ezért ekkor az 1·V −P ∗ ·x 0 ≤ 0 feltételt használjuk.

Példa: Adott a P fizetési mátrix, határozzuk meg az A sorjátékos és a B oszlopjátékos


optimális stratégiáját és a játék értékét:
· ¸
2 4 6
P=
3 1 5

Megoldás: A sorjátékos x1 és x2 valószínűségekkel választja az első, illetve a második


sort. Az induló feltétel:

x1 , x2 ≥ 0

A korlátozó feltételek:

x1 + x2 = 1

Az 1 · V − P ∗ · x 0 ≤ 0 relációnak megfelelő sorok:

V − 2x1 − 3x2 ≤ 0
102 6. FEJEZET: BEVEZETÉS A JÁTÉKELMÉLETBE

V − 4x1 − x2 ≤ 0
V − 6x1 − 5x2 ≤ 0
A célfüggvény:
z = V → max .
Az Excel induló tábla:
V x1 x2
F1 0 1 1 0 <> 1
F2 1 -2 -3 0 <= 0
F3 1 -4 -1 0 <= 0
F4 1 -6 -5 0 <= 0
V 1 0 0 0
mo 0 0 0 max
Az induló táblázatban a V -t is természetesen változóként kezeljük. Az optimalizá-
lást a Solverrel a szokásos módon végezzük el, az eredmény:
V x1 x2
F1 0 1 1 1 <> 1
F2 1 -2 -3 0 <= 0
F3 1 -4 -1 0 <= 0
F4 1 -6 -5 -3 <= 0
V 1 0 0 2,5
mo 2,5 0,5 0,5 max

Az A játékos optimális stratégiája tehát: x = [0.5 0, 5]∗ , a játék értéke: V = 2, 5.


Az oszlopjátékos (B) optimális stratégiája az érzékenységjelentésből, adódik:
Módosuló cellák
Redukált Objective Megengedhető Megengedhető
Cella Név Végérték költség Célegyüttható növekedés csökkenés
$B$7 mo v 2,5 0 1 1E+30 1
$C$7 mo x1 0,5 0 0 1 3
$D$7 mo x2 0,5 0 0 3 1

Korlátozó feltételek
Shadow Feltétel Megengedhető Megengedhető
Cella Név Végérték Árnyékár jobb oldala növekedés csökkenés
$E$2 F1 1 2,5 1 1E+30 1
$E$3 F2 0 0,75 0 2 2
$E$4 F3 0 0,25 0 2 2
$E$5 F4 -3 0 0 1E+30 3
6.4. A KÉTSZEMÉLYES ZÉRUSÖSSZEGŰ MÁTRIXJÁTÉK 103

A „Shadow Árnyékár” oszlopból: y ∗ = [0, 75 0, 25 0].


A Lingóval történő megoldáskor nem kötelező a matematikai modell klasszikus alak-
jánál használata, tehát a korlátozó feltételeket felvehetjük az 1 · V ≤ P ∗ · x 0 formulát
felhasználva. A modellünk ekkor:

x1+x2=1;

v<2*x1+3*x2;

v<4*x1+x2;

v<6*x1+5*x2;

max=v;

A megoldás természetesen megegyezik az Excelével:

Global optimal solution found.

Objective value: 2.500000

Variable Value Reduced Cost


X1 0.5000000 0.000000
X2 0.5000000 0.000000
V 2.500000 0.000000

Row Slack or Surplus Dual Price


1 0.000000 2.500000
2 0.000000 0.7500000
3 0.000000 0.2500000
4 3.000000 0.000000
5 2.500000 1.000000
A B játékos optimális stratégiája a „Dual Price” oszlopból olvasható ki.

Példa: A bevezetőben szereplő feladatban a mezőgazdasági termelő „vív párbajt” az


időjárással. A feladat mátrixa:
· ¸
25 20 0
P=
5 20 45

Adjuk meg a termelő optimális stratégiáját és a a játék értékét!


104 6. FEJEZET: BEVEZETÉS A JÁTÉKELMÉLETBE

Megoldás: A matematikai modell Lingo programra:

x1+x2=1;

v<25*x1+5*x2;

v<20*x1+20*x2;

v<45*x2;

max=v;

A megoldás:

Global optimal solution found.

Objective value: 17.30769

Variable Value Reduced Cost


X1 0.6153846 0.000000
X2 0.3846154 0.000000
V 17.30769 0.000000

Row Slack or Surplus Dual Price


1 0.000000 17.30769
2 0.000000 0.6923077
3 2.692308 0.000000
4 0.000000 0.3076923

Az eredményünk azt mutatja, hogy ha a termelő stratégiája x = [0, 615 0, 385]∗ ,


akkor a nyeresége bármilyen időjárási körülmények között sem lehet kevesebb17,3-nál.

Példa: A 6.1. részben adott


 
0 3 −1
 −1 1 2 
P=
 5

0 1 
−1 1 1

fizetési mátrixhoz tartozó optimális stratégiák és a játék értéke a matematikai model-


lünkkel egyszerűen kiszámolható. A modell a Lingóban:
6.4. A KÉTSZEMÉLYES ZÉRUSÖSSZEGŰ MÁTRIXJÁTÉK 105

x1+x2+x3+x4=1;

v<-x2+5*x3-x4;

v<3*x1+x2+x4;

v<-x1+2*x2+x3+x4;

max=v;

A megoldás:

Global optimal solution found.

Objective value: 1.085714

Variable Value Reduced Cost


X1 0.2000000 0.000000
X2 0.4857143 0.000000
X3 0.3142857 0.000000
X4 0.000000 0.3714286
V 1.085714 0.000000

Row Slack or Surplus Dual Price


1 0.000000 1.085714
2 0.000000 0.1428571
3 0.000000 0.4857143
4 0.000000 0.3714286
5 1.085714 1.000000

A játék értékének és az A játékos optimális xi stratégiájának leolvasása egyértelmű,


az oszlopjátékos optimális yj stratégiája a „Dual Price” 2., 3.,4. sorában található.
A játékelmélet széleskörű gyakorlati alkalmazásaiban további, itt nem részletezendő
elméleti ismereteket is felhasználnak.
A könyvünk második részében közölt esettanulmányok további, szándékunk szerint
érdekes példákat mutatnak be a matematikai modellek segítségével történő döntéselő-
készítésekre.
II. rész

Matematikai modellezés,
esettanulmányok

106
107

Könyvem második részében a lineáris programozásra alapuló matematikai modellek


gyakorlati alkalmazásaira mintákat közlök, esettanulmányok formájában. Ezek a fel-
adatok is csupán modelljei azoknak a lehetséges gazdasági és szervezési problémáknak,
amelyeket a bemutatott módszerekkel optimalizálni lehet. A gyakorlatban előforduló
feladatok legtöbbször méreteikben, a feltételek mennyiségében és természetesen a konk-
rét szituációban térnek el az esettanulmányoktól. Az egyes feladatokra elsőként felírt
matematikai modell gyakran korrekcióra szorul, amire általában a megoldási kísérle-
tünk során derül fény. Így az egyes diasorozatoknál bemutatott modellekhez tartozó
lehetséges megoldások már a javított modellre vonatkoznak, de közlöm azt is, hogy a
hibás modellre a számítógép milyen visszajelzést adott.
Megoldásokat és variánsokat is adok az egyes témakörökben tárgyalt feladatokhoz,
valamint utalok a duál optimumok jelentésére és jelentőségére. Több esetben bemuta-
tom a gyakorlatban jól kihasználható érzékenységvizsgálat konkrétumait.
A közzétett anyag „első változat”, ami struktúrájában, tartalmában, megfogalma-
zásaiban is változhat. Kérem az Olvasót, ha észrevétele van az anyaghoz, ha másféle
megoldást talál, netán hibát fedez fel az írásban, azt jelezze a tárgy oktatójának, illetve
a szerzőnek, amiért előre is köszönetet mondok.
Budapest, 2011. február
1. fejezet

Termelésprogramozás az iparban

Az Esettan1 diasorozat feladatai

Az Esettan1 című diasorozat 4 különböző bonyolultságú feladatot tartalmaz. Mind-


egyik feladat olyan, hogy a felvett modellekhez, azok megoldásához észrevételeket kell
fűznünk: előfordul, hogy a felvett modell hibás, ahogy ez a gyakorlati életben is sokszor
előfordul. Bemutatjuk a korrigálás lehetőségeit. Az egyik feladatban alternatív optimu-
mok vannak. A gyakorlatban ezek jelentősége más, mint ahogy ez az operációkutatás
elméleti tárgyalásában szerepel. Utalunk arra is, hogy vannak olyan esetek, amikor
az optimalizálandó feladatban az adatok olyan nyilvánvalóak, hogy felesleges bevetni
a matematikai modellel történő megoldás apparátusát. Külön figyelmet érdemel a so-
rozat 5. feladata, amelyben két különböző változótípus található egy problémakörön
belül.
A diasorozaton lévő feladatok szövegén, sorrendjén, eredeti modelljein nem változ-
tattunk. A Power Point változat megtekintése ajánlott a könyvünkben közölt feladatok,
modellek és megoldások előtt.

1.1. A termelésprogramozási feladatok megoldásai


1. feladat: 4 gép felhasználásával kétféle terméket állítanak elő. Az egyes termékek
egy-egy egységéhez szükséges gépidő órában: 4, 0, 2, 1, illetve 2, 4, 3, 1. Az összes
gépóra-kapacitás: 240, 160, 180, 100, amelyek közül az első kettő felső korlátot jelent,
a harmadikat teljesen ki akarjuk használni, a negyedik gépet pedig legalább 100 órában
működtethetjük. Az egyes termékek hozama darabonként 20, illetve 40 Ft. Az első
termékre már beérkezett egy 30 darabos megrendelés. Szeretnénk elérni, hogy a hozam
legalább 1000 Ft legyen. Írjuk fel a maximális árbevételt biztosító termelési program
matematikai modelljét!

108
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 109

A modell felvétele: A döntési változók a gyártandó termékek mennyiségei: x1 és x2 .

A matematikai modell: x1 , x2 ≥ 0

4x1 + 2x2 ≤ 240


4x2 ≤ 160
2x1 + 3x2 = 180
x1 + x2 ≥ 100
x1 ≥ 30
20x1 + 40x2 ≥ 1000

z = 20x1 + 40x2 → max .

1. feladat megoldása: A felvett modellünk egyszerűen megoldható mind az Excel


Solverjével, mind a Lingóval. Az adattáblázat Excelben:

x1 x2 b
f1 4 2 0 <= 240
f2 0 4 0 <= 160
f3 2 3 0 = 180
f4 1 1 0 >= 100
f5 1 0 0 >= 30
f6 20 40 0 >= 1000
c* 20 40 0 0
x* 0 0

A megoldási kísérletünk:

x1 x2 b
f1 4 2 240 <= 240
f2 0 4 120 <= 160
f3 2 3 180 = 180
f4 1 1 75 >= 100
f5 1 0 45 >= 30
f6 20 40 2100 >= 1000
c* 20 40 2100
x* 45 30

A Solver kiírása: nem talált optimális megoldást.


Láthatóan hiba van a fenti táblázat negyedik oszlopában: az f4 sorban a kiszámolt
értéknek nagyobb-egyenlőnek kellene lenni 100-nál. Így ezekkel a feltételekkel a fel-
adatnak nincs optimális megoldása. Ha viszont 75-re csökkentjük a 4. feltételt, akkor
már optimális megoldást jelez a program:
110 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

x1 x2 b
f1 4 2 240 <= 240
f2 0 4 120 <= 160
f3 2 3 180 = 180
f4 1 1 75 >= 75
f5 1 0 45 >= 30
f6 20 40 2100 >= 1000
c* 20 40 2100
x* 45 30

Az optimális megoldás: x 0 = [45 30]∗ , z0 = 2100, u0 = [0 40 0 0 15 1100]∗ , azaz


az első termékből 45-öt, a másodikból 30-at gyártsunk és ekkor a maximális hozam
2100 lesz. Az optimális esetre érvényes eltérésváltozók jelentéseit a szöveg feltételeivel
értelmezhetjük: az első, a harmadik és a negyedik kapacitást teljesen kihasználjuk, a
másodikból 40 maradvány van, az ötödik és a hatodik feltétel alsó korlátjainál pedig
15-tel, illetve 1100-zal nagyobb értékeket kapunk.
A Lingóra az adatokat szinte teljesen úgy visszük fel, ahogy a matematikai modell-
ben szokás. Emlékeztető: az induló feltételt most nem kell közölnünk, a változókat
a szoftver alapbeállításban nem negatívaknak veszi. A feltételeknél a szorzásjeleket
fel kell tűntetni, a nagyobb-kisebb jelek után nem kell egyenlőségeket írni és minden
feltételt pontosvesszővel le kell zárni. A cél típusát (min, max) a sor elejére írjuk, majd
az egyenlőség után jön a célfüggvény, a végén pontosvesszővel. Tehát:

4*x1+2*x2<240;
4*x2<160;
2*x1+3*x2=180;
x1+x2>100;
x1>30;
20*x1+40*x2>1000;
max=20*x1+40*x2;

A megoldást a Solve (vagy a piros „céltábla”) leütésével indítjuk. Erre a modellre


ez a program sem talál optimális megoldást („No feasible soluton found”)
Ha a 4. feltétel jobb oldalát 100-ról 75-re javítjuk, akkor kapunk optimális megol-
dást:
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 111

Global optimal solution found.


Objective value: 2100.000
Variable Value Reduced Cost
X1 45.00000 0.000000
X2 30.00000 0.000000

Row Slack or Surplus Dual Price


1 0.000000 0.000000
2 40.00000 0.000000
3 0.000000 20.00000
4 0.000000 −20.00000
5 15.00000 0.000000
6 1100.000 0.000000
A táblázatból mind a primál, mind a duál optimális megoldások leolvashatók.

2. feladat: Egy üzem termelési programjához a következő A mátrix tartozik:


 
0 1 4 2
A= 3 1 0 0 
1 1 1 0
Az A mátrix aij eleme azt jelenti, hogy az i-edik erőforrásból mennyi épül be a
j-edik termék egy-egy egységébe. A kapacitásvektor: b = [300 100 150]∗ , a termékek
eladási árvektora, amelynek maximalizálására törekszünk: c = [6 5 8 7]∗ .
Írjuk fel az adatok alapján az LP modellt, ha az erőforrások felhasználása a kapa-
citásokat nem lépheti túl, valamint az első és a második termékből összesen annyit kell
termelni, mint a negyedikből. Feltétel továbbá, hogy a második termékből legalább 3
egységgel többet kell termelni, mint a negyedikből!
A xi döntési változók a gyártandó termékek mennyiségei.

A matematikai modell: x1 , x2 , x3 , x4 ≥ 0
x2 + 4x3 + 2x4 ≤ 300
3x1 + x2 ≤ 100
x1 + x2 + x3 ≤ 150
x1 + x2 − x4 = 0
x2 − x4 ≥ 3
z = 6x1 + 5x2 + 8x3 + 7x4 → max .

A feladat megoldása: Az Excellel történő megoldás megtalálható a könyv első ré-


szében (19–20. oldal). A matematikai modell a Lingóban:
112 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

x2+4*x3+2*x4<300;
3*x1+x2<100;
x1+x2+x3<150;
x1+x2-x4=0;
x2-x4>3;
max=6*x1+5*x2+8*x3+7*x4;

Természetesen ezzel a szoftverrel sincs optimális megoldása a feladatnak, hiszen,


ahogy az Excellel történő megoldásnál láthattuk: „a modellben nyilvánvaló ellentmon-
dás van a 4. és az 5. feltétel között: ha x2 − x4 ≥ 3, akkor ezt a különbséget az
utolsó előtti feltételben a nemnegatív x1 -hez hozzáadva nem kaphatunk nullát”. Mó-
dosítsuk a modellt: a második termékből legalább 3 egységgel többet kell termelni,
mint a harmadikból, tehát az ötödik feltétel x2 − x3 > 3 legyen, akkor lesz optimuma
a feladatnak:

Global optimal solution found.

Objective value: 1200.000

Variable Value Reduced Cost


X2 100.0000 0.000000
X3 0.000000 5.142857
X4 100.0000 0.000000
X1 0.000000 0.000000

Row Slack or Surplus Dual Price


1 0.000000 3.285714
2 0.000000 2.142857
3 50.00000 0.000000
4 0.000000 −0.4285714
5 97.00000 0.000000

Az optimális primál megoldást a szokásos módon felírhatjuk:

x 0 = [0 100 0 100]∗ u0 = [0 0 50 0 97]∗ és z0 = 1200.

A duál optimális megoldásokra még majd visszatérünk.

3. feladat (Gáspár–Temesi: Matematikai programozási gyakorlatok című könyvből,


17–18. oldal): A Műszeripari Szövetkezet négyfajta finommechanikai tengelykapcsoló
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 113

gyártásával foglalkozik. Termékei sokféle műszerbe kerülnek beépítésre. Gyártott ter-


mékei:
dilatációs tengelykapcsoló (T1),
golyós biztonsági tengelykapcsoló (T2),
szabadon futó tengelykapcsoló (T3),
Oldham-tengelykapcsoló (T4).
A felsorolt termékek közül az első és a negyedik kifutott típusok alkatrészei. A kötelező
alkatrészellátás miatt az említett tengelykapcsolókból havi 200 db, illetve 300 db gyár-
tása kötelező. Kooperációs partnerükkel a golyós biztonsági tengelykapcsoló gyártására
szerződést kötöttek éves szinten 6120 darabra, amelynek szállítását havi egyenletes bon-
tásban vállalták.
A termékek gyártásához műszeresztergára, marógépre és köszörűgépre van szük-
ség. Az egyes termékek egy-egy darabjának gépidő-szükségletét, a gépek kapacitását
órákban kifejezve a következő táblázat mutatja:

Gépek Termékek Gépkapacitás


T1 T2 T3 T4
Eszterga 0,1 0,6 0,1 0,2 746
Marógép 0,2 0,1 0,2 0,1 291
Köszörű 0,2 0,4 0,1 0,1 594

A táblázatban szereplő kapacitások egy hónapra vonatkoznak.


Melyik termékből mennyit kell gyártania a szövetkezetnek, ha a nyereség maxi-
malizálására törekszik? Az egyes termékek darabonkénti hozadékait ismerjük, ezek
nagyságai rendre: 90, 240, 90, 60 forint.

A matematikai modellben az xi döntési változók darabszámok, xi ≥ 0.

x1 ≥ 200
x2 ≥ 510
x3 ≥ 0
x4 ≥ 300
0, 1x1 + 0, 6x2 + 0, 1x3 + 0, 2x4 ≤ 746
0, 2x1 + 0, 1x2 + 0, 2x3 + 0, 1x4 ≤ 291
0, 2x1 + 0, 4x2 + 0, 1x3 + 0, 1x4 ≤ 594
z = 90x1 + 240x2 + 90x3 + 60x4 → max

Szimplex módszerrel adódik, hogy alternatív optimum van, a bázismegoldások:

x 01 = [200 1010 600 300]∗ x 02 = [800 1010 0 300]∗ z0 = 332400

Az általános megoldás: x 0 = λ · x 01 = +(1 − λ) · x 02 , ahol 0 ≤ λ ≤ 1.


Az eltérésváltozók értékei szükség szerint felírhatók.
114 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

A feladat megoldása
A bonyolultnak tűnő szövegből a modellalkotás algoritmusát felhasználva különö-
sebb nehézség nélkül felvehető a matematikai modell. A Solver adattáblázata:

x1 x2 x3 x4 b
f1 0,1 0,6 0,1 0,2 0 <= 746
f2 0,2 0,1 0,2 0,1 0 <= 291
f3 0,2 0,4 0,1 0,1 0 <= 594
f4 1 0 0 0 0 >= 200
f5 0 1 0 0 0 >= 510
f6 0 0 0 1 0 >= 300
c* 90 240 90 60 0 max
x* 0 0 0 0

A modell megoldásakor a sorokat felcserélhetjük és (elvileg) azonos átalakításokat


lehet tenni, például az első 3 sorban mindkét oldal 10-zel szorozva nem lesz tizedes-
vessző az együtthatókban. Vigyázat! A szorzás technológiai változásokat is jelenthet,
és a gépnek tulajdonképpen mindegy, milyen alakú számokkal számol, ezért az átala-
kításokkal legyünk nagyon óvatosak!
A megoldás táblázata:

x1 x2 x3 x4 b
f1 0,1 0,6 0,1 0,2 746 <= 746
f2 0,2 0,1 0,2 0,1 291 <= 291
f3 0,2 0,4 0,1 0,1 534 <= 594
f4 1 0 0 0 200 >= 200
f5 0 1 0 0 1010 >= 510
f6 0 0 0 1 300 >= 300
c* 90 240 90 60 332400 max
x* 200 1010 600 300

Az optimumok:

x 01 = [200 1010 600 300]∗ u 01 = [0 0 60 0 500 0]∗ és z0 = 332400.

A modellünknek alternatív optimuma van:


1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 115

x1 x2 x3 x4 b
f1 0,1 0,6 0,1 0,2 746 <= 746
f2 0,2 0,1 0,2 0,1 291 <= 291
f3 0,2 0,4 0,1 0,1 594 <= 594
f4 1 0 0 0 800 >= 200
f5 0 1 0 0 1010 >= 510
f6 0 0 0 1 300 >= 300
c* 90 240 90 60 332400 max
x* 800 1010 0 300

Tehát: x 02 = [800 1010 0 300]∗ , u 02 = [0 0 0 600 500 0]∗ és z0 = 332 400.


A feladatnak végtelen sok optimális megoldása van („szakaszszerű alternatív opti-
mum”). Az általános optimális megoldás a két alapmegoldás konvex lineáris kombiná-
ciójaként adódik:

x 0 = λ · x 01 + (1 − λ)x 02 és u 0 = λ · u01 + (1 − λ)u 02 , ahol 0 ≤ λ ≤ 1 z0 = 332 400.

A λ lehetséges értékeivel tetszőleges számú optimális megoldás számolható, például,


ha az x1 cellájába korlátozó feltételként 444-et írunk, akkor a megfelelő partikuláris
optimális megoldás:

x* 444 1010 356 300

1.1.1. Az alternatív optimumokról


A lineáris programozásra épülő matematikai modellek egyes eseteiben végtelen sok op-
timális megoldás létezik, a feladatnak alternatív optimumai vannak. Az alternatív
optimumok a modellek manuális megoldásaiban mind geometriailag, mind algebrai-
lag értelmezhetők. A gyakorlati, számítógépes megoldású feladatoknál az alternatív
optimumoknak nincs kiemelt jelentősége, ugyanis a lehetséges optimális megoldásokat
általában nem az alapmegoldásokból származtatják, hanem a feltételekben, célfügg-
vényben szereplő adatok, paraméterek – általában igen egyszerűen végrehajtható –
megváltoztatásával. A különböző optimális megoldások a gép által szolgáltatott érzé-
kenységvizsgálat segítségével tudatos változtatásokkal kaphatók meg.
Egy kétváltozós feladat geometriai és gépi megoldásával szemléltetjük a fentieket.
Felveszünk egy egyszerű matematikai modellt:

x1 , x 2 ≥ 0
3x1 + 2x2 ≤ 18
4x1 ≤ 16
116 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

2x1 + 4x2 ≤ 24
z = 3x1 + 2x2 → max .

(A modell tartozhat szöveges feladathoz, például: x1 és x2 termelt mennyiségek, a


korlátozó feltételek kapacitáskorlátok, a célfüggvény-együtthatók egységárak lehetnek.)
Állítsuk elő a lehetséges megoldások L halmazát! A feltételek egyenesei:

Az egyenlőtlenségekkel meghatározott félsíkok metszeteként az L halmaz:

Az extremális pontok: A(0; 0), B(4; 0), C(4; 3), D(3; 4,5), E(0; 6). Behúzzuk
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 117

a z = 0 célfüggvény alapegyenest és párhuzamosok húzásával egyértelmű optimumot


kapunk:

Az optimális primál megoldás: x 0 = [4 3]∗ , u 0 = [0 0 4]∗ , z0 = 22.


Az Excel optimális megoldása természetesen ugyanez:

x1 x2 b
F1 3 2 18 <= 18
F2 4 0 16 <= 16
F3 2 4 20 <= 24
c* 4 2 22 max
x* 4 3

Módosítsuk a célfüggvény egyenesek irányát (iránytangensét, irányvektorát) úgy,


hogy az alapegyenes párhuzamos legyen a CD szakasz egyenesével, azaz legyen az új
célfüggvény z ′ = 3x1 + 2x2 . Ábrázolás:
118 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

Látható, hogy ebben az esetben a CD szakasz minden pontja optimális, az alap


optimumok: x 01 = [4 3]∗ , u 01 = [0 0 4]∗ , z0 = 18 és x 02 = [3 4, 5]∗ , u 02 = [0 4 0]∗ .
A (végtelen sok) általános megoldás a szokásos módon írható fel:

x 0 = λ · x 01 + (1 − λ)x 02 és u 0 = λ · u01 + (1 − λ)u02 , ahol 0 ≤ λ ≤ 1, z0 = 18.

A Solver az optimumokat közelítő számításokkal kapja. A pontosság határait és a


konvergenciatartományt beállíthatjuk. Ahhoz, hogy az alapbeállításokkal (pontosság:
0,000001, tűrés: 5%, konvergencia: 0,000001) a másik „alapoptimumot” megkapjuk,
az első célfüggvény-együtthatót „egy kicsivel” (esetünkben 0,0001-del) csökkentjük. Az
ennek megfelelő célérték-pontossággal a következő lesz a táblázatunk:

x1 x2 b
f1 3 2 18 <= 18
f2 4 0 12 <= 16
f3 2 4 24 <= 24
c* 2,9999 2 17,9997
x* 3 4,5

Ha tovább folytatjuk a célfüggvényegyenesek irányának módosítását, akkor ismét


egyértelmű optimumot kapunk:
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 119

A kettőnél több változós feladatoknál a z = 0 feltételnek már nem egyenes felel meg,
általában bonyolult dolog azt eldönteni, hogy a gyanított alternatív alapmegoldások
mely paraméterek milyen mértékű „átbillentésével” adódnak. A gyakorlatban előfor-
duló feladatoknál a számítógépen lévő adatok egyszerű módosításával kaphatunk más és
más optimumokat. Az alternatív optimumok keresésénél általában fontosabb az, hogy
a modell adatainak milyen határok között történő változtatásakor mikor kaphatunk
újabb megoldásokat. Erre a célra az érzékenységvizsgálat eredményeit használhatjuk
fel. Például az eredeti modellünk Excellel kapott optimális megoldásához (x 0 = [4 3]∗ ,
u 0 = [0 0 4]∗ , z0 = 22) tartozó érzékenységjelentés:

Módosuló cellák
Redukált Objective Megengedhető Megengedhető
Cella Név Végérték költség Célegyüttható növekedés csökkenés
$B$6 x1 4 0 4 1E+30 1
$C$6 x2 3 0 2 0,666666667 2

Korlátozó feltételek
Shadow Feltétel Megengedhető Megengedhető
Cella Név Végérték Árnyékár jobb oldala növekedés csökkenés
$D$2 F1 18 1 18 2 6
$D$3 F2 16 0,25 16 8 4
$D$4 F3 20 0 24 1E+30 4

A táblázatból a célfüggvény-együtthatókra adódó határok, amelyek betartásával az


optimális megoldások a célfüggvény értékének kivételével változatlanok maradnak:

3 ≤ c1 < ∞ (az 1E + 30 = 1030 a gépnek végtelennek számít), 0 ≤ c1 ≤ 2, 66667.

Konkrétan ez a feladat szöveges értelmezésében azt is jelentheti, hogy például az


első termék egységára a megadott c1 = 4 helyett 3-tól akár a végtelenig növelhető, az
120 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

optimálisan gyártandó darabszámok és a kapacitások kihasználása nem változik, csak


a célfüggvény értéke lesz más.
A feltételek jobb oldali konstansaira (a „kapacitásokra”) az érzékenységi határok a
megengedhető növekedés és csökkenés adataival adódnak:

12 ≤ b1 ≤ 20, 12 ≤ b2 ≤ 24, 20 ≤ b1 < ∞.

Ez pedig azt jelenti, hogy a bi értékeket az adott határok között változtatva az


optimális tábla szerkezete változatlan marad (a szimplex megoldásra gondolva: ekkor
ugyanazok a betűk maradnak a sorkezdő pozíciókon és az oszlopfőkön), de számértékeik
mások lehetnek.
Az érzékenységjelentésből leolvasható az eredeti feladat duál optimális megoldása a
Shadow árnyékár oszlopból: y 0 = [1 0, 25 0]∗ és a w 0 = 0 a redukált költség oszlopából.
Az árnyékárak jelenthetik az erőforrás-egységárakat, azaz ez esetben azt, hogy a modell
jobb oldalán lévő számokat (kapacitásokat) yi -vel megnövelve mennyivel nő a célfügg-
vény értéke. Tehetünk egy próbát: a b1 értékét növeljük meg 2-vel a b2 értékét pedig
1-gyel (ez a változtatás az érzékenységvizsgálat szerint az optimális megoldás szerkeze-
tét nem változtatja meg), ekkor a célfüggvény értéke 2 · 1 + 1 · 0, 25, azaz 2,25-tel nő,
22-ről 24,25-re:

x1 x2 b
f1 3 2 20 <= 20
f2 4 0 17 <= 17
f3 2 4 23 <= 24
c* 4 2 24,25 max
x* 4,25 3,625

Az optimális megoldás szerkezete nem módosult, de a számértékek megváltoztak.


Természetesen a Lingo felhasználásával is megkaphatjuk a duál optimumokat és az
érzékenységvizsgálat eredményeit.
Az alternatív optimumok számítógépes megoldással történő kezelésének egy egy-
szerű eljárását példán mutatjuk be:

Példa: Egy üzemben négyféle terméket állítanak elő 3 erőforrás felhasználásával. Az


erőforrásokból az egyes termékek egységeibe 1; 0; 1 és 1; 1; 1 és 0; 1; 1, valamint 1; 1; 0
egységnyi épül be. Az erőforrásokból maximálisan 90; 80; 50 egység áll rendelkezésre.
A termékek eladási egységárai: 2; 3; 2; 2 pénzegység. Határozzuk meg az optimális
termelési programot!
A matematikai modell felvétele nem okozhat gondot:
A döntési változók a gyártási mennyiségek: x1 , x2 , x3 , x4 .
A matematikai modell: x1 , x2 , x3 , x4 ≥ 0
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 121

x1 +x2 +x4 ≤ 90
x2 +x3 +x4 ≤ 80
x1 +x2 +x3 ≤ 50
z = 2x1 +3x2 +2x3 +2x4 → max .
A manuális megoldás is egyszerű szimplex módszerrel:

B0 x1 x2 x3 x4 b B1 x1 u3 x3 x4 b
u1 1 1 0 1 90 u1 0 −1 −1 1 40
u2 0 1 1 1 80 u2 −1 −1 0 1 30
u3 1 1 1 0 50 x2 1 1 1 0 50
−z 2 3 2 2 0 −z −1 −3 −1 2 −150

B2 x1 u3 x3 u2 b B3 u1 u3 x3 u2 b B4 u1 u3 x 2 u2 b
u1 1 0 −1 −1 10 x1 1 0 −1 −1 10 x1 . . . . 30
x4 −1 −1 0 1 30 x4 1 −1 −1 0 40 x4 . . . . 60
x2 1 1 1 0 50 x2 −1 1 2 1 40 x3 . . . . 20
−z 1 −1 −1 −2 −210 −z −1 −1 0 −1 −220 −z −1 −1 0 −1 −220
Alternatív optimum van:

x 01 = [10 40 0 40]∗ u 01 = 0 z0 = 220.

x 02 = [30 0 20 60]∗ u 02 = 0 z0 = 220.

Az általános (primál) megoldás: x = λx 01 + (1 − λ)x 02 , u 0 = 0, ahol 0 ≤ λ ≤ 1.


A megoldás Solverrel:

x1 x2 x3 x4 b
f1 1 1 0 1 90 <= 90
f2 0 1 1 1 80 <= 80
f3 1 1 1 0 50 <= 50
c* 2 3 2 2 220
x* 10 40 0 40 max

A táblázat az x 01 megoldást hozza.


Ha az érzékenység-vizsgálat adta határokból kilépünk, a célfüggvény értéke is meg-
változik. Megvizsgálhatjuk viszont azt, hogy az optimális megoldás egyes celláiba ke-
rülő számok változtatására hogyan reagál a célfüggvény értéke.
Az x1 optimális értéke a táblázatunkban 10. A Solver korlátozó feltételei közé írjuk
be azt, hogy ennek a cellának az értéke legyen nagyobb, például először 1-gyel. Ekkor
a táblázat:
122 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

x1 x2 x3 x4 b
f1 1 1 0 1 90 <= 90
f2 0 1 1 1 80 <= 80
f3 1 1 1 0 50 <= 50
c* 2 3 2 2 220
x* 11 38 1 41 max

A célfüggvény optimális értéke nem változott, ami alternatív optimum létezésére


utal. Ha negatív irányban változtatjuk az x1 cellájának tartalmát (10-ről például 9-
re), akkor már a célfüggvény értéke is megváltozik (218 lesz), azaz a változtatást ebben
az irányban végrehajtva nem kaphatunk az eredeti optimális célfüggvény-értékkel meg-
egyező optimumot. Egyszerű próbával is (szerencsés esetben) meghatározhatjuk, hogy
az x1 -re vonatkozóan mi lesz az optimális intervallum felső határa. Ha a 10 helyett
20-at írunk ebbe a cellába, akkor marad a célfüggvény értéke 220. Ha tovább növeljük
a cellába előírt szám értékét, akkor x1 = 30 esetén a táblázatunk:

x1 x2 x3 x4 b
f1 1 1 0 1 90 <= 90
f2 0 1 1 1 80 <= 80
f3 1 1 1 0 50 <= 50
c* 2 3 2 2 220
x* 30 0 20 60 max

Láthatjuk, hogy ez éppen a szimplex módszerrel kapott x 02 megoldás. Ha tovább


növeljük a cellába előírt szám nagyságát, akkor már a célfüggvény nem marad ugyanaz,
például ha x1 = 31, akkor a célfüggvény értéke 218 lesz.
Az alternatív alapmegoldásokkal az optimális intervallumban lévő végtelen sok meg-
oldás közül bármelyik a számítógéppel is számíttatható. Ha például az általános meg-
oldásban a λ értéke 0,2, akkor a képletből a megfelelő partikuláris optimális megoldás:
x op = 0, 2 · [10 40 040]∗ + 0, 8 · [30 0 20 60]∗ = [26 8 16 56]∗ .
A Solver megoldása, ha az x1 cellájába az előírás 26:

x1 x2 x3 x4 b
f1 1 1 0 1 90 <= 90
f2 0 1 1 1 80 <= 80
f3 1 1 1 0 50 <= 50
c* 2 3 2 2 220
x* 26 8 16 56 max

Természetesen ez az eredmény azonos az általános képlettel kapottal.


1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 123

A lineáris programozási feladatok számítógépes optimalizálása során az alternatív


optimumoknak nincs különösebben nagy jelentősége. A gép megad egy optimumot (ha
a feltételek ezt lehetővé tették) és ha a felhasználónak más eredmény lenne alkalma-
sabb, akkor ezt közli a géppel (a Solverban, vagy hasonlóan a Lingóban új feltételként
szerepelteti) és az így kapott optimumot alkalmazhatja. A megváltozott feltételekkel
kapott megoldás használhatóságát elemzésekkel lehet eldönteni.
Térjünk vissza az Esettan1 diasorozat 4. feladatának megoldásához.

4. feladat: Egy gyárban mindig háromféle terméket állítanak elő, és a gyártáshoz 4


gépsort üzemeltetnek. Az egyes termékek egy-egy darabjának előállításához szükséges
időt a különböző gépsorokon a következő táblázat tartalmazza:

G1 G2 G3 G4
T1 15 20 10 12
T2 10 8 11 10
T3 40 45 38 44

Az egyes gépsorok üzemeltetési ideje egy adott időszakban rendre legfeljebb: 300, 400,
350, 450. Az első termékből pontosan 30, a másodikból legalább 20, a harmadikból
legfeljebb 35 darab az igény.
Vegyük fel a matematikai modellt, ha a cél a gyártási összidő minimuma!

A modell felírása: A döntési változó legyen xij , és jelentse azt, hogy hány darabot
gyárt az i-edik termékből a j-edik gépsor. xij ∈ N + , és mindegyik terméket gyártják.
Üzemidő feltételek:

15x11 + 10x21 + 40x31 ≤ 300

20x12 + 8x22 + 45x32 ≤ 400

10x13 + 11x23 + 38x33 ≤ 350

12x14 + 10x24 + 44x34 ≤ 450

Az igényhez tartozó feltételek:

x11 + x12 + x13 + x14 = 30

x21 + x22 + x23 + x24 ≥ 20

x31 + x32 + x33 + x34 ≤ 35


124 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

A célfüggvény:

z = 15x11 + 10x21 + 40x31 + 20x12 + 8x22 + 45x32 + 10x13 + 11x23 + 38x33 + 12x14 + 10x24 +
+44x34 → min .

A feladat megoldása: A modellünk „kétindexes” döntési változók segítségével tömö-


rebben írható fel, ezt használjuk az Excellel történő megoldásnál. Az első megoldási
kísérletünkből látszik az, amit az adatokat és a feltételeket megszemlélve modellezés és
számolás nélkül is azonnal meg tudunk mondani: az első terméket csak a leggyorsabban
dolgozó 3. gép gyártsa, erre a kapacitása elegendő, a második termékbőllegalább 20
darab készüljön a szintén gyorsan dolgozó 2. gépen, és a harmadik termékből, amelyre
a felső korlát 35, egy darabot se gyártsunk. A táblázat:

x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 b
f1 15 0 0 0 10 0 0 0 40 0 0 0 0 <= 300
f2 0 1 0 0 0 8 0 0 0 45 0 0 160 <= 400
f3 0 0 10 0 0 0 11 0 0 0 38 0 300 <= 350
f4 0 0 0 12 0 0 0 10 0 0 0 44 0 <= 450
f5 1 1 1 1 0 0 0 0 0 0 0 0 30 <> 30
f6 0 0 0 0 1 1 1 1 0 0 0 0 20 >= 20
f7 0 0 0 0 0 0 0 0 1 1 1 1 0 <= 35
c* 15 20 10 12 10 8 11 10 40 45 38 44 460 min
x* 0 0 30 0 0 20 0 0 0 0 0 0

Csakhogy az is világos, hogy ez a megoldás hibás, ugyanis az induló feltétel a


modellben az volt, hogy legalább 1 darabot gyártani kell a 3. termékből is. Beírjuk ezt
a feltételt (f7 sora az új táblázatban), ekkor ismét egy elég triviális megoldást kapunk:

x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 b
f1 15 0 0 0 10 0 0 0 40 0 0 0 0 <= 300
f2 0 1 0 0 0 8 0 0 0 45 0 0 160 <= 400
f3 0 0 10 0 0 0 11 0 0 0 38 0 338 <= 350
f4 0 0 0 12 0 0 0 10 0 0 0 44 0 <= 450
f5 1 1 1 1 0 0 0 0 0 0 0 0 30 <> 30
f6 0 0 0 0 1 1 1 1 0 0 0 0 20 >= 20
f7 0 0 0 0 0 0 0 0 1 1 1 1 1 >= 1
f8 0 0 0 0 0 0 0 0 1 1 1 1 1 <= 35
c* 15 20 10 12 10 8 11 10 40 45 38 44 498 min
x* 0 0 30 0 0 20 0 0 0 0 1 0

Eszerint most már 1 darab készül a 3. termékből is és ezt a gyors 3. gép gyártsa.
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 125

A feladat egyik tanulsága, hogy ne misztifikáljuk a matematikai modellezéssel tör-


ténő optimalizálást („nem kell ágyúval lőni a verébre”). Viszont a modell adatainak,
feltételeinek módosításával már „komolyabb” hasonló feladatokat tudunk optimalizálni.
Ha csak annyit módosítunk a feladatunkon, hogy maximumot keresünk, már egész más
megoldást kapunk:

x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 b
f1 15 0 0 0 10 0 0 0 40 0 0 0 300 <= 300
f2 0 1 0 0 0 8 0 0 0 45 0 0 400 <= 400
f3 0 0 10 0 0 0 11 0 0 0 38 0 350 <= 350
f4 0 0 0 12 0 0 0 10 0 0 0 44 450 <= 450
f5 1 1 1 1 0 0 0 0 0 0 0 0 30 <> 30
f6 0 0 0 0 1 1 1 1 0 0 0 0 20 >= 20
f7 0 0 0 0 0 0 0 0 1 1 1 1 31,6 >= 1
f8 0 0 0 0 0 0 0 0 1 1 1 1 31,6 <= 35
c* 15 20 10 12 10 8 11 10 40 45 38 44 2070 max
x* 0 30 0 0 0 20 0 0 8 5 9 10

Hajtsunk végre egy olyan változtatást, hogy a 3. termékből minimum 31-et gyártani
kell, azaz az f7 sorában 1 helyett írjunk 31-et. Ekkor a megoldás:

x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 b
f1 15 0 0 0 10 0 0 0 40 0 0 0 300 <= 300
f2 0 1 0 0 0 8 0 0 0 45 0 0 400 <= 400
f3 0 0 10 0 0 0 11 0 0 0 38 0 350 <= 350
f4 0 0 0 12 0 0 0 10 0 0 0 44 450 <= 450
f5 1 1 1 1 0 0 0 0 0 0 0 0 30 <> 30
f6 0 0 0 0 1 1 1 1 0 0 0 0 20 >= 20
f7 0 0 0 0 0 0 0 0 1 1 1 1 31 >= 31
f8 0 0 0 0 0 0 0 0 1 1 1 1 31 <= 35
c* 15 20 10 12 10 8 11 10 40 45 38 44 2022 min
x* 0 27,5 2,51 0 0 20 0 0 7,5 4,72 8,55 10,2

Látható, hogy a megoldások nem egész számok. Az egészértékűséget úgy állíthatjuk


be, hogy a Solver feltételeihez csatolunk még egyet: az x sorába egész (integer) értékek
kerüljenek. Ehhez a Solver „korlátozó feltételek” ablakában a „hozzáadásra” kattintunk,
a felugró ablakban bal oldalra az x sora, középre az „int”, jobbra ismét az x sora kerüljön
és „ok”. Az ekkor kapott megoldás:
126 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 b
f1 15 0 0 0 10 0 0 0 40 0 0 0 300 <= 300
f2 0 1 0 0 0 8 0 0 0 45 0 0 399 <= 400
f3 0 0 10 0 0 0 11 0 0 0 38 0 342 <= 350
f4 0 0 0 12 0 0 0 10 0 0 0 44 440 <= 450
f5 1 1 1 1 0 0 0 0 0 0 0 0 30 <> 30
f6 0 0 0 0 1 1 1 1 0 0 0 0 20 >= 20
f7 0 0 0 0 0 0 0 0 1 1 1 1 31 >= 31
f8 0 0 0 0 0 0 0 0 1 1 1 1 31 <= 35
c* 15 20 10 12 10 8 11 10 40 45 38 44 2051 min
x* 0 30 0 0 2 18 0 0 7 5 9 10

Észrevehetjük, hogy az egészértékű optimumok nem egyszerűen kerekítésekkel adód-


nak.
A számadatok, feltételek módosításával előállítható további optimális megoldások
készítését az olvasóra bízzuk.
Érdekes „kevert” feladat a következő:
5. feladat: (Raffai Mária: Döntéselőkészítés c. könyv 5.4. feladata nyomán): 4
erőforrás felhasználásával 3 géptípust gyártanak. Egy-egy géphez felhasznált erőforrás
mennyiségét a következő táblázat mutatja:

I II III
A 1 2 5
B 3 1 4
C 2 2 4
D 4 4 6

Az erőforrásokból 1600, 2000, 2800, 3600 egységnyi használható fel maximálisan.


A termékek fajlagos hozama 120, 80, 200 pénzegység, de csak akkor, ha a gépenként
gyártott mennyiség legalább 250, 100, 120 darab.
Így a cég vezetői úgy döntöttek, hogy ha a megrendelés nem éri el a fenti értékeket,
akkor azt a géptípust nem gyártják.
Ismert, hogy az egyes típusokból legfeljebb 660, 800, 320 darabot gyárthatnak.
Mennyit gyártsanak az egyes termékekből, hogy az összes hozam a lehető legna-
gyobb legyen?

Megoldás: A döntési változók a gyártandó darabszámok: x1 , x2 , x3 és a vezetői


állásfoglalás miatt: y1 , y2 , y3 .
Az induló feltételek : xi ∈ N (integer feltétel) és yi bináris (0 és 1 lehet).
A gyártási technológiából adódó korlátozó feltételeket a szokásos módon egyszerűen
felírhatjuk:
1.1. A TERMELÉSPROGRAMOZÁSI FELADATOK MEGOLDÁSAI 127

x1 + 2x2 + 5x3 ≤ 1600

3x1 + x2 + 4x3 ≤ 2000

2x1 + 2x2 + 4x3 ≤ 2800

4x1 + 4x2 + 6x3 ≤ 3600

A baloldalakat a technológiai mátrix és a darabszám oszlopvektor szorzatából írtuk


fel, a jobboldalakon a kapacitások mind felső korlátok.
Az első terméket akkor gyártjuk, ha a mennyisége legalább 250 darab, azaz:

x1 ≥ 250y1

Az y1 0 és 1 lehet. Ha 1, akkor érvényes a 250, mint alsó korlát.

x1 ≤ 660y1

Ha az y1 = 1, akkor lesz a 660 a felső korlát. Ha y1 = 0: nincs gyártás. Hasonlóan:

x2 ≥ 100y2 és x2 ≤ 800y2

x3 ≥ 120y3 és x3 ≤ 320y2

A relációkat átírhatjuk a matematikai modellek „szabványszerű” alakjára, de ha a


Lingóval oldjuk meg a feladatot, akkor maradhatnak a modell fenti alakjai.
A célfüggvény felvételénél is a gyártási feltételt alkalmazzuk:

z = 120x1 y1 + 80x2 y2 + 200x3 y3 → max .

A modellünk a Lingóban:
x1+2*x2+5*x3<1600;
3*x1+x2+4*x3<2000;
2*x1+2*x2+4*x3<2800;
4*x1+4*x2+6*x3<3600;
x1>250*y1;
x2>100*y2;
x3>120*y3;
x1<660*y1;
x2<800*y2;
128 1. FEJEZET: TERMELÉSPROGRAMOZÁS AZ IPARBAN

x3<320*y3
@gin(x1);@gin(x2);@gin(x3);@bin(y1);@bin(y2);@bin(y3);
max=120*x1*y1+80*x2*y2+200*x3*y3;
A megoldás:

Global optimal solution found.


Objective value: 96640.00
Variable Value Reduced Cost
X1 408.0000 −120.0000
X2 296.0000 −80.00000
X3 120.0000 −200.0000
Y1 1.000000 0.1200000E+08
Y2 1.000000 8000000.
Y3 1.000000 0.2000000E+08
Row Slack or Surplus Dual Price
1 0.000000 0.000000
2 0.000000 0.000000
3 912.0000 0.000000
4 64.00000 0.000000
5 158.0000 0.000000
6 196.0000 0.000000
7 0.000000 0.000000
8 252.0000 0.000000
9 504.0000 0.000000
10 200.0000 0.000000

Az optimális alapmegoldás tehát: x0 = [408 296120]∗ , y 0 = [1 1 1]∗ z0 = 96640.


A feladat paramétereinek megváltoztatásával variánsokat kaphatunk.
2. fejezet

Modellek a kereskedelemből és a
mezőgazdaságból

Esettan2 diasorozat feladatai

2.1. Termelésprogramozás a kereskedelemben


1. feladat: (Kocsis Péter: Opt. döntések lin.pr. 13. oldal) nyomán: egy kiskeres-
kedelmi cég négyféle üdítőt rendel, melyek nagykereskedelmi árai literenként: 30, 80,
100, 120 Ft. Az árrés az egyes termékekre: 20, 25, 20, 15%. Egy szállításkor összesen
8000 litert szállítanak. A kereslet alapján az első két fajtából legyen a rendelés fele.
Az elsőből is, a harmadikból is legalább 3000 litert, a negyedikből legfeljebb az össz-
mennyiség 10%-át rendeli a kiskereskedő. Vegyük fel azt a matematikai modellt, amely
az árrésből adódó hozamot maximalizálja!
A modell felvételéhez célszerű táblázatot készíteni.
Ár Árrés%
A 30 20
B 80 25
C 100 20
D 120 15

Döntési változó: xi jelenti a megrendelt mennyiséget literben. Maga a modell elég


egyszerűen felvehető, „illeszteni” kell egymáshoz az adatokat:

129
130 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

a) xi ∈ N

b)
x1 + x2 = 4000
x1 ≥ 3000
x3 ≥ 3000
x4 ≤ 800
x1 + x2 + x3 + x4 = 8000
A célfüggvény: c) z = 6x1 + 20x2 + 20x3 + 18x4 → max .

A feladatban érdemes kiszámolni a célfüggvény minimumát is, azaz mekkora legke-


vesebb hozamot jelentene a teljes mennyiség eladása.

A feladat megoldása
A megoldás Solverrel :

x1 x2 x3 x4 b
f1 1 1 0 0 4000 = 4000
f2 1 0 0 0 3000 >= 3000
f3 0 0 1 0 4000 >= 3000
f4 0 0 0 1 0 <= 800
f5 1 1 1 1 8000 = 8000
c* 6 20 20 18 118000
x* 3000 1000 4000 0 max

Egyszerűen kaphatjuk a bennünket leginkább érdeklő megoldást:


x 0 = [3000 1000 4000 0]∗ és zmax = 118000.
Ha szükséges, akkor az eltérésváltozók és a duál optimumok is leolvashatók
Megnézhetjük, hogy legrosszabb rendelés mekkora hozamhoz vezet. Ehhez csak a
Solver beállítását kell max-ról min-re változtatni. Így:
x1 x2 x3 x4 b
f1 1 1 0 0 4000 = 4000
f2 1 0 0 0 4000 >= 3000
f3 0 0 1 0 3200 >= 3000
f4 0 0 0 1 800 <= 800
f5 1 1 1 1 8000 = 8000
c* 6 20 20 18 102400
x* 4000 0 3200 800 min
2.1. TERMELÉSPROGRAMOZÁS A KERESKEDELEMBEN 131

Az „alap” optimum: x 0 = [4000 0 3200 800]∗ és zmin = 102 400.


Láthatjuk, hogy célértékben relatíve „nagyot” nem hibázhatunk a megrendelés leg-
rosszabb összetételekor sem.
Vizsgáljuk meg, hogy mi lesz az optimális megrendelés-összetétel, ha pontosan
115 000 nagyságú hozamot akarunk elérni. A Solver beállítását az érték gombra mó-
dosítjuk, a megoldás:

x1 x2 x3 x4 b
f1 1 1 0 0 4000 = 4000
f2 1 0 0 0 3214,3 >= 3000
f3 0 0 1 0 4000 >= 3000
f4 0 0 0 1 0 <= 800
f5 1 1 1 1 8000 = 8000
c* 6 20 20 18 115000
x* 3214 785,7 4000 0 érték

Az optimum módosult:

x 0 = [3214 785, 7 4000 0]∗ és z0 = 115 000.

A szövegben nincs kiemelve, de feltételezhető, hogy nem „ömlesztve” szállítják az


üdítőket, hanem literes palackokban. Ez indokolja az eredeti modellben az induló felté-
telt, az egészértékűséget. A számadatok „szerencsés” megválasztása miatt az egészérté-
kűség külön beállítás nélkül is teljesült. A fenti optimum kissé más lesz, ha a Solverben
ezt is bejelöljük. Így a megoldás:

x1 x2 x3 x4 b
f1 1 1 0 0 4000 = 4000
f2 1 0 0 0 3214 >= 3000
f3 0 0 1 0 3998 >= 3000
f4 0 0 0 1 2 <= 800
f5 1 1 1 1 8000 = 8000
c* 6 20 20 18 115000
x* 3214 786 3998 2 egész

x 0 = [3214 786 3998 2]∗ és z0 = 115 000.

Látható, hogy ez a megoldás nem egyszerű kerekítéssel adódik.


Az előírt célértékre optimális megoldást nem mindig kapunk, próbáljuk meg!
132 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

2. feladat: Virágüzlet anyák napi optimális kínálatának tervezése. (F.A. főiskolai


hallgató esettanulmánya nyomán.)
Az üzlet 8-féle virágot vásárol, tucatjával. Ismert 1 tucat virág vízigénye literben
és 1 szál virág eladási ára forintban. Cél a maximális árbevétel.

vízigény eladási ár
sárgarózsa 9 300
vörösrózsa 10 400
liliom 8 500
flamingó 13 1000
tulipán 5 200
frézia 6 180
kála 12 600
papagájvirág 15 1500
A felhasználható vízmennyiség maximum 700 liter.
A vevők a tulipánt kétszer annyira kedvelik, mint a vörös rózsát, a rendelésnél ezt
figyelembe vesszük.
A flamingó és a papagájvirág drága, ezért legfeljebb 2–2 tucatot rendelnek belőle.
Fréziából és sárga rózsából ugyanannyit kérnek.
Minden virágfajtából legalább 1 tucatot rendelnek.

A modell felvétele: A döntési változó a virágfajták 1 tucatjának darabszáma: xi .


Az induló feltétel: xi ∈ N +
A feltételek:
a vízigény miatt: 9x1 + 10x2 + 8x3 + 13x4 + 5x5 + 6x6 + 12x7 + 15x8 ≤ 700,
a vörös rózsák számának kétszerese egyenlő a tulipánok számával: 2x2 − x5 = 0,
a flamingóból és papagájvirágból legfeljebb 2–2 tucatot rendelnek: x4 ≤ 2, x8 ≤ 2,
a fréziák száma megegyezik a sárga rózsák számával: x1 − x6 = 0,
legalább 1 tucatot mindenből rendelnek: x1 ≥ 1; x2 ≥ 1; . . ., x8 ≥ 1.
A célfüggvényhez kiszámoljuk 1 tucat virág árát, és maximumot keresünk:
z = 3600x1 + 4800x2 + 6000x3 + 120004 + 2400x5 + 2160x6 + 7200x7 + 18000x8 → max .

A feladat megoldása:
Ha kellően rendezetten vesszük fel a matematikai modell relációit, akkor azokból
a gépi megoldás indulótábláját közvetlenül felvehetjük. Általában viszont indokolt
a matematikai modell szokásos alakjának kiírása, ugyanis a megoldásoknál sokszor
szükséges variánsok számolása áttekinthetőbben történhet.
A modell feltételeiben ritkán szokás egyszerűsítéseket tenni, mert ez termékmódo-
sulással járhat. A célfüggvényt tetszés szerint egyszerűsíthetjük, például ha túl nagyok
az együtthatók. Ez a döntési változók optimális értékeit nem befolyásolja, csak az op-
timum értékét kell „visszakorrigálni”. Esetünkben legyenek a célfüggvény-együtthatók
2.1. TERMELÉSPROGRAMOZÁS A KERESKEDELEMBEN 133

a virágok tucatjának árai. Így a kapott optimumot 12-vel szorozva kapjuk a maximális
árbevételt.

x1 x2 x3 x4 x5 x6 x7 x8 b
f1 9 10 8 13 5 6 12 15 0 <= 700
f2 0 2 0 0 −1 0 0 0 0 = 0
f3 0 0 0 1 0 0 0 0 0 <= 2
f4 0 0 0 0 0 0 0 1 0 <= 2
f5 1 0 0 0 0 −1 0 0 0 = 0
f6 1 0 0 0 0 0 0 0 0 >= 1
f7 0 1 0 0 0 0 0 0 0 >= 1
f8 0 0 1 0 0 0 0 0 0 >= 1
f9 0 0 0 1 0 0 0 0 0 >= 1
f10 0 0 0 0 1 0 0 0 0 >= 1
f11 0 0 0 0 0 1 0 0 0 >= 1
f12 0 0 0 0 0 0 1 0 0 >= 1
f13 0 0 0 0 0 0 0 1 0 >= 1
c* 300 400 500 1000 200 180 600 1500 0 max
x* 0 0 0 0 0 0 0 0

A Solver ebből egész elképesztő megoldást adott:

1 1 74,6 2 2 1 1 2

A célfüggvény optimális értéke: 44193.


Ez azt jelenti, hogy az x3 (a liliom) mennyisége legyen majdnem 75 tucat, a többiből
csupán egy-két tucatot kérjünk. Nyilvánvalóan finomítani kell a modellen, ez esetben
kérdezzük meg például a virágboltost, hogy liliomból maximum mennyit tudna eladni.
Tegyük fel, hogy a válasza: legfeljebb 5 tucatot. Ezt a feltételt beillesztjük a modellbe
14. feltételként, azaz x3 <= 5. Azt is megtudjuk, hogy kálából legfeljebb 8 tucatot
rendelne: x7 <= 8, ezt az információt is beépítjük.
Ezekkel a feltételekkel az optimális megoldás:

1 24,7 5 2 49,3 1 8 2

Ez a megoldás is furcsa, 0,7 és 0,3 tucatot nem nagyon lehet rendelni. Nem sokat
javul, ha egész értékű optimumokat kérünk, ekkor ugyanis:

1 24 5 2 48 1 8 2
134 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

Kicsit valószínűtlennek tűnik a többihez képest túl nagy x2 és x5 érték. Vegyük


észre, hogy az lehet a gond, hogy igazából csupán a vízigényt tekintettük felső kor-
látnak. A kereskedő számára a beszerzési ár is nyilván korlátozó feltétel, akárcsak a
maximálisan eladható árumennyiség. Ha feltesszük, hogy legfeljebb 50 tucat eladását
tudja vállalni a kereskedő, akkor az optimum:

1 11 3 2 22 1 8 2

Az optimum értéke ez esetben: 20580.

Az eredeti modell megoldásakor tehát a modellben lényeges információk hiányát


tapasztaltuk, az elfogadható (kiindulási) eredményekhez további feltételek beillesztése,
illetve módosítások szükségesek.

Az új feltételeket az Excel táblába néha kissé nehézkes beiktatni. Jóval egyszerűb-


ben járhatunk el, ha a Lingót használjuk a modell, illetve a szükségessé váló variánsok
optimalizálására. A modellünk is szemléletesen jelenik meg a Lingón:

9*x1+10*x2+8*x3+13*x4+5*x5+6*x6+12*x7+15*x8<700;
2*x2-x5=0;
x4<2;x8<2;
x1-x6=0;
x1>1;x2>1;x3>1;x4>1;x5>1;x6>1;x7>1;x8>1;
max=300*x1+480*x2+500*x3+1000*x4+200*x5+180*x6+600*x7+1500*x8;

A megoldás természetesen megegyezik az eredeti modell Solverrel történt megoldá-


sával:
Global optimal solution found.
Objective value: 44192.50
Variable Value
X1 1.000000
X2 1.000000
X3 74.62500
X4 2.000000
X5 2.000000
X6 1.000000
X7 1.000000
X8 2.000000
2.1. TERMELÉSPROGRAMOZÁS A KERESKEDELEMBEN 135

Ha a teljes forgalom értékére 25 000-ben maximális, 15 000-ben minimális értéket


adunk, valamint: az x1 , x3 és x7 felső határa 10, az x2 értéke legalább 2 legyen és az x5
essen 3 és 5 közé, valamint egész értékűek legyenek a megoldások, akkor a modellünk:

9*x1+10*x2+8*x3+13*x4+5*x5+6*x6+12*x7+15*x8<700;
2*x2-x5=0;
x4<2;x8<2;
x1-x6=0;
x1>1;x2>1;x3>1;x4>1;x5>1;x6>1;x7>1;x8>1;
300*x1+400*x2+500*x3+1000*x4+200*x5+180*x6+600*x7+1500*x8<25000;
300*x1+400*x2+500*x3+1000*x4+200*x5+180*x6+600*x7+1500*x8>15000;
x1<10;x3<10;x7<10; x2>4; x5>3;x5<10;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);@gin(x6);@gin(x7);@gin(x8);
max=300*x1+400*x2+500*x3+1000*x4+200*x5+180*x6+600*x7+1500*x8;

Az egészértékűséget a Lingóban @gin(változó) beírással kérjük.


Az optimális megoldás létezik és a kapott értékek:

Global optimal solution found.

Objective value: 24800.00

Variable Value
X1 10.00000
X2 5.000000
X3 10.00000
X4 2.000000
X5 10.00000
X6 10.00000
X7 10.00000
X8 2.000000

A modellünkön sok egyéb változtatást hajthatunk végre.

3. feladat (Kocsis Péter: Opt. döntések lin.pr. (15. oldal) nyomán): egy keres-
kedelmi cég a gyártól kétféle terméket rendel, négyféle kiszerelésben, 20–20 kartonnal
minden kiszerelésből. A termékek eladási egységárát, a kereskedelmi árrést és az egyes
kiszerelések kartonozási darabszámait ismerjük:
136 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

I II Árrés% Kartonozás
A 52 78 30 36
B 65 117 30 16
C 90 180 20 12
D 96 240 20 6
Tapasztalatból tudjuk, hogy az I. termékből legalább kétszer annyi fogy, mint a II.-ból.
Ismert, hogy az A kiszerelésben az I. termékből legfeljebb annyit vásárolnak, mint
a II.-ból. Cél a maximális árbevétel.
Adjuk meg a modellt arra az esetre is, ha célunk a legnagyobb hozam!

A modell felvétele
Döntési változó: xij jelenti az i-edik kiszerelésben a j-edik termékből rendelt dara-
bok számát. Az induló feltétel: xij ∈ N
A korlátozó feltételek:
Egy kartonban 36, 16, 12, 6 darab van és 20–20 kartont kértünk:

x11 + x12 = 720

x21 + x22 = 320

x31 + x32 = 240

x41 + x42 = 120

Az I. termékből legalább kétszer annyi fogy, mint a II.-ból:

x11 + x21 + x31 + x41 − 2x12 − 2x22 − 2x32 − 2x42 ≥0

Az I. termékből legfeljebb annyit vásárolnak, mint a II.-ból:

x11 − x12 ≤ 0

A célfüggvény az árbevételre:

z = 52x11 + 78x12 + 65x21 + 117x22 + 90x31 + 180x32 + 96x41 + 240x42 → max .

A célfüggvény a hozamra:

z ′ = 12x11 + 18x12 + 15x21 + 27x22 + 15x31 + 30x32 + 16x41 + 40x42 → max

A z ′ együtthatóit diszkontálással számoltuk.

A feladat megoldása
A modellünk optimális megoldása Solverrel:
2.1. TERMELÉSPROGRAMOZÁS A KERESKEDELEMBEN 137

x11 x12 x21 x22 x31 x32 x41 x42 b


f1 1 1 0 0 0 0 0 0 720 <> 720
f2 0 0 1 1 0 0 0 0 320 <> 320
f3 0 0 0 0 1 1 0 0 240 <> 240
f4 0 0 0 0 0 0 1 1 120 <> 120
f5 1 −2 1 −2 1 −2 1 −2 0 >= 0
f6 1 -1 0 0 0 0 0 0 0 <= 0
c* 52 78 65 117 90 180 96 240 116080 max
x* 360 360 320 0 240 0 13,3 107

Az x41 értékére 13,3-at kaptunk. Az egészértékűség feltételezésével az optimum


értéke kissé csökken: 116 080-ról 115 594-re és az optimális xij értékek:

x* 360 360 320 0 240 0 14 106

A Lingo modelljében a hozam célfüggvényét is feltüntethetjük, sőt, az egységnyi ár-


bevételre eső hozam optimális értékét is kiszámoltathatjuk. A program egyszerre csak
egy célfüggvénnyel dolgozik, a többit az illető sor elé kitett felkiáltójellel („!”) felfüg-
gesztjük. Így a modellel ebben az alakban az eredeti feladat optimumát számoltatjuk:

x11+x12=720;
x21+x22=320;
x31+x32=240;
x41+x42=120;
x11+x21+x31+x41-2*x12-2*x22-2*x32-2*x42>0;
x11-x12<0;
@gin(x11);@gin(x12);@gin(x21);@gin(x22);@gin(x31);@gin(x32);@gin(x41);@gin(x42);
max=52*x11+78*x12+65*x21+117*x22+90*x31+180*x32+96*x41+240*x42;
!max=12*x11+18*x12+15*x21+27*x22+15*x31+30*x32+16*x41+40*x42;
!max=(12*x11+18*x12+15*x21+27*x22+15*x31+30*x32+16*x41+40*x42)/
/(52*x11+78*x12+65*x21+117*x22+90*x31+180*x32+96*x41+240*x42);

Az optimumok megegyeznek a Solverrel kapott értékekkel (próbáljuk ki!).


Ha a „középső” célfüggvény (a hozamra felírt) lesz az érvényes (a felkiáltójelet át-
helyezzük az első célfüggvény elé, akkor az optimális megoldás:
138 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

Global optimal solution found.


Objective value: 23664.00
Variable Value
X11 360.0000
X12 360.0000
X21 320.0000
X22 0.000000
X31 240.0000
X32 0.000000
X41 14.00000
X42 106.0000
A változók optimális értékei nem változnak meg, de az optimum értéke természe-
tesen más lesz. (Ez az érték a Lindo használata nélkül is kiszámítható lenne.)
Ha a harmadik célfüggvény lesz az érvényes (áthelyezzük a felkiáltójelet), akkor az
optimális érték 0,2107839, ami közelítőleg 21%-os, árbevételre eső hozamot jelent. A
változók optimális értékei nem változnak.

2.2. Mezőgazdasági-agráripari modellek


1. feladat: Egy gazdaságban az állatok etetésére négyféle takarmánykeveréket hasz-
nálhatnak, amelyeket három tápanyagból készítenek. Az egyes keverékek 1 egysége a
tápanyagokból rendre 2; 1; 1 és 1; 2; 0 és 1; 0; 2, valamint 0; 2; 1 egységnyit tartalmaz.
A tápanyagokból legalább 5; 4; és 10 egységnyi felhasználása szükséges, de legfeljebb
kétszer ennyit használhatnak fel. A keverékek beszerzési egységárai rendre: 5; 3; 4; 1.
Cél a minimális költségű takarmányozási program. Írjuk fel a matematikai modellt!

A modell felvétele:
Az xi döntési változó a keverékek „darabszáma”.
Az induló feltétel: xij ∈N
A korlátozó feltételek (az alsó határok):

2x1 + x2 + x3 ≥ 5
x1 + 2x2 + 2x4 ≥ 4
x1 + 2x3 + x4 ≥ 10
Továbbá (a felső korlátok):
2x1 + x2 + x3 ≤ 10
x1 + 2x2 + 2x4 ≤ 8
x1 + 2x3 + x4 ≤ 20
A célfüggvény: z = 5x1 + 3x2 + 4x3 + x4 → min .
2.2. MEZŐGAZDASÁGI-AGRÁRIPARI MODELLEK 139

Az 1. feladat megoldása:
A modellünk eléggé egyszerű, a megoldás Solverrel, az egészértékűség feltételezése
nélkül:

x1 x2 x3 x4 b
f1 2 1 1 0 5 >= 5
f2 1 2 0 2 4 >= 4
f3 1 0 2 1 10 >= 10
f4 2 1 1 0 5 <= 10
f5 1 2 0 2 4 <= 8
f6 1 0 2 1 10 <= 20
c* 5 3 4 1 20
x* 0,571429 0 3,857143 1,714286 min

Az integer megoldás: a minimum értéke változatlanul 20, és

x* 1 0 3 3

A Solver alkalmazásakor egyszerűsítésekkel élhetünk. A fenti feladatnál például


nem szükséges a táblázatban 6 feltételsort felvennünk, elegendő lesz 3, mivel a felső
korlátok az A mátrix és az x vektor szorzatának azonos soraira vonatkoznak. Így az
induló táblázatunk:

x1 x2 x3 x4 b
f1 2 1 1 0 0 >= 5 <= 10
f2 1 2 0 2 0 >= 4 <= 8
f3 1 0 2 1 0 >= 10 <= 20
c* 5 3 4 1 0
x* 0 0 0 0 min

A megoldás szokásos előkészítésekor (szorzatösszeg-képzés, beállítások) a Solver kor-


látozó feltételei felvételénél egyszerűen bevesszük az alsó és felső korlátokat, a megfelelő
cellák bejelölésével.
Ha a feladat egyik változatában előírás lenne, hogy a megoldásban például az x1
értéke legyen 2, akkor ehhez sem kell a táblázatban új sort felvenni, elegendő a korlátozó
feltételek között az x1 cellájára ezt az előírást megadni. Így a megoldásunk:
140 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

x1 x2 x3 x4 b
f1 2 1 1 0 7 >= 5 <= 10
f2 1 2 0 2 6 >= 4 <= 8
f3 1 0 2 1 10 >= 10 <= 20
c* 5 3 4 1 24
x* 2 0 3 2 min

A Lingo alkalmazásához bevisszük a modellt:

2*x1+x2+x3>5;
x1+2*x2+2*x4>4;
x1+2*x3+x4>10;
2*x1+x2+x3<10;
x1+2*x2+2*x4<8
x1+2*x3+x4<20;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);
min=5*x1+3*x2+4*x3+x4;

Az eredmények természetesen egybeesnek a Solver megoldásaival:

Global optimal solution found.

Objective value: 20.00000

Variable Value
X1 1.000000
X2 0.000000
X3 3.000000
X4 3.000000

Értelmezhetjük a duál optimumokat, az érzékenységvizsgálatok eredményeit, és kér-


hetjük a maximumra történő megoldást, ami zmax = 41, x0 max = [0 1 9 2]∗ . Ha az a
feltételünk, hogy a célfüggvény értéke 30 legyen, akkor: x0 max = [4 0 2 2]∗ . További
más feltételeket is szabhatunk.

2. feladat (zöldségtermesztés): Családi vállalkozásban hétféle zöldséget termelnek.


Egységnyi mennyiség előállításához a következő anyagok szükségesek:
2.2. MEZŐGAZDASÁGI-AGRÁRIPARI MODELLEK 141

Paprika Paradicsom Uborka Káposzta Zeller Karfiol Saláta


Mag 1,2 1,1 0,5 0,9 0,3 0,8 1,3
Föld 53 14 3 20 16 23 10
Trágya 4 4 2 1 2 2 1
Talajjav. 10 9 9 5 3 6 6
Permet 15 10 5 9 13 15 9
Egyéb 5 5 5 1 1 6 3

Az anyagokra felső korlátok érvényesek, ezek a következők:


mag: 120, föld: 1156, trágya: 316, talajjavító: 313, permet: 317, egyéb: 319.
A zöldségfélék eladási egységárai: 450, 500, 120, 350, 110, 90, 140.
A kereslet alsó határa az egyes zöldségfélékre: 2, 4, 1, 3, 1, 5, 1.
Mennyit termeljenek az egyes zöldségfélékből, ha a maximális árbevétel a cél?
(A mértékegységek értelemszerűek, konkretizálásuktól eltekinthetünk.)

A modell felvétele:
Az xi döntési változó a zöldségfélék termelt mennyisége, xi ≥ 0.
A korlátozó feltételek az adatokból és az ismert korlátokból adódnak.

A matematikai modell:
Az induló feltétel: xi ≥ 0
A korlátozó feltételek:
1, 2x1 + 1, 1x2 + 0, 5x3 + 0, 9x4 + 0, 3x5 + 0, 8x6 + 1, 3x7 ≤ 120
53x1 + 14x2 + 3x3 + 20x4 + 16x5 + 23x6 + 10x7 ≤ 1156
4x1 + 4x2 + 2x3 + x4 + 2x5 + 2x6 + x7 ≤ 316
10x1 + 9x2 + 9x3 + 5x4 + 3x5 + 8x6 + 6x7 ≤ 313
15x1 + 10x2 + 5x3 + 9x4 + 13x5 + 15x6 + 9x7 ≤ 317
5x1 + 5x2 + 5x3 + x4 + x5 + 6x6 + 3x7 ≤ 319
x1 ≥ 2, x2 ≥ 4, x3 ≥ 1, x4 ≥ 3, x5 ≥ 1, x6 ≥ 5, x7 ≥ 1
A célfüggvény: z = 450x1 + 500x2 + 120x3 + 350x4 + 110x5 + 90x6 + 140x7 → max .

A feladat megoldása
Az Excel-táblában az A mátrix relatíve elég nagy, 13 sor és 7 oszlop.
142 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

x1 x2 x3 x4 x5 x6 x7 b
f1 1,2 1,1 0,5 0,9 0,3 0,6 1,3 27,58 <= 120
f2 53 14 3 20 16 23 10 531,2 <= 1156
f3 4 4 2 1 2 2 1 89,2 <= 316
f4 10 9 9 5 3 8 6 235,2 <= 313
f5 15 10 5 9 13 15 9 317 <= 317
f6 5 5 5 1 1 6 3 131 <= 319
f7 1 0 0 0 0 0 0 2 >= 2
f8 0 1 0 0 0 0 0 15,8 >= 4
f9 0 0 1 0 0 0 0 1 >= 1
f10 0 0 0 1 0 0 0 3 >= 3
f11 0 0 0 0 1 0 0 1 >= 1
f12 0 0 0 0 0 1 0 5 >= 5
f13 0 0 0 0 0 0 1 1 >= 1
c* 450 500 120 350 110 90 140 10670 max
x* 2 15,8 1 3 1 5 1

Az optimális megoldások a táblázatból kiolvashatók. Azt is láthatjuk, hogy jelen-


tősek a kapacitás-maradványok. Az első 7 kapacitásra az optimális megoldás esetén
ezek az értékek:

92,42
624,8
77,8
226,8
0
188
11,8

Mindenképpen elemzést, utángondolást igényelnek ezek a számok, hiszen például az


első kapacitásnak csak 23%-át használjuk fel. Lehetséges az is, hogy valami fatális hibát
követtünk el az adatok felvételekor, a mértékegységekben például, hiszen ha a magokra
az adatok súlyban adottak, akkor a magméretek különbözősége hibákhoz vezethet.
Kicsit kényelmesebb a modell bevitele Lingóban.

3. feladat (cukorgyártás): Három gazdaság cukorrépa termése rendre 1200, 600,


1000 tonna. A termelők 4 cukorgyárral szerződnek, amelyek 1600, 1400, 1100, 800
tonna feldolgozását tudnák vállalni. A tonnánkénti szállítási költségeket (adott pénz-
egységben) ismerjük:
2.2. MEZŐGAZDASÁGI-AGRÁRIPARI MODELLEK 143

1 3 2 2 1200
1 3 2 1 600
2 6 4 3 1000
1600 1400 1100 800
A termelők kikötése, hogy a teljes mennyiséget átvegyék tőlük.
A gyárak mindegyike legalább 150 tonnát szeretne vásárolni a 3. termelőtől.
Az üzletet szervező célja a lehető legkisebb szállítási költség elérése.

A matematikai modell:
A döntési változó xij , amely az i-edik termelőtől a j-edik gyárba szállítandó mennyi-
séget jelöli. Az induló feltétel: xij ≥ 0
A termelőktől a teljes mennyiséget el kell szállítani:

x11 + x12 + x13 + x14 = 1200

x21 + x22 + x23 + x24 = 600

x31 + x32 + x33 + x34 = 1000

A gyárak kapacitása felső korlátot jelent:

x11 + x21 + x31 ≤ 1600

x12 + x22 + x32 ≤ 1400

x13 + x23 + x33 ≤ 1100

x14 + x24 + x34 ≤ 800

A 3. termelőtől mindenki vásárolna:

x31 ≥ 150, x32 ≥ 150, x33 ≥ 150, x34 ≥ 150

A célfüggvény:

z = x11 + 3x12 + 2x13 + 2x14 + x21 + 3x22 + 2x23 + x24 + 2x31 + 6x32 + 4x33 + 3x34 → min .

A feladathoz további korlátozó feltételek adhatók, például a második gyár az első


termelőtől nem akar vásárolni: x12 = 0.
Előfordulhat kettős korlátozás is, például a negyedik gyár a második termelőtől
legalább 50, de legfeljebb 200 tonnát vásárolna: 50 ≤ x24 ≤ 200.
144 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

A feladat megoldása
Bevisszük a modellt a Lingóba:

x11+x12+x13+x14=1200;
x21+x22+x23+x24=600;
x31+x32+x33+x34=1000;
x11+x21+x31<1600;
x12+x22+x32<1400;
x13+x23+x33<1100;
x14+x24+x34<800;
x31>150;x32>150;x33>150;x34>150;
min=x11+3*x12+2*x13+2*x14+x21+3*x22+2*x23+x24+2*x31+6*x32+4*x33+3*x34;

Az optimális megoldás:

Global optimal solution found.

Objective value: 5000.000

Variable Value
X11 1050.000
X12 0.000000
X13 150.0000
X14 0.000000
X21 0.000000
X22 0.000000
X23 0.000000
X24 600.0000
X31 550.0000
X32 150.0000
X33 150.0000
X34 150.0000

Az optimális megoldást táblázatba foglalhatjuk:

1050 0 0 150 1200


0 0 0 600 600
550 150 150 150 1000
1600 150 150 800
2.2. MEZŐGAZDASÁGI-AGRÁRIPARI MODELLEK 145

A kapott eredmény a szállítási költség minimumára vonatkozik. Ha a szállítási relációk


mátrixába írt számok szerződési árakat jelentenek, és maximális árbevételt keresünk,
akkor nyilvánvalóan egészen más optimumot kapunk: z0 = 9100 és

0 250 950 0 1200


0 600 0 0 600
150 550 150 150 1000
150 1400 1100 150

További feltételekkel variánsokat számolhatunk.


A feladat – mint a kétindexes modellek általában – megoldható a mátrixcsere mód-
szerével is. Felvesszük az adatokat és megoldás helyét kijelöljük:

1 3 2 2 1200
1 3 2 1 600
2 6 4 3 1000

1600 1400 1100 800

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 0 0 0 0

A szokásos előkészítés és a feladat feltételeinek a Solver korlátozó feltételei közé


történt felvitele után megoldást kapunk:

1100 0 100 0 1200


0 0 0 600 600
500 150 150 200 1000

1600 150 250 800 5000

A célfüggvény értéke megegyezik a Lingóval számítottal, de az optimális megol-


dásban eltéréseket tapasztalhatunk. A feladatnak alternatív optimumai vannak, ezek
közül néhányat a beállítások módosításával megkaphatunk, például:
146 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

1050 0 150 0 1200


0 0 0 600 600
550 150 150 150 1000

1600 150 300 750 5000

4. feladat: (N. I. G. főiskolai hallgató esettanulmánya nyomán) J. B. egy tanyát


vásárolt, amelyen saját gazdaságot akar indítani. Nyulat, kecskét, baromfit, ludat és
kacsát kíván tartani. A tanyán rendelkezésre áll:
50 nyúlketrec, 2 tyúkól, 5 fedett karám kacsáknak, vagy ludaknak, egy legelő, 1
nyílt karám kecskéknek.
Az építmények korlátai:
1 nyúlketrecbe csak egy állat tehető.
A tyúkólakba 16–16 állat fér.
1 fedett karámba 22 állat helyezhető el. 2 karámba kacsa, 3-ba lúd kerül.
A nyílt karámban 10 kecskének van hely.
A legelőre ludakat vagy kecskéket engednek, havonta legfeljebb 50-et.
A területen lévő raktár kapacitása és a takarmányok egységárai:

kapacitás egységár
széna 36 bála 500/bála
táp 1000 kg 300/kg
búza 1000 kg 150/kg
kukorica 500 kg 200/kg
víz korlátlan 15/liter

Állatbeszerzésre az új tulajdonos maximum 300 000, a havi fenntartásra legfeljebb


600 000 pénzegységet akar fordítani.
Ismert az állatok havi takarmányszükséglete, ami az egységárakkal pénzben kife-
jezhető. Adott továbbá az átlagos hozam állatonként. Táblázatban:

nyúl kecske tyúk liba kacsa


beszerzés 2000 10000 1000 1500 1000
havi költség 3450 8475 2850 3900 2850
hozam 1000 4200 800 1500 1200

Feltétel még, hogy a gazda legalább 45 nyulat tart.


Cél a lehető legnagyobb hozam elérése.

A modell felvétele
A döntési változó xi , az egyes állatfajták darabszáma a táblázat sorrendjében.
2.2. MEZŐGAZDASÁGI-AGRÁRIPARI MODELLEK 147

Az induló feltétel: xi ∈ N
Az építmények korlátai:
Nyulak száma: x1 ≥ 45, de x1 ≤ 50
Tyúkok száma: x2 ≤ 32
Kecskék száma: x3 ≤ 10
Libák száma: x4 ≤ 44
Kacsák száma: x5 ≤ 66
A legelő „kapacitása”: x3 + x4 ≤ 50
Beszerzés: 2000x1 + 10 000x2 + 1000x3 + 1500x4 + 1000x5 ≤ 300000
Havi költség: 3450x1 + 8475x2 + 2850x3 + 3900x4 + 2850x5 ≤ 600 000
A célfüggvény: z = 1000x1 + 4200x2 + 800x3 + 1500x4 + 1200x5 → max .
A feladat az eredeti esettanulmány rövidítése.

A modell megoldása
A feladat egyik érdekessége, hogy az adatok felmérése során az optimumszámítás-
hoz felesleges adatok is szerepelnek a szövegben. A havi költség kiszámításához való-
színűleg szükség volt a raktárra vonatkozó adatokra, de a modell felírásához nem volt
szükség ezekre. Előfordulhat, hogy olyan modellt veszünk fel, ahol ezeket az adatokat
is felhasználjuk, vagy a probléma megoldásához több modell szükséges.
A döntési változók optimális értékeit nem befolyásolja, ha a pénzben megadott
adatokat ezres mértékegységekben vesszük fel. Így a „nyers” megoldás Solverrel:

x1 x2 x3 x4 x5 b
f1 1 0 0 0 0 48,95 >= 45
f2 1 0 0 0 0 48,95 <= 50
f3 0 1 0 0 0 6,41 <= 32
f4 0 0 1 0 0 6 <= 10
f5 0 0 0 1 0 44 <= 44
f6 0 0 0 0 1 66 <= 66
f7 0 0 1 1 0 50 <= 50
f8 2 10 1 1,5 1 300 <= 300
f9 3,45 8,475 2,85 3,9 2,85 600 <= 600
c* 1 4,2 0,8 1,5 1,2 225,9 max
x* 48,95 6,41 6 44 66
148 2. FEJEZET: MODELLEK A KERESKEDELEMBŐL. . .

Természetesen az állatok darabszáma nem lehet törtszám, egész értékű megoldásra


van szükség. Az integer megoldásokhoz azonban a Solver nem készít jelentéseket, így
a jól használható érzékenység-vizsgálatot sem, amit a nem egészértékű megoldáskor
elkészíttethetünk és egyes eredményeit jó közelítéssel felhasználhatjuk az integer meg-
oldásban is.
Az egész értékű megoldásban a célfüggvény optimális értéke: 225 400 és

x0 * 46 7 6 44 66

A Lingo modelljét gyorsan felvehetjük:


2000*x1+10000*x2+1000*x3+1500*x4+1000*x5<300000;
3450*x1+8475*x2+2850*x3+3900*x4+2850*x5<600000;
x1>45;x1<50;x2<32;x3<10;x4<44;x5<66;x3+x4<50;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
max=1000*x1+4200*x2+800*x3+1500*x4+1200*x5;
Az optimális megoldás azonos a Solverrel kapottal:

Global optimal solution found.

Objective value: 225400.0

Variable Value
X1 46.00000
X2 7.000000
X3 6.000000
X4 44.00000
X5 66.00000

A variánsok számolása a Lingo használatával ebben az esetben is egyszerűbb, és a


ez a szoftver közvetlenül „ jelenti” a duál optimumokat integer megoldáskor is.
3. fejezet

Pénzügyi feladatok

1. feladat: (Kocsis Péter: Opt. döntések lin.pr. (23. oldal) nyomán): Adott négy
részvény jelenlegi árfolyama és a tőzsde 4 hónappal későbbi árfolyamelvárásai:

jelenlegi árfolyamelvárás
árfolyam (Ft/db)
A 13 800 16 600
B 14 600 15 500
C 2800 3100
D 3800 4200

Összesen legfeljebb 4 millió forintot akarunk befektetni.


Mindegyik részvényből legalább félmillió Ft értékben vásárolunk.
Az „A” részvényből legfeljebb 100 darabot vennénk.
A „C” részvényből legalább kétszerannyit veszünk, mint a „D”-ből.
Milyen portfolió esetén lenne az elvárt hozam maximális?

A modell felvétele
A döntési változó az egyes részvények darabszáma: xi .
Az induló feltétel: xi ∈ N +
500 000
Az egyes részvényekből legalább ≈ 37, ill. 35, 179, 132 darabot veszünk.
13 800
Így a darabszámokra: x1 ≥ 37 és x1 ≤ 100, x2 ≥ 35, x3 ≥ 179, x4 ≥ 132.
Továbbá: x3 − 2x4 ≥ 0 („legalább kétszer annyit veszünk”).
13 800x1 + 14 600x2 + 2800x3 + 3800x4 ≤ 4 000 000 (a befektetés maximálisan 4
millió).
A célfüggvény: z = 2800x1 + 900x2 + 300x3 + 400x4 → max.

A modell megoldása
A modellünk megoldása egyszerű:

149
150 3. FEJEZET: PÉNZÜGYI FELADATOK

x1 x2 x3 x4 b
f1 1 0 0 0 100 >= 37
f2 0 1 0 0 35 >= 35
f3 0 0 1 0 574 >= 179
f4 0 0 0 1 132 >= 132
f5 1 0 0 0 100 <= 100
f6 0 0 1 −2 310 >= 0
f7 138 146 28 38 39998 <= 40000
c* 28 9 3 4 5365 max
x* 100 35 574 132

A célfüggvény optimális értéke a táblázatunkban százas „mértékegységben” adott,


amit most a cellaszélesség miatt vettünk így fel, tehát: z0 = 536 500.
A Lingo modellnél a cella szélességre nem kell ügyelnünk:
x1>37;x1<100;x2>35;x3>179;x4>132;
x3-2*x4>0;
13800*x1+14600*x2+2800*x3+3800*x4<4000000;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);
max=2800*x1+900*x2+300*x3+400*x4;
A modellünk összes feltételét akár egy sorban is elhelyezhetjük. A megoldás:
Global optimal solution found.
Objective value: 536500.0
Variable Value
X1 100.0000
X2 35.00000
X3 574.0000
X4 132.0000

2. feladat: 10 millió forintot elhelyezünk 3 alapba: 5 milliót részvénybe (I), 3 milliót


államkötvénybe (II), 2 milliót lekötött betétbe (III) fektetünk.
Négy társaságnál (A, B, C, D) fektetjük be a tőkét: 4, 3, 2 és 1 millió forintot.
A társaságok az adott időszakra megadták a százalékos hozamokat:
A B C D
I 19 17 20 16 5
II 9,4 9,8 8,9 9,2 3
III 7,8 8 7,2 6,6 2
4 3 2 1
151

Az „A” és „C” társaságnál legalább 3 millióért veszünk részvényt összesen. Lekötött


betét csak a „B”-nél lesz.
Hogyan helyezzük el a pénzünket, ha a maximális hozam elérése a célunk?

A modell felvétele:
A döntési változó, xij jelentse az i-edik alapba a j-edik társaságnál elhelyezett tőkét.
Az induló feltétel: xij ≥ 0, ahol 1 ≤ i ≤ 3 és 1 ≤ j ≤ 4.
A feltételi relációk:

x11 + x12 + x13 + x14 = 5

x21 + x22 + x23 + x24 = 3

x31 + x32 + x33 + x34 = 2

x11 + x21 + x31 = 4

x12 + x22 + x32 = 3

x13 + x23 + x33 = 2

x14 + x24 + x34 = 1

Továbbá: x11 + x13 ≥ 3 és x32 = 2.


A célfüggvény: z = 0, 19x11 + 0, 17x12 + . . . + 0, 066x34 → max .
(Az x32 = 2 helyett lehetne: x31 = x33 = x34 = 0 is. Ekkor a nulla értékű változókat
a célfüggvényből kihagyjuk.)

A modell megoldása
Az Excel tábla eléggé terjedelmes (16 oszlop)

x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 b
f1 1 1 1 1 0 0 0 0 0 0 0 0 5 <> 5
f2 0 0 0 0 1 1 1 1 0 0 0 0 3 <> 3
f3 0 0 0 0 0 0 0 0 1 1 1 1 2 <> 2
f4 1 0 0 0 1 0 0 0 1 0 0 0 4 <> 4
f5 0 1 0 0 0 1 0 0 0 1 0 0 3 <> 3
f6 0 0 1 0 0 0 1 0 0 0 1 0 2 <> 2
f7 0 0 0 1 0 0 0 1 0 0 0 1 1 <> 1
f8 1 0 1 0 0 0 0 0 0 0 0 0 5 >= 3
f9 0 0 0 0 0 0 0 0 0 1 0 0 2 <> 2
c* 19 17 20 16 9 10 9 9 8 8 7 7 141 max
x* 3 0 2 0 1 1 0 1 0 2 0 0
152 3. FEJEZET: PÉNZÜGYI FELADATOK

Optimális pénzelhelyezéssel tehát 14,1%-os hozamot érhetünk el. Ha a feltételeket


betartjuk, akkor a legrosszabb esetben (minimum a cél!) is 13,3% lesz a hozam.
A feladat megoldható a mátrixcsere-módszerrel is. Felvisszük az adatokat és helyet
készítünk az eredményeknek:

A B C D
I 19 17 20 16 5
II 9,4 9,8 8,9 9,2 3
III 7,8 8 7,2 6,6 2

4 3 2 1

A B C D
I 0 0 0 0 0
II 0 0 0 0 0
III 0 0 0 0 0

0 0 0 0 0

A csupa egyenlőséget tartalmazó zárt „szállítási típusú” feladattól eltérhetünk úgy,


hogy a Solver „korlátozó feltételek” ablakába beírjuk az adott cellákra vonatkozó fel-
tételeket, tehát x32 = 2 feltételt úgy írjuk be, hogy az eredménymátrix 3. sorának
második elemét tartalmazó cella (a III. sor és B metszetében) legyen egyenlő 2-vel. A
másik feltétel, x11 + x13 ≥ 3 bevitelét például úgy oldhatjuk meg, hogy az illető két
cella összegét előállítjuk egy cellában, és erre visszük be a feltételt. Ekkor a megoldás:

A B C D
I 3 0 2 0 5
II 1 1 0 1 3
III 0 2 0 0 2

4 3 2 1 141,4

Ez ugyanaz, mint a klasszikus matematikai modell megoldása.


Egyszerűen optimumot kapunk a Lingóval is.
4. fejezet

Idegenforgalom

1. feladat:. (R. E. főiskolai hallgató esettanulmánya nyomán): Egy utazási iroda


repülős és buszos utazásokat szervez, 4 úticéllal. Adatok:

Repülő (eFt) Busz (eFt) Szállás (eFt) Utazási ár (eFt) Preferáltság


Tunézia 100 0 50 230 6
Ibiza 120 0 100 280 2
Hawai 200 0 200 500 1
Malaga 120 50 80 250 3
A költségek és az árak értelemszerűen 1 főre, illetve 1 hétre vonatkoznak.
A preferáltsági mutatót az elérhető nyereség arányának megfelelően vették fel.
A repülési árak akkor érvényesek, ha a repülési költség legalább 50 millió Ft.
A buszos árak akkor érvényesek, ha a buszköltség legalább 3 millió Ft.
A szállás-összköltség az előzetes foglalás miatt maximum 100 millió Ft lehet.
Tunéziában összesen 200 férőhely van, ebből 12-t már lefoglaltak.
Malagán 66, Hawaiban 12, Ibizán 80 férőhely van maximum.
Hawaira 4, Ibizára 20 férőhelyet legalább el kell adni a túra indításához.
Az iroda szeretné, ha az utasok a magasabban preferált utakat választanák, konk-
rétan: a preferáltsági mutató átlaga legalább 4 legyen.
Cél a lehető legnagyobb árbevétel.

A modell felvétele:
A döntési változó az egyes utakat választók száma: xi . Az induló feltétel: xi ∈ N .
A korlátozó feltételek (legyen ezer forint a mértékegység a „pénzes” adatoknál):
100x1 + 120x2 + 200x3 + 120x4 ≥ 50000 (repülő)
50x4 ≥ 3000 (busz)
50x1 + 100x2 + 200x3 + 80x4 ≤ 100 000 (szállás)
6x1 + 2x2 + x3 + 3x4 ≥ 4(x1 + x2 + x3 + x4 ) (a preferáció miatt)

153
154 4. FEJEZET: IDEGENFORGALOM

Ebből: 2x1 − 2x2 − 3x3 − x4 ≥ 0


x1 ≥ 12 és x1 ≤ 200 (Tunézia)
x3 ≥ 4 és x3 ≤ 12 (Hawai)
x2 ≥ 20 és x2 ≤ 80 (Ibiza)
x4 ≤ 66 (Malaga)
A célfüggvény: z = 230x1 + 280x2 + 500x3 + 250x4 → max
Ha az iroda a készkiadásokon (50 + 3 + 100 = 153 millió) kívül még az egyéb
költségeire és a profitjára további legalább 50 milliót szeretne kapni, akkor lesz még
egy feltétel:

z ′ = 230x1 + 280x2 + 500x3 + 250x4 ≥ 203 000.

Az eredeti esettanulmányban további feltételek is szerepeltek.

A modell megoldása
Az adatainkkal optimális megoldás nem adódik, a Solver ezt jelzi:

x1 x2 x3 x4 b
f1 100 120 200 120 39 920 >= 50 000
f2 0 0 0 50 3300 >= 3000
f3 50 100 200 80 25 680 <= 100 000
f4 2 −2 −3 −1 138 >= 0
f5 1 0 0 0 200 >= 12
f6 1 0 0 0 200 <= 200
f7 0 0 1 0 12 >= 4
f8 0 0 1 0 12 <= 12
f9 0 1 0 0 80 >= 20
f10 0 1 0 0 80 <= 80
f11 0 0 0 1 66 <= 66
c∗ 230 280 500 250 90 900
x∗ 200 80 12 66 max

Látható, hogy az f1 feltétel nem teljesül. Ez azt jelenti, hogy a repülő igénybevéte-
lére felvett alsó korlát esetén a többi korlátozó feltétel miatt nem lehet megoldás. Az
f3 feltétel esetén viszont nagy a tartalék: a 100 000 felső korlátból csupán 25 680-at
használtunk fel, azaz a szállásköltségekre szánt pénzügyi korlát erősen túlzó.
Már az adatok felvételekor észrevehettük volna, hogy a repülési árakra kikötött 50
milliós alsó korlát nem teljesíthető, hiszen ha minden út esetén a maximális résztvevői
létszámmal (200, 66, 12, 80) számolunk, az összköltség akkor is csupán 39,92 millió. Így
155

vagy az utazólétszámok, vagy a repülési összköltségek vonatkozásában kell változtatást


elérni. Módosítsuk a repülési összköltségre vonatkozó korlátot 35 millióra. Így már van
optimális megoldás:

x1 x2 x3 x4 b
f1 100 120 200 120 39 920 >= 35 000
f2 0 0 0 50 3300 >= 3000
f3 50 100 200 80 25 680 <= 100 000
f4 2 −2 −3 −1 138 >= 0
f5 1 0 0 0 200 >= 12
f6 1 0 0 0 200 <= 200
f7 0 0 1 0 12 >= 4
f8 0 0 1 0 12 <= 12
f9 0 1 0 0 80 >= 20
f10 0 1 0 0 80 <= 80
f11 0 0 0 1 66 <= 66
c∗ 230 280 500 250 90 900
x∗ 200 80 12 66 max

Természetesen sok más paramétert meg lehet változtatni. Erre vonatkozólag az


érzékenység-vizsgálat határaiból kaphatunk információt.
Érdekes lehet a cél megváltoztatásakor adódó eredmény. Ha például a cég valami-
lyen okból 80 milliós árbevételt akar elérni, akkor a Solver beállításán változtatunk, ez
lesz a cél, és így az x* sorában a megoldások:

159,1304 80 12 60

Létszámokról lévén szó, egészértékű megoldást kérünk, ami a következő:

156 79 12 64

Ebben az esetben is szembetűnő lehet, hogy a folytonos megoldástól lényeges elté-


rések is lehetnek az integer optimumban.
Kérhetünk megoldást a minimumra is, ekkor egészértékűséget feltételezve a célfügg-
vény értéke 79160 és az optimum:

198 54 4 66
156 4. FEJEZET: IDEGENFORGALOM

A megoldási kísérleteinkből kiderült, hogy az adatokat jelentősen meg kell változ-


tatnunk, ha a realitásokat közelíteni akarjuk, illetve ha egyszerűen csak ki akarjuk
küszöbölni a numerikus ellentmondásokat. A modellünk a Lingóban:

10*x1+12*x2+20*x3+12*x4>3500;
5*x4>300;
5*x1+10*x2+20*x3+8*x4<10000;
2*x1-2*x2-3*x3-x4>0;
x1>12;x1<200;x2>20;x2<80;x3>4;x3<12;x4<66;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);
max=23*x1+28*x2+50*x3+25*x4;

(A modell egyes egységei az eredetei matematikai modell megfelelői.)


A megoldás ekkortermészetesen azonos lesz a Solverrel kapottal:

Objective value: 9090.000

Variable Value Reduced Cost


X1 200.0000 −23.00000
X2 80.00000 −28.00000
X3 12.00000 −50.00000
X4 66.00000 −25.00000

Row Slack or Surplus Dual Price


1 492.0000 0.000000
2 30.00000 0.000000
3 7432.000 0.000000
4 138.0000 0.000000
5 188.0000 0.000000
6 0.000000 0.000000
7 60.00000 0.000000
8 0.000000 0.000000
9 8.000000 0.000000
10 0.000000 0.000000
11 0.000000 0.000000

2. feladat. (Kocsis Péter: Opt. döntések lin.pr. (35. oldal) nyomán): Egy légitársa-
ság egyik járatán 1 jegy 60000 forintba kerül. Ha mind a 100 ülőhelyet kihasználják,
akkor a jegyek árának 60%-a a cég haszna.
157

Üzletpolitikai megfontolásból a járatra legfeljebb 20%-kal több jegyet adnak el („túl-


búkolás”), mint az ülőhelyek száma, mert a tapasztalatok szerint:
– Legfeljebb négyen lekésik a járatot. Ők egy későbbi járattal repülhetnek, és a
nyereség ott kerül elszámolásra.
– Legfeljebb hárman a jegy kiállítása előtt visszamondják az utazást, nekik a pénzt
visszaadják.
– Az utazás előtt legalább egy héttel legfeljebb hárman mondják le az utazást, nekik
a pénz 80%-át visszaadják.
– Az utazás előtti héten legfeljebb ketten mondják le az utazást, így nekik a pénz
50%-át fizetik vissza.
Azok számára, akik a „túlbúkolás” miatt ülőhely hiányában nem tudnak a járattal
elutazni, a cég 75 000 Ft kárpótlást fizet és a következő járatán biztosítja az utazást.
A nyereséget (veszteséget) az eredeti járatnál könyvelik el.
Az adott feltételek mellett az utasok milyen megoszlásával lenne a szóban forgó
járaton az elkönyvelt nyereség maximális?

A modell felvétele

A döntési változók: x1 az eladott jegyek száma,


x2 a járatot lekésők száma,
x3 a lemondók száma a jegykiállítás előtt,
x4 a lemondók száma 1 héttel utazás előtt,
x5 a lemondók száma 1 héten belül,
x6 a helyhiány miatt lemaradók száma.

Az induló feltétel: xi ∈ N .
A korlátozó feltételek: x1 ≤ 120, x2 ≤ 4, x3 ≤ 3, x4 ≤ 3, x5 ≤ 2.
A „speciális” esetek: x2 + x3 + x4 + x5 + x6 ≤ 20
A gép „tele van”: x1 − x2 − x3 − x4 − x5 − x6 = 100
A célfüggvény felírásához: az út önköltsége utasonként 60 · 0, 4 = 24 ezer Ft. (60%
volt a nyereség, így a ráfordítás 40%.)
A teljes számított árbevételből (60000x1 ) le kell vonni a visszafizetéseket és a rá-
fordítást.
Így: z = 60x1 − 60x2 − 60x3 − 48x4 − 30x5 − 99x6 − 2400 → max (ezer forintban)
(Magyarázat: a 48 a 60-nak 80%-a, a 30 fele a 60-nak. A 99 úgy adódik, hogy 75
a kárpótlás, meg 24 a ráfordítás. A 2400 a 100 utas szállításának önköltsége.)

A modell megoldása
A megoldás Lingóval egyszerű (itt „egyben” láthatjuk a modellt is):
158 4. FEJEZET: IDEGENFORGALOM

x1<120;x2<4;x3<3;x4<3;x5<2;
x2+x3+x4+x5+x6<20;
x1-x2-x3-x4-x5-x6=100;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);
max=60*x1-60*x2-60*x3-48*x4-30*x5-99*x6-2400;
Az eredmények:

Global optimal solution found.

Objective value: 3696.000


Variable Value
X1 112.0000
X2 4.000000
X3 3.000000
X4 3.000000
X5 2.000000
X6 0.000000

A megoldás (zmax = 3696, x 0 = [112 4 3 3 2 0]∗ ) a modell felvételéhez képest


egyszerű.
A Solverrel történő megoldásnál a célfüggvényben szereplő konstanst nem kell je-
lölni. A megoldás táblázata:

x1 x2 x3 x4 x5 x6 b
f1 1 0 0 0 0 0 105 <= 120
f2 0 1 0 0 0 0 0 <= 4
f3 0 0 1 0 0 0 0 <= 3
f4 0 0 0 1 0 0 3 <= 3
f5 0 0 0 0 1 0 2 <= 2
f6 0 1 1 1 1 1 5 <= 20
f7 1 -1 -1 -1 -1 -1 100 <> 100
c* 60 -60 -60 -48 -30 -99 6096 max
x* 105 0 0 3 2 0

A célfüggvény optimális értékeként 6096-ot kaptunk. Ez egybeesik a Lingo meg-


oldásával, hiszen a Lingo-optimum és a Solver optimuma közötti eltérés éppen a két
függvényérték különbsége: 2400. Problémásabbnak érezhetjük, hogy a döntési változók
optimális értékei között eltérés van, a Solvernél: x 0 = [105 0 0 3 2 0]∗ . Az optimum-
értékek egybeesése azt jelenti, hogy a feladatra mindkét megoldás reális, a problémának
159

alternatív optimuma van. Erről információt szerezhetünk úgy is, hogy például az x1
különböző értékeinél megvizsgáljuk, hogy milyen értékeket kapunk a célfüggvény op-
timumára. A Lingót használva egyszerűbb a dolgunk. Írjunk be a modellbe x1 -re
feltételt, legyen először x1 = 104. Ekkor a célfüggvény maximumaként 3684-et kapunk,
ez kisebb 3696-nál, ami valószínűsíti, hogy 105-nél kisebb x1 esetén már nem kapunk
optimális értékeket. Ha x1 -re 112-nél nagyobb értéket próbálunk ki, akkor szintén csök-
ken a célfüggvény értéke. A célfüggvény maximális értéke minden 105 és 112 közötti
egész értéknél 3696, ez azt jelenti, hogy bármelyiket választhatjuk, a döntésünket ebben
az intervallumban egyéb tényezők figyelembe vételével hozhatjuk meg.
A Solverrel számolva hasonlóan megkaphatjuk az alternatív optimumokat.
5. fejezet

Humánerőforrás tervezés

A személyzeti, bér és munkaügyi döntési problémáknál gyakran sok változó szerepel,


és nem ritkák az olyan feladatok, ahol a determinisztikus matematikai modellek csak
alapot adhatnak a megfelelő döntésekhez, azok meghozatalához sok egyéb tényezőt is
figyelembe kell venni.

1. feladat (Kocsis Péter: Opt. döntések lin.pr. (34. oldal) nyomán): Egy cégnél a havi
összes bér 14,6 millió forint, amit szeretnének 10 millióra csökkenteni. A dolgozókat 4
bérkategóriában foglalkoztatják. Adottak az átlagbérek és a dolgozók száma:

Bér (eFt) Dolgozók (fő)


A 80 50
B 100 40
C 120 30
D 150 20

Létszámcsökkentés után az „A” és „B” kategóriákban 20%-kal, a „C” és „D”-ben


10%-kal emelik a béreket.
Az „A” kategóriában legfeljebb kétszer annyi dolgozóra van szükség, mint „B”-ben.
A „C”-ben legalább 14, „D”-ben minimum 6, de legfeljebb 12 főt kell alkalmazni.
Minimálisan hány főt kell elbocsátani a feltételek teljesüléséhez?

A modell felvétele:
A döntési változó: xi az egyes kategóriákban elbocsátottak száma.
Induló feltétel: xi ∈N.
„A” -ban legfeljebb kétszer annyian, mint „B”-ben: 50 − x1 ≤ 2(40 − x2 )
Ebből: −x1 + 2x2 ≤ 30.
A „C”-ben legalább 14 fő marad: 30 − x3 ≥ 14, azaz: x3 ≤ 16.
„D”-ben minimum 6, de legfeljebb 12 fő: 6 ≤ 20−x4 ≤ 12, tehát: x4 ≤ 14 és x4 ≥ 8.
Létszámcsökkentés utáni béremelések:

160
161

(50 − x1 )96 + (40 − x2 )120 + (30 − x3 )132 + (20 − x4 )165 ≤ 10000.

Ebből: 96x1 + 120x2 + 132x3 + 165x4 ≥ 6860.


A célfüggvény: z = x1 + x2 + x3 + x4 → min (Az elbocsátottak száma legyen
minimális.)
A célfüggvény másképp is felvehető: a maradók száma legyen maximális.

z ′ = (50 − x1 ) + (40 − x2 ) + (30 − x3 ) + (20 − x4 ) → max

Azaz z’= -x1–x2–x3–x4+140→ max


A gépi megoldás induló táblája a Solverben:

x1 x2 x3 x4 b
f1 −1 2 0 0 0 <= 30
f2 0 0 1 0 0 <= 16
f3 0 0 0 1 0 <= 14
f4 0 0 0 1 0 >= 8
f5 96 120 132 165 0 >= 6860
célfv. 1 1 1 1 0 min
x∗ 0 0 0 0

Ha nem kötjük ki a változók egészértékűségét, akkor nem is kapunk egész számokat


a létszámokra. Az integer feladatra az optimális megoldás: x 0 = [5 17 16 14]∗ .
A Lingóban mindkét célfüggvénnyel megoldjuk a feladatot:
-x1+2*x2<30;30-x3>14;x3<16;x4<14;x4>8;96*x1+120*x2+132*x3+165*x4>6860;
!@gin(x1);!@gin(x2);!@gin(x3);!@gin(x4);
min=x1+x2+x3+x4;
!max=140-x1-x2-x3-x4;
A Lingóban a feltételeket nem kell külön sorokba írni, elég azokat pontosvesszőkkel
elválasztani. Az egészértékűséget a @gin(xi ) utasítással írjuk elő. A program egyszerre
csak egy célfüggvénnyel tud dolgozni, a másikat a sor elé a felkiáltójel bevitelével tudjuk
felfüggeszteni. A modellünk fenti alakjára a primál-duál megoldások:
162 5. FEJEZET: HUMÁNERŐFORRÁS TERVEZÉS

Global optimal solution found.


Objective value: 52.00000
Variable Value Reduced Cost
X1 5.000000 1.000000
X2 17.00000 1.000000
X3 16.00000 1.000000
X4 14.00000 1.000000

Row Slack or Surplus Dual Price


1 1.000000 0.000000
2 0.000000 0.000000
3 0.000000 0.000000
4 0.000000 0.000000
5 6.000000 0.000000
6 82.00000 0.000000

Maximum feladatként természetesen ugyanazokat az optimumokat kapjuk, csak a


célfüggvény optimális értéke lesz értelemszerűen más.

2. feladat: (V. D. főiskolai hallgató esettanulmány nyomán) Egy fejvadász cég 5


munkakörre vállal közvetítést állásbetöltésre cégeknek, amiért jutalékot kap. Jelenleg
az A, B, C, D, E cégekkel áll kapcsolatban. A munkakörök jutalékai:

A B C D E
Pr . menedzser 150 155 165 140 150
Könyvelő 0 145 160 0 200
Asszisztens 80 60 0 70 0
Mérnök 180 190 160 0 0
HR-es 130 100 120 130 135

A táblázatban a nullák azt jelentik, hogy azt a munkakört az illető cég jelenleg
nem keresi. Az adott munkakörökre a fejvadász cég 2, 2, 1, 2, 3 fő közvetítését tudja
teljesíteni.
Az eddigi kapcsolatok miatt az egyes cégeknek 0, 3, 3, 2, 2 fő iránti igényét fogadják
el. A cégek egy munkakörre egy főt foglalkoztatnának.
A fejvadász cég célja a maximális közvetítői jutalék elérése.

A modell felvétele
Az xij döntési változó jelentse az i-edik munkakörre a j-edik cégnek történt kiköz-
vetítést.
Az induló feltétel: xij ∈ {0; 1} (A változók csak bináris értékeket vehetnek fel.)
163

A feltételek munkakörönként:

x11 + x12 + x13 + x14 + x15 = 2

x21 + x22 + x23 + x24 + x25 = 2

x31 + x32 + x33 + x34 + x35 = 1

x41 + x42 + x43 + x44 + x45 = 2

x51 + x52 + x53 + x54 + x55 = 3

A feltételek cégenként:

x11 + x21 + x31 + x41 + x51 = 0

x12 + x22 + x32 + x42 + x52 = 3

x13 + x23 + x33 + x43 + x53 = 3

x14 + x24 + x34 + x44 + x54 = 2

x15 + x25 + x35 + x45 + x55 = 2

A célfüggvény: z = 150x11 + 155x12 + . . . + 130x54 + 135x55 → max

A modell megoldása a „szokásos” módon, a Solver-táblázattal, vagy a Lingóval


elég sok adatbevitelt igényel. A mátrixcsere módszerével egyszerűbb a dolgunk:
Adatbevitel:

A B C D E
I 150 155 165 140 160 2
II 0 145 160 0 200 2
III 80 60 0 70 0 1
IV 180 190 160 0 0 2
V 130 100 120 130 135 3

0 3 3 2 2

A bináris feltétel figyelembe vételével a megoldás táblázata:


164 5. FEJEZET: HUMÁNERŐFORRÁS TERVEZÉS

A B C D E
I 0 1 1 0 0 2
II 0 1 0 0 1 2
III 0 0 0 1 0 1
IV 0 1 1 0 0 2
V 0 0 1 1 1 3
1470
0 3 3 2 2

Az optimális megoldás:
 
0 1 1 0 0

 0 1 0 0 1 

X=
 0 0 0 1 0 

 0 1 1 0 0 
0 0 1 1 1
A célfüggvény maximális értéke: z0 = 1470.
Ha a döntési változók bináris voltát nem tekintjük feltételnek, akkor a megoldás
táblázata:

A B C D E
I 0 0 2 0 0 2
II 0 0 0 0 2 2
III 0 1 0 0 0 1
IV 0 2 0 0 0 2
V 0 0 1 2 0 3
0 3 3 2 2 1550

Természetesen ekkor a célfüggvény maximális értéke nagyobb lett.


A Lingo program:
x11+x12+x13+x14+x15=2;
x21+x22+x23+x24+x25=2;
x31+x32+x33+x34+x35=1;
x41+x42+x43+x44+x45=2;
x51+x52+x53+x54+x55=3;
x11+x21+x31+x41+x51=0;
x12+x22+x32+x42+x52=3;
x13+x23+x33+x43+x53=3;
165

x14+x24+x34+x44+x54=2;
x15+x25+x35+x45+x55=2;
max=150*x11+155*x12+165*x13+140*x14+150*x15+145*x22+160*x23+
+200*x25+80*x31+60*x32+70*x34+180*x41+190*x42+160*x43+130*x51+
+100*x52+120*x53+130*x54+135*x55;
A Lingo eredményei egybeesnek a Solverrel kapottakkal. A bináris feltételeket a
Lingoba a @bin(x) utasítással vihetjük be. Ezt használva az eredményünk már azonos
lesz a Solver megoldásával.
6. fejezet

Műszaki feladatok

A műszaki gyakorlatban is sokszor kell olyan döntéseket hozni, amelyek előkészítéséhez


matematikai modelleket használnak. Gyakori, hogy az adatok pontos felvételéhez, a
mértékegységek illesztéséhez, a korlátozó feltételek és célfüggvények korrekt megfogal-
mazásához csoportmunkára, fizikai, kémiai, műszaki ismeretekre van szükség.

1. feladat (Kocsis Péter: Opt. döntések lin.pr. (25. oldal) nyomán): Négy hőerőműtől
elvárt összes teljesítményigény 80 megawatt (MW). Ismertek a következők:
Max. teljesítmény Tüzelőanyag ára Fajlagos hőfogyasztás
MW Ft/GJ kJ/kWh
I 20 1100 10000
II 30 2000 7500
III 50 1000 12000
IV 60 1600 11250
Cél: az erőművek optimális igénybevétele úgy, hogy az 1 óra alatt felhasznált tüzelő-
anyag ára minimális legyen.

A modell felvétele
A döntési változó az egyes erőművek felhasznált teljesítménye: xi .
Az induló feltétel: xi ≥ 0.
A korlátozó feltételek egyszerűen felírhatók:
x1 ≤ 20, x2 ≤ 30, x3 ≤ 50, x4 ≤ 60, és
x1 + x2 + x3 + x4 = 80
A problémát a célfüggvény felvétele okozhatja a mértékegység-átváltások miatt.
(Gyakori, hogy a modell felírása szakemberek segítségét igényli).
Ft Ft Ft Ft
1 GJ = 1 GWs =1 1 = 3, 6 MWh
103 MW· h
3600

Az xi mértékegysége MW, így a tüzelőanyag árakat xi -vel szorozva Ft/órát, azaz órán-
kénti árakat kapunk.

166
167

Így a célfüggvény: z = (1100x1 + 2000x2 + 1000x3 + 1600x4 ) · 3, 6 → min .


A feladathoz újabb célfüggvényeket fogalmazhatunk meg.

A) Legyen a célunk az 1 órai termelési költség minimuma.


A termelési költséget az adattáblázatban lévő ár és fajlagos hőfogyasztás szorzata
adja. Például az „A” erőműnél (mértékegység-átváltások!):
Ft kJ
1100 GJ · 10000 kW h
= 1, 1 · 107 10F6 kJ
t
· kJ
10−3 M W h
= 11000 MFWt h = 11 kW
Ft
h

A többi erőműnél ezek az értékek (Ft/kWh) mértékegységben: 13, 12, 18.


Így az új célfüggvény: z ′ = (11x1 + 13x2 + 12x3 + 18x4 ) · 1000 → min .

B.) Az 1 óra alatt felhasznált tüzelőanyag árára vonatkozó költség minimuma legyen
a célunk.
Ebben az esetben a célfüggvény tört alakú lesz (hiperbolikus programozás).

z′
z ′′ = → min
z
Az optimális megoldások a három célfüggvény esetén különbözők lehetnek.

A modell megoldása
Legegyszerűbb a Lingo használata, amelyben egyszerre felírhatjuk mindhárom cél-
függvényt:
x1<20;x2<30;x3<50;x4<60;
x1+x2+x3+x4=80;
min=11*x1+20*x2+10*x3+16*x4;
min=11*x1+13*x2+12*x3+18*x4;
min=(11*x1+20*x2+10*x3*16*x4)/(11*x1+13*x2+12*x3+18*x4);
A célfüggvényeket egyszerűsített alakban írtuk be.
A megoldáskor egy célfüggvény legyen aktív, a többit (a sor elé írt felkiáltójellel)
felfüggesztjük.
Az első célfüggvénnyel x 0 = [20 0 50 10]∗ .
A második célfüggvénnyel x 0 = [20 10 50 0]∗ .
A harmadik célfüggvénnyel x 0 = [20 0 0 60]∗ .
A célfüggvények optimális értékei „visszaszorzásokkal” adódnak. Természetesen a
az egyes esetekben az összes primál-duál optimumot leolvashatjuk.

2. feladat (Kocsis Péter: Opt. döntések lin.pr. (81. oldal) nyomán): Egy kamion
rakodótere téglatest alakú, alapja 8 · 2, 4 méter és magassága 245 cm. A gépkocsikba
168 6. FEJEZET: MŰSZAKI FELADATOK

100·80 cm alapterületű raklapokon lévő árut rakodnak. Háromféle terméket szállítanak


(A, B, C), amelyek magassága rendre 100, 80 és 60 cm. A raklapok egymás tetejére
tehetők. Az elszállítandó mennyiségek: A-ból 1800, B-ből 2100, C-ből 2400 raklap.
Hogyan valósítható meg a leggazdaságosabb szállítás?

A megoldáshoz átgondoljuk a feladatot:


A rakodótér alapján 8·3=24 darab raklap helyezhető el.
A szállítás akkor gazdaságos, ha az üres tér a kamionban minimális.
A „raklaprétegek” elhelyezésének lehetőségei és az üres tér magassága:

I II III IV V VI VII
A 2 1 1 0 0 0 0
B 0 1 0 3 2 1 0
C 0 1 2 0 1 2 4
üres
45 5 25 5 25 45 5
(cm)

A modell felvétele
A döntési változó: a raklaprétegek elhelyezési változatainak száma: xi , ahol az i
egy és hét közötti egész szám. Az induló feltétel: xi ∈ N
A korlátozó feltételek:

2 · 24x1 + 24x2 + 24x3 = 1800 (A elhelyezése.)

24x2 + 3 · 24x4 + 48x5 + 24x6 = 2100 (B elhelyezése.)

24x2 + 48x3 + 24x5 + 48x6 + 96x7 = 2400 (C elhelyezése.)

A célfüggvényt elég az üres tér magasságának minimumára felírni:

z = 45x1 + 5x2 + 25x3 + 5x4 + 25x5 + 45x6 + 5x7 → min .

A modell megoldása
A Lingo-modellünk az egészértékűség feltételezése nélkül:
48*x1+24*x2+24*x3=1800;
24*x2+72*x4+48*x5+24*x6=2100;
24*x2+48*x3+24*x5+48*x6+96*x7=2400;
min=45*x1+5*x2+25*x3+5*x4+25*x5+45*x6+5*x7;
Az optimális megoldás: x 0 = [0 75 0 4, 17 0 0 6, 25]/∗. A célfüggvény értéke: 427,08.
169

Ha a feladatban megadott adatokkal egészértékű optimumot akarunk számíttatni,


akkor a program hibát jelez, azaz adatainkkal a problémának nincs egész értékű megol-
dása. Így kénytelenek vagyunk úgy dönteni, hogy 75 kamiont rakjanak meg a második
rakodási mód szerint, 4-et a a negyedik, 6-ot a hetedik módozat szerint és a maradékot
már egy jármű – tetszőleges rakodási mód szerint felpakolva – el tudja vinni. Tehát a
válaszunk: a feladat teljesítéséhez minimálisan 86 kamion szükséges.
Megjegyezzük, hogy a Solverrel kritikusabb a helyzet. Az egészértékűség feltétele-
zése nélkül ugyanazokat az eredményeket kapjuk, mint a Lingóval:

x1 x2 x3 x4 x5 x6 x7 b
f1 48 24 24 0 0 0 0 1800 <> 1800
f2 0 24 0 72 48 24 0 2100 <> 2100
f3 0 24 48 0 24 48 96 2400 <> 2400
célfv. 45 5 25 5 25 45 5 427,1 min
x* 0 75 0 4,167 0 0 6,25

Ha viszont a feltételek közé bevisszük az egészértékűséget, akkor a gép hosszú ideig


(a beállított maximális számolási idejéig) számolgat, de nem ad eredményt.
7. fejezet

Disztribúciós feladatok

Az elosztási-szétosztási feladatok – legyen szó akár anyag, energia, munkaidő, szállítási


kapacitás vagy egyéb objektumok elosztásáról – viszonylag gyakran fordulnak elő a gaz-
daságban, de a mindennapi életben is. Az ilyen típusú problémák jól szemléltethetők
a klasszikus szállítási feladatokkal, amelyek optimalizálására számos módszer ismert.
A matematikai modell felvétele célszerűen kétindexes változókkal történik, gyakran
speciális feltételeket is illeszteni kell a modellbe. A megoldás a Solver táblázatos mód-
szerével, illetve a Lingóval hosszadalmas adatbevitelt igényelhet, az ún. mátrixcsere
módszerével általában gyorsabban célhoz érhetünk.

1. feladat Az alábbi szállítási feladatban az 1. és a 2. feladótól a teljes készletet


el kell szállítani. Az 1. feladó az 1. megrendelőnek nem szállíthat. Cél a költség
minimalizálása.

R1 R2 R3 R4
F1 4 3 5 6 40
F2 3 5 4 7 80
F3 2 3 5 4 90
70 70 40 20

A modell felvétele:
A matematikai modellt úgy vesszük fel, hogy az xij döntési változó jelentse az Fi -ből
az Rj -be szállítandó mennyiséget.
Ekkor az induló feltétel: xij ≥ 0, ahol 1 ≤ i ≤ 3 és 1 ≤ j ≤ 4.
A korlátozó feltételeket és a célfüggvényt tömörítve írjuk fel:

4
X
xij = fi
j=1

170
171

(ahol f = [40 80 90]∗) és:


3
X
xij = rj
i=1

(ahol r = [70 70 40 20]∗)


Továbbá: x11 = 0 (Az 1. feladó az 1. megrendelőnek nem szállíthat.)
Az 1. és 2. feladótól a teljes készletet el kell szállítani:

4
X 4
X
x1j = 40, x2j = 80.
j=1 j=1

A célfüggvény a szokásos:
3 X
X 4
cij xij → min .
j=1 j=1

(A cij a költségeket jelenti.)


A táblázatos gépi megoldás Solverrel történhet, 12 változóval.
Egyszerűbb lesz a dolgunk, ha a „mátrixos” megoldást választjuk.
Névleges állomást (ötödik rendeltetési helyet) és tiltótarifákat kell felvennünk:
A névleges célállomás „igénye” 10, az ide történő szállítási költségek eredetileg mind
nullák.

R1 R2 R3 R4 R5
F1 4 3 5 6 0 40
F2 3 5 4 7 0 80
F3 2 3 5 4 0 90
70 70 40 20 10

A tiltásokat a többi költségelemhez képest nagy számok beírásával (M) valósítjuk


meg.
M 3 5 6 M 40
3 5 4 7 M 80
2 3 5 4 0 90
70 70 40 20 10

A gépi megoldás induló táblájában legyen például M = 99 :


172 7. FEJEZET: DISZTRIBÚCIÓS FELADATOK

R1 R2 R3 R4 R5
F1 99 3 5 6 0 40
F2 3 5 4 7 99 80
F3 2 3 5 4 99 90
70 70 40 20 10

R1 R2 R3 R4 R5
F1 0 0 0 0 0 0
F2 0 0 0 0 0 0
F3 0 0 0 0 0 0
0 0 0 0 0
A megoldás:
R1 R2 R3 R4 R5
F1 99 3 5 6 0 40
F2 3 5 4 7 99 80
F3 2 3 5 4 99 90
70 70 40 20 10

R1 R2 R3 R4 R5
F1 0 30 0 0 10 40
F2 40 0 40 0 0 80
F3 30 40 0 20 0 90
70 70 40 20 10 630

Tehát a célfüggvény optimális értéke: z0 = 630, az optimális szállítási relációkat és


a szállított mennyiségeket az X 0 mátrixban írhatjuk fel:
 
0 40 0 0 0
X0 =  40 0 40 0 0 
30 30 0 20 10
A 3. feladónál 10 egység marad (a névleges állomásnak szállít).

2. feladat (Kocsis Péter: Opt. döntések lin.pr. (79. oldal) nyomán): Egy cég 4
városban (A, B, C, D) 1–1 üzlethelyiséget bérelne négy ingatlanközvetítőtől, azonban
mindegyiktől csak egyet-egyet. A bérleti díjakra az ajánlatok (ezer Ft havonta):

I II III IV
A 160 120 100 140
B 80 90 100 80
C 80 90 60 60
D 130 160 140 120
173

Cél a költségmimimum.
Az ilyen típusú feladatokat hozzárendelési problémának nevezik. Ez olyan disztri-
búciós feladat, amelyben a sorok és oszlopok „végén” csupa egyes áll és az adatmátrix
négyzetes.

A modell felvétele
A matematikai modell döntési változója xij , amelynek értéke 1, ha az i-edik város-
ban a j-edik közvetítő ajánlatát elfogadjuk, más esetben xij = 0.
Így: xij ∈ {0, 1}.
A feltételek:
X4 4
X
xij = 1, xij = 1
j=1 i=1

A célfüggvény:
4 X
X 4
cij ·xij → min.
i=1 j=1

A gépi megoldás a modell alapján Solverrel vagy Lingóval történhet, 16 változóval.


Ez esetben is egyszerűbb lesz a dolgunk, ha a „mátrixos” megoldást választjuk.

A megoldás:
Az Excelben a mátrixokat, vektorokat tetszőleges helyeken vehetjük fel:

R1 R2 R3 R4
F1 0 0 0 0 0 1
F2 0 0 0 0 0 1
F3 0 0 0 0 0 1
F4 0 0 0 0 0 1

0 0 0 0
1 1 1 1 0

R1 R2 R3 R4
F1 160 120 100 140
F2 80 90 100 80
F3 80 90 60 60
F4 130 160 140 120

A megoldás a szokásos módon történhet (előkészítés a Solver alkalmazására az ered-


ménymátrixban a sorok és oszlopok összegzésével, a célcellában a szorzatösszeg felvé-
174 7. FEJEZET: DISZTRIBÚCIÓS FELADATOK

telével) majd a Solver behívása és beállítása után az eredmények:

R1 R2 R3 R4
F1 0 1 0 0 1 1
F2 1 0 0 0 1 1
F3 0 0 1 0 1 1
F4 0 0 0 1 1 1

1 1 1 1
1 1 1 1 380

R1 R2 R3 R4
F1 160 120 100 140
F2 80 90 100 80
F3 80 90 60 60
F4 130 160 140 120

Az eredmények a a „felső” táblázatból leolvashatók: optimális esetben minimum


380 ezer forint bérleti díjat kell fizetni és az A városban a II. közvetítőtől, a B városban
az I. közvetítőtől, a C városban a III. közvetítőtől, a D városban a IV. közvetítőtől
kell bérelnünk. Ha a feladatot többször futtatjuk, előfordulhat, hogy más optimális
megoldást kapunk:

R1 R2 R3 R4
F1 0 0 1 0 1 1
F2 0 1 0 0 1 1
F3 0 0 0 1 1 1
F4 1 0 0 0 1 1

1 1 1 1
1 1 1 1 380

R1 R2 R3 R4
F1 160 120 100 140
F2 80 90 100 80
F3 80 90 60 60
F4 130 160 140 120

A számítógép az eredményeket közelítések sorozatával számolja ki, és ha a közelítést


más pontról kezdi, akkor az optimumra az alternatív megoldás előállhat.
8. fejezet

Egészségügyi feladatok

Az egészségügy területén is sok olyan problémával találkozhatunk, amelyekben optimá-


lis megoldás a cél. A megoldandó feladatok jelentős része nagy adathalmaz keresését
igényli, például előfordult, hogy egy egészségügyi területről vett lineáris programozási
feladatban a korlátozó feltételek mátrixa 960-szor 1600-as volt. Esettanulmányainkban
természetesen egyszerűbb esetekkel foglalkozunk.

1. feladat (Kocsis Péter: Opt. döntések lin.pr. (32. oldal) nyomán): Egy kórházban
háromféle műtétet végezhetnek két műtőben. Ismertek a következők:

Műtéti idő Költség (Ft/óra) Műtétszám (db/hét)


(óra) I. műtő II. műtő Minimum Maximum
A 8 – 600 000 1 3
B 1,5 28 000 34 000 8 23
C 2 32 000 37 000 12 28

Az I. műtőben az „A” műtétet nem hajthatják végre.


Az I. műtőben hetente maximum 30 órát, a másodikban 60 órát dolgozhatnak.
Cél: Az egyes műtőkben hány és milyen műtétet hajtsanak végre, hogy a heti
ráfordítás minimális legyen?

A modell felvétele:
A döntési változó xij jelentése: az i-edik fajta műtétből a j-edik műtőben hányat
végeznek el. Induló feltétel: xij ∈ N.
A feltételek: x11 = 0, x12 ≥ 1, x12 ≤ 3. „A” típusú operációk a két műtőben.
x21 + x22 ≥ 8, x21 + x22 ≤ 25. „B” típusú operációk a két műtőben.
x31 + x32 ≥ 12, x31 + x32 ≤ 28. „C” típusú operációk a két műtőben.
Időkorlátok: 1, 5x21 + 2x31 ≤ 30, 8x12 + 1, 5x22 + 2x32 ≤ 60.
A célfüggvény: z = 8 · 60 000x12 + 1, 5 · 28 000x21 + . . . + 2 · 37 000x32 → min .

175
176 8. FEJEZET: EGÉSZSÉGÜGYI FELADATOK

Megoldás
A Solverrel a megoldás viszonylag egyszerű:

x11 x12 x21 x22 x31 x32 b


f1 1 0 0 0 0 0 0 <> 0
f2 0 1 0 0 0 0 1 >= 1
f3 0 1 0 0 0 0 1 <= 3
f4 0 0 1 1 0 0 8 >= 8
f5 0 0 1 1 0 0 8 <= 25
f6 0 0 0 0 1 1 12 >= 12
f7 0 0 0 0 1 1 12 <= 28
f8 0 0 1,5 0 2 0 30 <= 30
f9 0 8 0 1,5 0 2 14 <= 60
c* 0 480 42 51 64 74 1614 min
x* 0 1 8 0 9 3

Az optimális megoldás a táblázatból kiolvasható. Célszerű szöveges választ adni.


A Lingo megoldása egybeesik ezzel. Az adatok:
x11=0;x12>1;x12<3;
x21+x22>8;x21+x22<25;
x31+x32>12;x31+x32<28;
1.5*x21+2*x31<30;8*x12+1.5*x22+2*x32<60;
min=480*x12+42*x21+51*x22+64*x31+74*x32;
A megoldásban a Lingo közli az „összes” optimumot:

Global optimal solution found.


Objective value: 1614.000

Variable Value Reduced Cost


X11 0.000000 0.000000
X12 1.000000 0.000000
X21 8.000000 0.000000
X22 0.000000 1.500000
X31 9.000000 0.000000
X32 3.000000 0.000000
177

Row Slack or Surplus Dual Price


1 0.000000 0.000000
2 0.000000 −480.0000
3 2.000000 0.000000
4 0.000000 −49.50000
5 17.00000 0.000000
6 0.000000 −74.00000
7 16.00000 0.000000
8 0.000000 5.000000
9 46.00000 0.000000

Érdekes és tanulságos lenne elvégezni az érzékenységvizsgálatokat is!

2. feladat (Sz. T. főiskolai hallgató esettanulmánya nyomán): Fogyókúrához össze-


gyűjtöttük néhány élelmiszer adatait:

Energia (kcal) Zsír (g) Szénhidrát (g) Fehérje (g) Ár (Ft)


Növényi 159 6,5 6 19 33
vagdalt
Cottage sajt 85 2,2 3,1 12,8 111
Diétás kenyér 191 2,7 33,3 7,8 50
Olivás 424 48 0,16 0,02 80
margarin
Tehéntej 67 3,6 5,3 3,4 25
Tojás 164 12 0,6 13,5 22
Harcsa 78 0,8 0,2 17,5 110
Sárgarépa 35 0,2 8,1 1,2 20
Narancs 40 1,5 8,5 0,6 25

Az adatok minden esetben 100 g-nyi mennyiségre vonatkoznak.


(Az eredeti dolgozat jóval több élelmiszert és más feltételeket is tartalmazott.)
A nyugalmi alapanyagcseréhez 75 kg-os nő esetén napi 1225 kcal szükséges, de 1600
kcal felett már nem lesz eredményes a fogyókúra.
Naponta 60 g zsír elegendő a szervezetnek.
Szénhidrátból 50 és 100 g között ajánlott a napi fogyasztás.
Fehérjéből legalább 150 g szükséges a napi feladatok ellátásához.
Adjuk meg ezekkel a feltételekkel a legolcsóbb fogyókúra receptjét!

A modell felvétele
A döntési változó az egyes élelmiszerek napi adagja (100 g-ra).
xi ≥ 0 (i = 1, 2, . . ., 9) értelemszerűen i = 1 az első élelmiszernél és így tovább.
A feltételek: 159x1 + 85x2 + . . . + 40x9 ≥ 1225
178 8. FEJEZET: EGÉSZSÉGÜGYI FELADATOK

159x1 + 85x2 + . . . + 40x9 ≤ 1600 (a kalóriahatárok miatt)


6, 5x1 + 2, 2x2 + . . . + 1, 5x9 ≤ 60 (naponta 60 g zsír elegendő)
6x1 + 3, 1x2 + . . . + 8, 5x9 ≥ 50
6x1 + 3, 1x2 + . . . + 8, 5x9 ≤ 100 A szénhidrát határokat is betartjuk.
19x1 + 12, 8x2 + . . . + 0, 6x9 ≥ 150 (fehérjéből legalább 150 g szükséges)
A célfüggvény: z = 33x1 + 111x2 + . . .25x9 → min.
Újabb feltételeket is megadhatunk, például a sárgarépát nem szeretjük: x8 = 0.
Vagy narancsból legalább fél kilót (5 · 100 g) fogyasztanánk: x9 ≥ 5
Újabb változatot jelenthet naponta más változatokkal a heti étrend kialakítása.
A célfüggvény is lehetne maximum („rongyrázás”), illetve határokat adhatunk a
napi kiadásokra.

A modell megoldása
A feladatban megfogalmazott feltételekkel meglehetősen egyoldalú táplálkozást „ ja-
vasol” a matematikai modell:

x1 x2 x3 x4 x5 x6 x7 x8 x9 b
f1 159 85 19 424 67 164 78 35 40 1251 >= 1225
f2 159 85 19 424 67 164 78 35 40 1251 <= 1600
f3 6,5 2,2 2,7 48 3,6 12 0,8 0,2 1,5 51,3 <= 60
f4 6 3,1 33,3 0,16 5,3 0,6 0,2 8,1 8,5 50 >= 50
f5 6 3,1 33,3 0,16 5,3 0,6 0,2 8,1 8,5 50 <= 100
f6 19 12,8 7,8 0,02 3,4 13,5 17,5 1,2 0,6 150 >= 150
c* 33 111 50 80 25 22 110 20 25 264 min
x* 7,86 0 0,09 0 0 0 0 0 0

A fenti megoldás szerint csupán az első (növényi vagdalt) és a harmadik (diétás


kenyér) fogyasztása ajánlott, és így a költség minimuma 264.
Ha a legdrágább fogyókúrát szeretnénk megvalósítani, akkor is csak két élelmiszer
fogyasztását ajánlja a modell: x3=2,88 és x7=19,8, a többi változó értéke 0, a célfügg-
vény maximuma pedig 2323.
A modellbe további feltételeket vihetünk be (célszerű is!), de az új feltételek miatt
nem szükséges megbolygatni a táblázatunkat. A Solver számára a korlátozó feltételek
között előírhatjuk, hogy az eredmény megfelelő cellájába mekkora érték kerüljön. Pél-
dául legyen az x6 (tojás) legalább 2, az x9 (narancs) legalább 5. Ekkor a Solverbe a
korlátozó feltételek közé beírjuk a következőket: ha az Excel táblában 10. az x* sora,
akkor, ha az x6 oszlopa a G, a feltétel a G10 cellára a „>=2” és ha az x9 a J oszlopban
van, akkor a J10 cellára vesszük be a „>=5” feltételt.
179

x1 x2 x3 x4 x5 x6 x7 x8 x9 b
f1 159 85 19 424 67 164 78 35 40 1253 >= 1225
f2 159 85 19 424 67 164 78 35 40 1253 <= 1600
f3 6,5 2,2 2,7 48 3,6 12 0,8 0,2 1,5 60 <= 60
f4 6 3,1 33,3 0,16 5,3 0,6 0,2 8,1 8,5 50 >= 50
f5 6 3,1 33,3 0,16 5,3 0,6 0,2 8,1 8,5 50 <= 100
f6 19 12,8 7,8 0,02 3,4 13,5 17,5 1,2 0,6 150 >= 150
c* 33 111 50 80 25 22 110 20 25 370 min
x* 5,18 0 0,53 0 0 2 1,18 0 5

Lényegesen megváltozott étrendet javasol ez a modell és természetesen más a költség


minimuma. További, akár különleges előírásokat is illeszthetünk a modellbe, illetve a
számítógépes megoldásban érvényesíthetjük azokat, például kérhetünk olyan optimális
megoldásokat, amelyekben a a költség értékét szabjuk meg.
9. fejezet

„Egyéni” feladatok

Minden ember a legbelső magánszférájában is naponta számos döntést hoz. Ezek között
akadnak nagyobb horderejűek és vannak olyanok is, amikor a különböző lehetőségek
közül az optimálist célszerű kiválasztani. Változatos témaköröket lehet felsorolni ezen
a területen, például optimalizálható egy adott időszakra a tevékenységek sorrendje,
időigénye („napirend-optimalizálás”), a hangulatjavításra elérhető lehetőségek legjobb
kiválasztása, vagy egyéni, személyre szabott szervezési feladatok optimalizálása.

1. feladat „Vizsgatemetés” (F. Z. főiskolai hallgató esettanulmánya nyomán): Sikeres


vizsgaidőszak után T.B. a közeli vendéglőben ünnepel. Italokat is fogyasztanak. T.B.
hatféle italra gondol, amelyekről ismertek a következők:

Sör Kisfröccs Kommersz Vilmos Gin-tonic Whisky-cola


Ár (Ft/db) 240 100 130 350 420 450
Idő (perc/db) 20 8 10 15 22 20
Mennyiség 0,5 0,2 0,05 00,4 0,3 0,3
(l/db)
Alkohol 0,2 0,14 0,35 0,25 0,3 0,3
(ezrelék/db)
Élvezeti 3 1 −3 2 4 −1
érték (db)

Az idő az átlagos fogyasztás ideje. Az alkohol ez esetben a véralkoholszint-növelő


hatást jelenti. Az élvezeti érték szubjektív kategória.
T.B. összesen maximum 1,5 ezrelék alkoholszintet és legalább 2 élvezeti értéket akar
elérni. Minden poharat fenékig iszik. Az „ünneplés” 3 óra hosszat tarthat.
Kommersz vegyespálinkából legfeljebb egyet, Vilmos körtéből kettőt tervez.
A két koktélból együtt legalább 2, de legfeljebb 4 a terve.
Sörből minimum kettőt, a fröccsel együtt viszont maximum ötöt fogyasztana.
Milyen italválasztással kerülne legolcsóbba az „ünneplés”?

180
181

A modell felvétele
A döntési változó, az xi jelentse a fogyasztott italfélék darabszámát, a táblázatban
felsorolt sorrendben: 1 ≤ i ≤ 6.
Az induló feltétel: xi ∈ N . „Fenékig”
A korlátozó feltételek:
0, 2x1 + 0, 14x2 + 0, 35x3 + 0, 25x4 + 0, 3x5 + 0, 3x6 ≤ 1, 5 (alkoholszint)
3x1 + x2 − 3x3 + 2x4 + 4x5 − x6 − 2(x1 + x2 + x3 + x4 + x5 + x6 ) ≥ 0 (élvezeti érték)
20x1 + 8x2 + 10x3 + 15x4 + 22x5 + 20x6 ≤ 180 (3 óra, azaz 180 perc hosszan tarthat)
x3 ≤ 1, x4 = 2 (töményet csak mértékkel!)
x5 + x6 ≥ 2, x5 + x6 ≤ 4 (a koktélok)
x1 ≥ 2 (sör)
x1 + x2 ≤ 5. (sör és fröccs együtt)
Az eredeti dolgozat több italfajtát és más feltételeket is tartalmazott.
A célfüggvény: z = 240x1 + 100x2 + 130x3 + 350x4 + 420x5 + 450x6 → min .
Az eredeti dolgozatban korlát szerepelt az elkölthető pénzösszegre és az alkoholszint
maximalizálása volt a cél.
Végül ne felejtsük: Mértékletesség ↔ Egészség!

A modell megoldása
Az alapmodell Solverrel történő megoldása lényegében eléggé egyszerű, az adatbevi-
tel sem igényel különösebben hosszú időt. Ez a feladat elég sok egyéb feltétel csatolását
kínálja fel, illetve a korlátozó feltételeknél az eredeti modellben szereplő adatokat több
esetben érdemes megváltoztatni. A modell fenti alakjának megoldása:

x1 x2 x3 x4 x5 x6 b
f1 0,2 0,14 0,35 0,25 0,3 0,3 1,5 <= 1,5
f2 1 -1 -5 0 2 -3 6 >= 0
f3 20 8 10 15 22 20 114 <= 180
f4 0 0 1 0 0 0 0 <= 1
f5 0 0 0 1 0 0 2 <> 2
f6 0 0 0 0 1 1 2 >= 2
f7 0 0 0 0 1 1 2 <= 4
f8 1 0 0 0 0 0 2 >= 2
f9 1 1 0 0 0 0 2 <= 5
c* 240 100 130 350 420 450 2020 min
x* 2 0 0 2 2 0

Az optimális megoldások a táblázatból kiolvashatók.


A Lingóval való megoldás a változatok kezelését általában egyszerűbbé teszi. A
Lingóban a modell:
182 9. FEJEZET: „EGYÉNI” FELADATOK

0.2*x1 +0.14*x2 +0.35*x3 +0.25*x4 +0.3*x5 +0.3*x6 <1.5;


3*x1 +x2 -3*x3 +2*x4 +4*x5 -x6 -2*(x1 +x2 +x3 +x4 +x5 +x6 ) >0;
20*x1 +8*x2 +10*x3 +15*x4 +22*x5 +20*x6 <180;
x3 <1; x4 =2;
x5 +x6 >2; x5 +x6 <4;
x1 >2;
x1 +x2 <5
min=240*x1 +100*x2 +130*x3 +350*x4 +420*x5 +450*x6;
A megoldás:

Global optimal solution found.


Objective value: 2020.000
Variable Value Reduced Cost
X1 2.000000 0.000000
X2 0.000000 100.0000
X3 0.000000 130.0000
X4 2.000000 0.000000
X5 2.000000 0.000000
X6 0.000000 30.00000

Row Slack or Surplus Dual Price


1 0.000000 0.000000
2 6.000000 0.000000
3 66.00000 0.000000
4 1.000000 0.000000
5 0.000000 −350.0000
6 0.000000 −420.0000
7 2.000000 0.000000
8 0.000000 −240.0000
9 3.000000 0.000000

2. feladat (Nyolc óra munka, nyolc óra szórakozás. . . ”) N.F. heti szabadideje optimá-
lis kihasználására készül, összesen 56 órára kíván programot összeállítani. Tévénézésre
naponta minimum 2, maximum 3 órát szán. Baráti kapcsolatai ápolására legalább 6
órát fordítana. Egy alkalommal horgászni menne, ami utazással együtt legalább 5 órát,
de legfeljebb 8 órát igényelne. Olvasgatással töltene naponta minimum fél, maximum
másfél órát. Kiszámíthatatlan egyéb tevékenységre legalább 15 órát számol. Az egyes
183

elfoglaltságokat nem azonos módon kedveli: ha az egyéb tevékenység kedveltségi szint-


jét 1-nek veszi, az olvasás ennél 20%-kal, a horgászás 40%-kal, a tévénézés 45%-kal,
az olvasás 50%-kal, a barátokkal való időtöltés 75%-kal kedveltebb. Hogyan ossza el
szabadidejét N. F., ha a hetet a lehető legjobban szeretné eltölteni?

A modell felvétele
A döntési változók az egyes tevékenységekre fordított időtartamok: x1 a tévézés, x2
a barátkozás, x3 a horgászás, x4 az olvasgatás, x5 az egyéb tevékenységre fordított idő.
Az induló feltétel: x ≥ 0.
A korlátozó feltételek:
x1 + x2 + x3 + x4 + x5 = 56 (a teljes heti szabadidőt kihasználjuk)
x1 ≥ 14, x1 ≤ 21 (a tévézés idejének korlátai)
x2 ≥ 6 (barátokkal eltöltött idő)
x3 ≥ 5, x3 ≤ 8 (horgászat ideje)
x4 ≥ 3, 5, x4 ≤ 10, 5 (olvasgatásra szánt idő hetente)
x5 ≥ 15 (egyéb tevékenység ideje)
A célfüggvényt az időtartamokhoz rendelt súlyokkal is felvehetjük:
z = 1, 45x1 + 1, 75x2 + 1, 4x3 + 1, 5x4 + x5 → max

A modell megoldása
A Lingo használatával gyors eredményt kapunk az alapmodellre. Az adatok Lingó-
ban:
x1+x2+x3+x4+x5=56;
x1>14; x1<21;
x2>6;
x3>5; x3<8;
x4>3.5; x4<10.5;
x5>15;
max=1.45*x1+1.75*x2+1.4*x3+1.5*x4+x5;
184 9. FEJEZET: „EGYÉNI” FELADATOK

A megoldás:

Global optimal solution found.


Objective value: 79.92500
Variable Value Reduced Cost
X1 14.00000 0.000000
X2 18.50000 0.000000
X3 5.000000 0.000000
X4 3.500000 0.000000
X5 15.00000 0.000000
Row Slack or Surplus Dual Price
1 0.000000 1.750000
2 0.000000 −0.3000000
3 7.000000 0.000000
4 12.50000 0.000000
5 0.000000 −0.3500000
6 3.000000 0.000000
7 0.000000 −0.2500000
8 7.000000 0.000000
9 0.000000 −0.7500000

A primál és duál optimumok kivitelezhető megoldást mutatnak be, optimális idő-


tartamok kiolvashatók. Természetesen ez esetben is lehetőség van különböző változa-
tok kiszámolására. Hangsúlyozzuk, hogy általában nem szabad misztifikálni a kapott
eredményeket, azokat általában össze kell vetni egyéb tényezőkkel, számolva az adatok
bizonytalanságával is.
Irodalomjegyzék

1. Operációkutatás I. Szerkesztette: Dr. Tóth Irén


Nemzeti Tankönyvkiadó, Budapest, 1997. 197 oldal
2. Kocsis Péter: Optimalizáló döntések lineáris programozással
BGF PSzFK, Budapest, 2000. 105 oldal
3. Gáspár – Temesi: Matematikai programozási gyakorlatok
Nemzeti Tankönyvkiadó, Budapest, 1989. 420 oldal
4. Döntéselőkészítés Esettanulmányok. Szerkesztette: Raffai Mária
NOVADAT, Győr, 1999. 301 oldal
5. Dr. Csernyák László – Dr. Jánosa András: A gazdasági optimalizálás módszerei II.
Nemzeti Tankönyvkiadó, Budapest, 2004. 228 oldal
6. Arnold Kaufmann: A döntés tudománya
Közgazdasági és Jogi Könyvkiadó, Budapest, 1982. 316 oldal

185

You might also like