Copyright (C) 2009 Gergely Mádi-Nagy.
Permission is granted to copy, distribute
and/or modify this document
under the terms of the GNU
Free Documentation License, Version 1.3
or any later version published by the Free Software
Foundation;
with the Invariant Sections being title and author, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the
section entitled "GNU
Free Documentation License".
Példa egy szöveges feladat Solverrel
történõ megoldására
Szerző: Mádi-Nagy Gergely (BME Diff.egyenletek Tsz., ELTE TTK Operációkutatási Tsz.)
A feladat szövege:
Egy ruhagyár ötféle ruházati terméket gyárt, melyekhez különféle erőforrásokat használ fel. Egy adott időszakban felhasználható erőforrások mennyiségét (erőforrások kapacitása), a termékek fajlagos erőforrásigényét és a termékek darabján keletkező nyereséget (fajlagos nyereség) az alábbi táblázatban foglaltuk össze.
Erőforrások |
Termékek |
Erőforrások kapacitása |
||||
Nadrág |
Zakó |
Blúz |
Ing |
Szoknya |
||
1. szövet (m) 2. szövet (m) 3. szövet (m) Cérna (m) Munkaóra |
2,3 0,4 0 20 0,5 |
3,1 1,1 0,5 40 1 |
0 0,5 1,2 10 0,3 |
0 0 2,0 15 1 |
1,9 1,3 0,5 15 0,4 |
300 400 120 4000 100 |
Fajlagos nyereség (Ft) |
2000 |
4000 |
600 |
1500 |
1800 |
|
A feladat: Mennyit termeljen a gyár az egyes termékekből, ha az a célja, hogy nyeresége maximális legyen?
A feladat megoldása
A probléma modellje:
x1: A legyártandó nadrágok száma
x2: A legyártandó zakók száma
x3: A legyártandó blúzok száma
x4: A legyártandó ingek száma
x5: A legyártandó szoknyák száma
2,3 x1 |
+3,1 x2 |
+0 x3 |
+0 x4 |
+1,9 x5 |
≤ |
300 |
0,4 x1 |
+1,1 x2 |
+0,5 x3 |
+0 x4 |
+1,3 x5 |
≤ |
400 |
0 x1 |
+0,5 x2 |
+1,2 x3 |
+2,0 x4 |
+0,5 x5 |
≤ |
120 |
20 x1 |
+40 x2 |
+10 x3 |
+15 x4 |
+15 x5 |
≤ |
4000 |
0,5 x1 |
+1 x2 |
+0,3 x3 |
+1 x4 |
+0,4 x5 |
≤ |
100 |
x1, x2, x3, x4, x5 ≥0
2000x1 |
+4000x2 |
+600x3 |
+1500x4 |
+1800x5 |
->max |
Az optimum
meghatározása:
Az optimális megoldás megkereséséhez, illetve a további vizsgálatokhoz az Excel Solver programját vettem segítségül. A megtalált optimális megoldáshoz tartozó eredményjelentés így nézett ki:
Célcella
(Max) |
|
|
|
|
||
|
Cella |
Név |
Eredeti
érték |
Végérték |
|
|
|
$B$24 |
Profit
(Ft) |
0 |
382558,1395 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Módosuló
cellák |
|
|
|
|
||
|
Cella |
Név |
Eredeti
érték |
Végérték |
|
|
|
$C$16 |
Nadrág
(db) |
0 |
15,50387597 |
|
|
|
$D$16 |
Zakó
(db) |
0 |
85,27131783 |
|
|
|
$E$16 |
Blúz
(db) |
0 |
0 |
|
|
|
$F$16 |
Ing
(db) |
0 |
6,976744186 |
|
|
|
$G$16 |
Szoknya
(db) |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Korlátozó
feltételek |
|
|
|
|
||
|
Cella |
Név |
Cellaérték |
Képlet |
Status |
Eltérés |
|
$B$18 |
1.
szövet (m) |
300 |
$B$18<=$I$5 |
Éppen |
0 |
|
$B$19 |
2.
szövet (m) |
100 |
$B$19<=$I$6 |
Éppen |
0 |
|
$B$20 |
3.
szövet (m) |
56,58914729 |
$B$20<=$I$7 |
Bőven |
63,41085271 |
|
$B$21 |
Cérna
(m) |
3825,581395 |
$B$21<=$I$8 |
Bőven |
174,4186047 |
|
$B$22 |
Munka
(óra) |
100 |
$B$22<=$I$9 |
Éppen |
0 |
A megoldás
értelmezése:
A gyár akkor tesz szert maximális profitra, ha az adott időszak alatt átlagosan (mivel nem egész szám jött ki) 15,50387597 darab nadrágot, 85,27131783 darab zakót, 6,976744186 inget, a többi termékből pedig semennyit sem gyárt. Ekkor a maximális profit nagysága 382558,1395 Ft. Az optimális termelés során az 1., 2. szövetből és munkaórából az összes rendelkezésre álló mennyiséget felhasználja.
A feladat duálisa:
2,3 y1 |
+0,4 y2 |
+0 y3 |
+20 y4 |
+0,5 y5 |
≥ |
2000 |
3,1 y1 |
+1,1 y2 |
+0,5 y3 |
+40 y4 |
+1 y5 |
≥ |
4000 |
0 y1 |
+0,5 y2 |
+1,2 y3 |
+10 y4 |
+0,3 y5 |
≥ |
600 |
0 y1 |
+0 y2 |
+2,0 y3 |
+15 y4 |
+1 y5 |
≥ |
1500 |
1,9 y1 |
+1,3 y2 |
+0,5 y3 |
+15 y4 |
+0,4 y5 |
≥ |
1800 |
y1, y2, y3, y4, y5 ≥0
300y1 |
+400y2 |
+120y3 |
+4000y4 |
+100y5 |
->min |
A duális értelmezése:
Tegyük fel, hogy valaki fel szeretné vásárolni a gyár erőforrásait (kapacitásait). Jelölje az yi változó azt az árat amennyit a vásárló ajánl fel az i-edik erőforrásért. Ezeket az árakat árnyékáraknak nevezzük.
A duális feladat korlátozó egyenlőtlenségei azt biztosítják, hogy az ajánlott árak versenyképesek legyenek. Például az első egyenlőtlenség azt mondja, hogy egy nadrág alapanyagaiért kifizetett ár ne legyen kisebb a nadrágon nyert profitnál. Ez azért fontos, mivel ellenkező esetben a gyár még akkor is jobban járna az erőforrások eladásánál, ha csak nadrágot gyártana.
A célfüggvény értéke az összes erőforrásért felajánlott összeg. A minimalizálás az erőforrás vásárlójának érdekeit tükrözi, tehát azt, hogy az erőforrásokat minél olcsóbban tudja megvenni.
A primál-duál tétel:
Az eredeti (primál) feladat célfüggvényértéke nem lehet nagyobb a duál feladat célfüggvényértékénél. Ha a primálfeladatnak van optimális megoldása, akkor a duálnak is, és a két optimális célfüggvényérték megegyezik. Az első mondatban szereplő matematikai állítást logikusan tükrözi a duális értelmezésében leírt szituáció (a gyár és az erőforrást vevő viszonya). A második mondatot alátámasztja a duális feladat megoldása, amely az Excel Solver érzékenység jelentésében az árnyékáraknál található. A feladatra az alábbi érzékenység jelentést kaptuk:
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 |
|
$C$16 |
Nadrág
(db) |
15,50387597 |
0 |
2000 |
480 |
340,9090909 |
|
$D$16 |
Zakó
(db) |
85,27131783 |
0 |
4000 |
937,5 |
646,9565217 |
|
$E$16 |
Blúz
(db) |
0 |
-576,744186 |
600 |
576,744186 |
1E+30 |
|
$F$16 |
Ing
(db) |
6,976744186 |
0 |
1500 |
2153,225806 |
1500 |
|
$G$16 |
Szoknya
(db) |
0 |
-1241,860465 |
1800 |
1241,860465 |
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 |
|
$B$18 |
1.
szövet (m) |
300 |
290,6976744 |
300 |
60 |
18,18181818 |
|
$B$19 |
2.
szövet (m) |
100 |
1453,488372 |
100 |
6,451612903 |
47,82608696 |
|
$B$20 |
3.
szövet (m) |
56,58914729 |
0 |
120 |
1E+30 |
63,41085271 |
|
$B$21 |
Cérna
(m) |
3825,581395 |
0 |
4000 |
1E+30 |
174,4186047 |
|
$B$22 |
Munka
(óra) |
100 |
1500 |
100 |
11,62790698 |
6,976744186 |
A duál feladat megoldását, mint említettük, az árnyékárak adják meg. Eszerint az erőforrásokat megvásárolni szándékozó akkor jár a legjobban, ha az 1. szövet méteréért 290,697644 forintot, a 2. szövet méteréért 1453,488372 forintot, egy munkaóráért pedig 1500 forintot ajánl (természetesen a gyakorlatban ezen összegek forintra való kerekítéséről lenne szó). Ekkor az ő vásárlással járó minimális költsége 382558,1395 forint lenne, amely megegyezik a gyár maximális profitjával.
Érzékenység vizsgálat:
Az érzékenység jelentésben a „Módosuló cellák” táblázat utolsó két oszlopa arról ad információt, hogy az egyes termékek darabjához tartozó fajlagos nyereségek mekkora változtatása esetén kapjuk még mindig ugyanazt az optimális megoldást. Eszerint csak akkor kéne változtatni a termelésen, ha
· vagy a nadrág darabjának fajlagos nyeresége több mint 480 forinttal nő, vagy több mint 340,9090909 forinttal csökken,
· vagy a zakó darabjának fajlagos nyeresége több mint 937,5 forinttal nő, vagy több mint 646,9565217 forinttal csökken,
· vagy a blúz darabjának fajlagos nyeresége több mint 576,744186 forinttal nő (ha csökken, akkor nem változik az optimális termelés),
· vagy a ing darabjának fajlagos nyeresége több mint 2153,225806 forinttal nő, vagy több mint 1500 forinttal csökken,
· vagy a szoknya darabjának fajlagos nyeresége több mint 1241,860465 forinttal nő (ha csökken, akkor nem változik az optimális termelés).
A „Korlátozó feltételek” című táblázat utolsó két oszlopa arról ad információt, hogy az erőforrások kapacitása meddig változtatható úgy, hogy a primál feladat optimális megoldás bázisa ne változzék. Tehát továbbra is csak a nadrágot, zakót és inget kell gyártani abban az esetben, ha
· vagy az 1. szövet (adott időszakban rendelkezésre álló) mennyisége kevesebb mint 60 méterrel nő, vagy kevesebb mint 18,18181818 méterrel csökken,
· vagy az 2. szövet mennyisége kevesebb mint 6,451612903 méterrel nő, vagy kevesebb mint 47,82608696 méterrel csökken,
· vagy az 3. szövet mennyisége kevesebb mint 63,41085271 méterrel csökken (nőni bármeddig nőhet),
· vagy a cérna mennyisége kevesebb mint 174,4186047 méterrel csökken (nőni bármeddig nőhet),
· vagy a rendelkezésre álló munka mennyisége kevesebb mint 11,62790698 órával nő, vagy kevesebb mint 6,976744186 órával csökken.
A termelés határai
A „Határok jelentés”-ben kapott alsó táblázat megmutatja, hogy az optimális termelésből kiindulva egy-egy termék termelt mennyisége (a többi termelését változatlanul hagyva) milyen határok közt mozoghat, és emellett mekkora lenne a profit értéke.
|
Módosuló |
|
|
Alsó |
Cél |
|
Felső |
Cél |
Cella |
Név |
Végérték |
|
határ |
eredmény |
|
határ |
eredmény |
$C$16 |
Nadrág
(db) |
15,50387597 |
|
0 |
351550,3876 |
|
15,50387597 |
382558,1395 |
$D$16 |
Zakó
(db) |
85,27131783 |
|
0 |
41472,86822 |
|
85,27131783 |
382558,1395 |
$E$16 |
Blúz
(db) |
0 |
|
0 |
382558,1395 |
|
0 |
382558,1395 |
$F$16 |
Ing
(db) |
6,976744186 |
|
0 |
372093,0233 |
|
6,976744186 |
382558,1395 |
$G$16 |
Szoknya
(db) |
0 |
|
0 |
382558,1395 |
|
0 |
382558,1395 |
Tehát például Zakóból 0 és 85,27131783 darab közt termelhetünk. Ha nem termelünk belőle, akkor a profit 41472,86822, ha a felső határnak megfelelő terméket állítunk elő, akkor a profit a maximális értékkel megegyező.