Está en la página 1de 31

Instalación software AMPLIDE

Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

AMPL:
Una herramienta para la resolución
de problemas de optimización
—————————————————————
Gestión de Operaciones II - ICN344

Carla Encalada - Pedro Salinas - Amanda San Martı́n - Camila Véliz

Segundo Semestre 2020

1/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

Contenidos
1 Instalación software AMPLIDE
2 Introducción a AMPL
AMPL: A Modeling Language For Mathematical Programming
SOLVERS con los que trabaja AMPL
Expresiones básicas
3 Estructura General
Tipos de archivo
Archivo .mod
Archivo .dat
Archivo .run
4 Extensiones
Instrucciones complementarias
5 Aplicaciones
Ejemplo: A linear program for the diet problem
Ejemplo: Modelo en AMPL
Más información
2/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

Instalación software AMPLIDE

Paso 1: Descarga
Ingresar a la plataforma AULA.
Ingresar a la página del curso.
Descargar la licencia según su sistema operativo en la sección AMPL.

Paso 2: Descomprimir
Mueve el archivo descargado al escritorio y
descomprı́melo en una carpeta con el mismo
nombre.

Paso 3: Ejecución
Finalmente ingresa a la carpeta amplide y
Figura: Descarga de Licencias ejecuta el archivo amplide.exe.

3/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

Instalación software AMPLIDE

Figura: Extracción de documentos

4/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

Instalación software AMPLIDE

Figura: Selección de carpeta amplide

5/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

Instalación software AMPLIDE

Figura: Ejecución del .exe

6/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

Instalación software AMPLIDE

La consola amplide se debe ver de la siguiente manera:

Figura: Consola amplide

Importante
Si se ejecuta con normalidad el archivo amplide.exe, ha concluido exitosamente
la instalación. Si no, favor seguir leyendo el documento.
7/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General
Extensiones
Aplicaciones

Instalación software AMPLIDE

Paso 4: Descarga de Software


Ingresar a la página: https://ampl.com/products/ide/
Revisar los métodos de instalación y descargar el software según sistema
operativo:
amplide.win32.zip si instalaste 32-bit AMPL en Windows.
amplide.win64.zip si instalaste 64-bit AMPL en Windows.
amplide.mac64.dmg si instalaste AMPL en MacOS.

Paso 5: Reemplazar
Mueva el archivo amplide.win64.zip a la carpeta ampl win64 en donde se
encuentran las licencias de AMPL que usted descargó anteriormente, y des-
comprima su contenido en ésta, reemplazando todos los archivos (Los nom-
bres de los archivos dependerán del sistema operativo descargado).
Vuelva al paso 3 y ejecute el archivo .exe que se encuentra en la carpeta
amplide.
8/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL AMPL: A Modeling Language For Mathematical Programming
Estructura General SOLVERS con los que trabaja AMPL
Extensiones Expresiones básicas
Aplicaciones

AMPL: A Modeling Language For Mathematical Programming

AMPL es un lenguaje de modelado algebraico especializado en la formu-


lación de modelos de optimizaci ón y programación matemática. Permite
formular modelos con notación común y conceptos matemáticos familiares.
Es posible aplicarlo a problemas de optimización lineal y no lineal, en va-
riables continuas o discretas (enteras). La resolución de estos problemas es
mediante solvers especializados para cada caso, estos traducen la informa-
ción del modelo matemático y los datos del problema a lenguaje máquina,
que es el que utilizan los computadores para obtener la solución.
Los modelos en AMPL envuelven variables, restricciones y una función obje-
tivo, expresados con la ayuda de conjuntos y parámetros. A todo lo anterior
se le llama elementos del modelo.

9/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL AMPL: A Modeling Language For Mathematical Programming
Estructura General SOLVERS con los que trabaja AMPL
Extensiones Expresiones básicas
Aplicaciones

SOLVERS con los que trabaja AMPL

Algunos de los SOLVERS ocupados por AMPL, y su aplicación, se muestran a


continuación:
CPLEX: problemas de programación lineal, y programación lineal entera
mixta.
MINOS: problemas de programación no lineal.
GUROBI: problemas de programación lineal, y programación lineal entera
mixta.
IPOPT: problemas de programación no lineal.

Nota:
La versión estudiantil soporta hasta 300 variables y 300 restricciones.

10/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL AMPL: A Modeling Language For Mathematical Programming
Estructura General SOLVERS con los que trabaja AMPL
Extensiones Expresiones básicas
Aplicaciones

Expresiones básicas

Expresión Detalle
m <= n Indica que m es menor o igual a n.
m<n Indica que m es menor estricto a n.
m >= n Indica que m es mayor o igual a n.
m>n Indica que m es mayor estricto a n.
m == n Indica que m es igual a n.
m <> n Indica que m es distinto de n.
p := n Asigna un valor n fijo al parámetro p.
default n Asigna un valor n que puede ser modificado.
∧ Potencia.
Cuadro: Expresiones básicas

11/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Tipos de archivo

Tanto el modelo como los datos del problema, se pueden escribir en un procesador
de texto (bloc de notas) o bien directamente en la consola AMPLIDE, la cual
se puede descargar desde https://ampl.com/products/ide/. Los archivos deben
ser guardados con las siguientes extensiones:
.mod: donde se aloja el modelo.
.dat: donde se escribe la data.
.run: se escriben las distintas instrucciones y condiciones bajo las cuales se
ejecutar a el modelo.

12/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Archivo .mod

El orden de los elementos dentro del código del archivo .mod, debe presentar la
siguiente estructura:
Conjuntos.
Parámetros.
Variables
Función objetivo
Restricciones

Declaración de conjuntos:
set NOMBRE_CJTO := VALOR ;

Ejemplos:
set I :={1 ,2 ,3 ,4 ,5 ,6};
set J :=1..6;
set K :={ a ,b ,c ,d ,e ,f , g };

13/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Archivo .mod

Declaración de parámetros:
param NOMBRE_PARAM { CONJUNTO } := VALOR ;

Alternativamente el valor del parámetro puede escribirse en el archivo .dat.

Declaración de variables:
var N OM BRE_VARIABLE { CONJUNTO } , ATRIBUTOS ;

Dentro de los atributos (los cuales se recomienda separarlos por comas), se


encuentran:
binary Ejemplo:
integer var X { I } , >= 0;
var Y {I , J } , binary ;
>= expr var Z {I ,J , K } , integer , >= 1 , <= 3;
<= expr
14/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Archivo .mod

Declaración de Función Objetivo:


maximize NOMBRE_FO : expression ;
minimize NOMBRE_FO : expression ;

Ejemplo: X
Max Yi,j
i∈I ,j∈J

Se escribe como:
maximize FO :
sum { i in I , j in J } Y [i , j ];

15/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Archivo .mod

Declaración de Función Objetivo:


subject to NOMBRE_RESTR { CONJUNTOS } : expression ;

Ejemplo: X
s.t. Yi,j = 1 ∀j ∈ J
i∈I

Se escribe como:
subject to R1 { j in J }:
sum { i in I } Y [i , j ] = 1;

16/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Archivo .dat

En este archivo se definen los distintos datos en la resolución del modelo, tales
como elementos de conjuntos y valores de parámetros.

Dentro de estos últimos, la forma de escribirlos depende según las dimensiones


(número de conjuntos / ı́ndices) del parámetro. Las distintas estructuras son:

Una dimensión
Dimensión 0 (escalar) Archivo .mod:
Archivo .mod: param NOMBRE { I };
param NOMBRE ;
Archivo .dat:
Archivo .dat: param NOMBRE :=
1 a1
param NOMBRE := a ; 2 a2
3 a3 ;

17/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Archivo .dat

Dos dimensiones
Tres dimensiones
Archivo .mod:
Archivo .mod:
param NOMBRE {I , J };
param NOMBRE {I ,J , K };
Archivo .dat:
Archivo .dat:
param NOMBRE :
1 2 3 4 := param NOMBRE :
1 a11 a12 a13 a14 [* ,* ,1]:
2 a21 a22 a23 a24 1 2 3 4 :=
3 a31 a32 a33 a34 ; 1 a111 a121 a131 a141
2 a211 a221 a231 a241
3 a311 a321 a331 a341 ;
[* ,* ,2]:
Para 3 o más dimensiones, es nece- 1 2 3 4 :=
sario dejar libre dos ı́ndices y fijar a142 1 a112 a122 a132
los demás, como el siguiente caso en a242 2 a212 a222 a232
a342 ; 3 a312 a322 a332
que se fija el tercer ı́ndice y quedan
libre los 2 primeros.
De esta forma cada combinación de valores que pueden tener los ı́ndices fijados
se trabaja como una matriz de 2 dimensiones.
18/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Tipos de archivo
Introducción a AMPL
Archivo .mod
Estructura General
Archivo .dat
Extensiones
Archivo .run
Aplicaciones

Archivo .run

En este archivo se definen las instrucciones bajo las cuales se ejecutará el


modelo, la estructura básica es la siguiente:
reset; (elimina variables anteriormente ejecutadas)
model NOMBREMODELO.mod; (se carga archivo del modelo)
data NOMBREDATA.dat; (se carga archivo con datos)
option solver SOLVER; (se selecciona el SOLVER usar según tipo de pro-
blema)
solve; (se ordena la resolución del problema)
display VARIABLES; (se muestran valores óptimos de las variables a elec-
ción)

19/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General Instrucciones complementarias
Extensiones
Aplicaciones

Instrucciones complementarias

Durante el proceso de programación, AMPL da la posibilidad de:


Definir los parámetros como distribuciones aleatorias de probabilidad en el
archivo.mod, por ejemplo:
param P {A , B }:= Normal ( Average , standard deviation );
param P {A , B }:= Uniform (a , b );

Realizar redondeos de los parámetros, esto se puede hacer al minuto de


definirlos o de llamarlos, por ejemplo:
param P {A , B }:= round ( Normal ( Average , standard deviation ) ,2);
param P {A , B }:= round ( Uniform (a , b ));

Modificar elementos del modelo o de los parámetros, como re-asignar los


valores de parámetros que fueron definidos con ‘default’, por ejemplo:
let P :=10;
let { a in A , b in B } P [a , b ]:=10;

20/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General Instrucciones complementarias
Extensiones
Aplicaciones

Intrucciones complementarias

Utilizando los comandos set y setof se puede definir conjuntos que cumplan
ciertas condiciones, subconjuntos y conjuntos indexados, entre otros. Se da
la opción de realizar operaciones de conjuntos, tales como intersección y
unión. Suele usarse en el archivo .mod.
set C := union { a in A , b in B }{( a , b )};
set C :={ A , B };
set C := union { a in A , b in B : P [a , b ] >=0}( a , b );
set C { a in A }:= setof { b in B : P [a , b ] < >0} b ;

Como se ve en el ejemplo, el uso de : nos permite imponer ciertas condiciones


al minuto de definir o utilizar conjuntos, y se debe leer como “tal que”.
subject to C1 { a in A }: sum { b in B : P [a , b ]!=5} X [a , b ] >= C [ a ];
subject to C2 {( i , j ) in T }:
sum { a in A , b in B : M [a ,b ,i , j ]==1} Y [i , j ] <= X [i , j ];
subject to C3 { a in A : K [ a ] >=0}: X [ a ]= L [ a ] ;

Manual de AMPL:
https://ampl.com/resources/the-ampl-book/chapter-downloads/
21/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General Instrucciones complementarias
Extensiones
Aplicaciones

Instrucciones complementarias

Se puede pedir que se muestre por pantalla ciertas expresiones, información o


mensajes mediante el uso de los comandos display, print o printf. También, esta
información puede ser exportada a archivos .txt o .csv.
display X;
display X,Y;
display total solve time;
print “LavariableX [1, 2]tomaelvalor :”, X[1,2] ;
print “Lademandatotalesde %,2funidades”, suma in A Dem[a] ;
printf “\n” ;
printf “Analisis\n” > \salida.csv ” ;
printf “Vidautil, %,2f \n”, VU >> \salida.csv ” ;

22/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General Instrucciones complementarias
Extensiones
Aplicaciones

Instrucciones complementarias

Ciclos
for { a in A , b in B }{
let P [a , b ] := a + b ;};
-------------------------
for { a in A }{
for { b in B } {
let P [a , b ] := a + b
;}}; Es posible programar ciclos en
------------------------- AMPL con los comandos for, repeat
for { a in A , b in B }{
print " La variable X es " , while y repeat until, habitualmente
X [a , b ] ;}; se utilizan en el archivo (.run).
-------------------------
param flag default 10 ;
repeat while flag == 1 {
let flag := flag 1 ;};
-------------------------
param cont default 1 ;
repeat until cont == 10 {
let cont := cont + 1;};

23/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL
Estructura General Instrucciones complementarias
Extensiones
Aplicaciones

Instrucciones complementarias

if-then-else
if sum { a in A , b in B } P [a , b ] >= 100
then { print " El p a r m e t r o es
mayor o igual a100 " ;};
------------------------- Se puede utilizar comandos
if cont ==1 then {
let cont2 := cont2 + 1 ;};
condicionales, como el if,
------------------------- then y else.
for { a in A , b in B }{
if X [a , b ] >= Y [a , b ] then {
let P [a , b ]:=5 ; {
else {
let P [a , b ]:=10 ;};

24/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL Ejemplo: A linear program for the diet problem
Estructura General Ejemplo: Modelo en AMPL
Extensiones Más información
Aplicaciones

Ejemplo: A linear program for the diet problem

Considere el problema de elegir alimentos preparados para cumplir con ciertos


requisitos nutricionales. Suponga que las cenas precocinadas de los siguientes
tipos están disponibles por los siguientes precios por paquete. Además, estas
cenas proporcionan los siguientes porcentajes, por paquete, del mı́nimo diario.
A C B1 B2
BEEF beef $3.19 BEEF 60 % 20 % 10 % 15 %
CHK chicken 2.59 CHK 8 0 20 20
FISH fish 2.29 FISH 8 10 15 10
HAM ham 2.89 HAM 40 40 35 10
MCH macaroni 1.89 MCH 15 35 15 15
MTL meat loaf 1.99 MTL 70 30 15 15
SPG spaghetti 1.99 SPG 25 50 25 15
TUR turkey 2.49 TUR 60 20 15 10
Cuadro: Precios de cenas precocinadas. Cuadro: Porcentaje del requerimiento mı́nimo de cada vitamina.

25/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL Ejemplo: A linear program for the diet problem
Estructura General Ejemplo: Modelo en AMPL
Extensiones Más información
Aplicaciones

Ejemplo: A linear program for the diet problem

El problema es encontrar la combinación más barata de paquetes que cumplan


con la semana requisitos, es decir, al menos el 700 % del requerimiento diario de
cada nutriente. Por lo que el problema se puede definir de la siguiente manera:
Conjuntos:
I: Conjunto de cenas precocinadas.
J: Conjunto de vitaminas.
Parámetros:
Ci : Costo de la cena precocinada i.
Vij : Porcentaje de la vitamina j que posee la cena precocinada i.
Variables:
Xi : Unidades compradas de la cena precocinada i.

Función Objetivo: X
minimizar Ci Xi
i∈I

26/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL Ejemplo: A linear program for the diet problem
Estructura General Ejemplo: Modelo en AMPL
Extensiones Más información
Aplicaciones

Ejemplo: A linear program for the diet problem

Restricciones:
R1: X
Xi Vij ≥ 700 ∀j ∈ J
i∈I
R2:
Xi ≥ 0 ∀i ∈ I

27/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL Ejemplo: A linear program for the diet problem
Estructura General Ejemplo: Modelo en AMPL
Extensiones Más información
Aplicaciones

Ejemplo: Modelo en AMPL

Figura: Datos del modelo de dieta (diet.dat).


28/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL Ejemplo: A linear program for the diet problem
Estructura General Ejemplo: Modelo en AMPL
Extensiones Más información
Aplicaciones

Ejemplo: Modelo en AMPL

Figura: Modelo de dieta en AMPL (diet.mod).

Figura: Archivo run (diet.run).

29/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL Ejemplo: A linear program for the diet problem
Estructura General Ejemplo: Modelo en AMPL
Extensiones Más información
Aplicaciones

Más información

Es posible encontrar una serie de ejemplos y material en la página de ampl:


Página Principal: https://ampl.com/
Ejemplos: https://ampl.com/resources/the-ampl-book/example-files/
Manual: https://ampl.com/resources/the-ampl-book/chapter-downloads/
También se encuentra disponible la página de Neos Server para poder utilizar
los solver de manera gratuita y tener acceso a tutoriales sobre optimización.

30/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020
Instalación software AMPLIDE
Introducción a AMPL Ejemplo: A linear program for the diet problem
Estructura General Ejemplo: Modelo en AMPL
Extensiones Más información
Aplicaciones

AMPL:
Una herramienta para la resolución
de problemas de optimización
—————————————————————
Gestión de Operaciones II - ICN344

Carla Encalada - Pedro Salinas - Amanda San Martı́n - Camila Véliz

Segundo Semestre 2020

31/31
AMPL: Una herramienta para la resolución de problemas de optimización ICN344 - Segundo Semestre 2020

También podría gustarte