Professional Documents
Culture Documents
ANDRES BELLO
Clase Ayudantía 1V
Herramientas complementarias para la resolución
de problemas de optimización
AMPL
Enmarcada en el curso de
Investigación de Operaciones I
Segundo Semestre de 2009
La gran potencia del lenguaje AMPL está en separar el modelo en sí por un lado y por otro
los datos particulares del problema concreto.
Componentes de AMPL
Elementos Componentes de AMPL en la construcción de un modelo
Archivo de Modelo
.mod
Lenguaje
Archivo de Datos
.dat AMPL
archivo que contiene los datos del SOLVER
problema. (Minos / CPLEX o NEOS Server)
Archivo de Instrucciones
.run
Expresiones Aritméticas: +, -, *, /, =, <, >, >=, <=, sum, min, max, prod
Funciones matemáticas: cos(x), sin(x), tan(x), acos(x), asin(x), atanh(x), exp(x), log(x), log10(x)
Cada línea de comentario debe comenzar con un #, varias líneas se delimitan por /* y */.
Comando set:
Define y declara un conjunto de elementos del problema
Comando param:
Define y declara un conjunto de parámetos del problema
Comando var:
Define las variables del problema
s.a.
Lenguaje AMPL
Características Generales del lenguaje de programación
Comando reset: resetea AMPL, limpia la memoria del programa para comenzar un nuevo
problema.
Comando model:
se utiliza para ingresar el archivo de modelo al compilador AMPL.
Comando data:
se utiliza para ingresas el archivo de datos al solver.
Comando solve:
resuelve el modelo con el solver predeterminado (MINOS).
Comando options:
se utiliza para cambiar algunas opciones de AMPL.
Comando display:
se utiliza para ver los resultados después de resolver.
s.a.
Lenguaje AMPL
Características Generales del lenguaje de programación
Primero, debe crear un documento en algún editor de texto, de sugerencia wordpad o notepad
Escriba el archivo de datos y guardelo con la extensión .mod
Lenguaje AMPL
Características Generales del lenguaje de programación
Primero, debe crear un documento en algún editor de texto, de sugerencia wordpad o notepad
Escriba el archivo de datos y guardelo con la extensión .dat
Lenguaje AMPL
Características Generales del lenguaje de programación
Para ello, se puede ver el valor de la función objetivo, el valor de las variables y
el valor de las restricciones con la siguiente sintaxis:
display nombre_función_objetivo;
display nombre_variable;
display nombre_restricción;
Se puede ver información adicional para las variables y las restricciones con la
siguientes sintaxis:
display nombre_variable.sufijo_variables;
display nombre_restricción.sufijo_restricción;
CPLEX:
Resuelve problemas lineales y no lineales cuadráticos,
continuos o enteros. Utiliza Simplex, métodos de Punto
Interior y Branch and Bound.
DONLP2:
Resuelve problemas de optimización no lineales. Utiliza
Algoritmo Secuencial Cuadrático y Dense-Matrix Linear
Algebra
Solvers de AMPL LOQO:
versión estudiantil Resuelve problemas de optimización lineales y no
lineales en variables continuas. Utiliza métodos de Punto
Interior
Minos:
Resuelve problemas lineales y no lineales en variable
continua. Utiliza Simplex Primal y Gradiente Reducido
respectivamente.
SNOPT:
Resuelve problemas lineales y no lineales en variable
continua. Utiliza Simplex Primal y método secuencial
cuadrático respectivamente.
Ejemplo 1
Problema desarrollado
Una compañía fabrica tres productos, P1, P2 y P3, que precisan para su elaboración dos
materias primas, M1 y M2. Las disponibilidades semanales de estas materias son 25 y 30
unidades, respectivamente.
El beneficio neto que proporciona cada unidad de producto, así como las unidades de
materia prima que necesita para su elaboración, vienen dados en la siguiente tabla:
P1 P2 P3
M1 1 2 2
M2 2 1 3
Beneficio
2 6 3
(u.m.)
Tabla 1 - Unidades de materia prima, producto y beneficio.
s.a.
Escritura en lenguaje AMPL
Problema desarrollado
Ahora bien, AMPL nos permite la escritura del modelo general, en donde
tenemos:
# MODELO: EJEMPLO1.MOD
# FABRICACION DE n PRODUCTOS CON m MATERIAS PRIMAS Datos para nuestro caso:
# PARAMETROS DEL MODELO
param n >=0, integer; # DATOS: EJEMPLO1.DAT
param m >=0, integer; param n := 3;
# CONJUNTOS DE INDICES param m := 2;
set PRODUCTOS := 1..n; param c:=
set MPRIMAS := 1..m; 1 2
# VARIABLES DE DECISION Y RESTRICCIONES NO NEGATIVIDAD 2 6
var x {j in PRODUCTOS} >= 0; 3 3;
# MAS PARAMETROS DEL MODELO param a : 1 2 3:=
param c {i in PRODUCTOS}; 1 1 2 2
param b {j in MPRIMAS}; 2 2 1 3;
param a {(i,j) in {MPRIMAS,PRODUCTOS}}; param b:=
# FUNCION OBJETIVO DEL MODELO 1 25
maximize z : sum {j in PRODUCTOS} c[j]*x[j]; 2 30;
# RESTRICCIONES DEL MODELO
subject to restriccion {i in MPRIMAS} : Imagen 7 - Datos problema 1
sum {j in PRODUCTOS} a[i,j]*x[j] <= b[i];
www-neos.mcs.anl.gov/neos/
Por ejemplo:
Combinatorial Optimization
Linear Network Programming
Linear Programming
Mixed Integer Linear Programming
Mixed Integer Nonlinearly
Constrained Optimization
Nonlinearly Constrained
Optimization
Unconstrained Optimization
Etc.
Solvers MOSEK
Comentarios
Mail de contacto
Comentarios
Mail de contacto
Se obtiene un número
de trabajo y una
contraseña para poder
acceder a los resultados
Imagen 15 - Obtención de datos en NEOS
Ejemplo de aplicación de NEOS
Características en la resolución en NEOS Online