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: