OptMod-2017/Gyakorlat5
A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „== 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á…”) |
|||
36. sor: | 36. sor: | ||
* feladat1.dat | * 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 | * 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; |
A lap 2017. október 10., 10:10-kori változata
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;