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".
LP feladatok megoldása az Excel Solver
segítségével
Szerző: Mádi-Nagy Gergely (BME Diff.egyenletek Tsz., ELTE TTK Operációkutatási Tsz.)
Tekintsük
az alábbi LP feladatot (Prékopa: Lineáris Programozás I. 147. o.):
|
x1 |
+2 |
x2 |
-4 |
x3 |
- |
x4 |
≥ |
1 |
|
x1 |
- |
x2 |
+3 |
x3 |
+2 |
x4 |
≤ |
2 |
2 |
x1 |
-3 |
x2 |
+5 |
x3 |
- |
x4 |
= |
3 |
|
|
|
|
|
|
|
|
|
|
|
x1 |
, |
x2 |
, |
x3 |
, |
x4 |
≥ |
0 |
|
|
|
|
|
|
|
|
|
|
max (2 |
x1 |
+ |
x2 |
+2 |
x3 |
-2 |
x4 |
) |
|
A
könnyebb áttekinthetőség kedvéért magát a példát is beraktam az Excel táblába, bár
ez a megoldáshoz nem szükséges:
Ezután
a változók értékeit tartalmazó cellák helyét adom meg, mely esetünkben
$B$13;$D$13;$F$13;$H$13 lesz. Ezen cellák
értékeit változtatja majd meg a solver a megoldás során. Adhatunk
kezdőértékeket is (pl. 0-kat), ez nem befolyásolja a megoldás menetét, viszont
javítja az áttekinthetőséget.
Az együtthatókat kiszedem, és struktúráltan
beillesztem a táblába:
Kiszámolom
a korlátozó feltételek baloldalának értékét az adott változóértékek mellett.
Esetünkben ezek a $H$24, $H$25, $H$26 cellákba kerültek. Az alábbi képen a
$H$24 értékének képlete jól mutatja az eljárást:
A
célfüggvény értékét hasonló módon egy adott cellában kiszámítjuk ($M$29):
Az
„Eszközök” menüben rákattintunk a Solverre. Ha nem találjuk, akkor valószínű
nincs feltelepítve, ekkor a függelékben szereplő telepítési útmutatás szerint
járjunk el.
Az
alábbi ablakot kapjuk:
A
célcella, és a célfüggvény jellege (max) itt már helyesen van kitöltve. A
módosuló celláknál a változók celláira kell hivatkozni:
A
korlátozó feltételek hozzáadásánál meg kell jelölni a feltétel baloldalának
illetve jobboldalának megfelelő cellát, illetve a két oldal közti relációt,
például:
A
feltételek bevitele után ezt látjuk:
Mielőtt
a feladatot megoldanánk, a „Beállítás” segítségével, egyrészt
·
egyszerű módon
megadhatjuk a változókra vonatkozó nemnegatívitási feltételeket („Nemnegatív
feltételezése”),
·
másrészt
beállíthatjuk, hogy a Solver a feladatot szimplex módszerrel oldja meg („Lineáris
modell feltételezése”). Megjegyezzük, hogy ezek után az alsó részben található
nemlineáris eszközök (közelítés, differenciák, keresés) beállításai már nem
mérvadóak.
Ezek
után megnyomhatjuk a „Megoldás” gombot (a Solver paraméterek ablakban).
Látható,
hogy a munkalapon a megfelelő cellákban máris az optimális megoldáshoz tartozó
értékek jelentek meg. Ha a megoldás részletesebb elemzésére is kiváncsiak
vagyunk, akkor a „Solver eredmények” ablakban jelöljük be a számunkra érdekes
témák jelentéseit. Esetünkben az összes lehetőséget bejelöltem:
Az
„OK” gomb megnyomása után a Solver három munkalapot generál. Az
eredményjelentés az alábbi adatokat mutatja:
Microsoft
Excel 10.0 Eredmény jelentés |
|
|
||||
Munkalap:
[Solver példa.xls]Munka1 |
|
|
||||
Készült:
2004.09.22. 23:33:58 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Célcella
(Max) |
|
|
|
|
||
|
Cella |
Név |
Eredeti
érték |
Végérték |
|
|
|
$M$29 |
= |
0 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Módosuló
cellák |
|
|
|
|||
|
Cella |
Név |
Eredeti
érték |
Végérték |
|
|
|
$B$13 |
x1 |
0 |
3 |
|
|
|
$D$13 |
x2 |
0 |
1 |
|
|
|
$F$13 |
x3 |
0 |
0 |
|
|
|
$H$13 |
x4 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Korlátozó
feltételek |
|
|
|
|||
|
Cella |
Név |
Cellaérték |
Képlet |
Status |
Eltérés |
|
$H$24 |
x4 |
5 |
$H$24>=$J$24 |
Bőven |
4 |
|
$H$25 |
x4 |
2 |
$H$25<=$J$25 |
Éppen |
0 |
|
$H$26 |
x4 |
3 |
$H$26=$J$26 |
Bőven |
0 |
Megjegyzést
csak a „Korlátozó feltételek” „Status” és „Eltérés” sorai érdemelnek. Az
„Eltérés” az optimális megoldáshoz tartozó baloldal és a jobboldal közti
eltérés(változó) értékét mutatja. A „Status” egyenlőtlenségek esetén akkor
„Éppen”, ha a baloldal eléri a jobboldalt, tehát ha az adott korlátozó feltétel
határán vagyunk. Egyéb esetekben a „Status” „Bőven”.
Tekintsük az „Érzékenységjelentés” munkalapot:
Microsoft
Excel 10.0 Érzékenység jelentés |
|
|
|||||
Munkalap:
[Solver példa.xls]Munka1 |
|
|
|||||
Készült:
2004.09.22. 23:33:58 |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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$13 |
x1 |
3 |
0 |
2 |
1E+30 |
1,75 |
|
$D$13 |
x2 |
1 |
0 |
1 |
1E+30 |
4 |
|
$F$13 |
x3 |
0 |
-7 |
2 |
7 |
1E+30 |
|
$H$13 |
x4 |
0 |
-21 |
-2 |
21 |
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 |
|
$H$24 |
x4 |
5 |
0 |
1 |
4 |
1E+30 |
|
$H$25 |
x4 |
2 |
8 |
2 |
1E+30 |
0,5 |
|
$H$26 |
x4 |
3 |
-3 |
3 |
1 |
1E+30 |
A
„Módosuló cellák” táblázatból a „Redukált költség” a szimplex tábla alsó (c-z)
sorának értékeire utal. A „Megengedhető növekedés/csökkenés” a megfelelő célfüggvény
együttható változatásainak azon határait adja meg, melyen belül a feladat
optimális megoldása nem változik (persze a célfüggvény értéke igen).
A
„Korlátozó feltételek” táblázatban a „Név”-hez került x4 értékek helytelenek,
itt az Excel csak megpróbált a korlátozó feltételeknek valamilyen cimkét adni.
Az „Árnyékár” a duál feladat megoldását mutatja. A „Megengedhető
növekedés/csökkenés” a megfelelő feltétel jobboldala változatásainak azon
határait adja meg, melyen belül a feladat optimális megoldáshoz tartozó bázisa
nem változik (persze a bázisváltozók értékei értékei igen). Ez a táblázat úgyis értelmezhető, hogy a duál
feladatra adja meg ugynazaokat az értékeket, mint a „Módosuló cellák” a
primálra. A különbség csak az első két oszlop jelentésében van, nevezetesen a duálmegoldás a második
oszlopban van, míg a duál feladat redukált költségeit a harmadik és első oszlop
különbségeként kaphatjuk meg.
Végül
nézzük a „Határok jelentés”-t:
Microsoft
Excel 10.0 Határok jelentés |
|
|
|
|
|||||
Munkalap:
[Solver példa.xls]Határok jelentés 1 |
|
|
|
||||||
Készült:
2004.09.22. 23:33:58 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cél |
|
|
|
|
|
|
|
|
Cella |
Név |
Végérték |
|
|
|
|
|
|
|
$M$29 |
= |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Módosuló |
|
|
Alsó |
Cél |
|
Felső |
Cél |
|
Cella |
Név |
Végérték |
|
határ |
eredmény |
|
határ |
eredmény |
|
$B$13 |
x1 |
3 |
|
3 |
7 |
|
3 |
7 |
|
$D$13 |
x2 |
1 |
|
1 |
7 |
|
1 |
7 |
|
$F$13 |
x3 |
0 |
|
0 |
7 |
|
0 |
7 |
|
$H$13 |
x4 |
0 |
|
0 |
7 |
|
0 |
7 |
Ez
esetben az „Alsó/Felső határ” és a megfelelő „Cél(függvény) eredmény” a következőkre
utal. Az adott optimális megoldásból kiindulva, egy-egy változót milyen határok
közt tudunk mozgatni úgy, hogy a korlátozó feltételek továbbra is
teljesüljenek, és a határokon felvett változóértékek mellet mekkora a
célfüggvény értéke. Mivel ebben az esetben az egyik feltétel egyenlet, és itt
mindkét bázisváltozó együtthatója nem nulla, így bármelyik változó értéket
megváltoztatva ez a feltétel már nem teljesülne. Emiatt a változókra kapott
alsó és felső határok egybeesnek. Más esetekben lehetőség van az egyes változók
mozgatására, lásd a honlapon lévő többi solveres elemzést.
Jó munkát!
Mádi-Nagy
Gergely
Függelék a Solver telepítéséhez
Szokásos
telepítés esetén az Excel nem rakja fel a Solvert a számítógépünkre, ezért
szükség lehet ennek a pótlólagos hozzáadására. Ekkor a teendőink a következők.
Rakjuk
be az Office telepítőlemezt, majd índítsuk el a Setup programot (ha ez
automatikusan nem történne meg). A megjelenő ablakban
válasszuk a „Szolgáltatások
telepítése/eltávolítása” pontot, majd menjünk tovább. Itt a „Solver” mellet
levő ikont állítsuk a „Sajátgépről fut” vagy „Minden sajátgépről fut”
állapotra:
Majd
a „Közös Office szolgáltatások”-on belül aktivizáljuk a a „Visual Basic for
Applications” szolgáltatást is:
Ezután
a „Frissítés” gomb megnyomásával befejezhetjük a telepítést.