Professional Documents
Culture Documents
.mod .dat
puramente
istanza
del problema
Model le
Contiene denizione di
1.
in
Rn ,
per un dato
n,
l'insieme
nel
set
set I;
2.
Parametri:
Keyword:
param
param myScalar.
Se un vettore o una matrice, necessario specicare gli insiemi di indici su cui corre:
myMatrix
I J.
Variabili di decisione.
Sintassi:
Keyword:
var
Gli indici su cui la variabile denita vengono specicati come per i parametri.
var myVar{I};
Positivit, negativit, vincoli di box (ossia lower e upper bound), integralit o binariet della variabile vengono imposti nel seguente modo:
myVar{I} >= 0; myVar{I} >= 5, <= 18; myVar{I,J} integer; myVar{I,J} binary; myVar{I,J} >= 0, integer;
Funzione obiettivo.
Keyword: Esempio:
minimize
maximize
minimize myFunction:
sum{i in I} myVar[i]*myVector[i];
NOTA: I :
degli stessi.
precedono, sia per vincoli che per funzione obiettivo, la denizione algebrica
NOTA:
esempio
basso livello,
ossia simile
alla sua denizione algebrica, utilizzare lettere MAIUSCOLE per gli insiemi di indici, per
J,
minuscole,
per esempio
Vincoli.
Keyword:
subject to
possibile ripeterla prima di ogni vincolo o solo una volta all'inizio di questi. Se vogliamo esprimere una famiglia di vincoli, ossia un insieme di vincoli in biiezione con un insieme di indici, tale insieme viene specicato tra vincolo stesso va indicato con l'usuale sintassi esso corre. Esempio:
{ }
specico indice appartenente all'insieme che verr utilizzato nella denizione algebrica del
Data le
1.
Esempio:
2.
3.
Parametri vettoriali:
param myVector1 := Gennaio 12 Febbraio 31 Marzo 51;
NOTA:
sono
indici !
Chiamare AMPL
Con MS Windows possibile: fare doppio click su digitare
cmd
cmd.exe,
ampl.exe,
in quella corrente, a cui si vuole accedere. NOTA: la seconda opzione preferibile: il prompt di comandi (cmd.exe) tiene in memoria i comandi digitati
obbliga AMPL ad utilizzare il risolutore CPLEX (di ILOG) A dierenza di MINOS, CPLEX permette di risolvere
ecientemente problemi di programmazione lineare intera (oltre che continua). Tramite il comando
display x;
display
la stringa
display x; display y;
y,
usare semplicemente
File .run
consigliabile, per comodit, creare un le
.run
(ad esempio
myProblem.run)
contenente i
comandi di chiamata sopra indicati. Sar possibile trasmettere tali comandi ad AMPL mediante
ampl myProblem.run