Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Tehetséggondozás az informatikában - Táblázatkezelés / Lehetőségelemzés /2. Solver

Lehetőségelemzés

2. Solver

A Solver az Excel egyik legtöbbet használt bővítménye, tehát eredetileg csak passzív része a programnak. Így, ha használni szeretnénk, előbb be kell töltenünk. Ennek lépéseiről - sőt a funkció használatáról is, az itteninél bővebben - remek leírás olvasható a Microsoft honlapján.

A funkció nagyon hasonlít az előbb tárgyalt célérték-kereséshez, hiszen ugyanolyan típusú problémák megoldására való, csak éppen több beállítási lehetőséggel rendelkezik. Így minden célérték-kereséssel megoldható probléma megoldható Solverrel is, egyes esetekben viszont csak a Solver nyújt segítséget.

Nézzük, mely szempontok alapján egyezik meg a két funkció:

A következő képernyőkép az eszköz használatát mutatja be, megjelölve az előbb is említett paramétereket. Habár ez nem teljesen szakszerű, az összhang megőrzése érdekében maradnék a célérték-keresésnél megszokott kifejezéseknél. A mellékelt feladatmegoldásoknál is ugyanezt a színezést használom, hogy könnyebb legyen összevetni azokat a leírással (persze kék színezést ne keressen senki). Gyakran előfordul, hogy a módosuló cellákra korlátozás is vonatkozik, ezért döntöttem úgy, hogy a narancssárga színt kitöltésre, a pirosat betűszínezésre használom, lehetőséget biztosítva így egy cella két színnel történő megjelölésére.

A kép (nagyobb változata) külön ablakban is megtekinthető.A Solver ablakának legfontosabb részei: célcella, célérték, módosuló cella és korlátozások.72_full.jpg72. ábra: A Solver ablaka, megjelölve benne a legfontosabb részek.

Nézzük meg azt is, miben különbözik a Solver a célérték-kereséstől:

Látható, hogy a Solver használatának megértése nem is olyan nagy lépés a célértékkeresés ismerete mellett. Még sincs egyszerű dolgunk: a feltételek megfogalmazása, és annak olyan formába öntése, amit a Solver is megért, gyakran nem kis feladat. A funkció rutinszerű használatának képessége rengeteg gyakorlást, kreativitást igényel!

Nézzünk meg előbb egy egyszerűbb, majd egy nehezebb példát!

Példa

35. példa: Szendvicsek

A feladat így szól: "Meghívtuk tizennégy ismerősünket vendégségbe. Kétféle szendvicset tudunk csinálni:

Kenyérből bármennyi a rendelkezésünkre áll, de a többi alapanyagból csak korlátozottan: 120dkg vaj, 100dkg sonka, 200dkg sajt, 20db tojás.

Az ilyen feladatoknál mindig az a legnehezebb, hogy kitaláljuk, milyen formában rögzítsük az adatokat, hogy aztán könnyedén megfogalmazhassuk a feltételeket. Szerencsére most nincs nehéz dolgunk, ráadásul a négy feladat erőteljesen hasonlít is egymásra, így elég egyszer kitalálnunk az elrendezést, és aztán munkalapmásolással előkészíteni a helyet mindegyik feladat megoldására.

A kép (nagyobb változata) külön ablakban is megtekinthető.Az elkészült, de még kitöltetlen táblázat. A megoldások közt megtalálható a Solverrel már kitöltött változata.73_full.jpg73. ábra: Az a) feladathoz tartozó munkalap. Szürke kitöltése azoknak a celláknak van, amikre ennél a feladatnál nincsen szükség.

Az a) feladat megoldása következik.

Az ábra sokatmondó: C12-be szeretnénk kiszámolni, maximum hány szendvics készíthető el. Ehhez D3 és E3 értékeit kell próbálgatni, miközben figyelünk arra, hogy ne lépjük túl a G5:G8-ban rögzített maximális mennyiségeket, és ne adjunk meg életszerűtlen adatokat.

Célcella:

$C$12

Célérték:

Max

Módosuló cellák:

$D$3:$E$3

Korlátozások:

$D$3:$E$3 = egész

$F$5:$F$8 <= $G$5:$G$8

Megjegyzés

Ne feledjük, a Solver alapértelmezetten nem tartozik a programhoz, így amíg nem töltjük be, nem fogjuk a fülön találni!

Az eredményt gyorsan megkapjuk: 50db szendvics készíthető ennyi alapanyagból. Ennél jóval többet is megtudhatunk, ha a megoldás megtalálásakor nem csupán elfogadjuk azt, hanem kérünk egy jelentést is:

Így egy generált munkalapon olvashatjuk a megoldás megtalálásának körülményeit, többek közt azzal a fontos információval, hogy nem a sonka és a sajt mennyisége a korlátozó.

Következzék a b) feladat megoldása!

Most nem a mennyiség optimalizálása a cél, hanem a bevételé, ez kerül F9-be. Ezt leszámítva azonban ugyanúgy kell megoldani a feladatot, mint előbb.

Célcella:

$F$9

Célérték:

Max

Módosuló cellák:

$D$3:$E$3

Korlátozások:

$D$3:$E$3 = egész

$F$5:$F$8 <= $G$5:$G$8

A c)-ben egy kicsit már más jellegű a feladat, mint amilyen az előbbi volt. Egyrészről most minimális értéket keresünk, másrészről pedig egy új feltétel is adódik: mindenkinek jusson legalább egy szendvics.

Célcella:

$F$9

Célérték:

Min

Módosuló cellák:

$D$3:$E$3

Korlátozások:

$D$3:$E$3 = egész

$F$5:$F$8 <= $G$5:$G$8

$C$12 >= $C$11

Valójában még egy dologra is figyelni kellene: ne lehessen negatív számú szendvicset megadni. Mivel a bevétel minimalizálásáról van szó, ennek figyelembe vétele nélkül a megoldás a következő lenne: -43db sonkás szendvics, 57db sajtos szendvics és így 47Ft bevétel, ami nyilván nem egy életszerű megoldás. Az ok, amiért mégsem kell külön kikötni a szendvicsek számának nem negatív voltát, az egy kis jelölőnégyzet a Solver ablakában, ami alapértelmezetten ki van pipálva: "nem korlátozott változók nem negatívvá tétele".

A kép (nagyobb változata) külön ablakban is megtekinthető.A Solver ablaka az előbb megadott feltételekkel.74_full.jpg74. ábra: A jelölőnégyzet használata sok munkától megkímél minket.

A d) feladatban csupán az az újdonság, hogy a cél most nem valamiféle minimum- vagy maximum-optimalizálás, hanem egy konkrét érték általi visszafejtés. Igazából egy ugyanolyan visszakeresésről van szó, mint amit célérték-keresésnél is szoktunk csinálni, csak éppen az eddigi feltételek megtartása mellett:

Célcella:

$F$9

Célérték:

1301

Módosuló cellák:

$D$3:$E$3

Korlátozások:

$D$3:$E$3 = egész

$F$5:$F$8 <= $G$5:$G$8

Láttuk, hogy mekkora segítség lehet számunkra ez az eszköz, és azt is, hogy a táblázat elrendezésének kitalálását követően már egyszerű dolgunk van. Ennél bonyolultabb feladatoknál azonban jó résen lenni, és olykor esetleg felülbírálni a program működését, mert az sok esetben nem elég determinisztikus. A következő példa ezt mutatja be.

Példa

36. példa: Nemes 2008-2009 3. forduló, 5 (Regionális forduló)

Egy verseny regionális fordulójának beosztását kell elkészíteni, az utazási költség minimalizálása mellett.

Adott:

Kell:

Mindezt tehát úgy kell megadni, hogy "ne szegjük meg a szabályokat", és az összes útiköltség a lehető legkevesebb legyen.

A feladat semmit nem ír arról, hogy ehhez a Solvert kellene használni, így aki nem ismeri ezt a lehetőséget, nagy valószínűséggel neki sem tud fogni a feladatnak. Sok esetben lehetne kézzel is próbálgatni, ennél a konkrét példánál azonban 413 lehetőséget kellene megvizsgálni a férőhelyek figyelembevétele, illetve a költség minimalizálása szempontjából, amire nem hinném, hogy bárki szívesen vállalkozik (arról nem is beszélve, hogy még ha meg is találná a jó megoldást, akkor se sok pontot kapna a feladatra).

Elsőként importálni kell az adatokat, és valamilyen formában elrendezni őket a munkalapon. Utána át kell gondolni, milyen feltételeknek is kell megfelelni:

Ezt követően arra van szükség, hogy a táblázat elrendezésével, képletek használatával ezeket olyan formában fogalmazzuk meg, amit "a Solver is megért". Ne feledjük, hogy csak a következő típusú feltételek adhatóak meg:

Most jön egy kis okoskodás: "hogyan lehetne az előbb felsorolt feltételekkel megfogalmazni az a)-ban és b)-ben leírtakat?". Ezt kitalálni nem egyszerű. A következő képen a táblázat egy olyan elrendezése található, mely lehetővé teszi a feltételek megfogalmazását a következőképpen:

A kép (nagyobb változata) külön ablakban is megtekinthető.Az elkészült, de még kitöltetlen táblázat. A megoldások közt megtalálható a Solverrel már kitöltött változata.75_full.jpg75. ábra: Az üres táblázat egy lehetséges elkészítése.
A kép (nagyobb változata) külön ablakban is megtekinthető.A Solver paramétereinek megadása.76_full.jpg76. ábra: A célcella, a célérték, a módosuló cellák, valamint a korlátozások megadása.

A keresés jó ideig is eltarthat, majd nagy eséllyel a következő ablakot kapjuk:

A kép (nagyobb változata) külön ablakban is megtekinthető.&#34;A Solver eredményei&#34; ablak.77_full.jpg77. ábra: Úgy tűnik, nem is olyan biztos, hogy jó megoldást találtunk.

Az egész megoldások tűrését valóban célszerű nullára állítani, különben lehetséges, hogy egészek helyett csak egészekhez közeli értékekkel tölti fel a program a módosuló cellákat.

A kép (nagyobb változata) külön ablakban is megtekinthető.&#34;A Solver eredményei&#34; ablak.79_full.jpg79. ábra: A beállítást követően se sokat javult a helyzet.

Habár javult a helyzet, és jobb megoldást kaptunk, mint előbb, még ez sem az igazi. Ha azonban még egyszer lefuttatjuk, jó eséllyel megkapjuk végre az optimális beosztást, mellyel az utazási költség mindössze 10530Ft lesz:

Az eddigi tortúrából egyértelműen megállapíthatjuk, hogy ez a feladat túl nagy falat a Solvernek, hiszen már elsőre meg kellett volna találnia a megoldást. Tapasztalataim szerint az Excel bizonyos verziói akár még arra is hajlamosak, hogy egyáltalán nem adnak megoldást (hacsak nem adunk meg kézzel "pár" kezdő értéket, megkönnyítve ezzel a dolgát). Sőt, olykor az is előfordulhat, hogy hiába állítjuk az egészoptimalitást 0%-ra, mégsem egészeket kapunk.

Ugyanezt a feladatot a LibreOffice Calcja kifogástalanul megoldja. A Solver funkciót teljes egészében megvalósító Megoldó pillanatok alatt megtalálja az optimális beosztást, amennyiben a LibreOffice lineáris megoldóprogramot választjuk a beállításokban (nem ez az alapértelmezett). Ebben az esetben ezért érdemesebb lehet ezt használni.

A kép (nagyobb változata) külön ablakban is megtekinthető.A Megoldó ablaka hasonló felépítésű, mint a Solveré.81_full.jpg81. ábra: A Calc Megoldó nevű funkciójának ablaka.
Megjegyzés

Az xls mellett megtalálható a feladat Calcban készült megoldása is.

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.
Készült az "Országos koordinációval a pedagógusképzés megújításáért” című TÁMOP-4.1.2.B.2-13/1-2013-0007 pályázat keretében.

A tananyag az ELTESCORM keretrendszerrel készült