Está en la página 1de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Notas sobre el programa AMPL


(Notas 1: dirigidas a los alumnos de 1)

ndice Parte I: Introduccin. 1. Introduccin. 2. Elementos fundamentales. 3. Instalacin de AMPL. 4. Algunos detalles sobre el editor PFE32. Parte II. Modelos explcitos de Programacin Lineal resueltos interactivamente. 1. Introduccin. 2. Creacin de un fichero .mod. 3. Resolucin interactiva del modelo anterior usando la ventana scroll windows. 4. Sufijos. 5. Otros comandos. 6. Cotas y atributos integer y binary para las variables. 7. Un primer ejemplo. El problema del transporte. 8. Ejercicios con print y printf. Parte III: Resolucin automtica o por lotes (batch). Creacin de un fichero .run. 1. Introduccin. 2. Una forma prctica de proceder. 3. Ejemplo resumen. 4. Un pequeo truco. 5. Problemas tipo mochila. Parte IV: Ejercicios con algunos comandos. 1. Ejercicios con print y printf. 2. Otros ejercicios (con display, print y printf). 3. Ejercicios con los comandos for, print, printf e if. Parte V: Instrucciones para obtener diferentes valores de la solucin ptima. Parte VI: Instrucciones para anlisis de sensibilidad. Parte VII: Resumen de los comandos usados

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 1 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Parte I: Introduccin
1. Introduccin.
AMPL es un programa dirigido a la construccin y resolucin de modelos de optimizacin, fundamentalmente modelos de Programacin Lineal, Programacin Entera y Programacin No Lineal. A diferencia de otros programas parecidos, como LINGO, una vez definido un modelo en AMPL puede especificarse el cmo queremos resolverlo. Esto permite el diseo de muchas alternativas de ejecucin del programa. Existe una variedad muy grande de solvers (resolvedores) que pueden ser llamados desde AMPL (algunos son de dominio pblico), lo que da una gran potencia y versatilidad al programa. Para una descripcin completa de los elementos bsicos del lenguaje la mejor fuente es el libro de R. FOURER, D. M. GAY & B. W. KERNIGHAN AMPL, A Modeling Language For Mathematical Programming, The Scientific Press (1993, 2002). Para acceder a los servicios de AMPL consultar la direccin http://www.ampl.com. Para una descripcin de las mejoras que se han ido incorporando desde la versin inicial, de los solvers disponibles y de otras muchas cuestiones, consultar en http://netlib.bell-labs.com/cm/cs/what/ampl/index.html

2. Elementos fundamentales.
Para poder trabajar con el programa AMPL necesitamos lo siguiente: A. El modelizador AMPL, que corresponde al programa ampl.exe. Este programa puede ser ejecutado en modo comando en una ventana de MS.DOS, o, ms cmodamente, desde una ventana windows por medio del programa sw.exe (scroll windows). B. Los solvers (resolvedores), que son los programas que tienen implementados los algoritmos para resolver diferentes tipos de problemas. La edicin Standard AMPL Student for Windows puede ejecutarse con diferentes solvers, entre los que destacan CPLEX (para problemas de PL, PE y Redes) y MINOS (para problemas de PL y PNL), y tiene la limitacin de hasta 300 variables y 300 restricciones. Adems de la versin Standar AMPL Student for Windows, hay otras versiones como AMPL Plus para WINDOWS, o versiones para Linux, Unix y otras plataformas. La forma ms habitual de trabajar con AMPL es editar primero tres ficheros, con extensiones .mod, .dat y .run conteniendo, respectivamente, las componentes del modelo, los datos en el formato AMPL, y los comandos que se van a ejecutar. Estos ficheros de texto pueden editarse y mantenerse con cualquier editor de textos (p.e. con el bloc de notas). Aunque muchos de los comandos que aparecen en el archivo .run podran ser ejecutados manualmente en la ventana de comandos, es ms conveniente agruparlos en un archivo o script con extensin .run, donde adems pueden ir todo tipo de opciones, bucles repetitivos, etc. Adems de las tres ventanas de texto, es preciso tener activo el programa AMPL o bien en una ventana de MS.DOS o, ms cmodamente, en una ventana del programa scroll windows (sw.exe). De una manera informal: (i) con un fichero .mod indicamos al ordenador qu modelo queremos resolver. (ii) con un fichero .dat le sealamos los datos de ese modelo. (iii) con un fichero .run le decimos con que solvers queremos resolver el problema y que informacin queremos que nos muestre.

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 2 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

3. Instalacin de AMPL.
Ampl ofrece una versin gratuita para estudiantes. Para instalar los ficheros necesarios pueden seguirse los siguientes pasos. Instalacin de ficheros del entorno de AMPL.

1. Usando internet, entrar en www.ampl.com. 2. Pinchar en la palabra download, situada en la columna izquierda, en el prrafo que sigue a
TryAMPL!

3. Pinchar en CPLEX8.0 Student Edition. 4. Pinchar en For Windows user new to AMPL. 5. Pinchar en amplcml.zip y guardar en la carpeta elegida el fichero .zip correspondiente
(amplcml). 6. Descomprimir el fichero amplcml.zip antes bajado. Puede hacerse pulsando el botn derecho y eligiendo la opcin extract to folder: C:\.......... 7. Entre otros, al final debemos tener los siguientes ficheros: ampl.exe (procesador de AMPL). cplex.exe (solver de PL, PE y redes). cplex80.dll (librera de cplex). minos.exe (solver de PL y PNL). sw.exe (ventana en la que puede ejecutar el procesador de AMPL de una forma cmoda). Instalacin del editor PFE32.exe. Este editor resulta cmodo para trabajar en la elaboracin de los ficheros .mod, .dat y .run. Puede bajarse buscando con google las palabras pfe32.zip. Entre las bsquedas encontradas elegir una adecuada. Por ejemplo, pinchando en factsheet.

4. Algunos detalles sobre el editor PFE32.


A. La carpeta de trabajo del editor PFE32 (es decir, donde busca y guarda directamente los
ficheros, si no le indicamos otra cosa) puede cambiarse seleccionando File + Change Directory. B. El nmero de espacios en blanco que se obtienen al pulsar la tecla del tabulador puede cambiarse si, dentro del editor PFE32, usamos Options + Current modes + Test formatting. C. A la hora de imprimir un fichero elaborado con PFE32, el tamao y el tipo de letra pueden cambiarse seleccionando File + Page Setup + Select font. Por el mismo procedimiento pueden seleccionarse otras opciones. D. Si queremos que las lneas de un programa sean numeradas podemos pulsar en la pestaa

1AB de la parte superior de la pantalla o, alternativamente, seleccionando Options + Current 2CL


Modes + Test Formatting + Display + Select line numbers.

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 3 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Parte II: Modelos explcitos de Programacin Lineal resueltos interactivamente


1. Introduccin.
En esta seccin vamos a ver cmo se introducen en AMPL ejemplos sencillos de Programacin Lineal de pocas variables, y cmo se ejecutan archivos de comandos para las sesiones iniciales de AMPL. En estos ejemplos los datos del problema (coeficientes de la funcin objetivo, de las restricciones y del lado derecho), estn incluidos en el modelo, por lo que no es preciso crear un archivo con los datos, es decir, no necesitamos el archivo .dat. Les llamaremos modelos explcitos. Posteriormente veremos que, como es importante lograr la separacin completa entre el modelo y los datos, es mejor usar tambin este tipo de archivo. De momento, tampoco usaremos el archivo .run. Algunas ideas generales son: Los comentarios pueden ser aadidos desde el smbolo # hasta el final de la lnea. Al final de cada declaracin o comando debe ir un punto y coma (;). Las maysculas son distintas de las minsculas. Se pueden insertar espacios en blanco o lneas en blanco sin afectar a la ejecucin del programa. La multiplicacin debe indicarse con el signo *; por ejemplo, debe escribirse 3*x1 + 4*x2, y no 3x1 + 4x2. A continuacin, seguiremos los siguientes pasos: Creacin de un fichero .mod para indicar el modelo a resolver. Resolucin del problema con AMPL desde la ventana de sw.exe.

1. 2.

2. Creacin de un fichero .mod.


Tendremos en cuenta las siguientes consideraciones: Cada variable debe ser declarada explcitamente (con la declaracin var); adems, si corresponde, podemos indicar su no negatividad, sus cotas, si es entera o si es binaria. La funcin objetivo debe ser declarada explcitamente despus de maximize o minimize, y es conveniente darle un nombre seguido de dos puntos. En cada problema el nombre de la funcin objetivo puede ser distinto, aunque, por comodidad, podemos poner siempre el mismo nombre (por ejemplo, objetivo). Cada restriccin debe ser declarada explcitamente (con la declaracin subject to o, ms brevemente, poniendo s.t.), y es conveniente darle un nombre seguido de dos puntos. La declaracin de variables debe preceder a la declaracin de restricciones y de la funcin objetivo. Entre las declaraciones de restricciones y de la funcin objetivo no hay precedencias obligatorias. Resumen Declaracin Var Minimize Maximize Subject to Uso Declaracin de variable Declaracin de objetivo (minimizar) Declaracin de objetivo (maximizar) Declaracin de restriccin

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 4 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Ejemplo de un modelo de PL explcito con dos variables (ejemplo1.mod): Supongamos que queremos resolver el problema:
maximizar la funcion 3x1+4x2 sujeta a: x1+x2 <= 2 4x1+6x2 <= 9 x1>=0, x2>=0

Con el editor pfe32.exe creamos el fichero ejemplo1.mod siguiente:


# Ejemplo 1 # fichero ejemplo1.mod # declaracion de las variables y de su no negatividad var x1>=0; var x2>=0; # declaracion de la funcion objetivo # la palabra objetivo que sigue es elegible a gusto personal maximize objetivo: 3*x1+4*x2; # declaracion de las restricciones subject to res1: x1+x2 <= 2; # la palabra res1 es elegible a gusto personal subject to res2: 4*x1+6*x2 <= 9; # la palabra res2 es elegible a gusto personal

3. Resolucin interactiva del problema anterior usando el procesador de comandos en la ventana sw.exe.
Una sesin inicial para resolver el problema anterior puede conseguirse aplicando en modo secuencial e interactivo los siguientes comandos: el comando reset elimina de la memoria de AMPL el modelo y los datos de trabajos anteriores. el comando model enva al procesador de comandos el modelo que queremos resolver. Para ello es necesario sealar la ubicacin exacta del correspondiente fichero .mod, mediante la indicacin del camino o path. con el comando option solver se elige el solver con el que queremos resolver el modelo actual; dependiendo del tipo de problema a resolver elegiremos el ms adecuado. De momento, elegiremos la opcin option solver cplex. el comando solve llama al solver elegido y aplica el algoritmo correspondiente, obtenindose una solucin ptima. Una vez obtenida una solucin ptima, podemos elegir que resultados queremos que el ordenador nos muestre. Para ello tenemos los comandos display, print y printf. Ellos nos permiten mostrar en pantalla datos, resultados o mensajes de texto preestablecidos. Por ejemplo, despus de resolver el Ejemplo1, podemos escribir en la ventana sw.exe:
display x1, x2; y despus de leer en pantalla los valores de x1 y x2 podemos escribir: display objetivo; con lo que obtendremos en pantalla el valor de la funcin objetivo.

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 5 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

4. Sufijos.
Con el comando display se pueden tambin visualizar otros valores asociados a las variables y a las restricciones, mediante el uso de sufijos. Los sufijos ms habituales para las variables son: Sufijo .val .lb .ub .rc Interpretacin Valor actual Cota inferior Cota superior Coste reducido

Los sufijos ms habituales para las restricciones son: Sufijo .body .dual .slack Interpretacin Valor actual de la expresin Variable dual o precio sombra Holgura

5. Otros comandos.
Aunque ms adelante se ver un uso ms intensivo del lenguaje de comandos, hay otros comandos sencillos que valen para ver el modelo en su conjunto como son: el comando show que muestra las componentes del modelo. el comando expand que expande el modelo (salvo, en su caso, la no negatividad).

6. Cotas y atributos integer y binary para las variables.


En un fichero .mod, cuando se declara una variable, si no se especifica otra cosa, la variable es continua y no tiene restriccin de signo. Las restricciones de signo, las cotas sencillas y las restricciones de ser entera o binaria se pueden especificar en la misma declaracin. Ejemplo: Para poner x1 0, 0 x2 8, x3 0 y entera, x4 binaria se escribe, respectivamente:
var x1 >=0 ; var x2 >=0, <=8 ; var x3 >=0, integer ; var x1 binary ;

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 6 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Parte III: Resolucin automatizada o por lotes (batch). Creacin de un fichero .run.
1. Introduccin.
Una alternativa cmoda al modo interactivo usado anteriormente se tiene con un fichero .run. De este modo se indica de una sola vez al procesador de comandos de AMPL todo lo que queremos que haga. Es lo que se denomina ejecucin por lotes. Para ello ponemos tales comandos conjuntamente en un fichero .run que ejecutamos en el procesador de comandos por medio de la instruccin include. Ejemplo para resolver el problema de Problema Lineal expuesto en la Parte II, secciones 2 y 3 (modelo explcito), suponiendo que hemos guardado el fichero .mod en D:\user\ejemplo1.mod, se procede como sigue:. Con el editor PFE32 creamos el fichero ejemplo1.run siguiente:
# Ejemplo 1 # fichero ejemplo1.run # include c:\users\ejemplo1.run; reset; model c:\users\ejemplo1.mod; option solver cplex; solve; display x1, x2; display objetivo; # comando para eliminar de memoria el modelo y los datos anteriores # comando para enviar al procesador de AMPL el modelo actual # comando para elegir solver (en este caso elegimos el cplex) # comando para que el solver elegido actue # comando para mostrar en pantalla los valores optimos de las variables # comando para mostrar en pantalla el valor optimo de la funcion objetivo

Nota: Es claro que podemos suprimir todas las lneas de comentarios que siguen al signo #.

2. Una forma prctica de proceder.


Una forma sencilla de ejecutar los comandos introducidos en el fichero de comandos ejemplo1.run es la siguiente. primero se guarda el archivo con extensin .run, es decir, en nuestro caso el fichero ejemplo1.run. a continuacin se activa el fichero sw.exe y en el se escribe ampl para que aparezca el prompt de AMPL (ampl:). despus con el comando include se incluyen en bloque los comandos escritos en ejemplo1.run; para ello se escribe include seguido del camino o path que localiza este fichero en el ordenador. Por ejemplo, si hemos guardado el fichero ejemplo1.run en la carpeta users de la unidad D, ponemos: include D:\users\ejemplo1.run; se pulsa la tecla Return.

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 7 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

3. Ejemplo resumen.
Un fichero . run con todo lo explicado hasta aqu es el siguiente:
# fichero .run para un problema de Programacion Lineal # inclusion de sufijos y otros comandos # fichero ejemplo1b.run reset; # intruccion para eliminar de la memoria el modelo y los datos anteriores model D:\users\ejemplo1.mod; # intruccion para enviar al procesador el modelo actual option solver cplex; # intruccion para elegir solver (en este caso elegimos el cplex) solve; # intruccion para que el solver elegido actue # instrucion para mostrar en pantalla un rotulo fijo elegido por nosotros printf "\n mostrar en pantalla los valores optimos de las variables indicadas \"; # instruccion para mostrar en pantalla los valores optimos de las variables indicadas con sufijos display x1, x1.val, x1.lb, x1.ub, x1.rc; display x2, x2.val, x2.lb, x2.ub, x2.rc; # instruccion para mostrar en pantalla las restricciones indicadas con sufijos display res1, res1.body, res1.dual, res1.slack; display res2, res2.body, res2.dual, res2.slack; # instruccion para mostrar en pantalla el valor optimo de la funcion objetivo display objetivo; # instruccion para mostrar en pantalla las componentes del modelo actual (variables, restricciones y objetivo) show; # instruccion para mostrar en pantalla el modelo actual expandido (sin las restriciones de no negatividad ni cotas) expand;

Nota: Es claro que podemos suprimir todas las lneas de comentarios que siguen al signo #.

4. Un pequeo truco.
Puede resultar cmodo incluir en el fichero .run el camino o path donde localizar el propio fichero .run para luego copiarlo fcilmente en la ventana del programa scroll windows (sw.exe). Para ello, preferentemente en una de las primeras lneas del programa, podemos aadir:
# instruccin a copiar en el programa AMPL (dentro de la ventana sw.exe) # para facilitar a AMPL la ubicacin de este fichero # include D:\users\ejemplo1b.run;

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 8 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

5. Ejercicios sobre problemas mochila.


A. Mochila continua sin cotas. Se trata de resolver el problema: maximizar z=16*x1+22*x2+12*x3+8*x4 ; sujeta a: 5*x1+7*x2+4*x3+3*x4 <= 14 x1>=0, x2>=0, x3>=0, x4>=0
# fichero mochila1.mod # declaracion de las variables y de su no negatividad var x1>=0; var x2>=0; var x3>=0; var x4>=0; # declaracion de las restricciones subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal # declaracion de la funcion objetivo # la palabra objetivo es elegible a gusto personal maximize objetivo: 16*x1+22*x2+12*x3+8*x4 ;

B. Mochila continua con cotas. Se trata de resolver el problema: maximizar z=16*x1+22*x2+12*x3+8*x4 ; sujeta a: 5*x1+7*x2+4*x3+3*x4 <= 14 0<=x1<=1, 0<=x2<=1, 0<=x3<=1, 0<=x4<=1.
# fichero mochila2.mod # declaracion de las variables, de su no negatividad y de sus cotas var x1>=0,<=1; var x2>=0,<=1; var x3>=0,<=1; var x4>=0,<=1; # declaracion de las restricciones subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal # declaracion de la funcion objetivo # la palabra objetivo es elegible a gusto personal maximize objetivo: 16*x1+22*x2+12*x3+8*x4 ;

C. Mochila entera sin cotas. Se trata de resolver el problema: maximizar z=16*x1+22*x2+12*x3+8*x4 ; sujeta a: 5*x1+7*x2+4*x3+3*x4 <= 14 x1>=0, x2>=0, x3>=0, x4>=0 y enteras.
# fichero mochila3.mod # declaracion de las variables, de su no negatividad y de ser enteras var x1>=0,integer; var x2>=0,integer; var x3>=0,integer; var x4>=0,integer; # declaracion de las restricciones subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal # declaracion de la funcion objetivo # la palabra objetivo es elegible a gusto personal maximize objetivo: 16*x1+22*x2+12*x3+8*x4 ;

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 9 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

D. Mochila entera con cotas. Se trata de resolver el problema: maximizar z=16*x1+22*x2+12*x3+8*x4 ; sujeta a: 5*x1+7*x2+4*x3+3*x4 <= 14 0<=x1<=3, 0<=x2<=2, 0<=x3<=2, 0<0x4<=3 y enteras.
# fichero mochila3.mod # declaracion de las variables, de su no negatividad y de ser enteras var x1>=0,<=3,integer; var x2>=0, <=2,integer; var x3>=0, <=2,integer; var x4>=0, <=3,integer; # declaracion de las restricciones subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal # declaracion de la funcion objetivo # la palabra objetivo es elegible a gusto personal maximize objetivo: 16*x1+22*x2+12*x3+8*x4 ;

D. Mochila binaria. Se trata de resolver el problema: maximizar z=16*x1+22*x2+12*x3+8*x4 ; sujeta a: 5*x1+7*x2+4*x3+3*x4 <= 14 x1, x2, x3, x4 binarias.
# fichero mochila4.mod # declaracion de las variables y de ser binarias var x1 binary; var x2 binary; var x3 binary; var x4 binary; # declaracion de las restricciones subject to res1: 5*x1 + 7*x2 + 4*x3 + 3*x4 <= 14; # la palabra res1 es elegible a gusto personal # declaracion de la funcion objetivo # la palabra objetivo es elegible a gusto personal maximize objetivo: 16*x1+22*x2+12*x3+8*x4 ;

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 10 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Parte IV: Ejercicios con algunos comandos


1. Ejercicios con print y printf.
Se trata de entender la diferencia entre los comandos print y printf , as como entre los atributos \n (salto de lnea) y \t (salto de tabulador).
Separaremos con una lnea de guiones los distintos ensayos: sw: ampl ampl: print "pedro"; pedro -------------------------------ampl: printf "pedro"; pedroampl: -------------------------------ampl: printf "pedro perez mateos"; pedro perez mateosampl; -------------------------------ampl: printf "pedro perez mateos\n"; pedro perez mateos ampl; -------------------------------ampl: printf "\npedro perez mateos\n"; pedro perez mateos -------------------------------ampl: printf "\npedro \nperez \nmateos\n"; pedro perez mateos -------------------------------ampl: printf "\npedro \nperez \nmateos\n\n"; pedro perez mateos -------------------------------ampl: printf "\npedro \tperez \tmateos\n\n"; pedro perez mateos -------------------------------ampl: printf "\n\tpedro \n\tperez \n\tmateos\n\n"; pedro perez mateos -------------------------------ampl: printf "\n\tpedro \n\t\tperez \n\t\t\tmateos\n\n"; pedro perez mateos --------------------------------

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 11 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

2. Otros ejercicios (con display, print y printf).


Nmero de decimales de un valor.

---------------------------------------------------------------------------------------------

ampl: param a:=3.141592; ampl: display a; a = 3.14159


---------------------------------------------------------------------------------------------

ampl: print a; 3.141592


---------------------------------------------------------------------------------------------

ampl: printf "el valor de a es = %.2f\n", a; el valor de a es = 3.14


---------------------------------------------------------------------------------------------

printf "el valor de a es = %.2f\n", a; el valor de a es = 3.14


---------------------------------------------------------------------------------------------

ampl: printf "el valor de a es = %.4f\n", a; el valor de a es = 3.1415


---------------------------------------------------------------------------------------------

ampl: printf "el valor de a es = %.0f\n", a; el valor de a es = 3


---------------------------------------------------------------------------------------------

ampl: printf "el valor de a es = %.d\n", a; el valor de a es = 3

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 12 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

3. Ejercicios con las instrucciones for, print, printf e if.


ampl: for{i in 1..10} {print "pepe"}; pepe pepe pepe pepe pepe pepe pepe pepe pepe pepe
---------------------------------------------------------------------------------------------

ampl: for{i in 1..10} {printf "pepe"}; pepepepepepepepepepepepepepepepepepepepeampl:


---------------------------------------------------------------------------------------------

ampl: for{i in 1..10} {printf "pepe\t pepe pepe pepe pepe pepe

pepe

pepe pepe

pepe pepe

pepe pepe

pepe pepe

ampl:

---------------------------------------------------------------------------------------------

ampl: for{i in 1..10} {printf "pepe\t"} printf"\n"; pepe pepe pepe pepe pepe pepe ampl:

---------------------------------------------------------------------------------------------

ampl: for{i in 1..10} {if i<5 then print "pepe"}; pepe pepe pepe pepe
---------------------------------------------------------------------------------------------

ampl: for{i in 1..10} {if i<5 then {print "pepe"} else {print "luis"}}; pepe pepe pepe pepe luis luis luis luis luis luis ampl:

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 13 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Parte V: Instrucciones para obtener diferentes valores de la solucin ptima


# Comandos para obtener diferentes valores de la solucin ptima SIN SABER los nombres de las variables # ver libro de AMPL (ed 2003) pgina 249. # _nvars es el nmero de variables del modelo # _varsname[j] es el nombre de la variable [j] del modelo # _var[j].lb es la cota inferior de la variable [j] del modelo # _var[j] es el valor actual de la variable [j] del modelo # _var[j].ub es la cota superior de la variable [j] del modelo # _var[j].rc es el coste reducido de la variable [j] del modelo printf\n Valor de las variables\n\n; display {j in 1.._nvars} (_varname[j], _var[j].lb, _var[j], _var[j].ub,_var[j].rc);

# Comandos para obtener diferentes valores de la solucin ptima SIN SABER los nombres de las restricciones # ver libro de AMPL (ed 2003) pgina 249 # _ncons es el nmero de restricciones del modelo # _conname[i] es el nombre de la restriccin [i] del modelo # _con[i].body es el valor actual de la restriccin [i] del modelo # _con[i].dual es el valor de la variable dual de la restriccin [i] del modelo # _con[i].slack es el valor de la holgura de la restriccin [i] del modelo printf\n Valor de las rectricciones\n\n; display {i in 1.._ncons} (_conname[i],_con[i].body, _con[i].dual, _con[i].slack);

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 14 de 15

Departamento de Estadstica e Investigacin Operativa

Universidad de Valladolid

Parte VI: Instrucciones para anlisis de sensibilidad


# Comandos para efectuar el anlisis de sensibilidad o tabla de rangos # ver libro de AMPL (ed 2003) pgina # debe estar activado: option solver cplex; # debe estar activado: option cplex_options sensitibity; printf\n Rango de los coeficientes de la funcin objetivo \n\n; display {j in 1.._nvars} (_varname[j], _var[j].down, _var[j].current, _var[j].up); printf\n Rango de los coeficientes del lado derecho\n\n; display {i in 1.._ncons} (_conname[i],_con[i].dual, _con[i].down, _con[i].current, _con[i].up);

Parte VII: Resumen de los comandos usados


Comandos data display expand include model print printf reset reset data show solve Accin Lee el contenido de un archivo .dat. Muestra en pantalla los valores de conjuntos, parmetros y variables. Expande el modelo actual. Incluye ficheros externos. Lee el contenido de un archivo .mod. Muestra en pantalla textos sin formato. Muestra en pantalla textos con formato. Elimina de la memoria de AMPL el modelo y los datos anteriores. Elimina de la memoria de AMPL los datos anteriores. Muestra las componentes del modelo actual. Resuelve el modelo actual.

Fichero AMPL-notas-nivel-1-(2006-10-10).doc

Pgina 15 de 15

También podría gustarte