OptMod-2017/Gyakorlat5
A MathWikiből
Ampl
- Modell leíró nyelv
- Rengeteg megoldó használható vele (köztük ingyenesek és fizetõsek)
- Van IDE változata, de mi parancssorból fogjuk használni
- Elterjedt, komolyabb modellezésre használják, mint az Excelt
Példa
Készítsünk három fájlt a következõ névvel és tartalommal:
- feladat1.mod
# Gyartasi feladat modell file # Termékek halmaza, adatfájltól függ, e felett indexelünk set Termek; # Beolvasandó paraméterek param DbPerOra {j in Termek}; param Oraszam; param nyereseg {j in Termek}; param MaxDb {j in Termek}; # X: mennyit gyartsunk a j. termekbol var X {j in Termek} >= 0; # var X {j in Termek} integer >= 0; # van "binary" kulcsszo is # Célfüggvény maximize Profit: sum {j in Termek} nyereseg[j] * X[j]; # Korlátok subject to Ido: sum {j in Termek} ( 1 / DbPerOra[j] ) * X[j] <= Oraszam; subject to Hatarok {j in Termek}: X[j] <= MaxDb[j];
- feladat1.dat
# Gyartasi feladat adat file set Termek := kalap kabat kapanyel katicabogar; param: DbPerOra MaxDb nyereseg := kalap 200 6000 25 kabat 140 4000 30 kapanyel 250 5500 21 katicabogar 180 3000 31; param Oraszam := 40;
- feladat1.run
# model fájl beolvasása model "feladat 1.mod"; # adat fájl beolvasása data "feladat 1.dat"; # megoldó kiválasztása option solver gurobi; # ide jöhetnének különböző beállítások, például # option iterlim 10000; solve; # eredmény kiiratása, persze van lehetőség fájlba történő kiiratásra is display X.lb, X, X.ub, X.rc; printf "\nDe ha bekapcsoljuk az egeszertekuseget:\n\n\n"; redeclare var X {j in Termek} integer >= 0; solve; display X.lb, X, X.ub;
Ez egy gyártási feladat, próbáljuk megérteni a három fájl tartalmát.
Feladatok
Oldjuk meg a korábban Excelben megoldott feladatok közül valamennyit ampl-ben: