Ampl
Introducció
En aquest exemple, explorarem com enviar a Multivac un programa en Ampl per a calcular una funció objectiu senzilla en Ampl.
Codi d’exemple
Suposem que volem minimitzar la següent funció objectiu:
Crearem un arxiu per exemple anomenat test_ampl.mod per a calcular el valor de la funció objectiu per a un valor específic de x:
# minimitzacio.mod
# Defineix la variable de decisió
var x;
# Defineix la funció objectiu
minimize obj: x^2 + 3*x + 2;
# Defineix la restricció: x ha de ser igual a 5
s.t. restriccio_x: x = 5;
# Resol el problema
solve;
# Mostra els resultats
display x;
display obj;
Aquest codi defineix la funció objectiu, assigna un valor específic a x (en aquest cas, 5), i calcula el resultat de la funció objectiu per a aquest valor de x.
Crearem un arxiu amb extensió .dat, per exemple test_ampl.dat que contingui les variables d’entrada:
# minimitzacio.dat
# No es requereixen dades d'entrada per a aquest exemple
Execució
Crearem un document amb els parametres de conficuració, per exemple: test_ampl.slurm` que conté la configuració d’execució per a aquest script d’ampl.
VERSION=1.3
JOB_NAME=ampl_example
NAME_OUTPUT=out
PARTITION=all
N_TASKS=1
CPUS_PER_TASK=1
MAIL_TYPE=END,FAIL
MAIL_USER=nom.usuari@upc.edu
MEMORY=1G
BEGIN=now
TIME_LIMIT=00:05:00
LOG_OUTPUT=log
FORCED_NODES=
EXCLUDED_NODES=
ROUTE=~/
COMMANDS=(
"hostname" #Per a saber a quina màquina s'ha executat
"/opt/ampl.linux-intel64/ampl test_ampl.mod test_ampl.dat"
)
Aquest script el llançarem des de iocex usant la següent comanda:
multivac test_ampl.slurm
El resultat del nostre programa un cop finalitzada l’execució serà visible al mateix directori a on hem fet l’execució.