Office Guru

Számok halmazából a kívánt célösszeghez szükséges számok meghatározása

2016. október 20. - Office Guru

Aki már jó ideje gyűri a táblázatkezelők családjának legismertebb tagját, az Excelt, az biztosan találkozott már azzal az igénnyel vagy kéréssel, hogy egy meghatározott számsorozatból egy bizonyos végösszeget kiadó számokat kellett megadnia.

Az ilyen problémáknak több megoldási módszere is létezik, ezek közül a leginkább alkalmazott az valamilyen custom VBA-s megoldás, de az Excel újabb verzióinak már van erre beépített megoldása is a Solver személyében.

A Solver Add-Int egyszerűen, az Excel Options alatt tudjuk bekapcsolni:

solver1.jpgÉrtelemszerűen az Options alatt az Add-Ins almenüre kattintunk.

solver2.jpgMajd a felugró ablakban, ha a Solver még nem aktív, akkor a Manage Excel Add-Ins menü melletti Go gombra kattintva megjelenő Add-Ins ablakban tudjuk bekapcsolni. Ha ez megvan, akkor a Data fülön megjelenő új, Analysis szekcióban meg is találjuk a gombját:

solver4.jpgHa ezzel megvagyunk, már nézhetjük is a konkrét feladványt:

solver5.jpgElég egyértelmű mi a célunk, meghatározni azon számokat az oszlopban, amelyek a célszámunkat fogják pontosan visszaadni. A példa alapvetően egyszerű és nagyon gyorsan ki is található, mely számok adják ki az 1033-as végösszeget, de most nem ez a lényeg.

A Solveres megoldáshoz most két segédoszlopot fogok létrehozni, az egyiket Szorzó néven, a másikat Számok2 néven.

solver6.jpgUtóbbi elég egyszerű tartalommal bír, a Számok oszlopban található számok és a Szorzó oszlopban található szorzók szorzata szerepel itt. A Szorzó oszlopban egyesek szerepelnek, a végeredmény meghatározásához van erre szükségünk, a Solver ugyanis ezen szorzókat fogja egyesnek meghagyni vagy átírni nullára, attól függően, hogy melyik számra lesz szükség a célszám meghatározásához.

A végeredmény eléréséhez még két segédcella kell majd nekünk:

solver7.jpgA Teljes összeg értelemszerűen a Számok2 oszlop teljes szummáját mutatja, a Különbség pedig a Célszám és a Teljes összeg különbsége - a Solvert fogjuk megkérni arra, hogy a Különbséget vigye le pontosan nullára, azaz határozza meg azon számok halmazát, amelyek kiadják célszámunkat.

Most szépen kattintsunk a Solver funkcióra a Data fülön.

solver8.jpgEzt az ablakot kell kitöltenünk ahhoz, hogy a Solver megadja nekünk a megoldást.

Set Objective mezőbe írjuk, hogy melyik cellának akarunk célértéket megadni, jelen esetben ez most a Különbség cellánk, azaz G6 lesz.

Mit szeretnénk ettől a cellától? Hogy nulla legyen.

solver9.jpgHogy hozza ki a Solver ezt az eredményt? Értelemszerűen a "változó" celláink módosításával, azaz a Szorzó oszlopot adjuk be a By Changing Variable Cells mezőbe:

solver10.jpgEzután már csak ezen "változó" celláink értékeinek kell határokat szabnunk, tehát a Solvert terelgetnünk kell, hogy csak 0 vagy 1 értékeket használjon a Szorzó oszlopban.

Ezt három feltétellel fogjuk elérni, egyrészt definiáljuk, hogy a Szorzó oszlopban vagy 0 vagy annál nagyobb érték kell, hogy szerepeljen, azt is meghatározzuk, hogy csak 1 vagy annál kisebb érték lehet ezen cellákban és végül kikötjük, hogy csak egész szám kerülhet ide - azaz konkrétan 0 és 1 maradt a Solver számára. Ez így néz ki a Solver ablakában:

solver11.jpgEzután pedig már csak a Solve gombra kell kattintanunk és láss csodát, meg is van, hogy mely számokra van szükségünk az 1033-hoz:

solver12.jpgÉs ehhez nem volt szükségünk VBA-tudásra, szimplán csak bekapcsoltuk a Solver Add-Int, ami ráadásul ennél sokkal-sokkal többre képes. De erről majd később.

Simplex LP megoldási metódus egy lineáris programozási feladat szimplex módszerrel történő megoldását jelenti, ezt használjuk akkor, ha elég egyértelmű a célunk és változóink.

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr1911825497

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása