Sei sulla pagina 1di 52

ICS1113 Optimizacin

Taller 3:

Introduccin a AMPL


1. Qu es AMPL?

A Mathematical Programming Language

Es un lenguaje de programacin especializado en la formulacin de modelos


de optimizacin y programacin matemtica.

Permite formular los modelos con notacin comn y conceptos matemticos


familiares.

Permite resolver distintos tipos de problemas de optimizacin (lineales, no


lineales, enteros, cuadrticos, etc.) mediante solvers especializados para cada
caso.

Traduce la formulacin del modelo matemtico y los datos del problema a


lenguaje de mquina, que es el que utilizan los solvers y el computador.

2
2. Cmo Opera AMPL?

Archivo de
Modelo

Lenguaje Solver
Archivo de
Datos (Minos / Cplex o
AMPL Neos Server)
Archivo de
Instrucciones

Salida
Resultados

3
3. Cmo Obtener AMPL?

AMPL Lnea de Comandos:


Versin estudiantil (limitada a 200 variables y 200
restricciones) disponible en:
www.ampl.com

AMPL Servidor Neos Online


Subir los archivos de modelo, de datos y de instrucciones al Servidor
Neos en:

www-neos.mcs.anl.gov/neos/

4
4. Cmo Resolver un Problema Usando AMPL?

Archivo de
Modelo

Lenguaje Solver
Archivo de
Datos (Minos / Cplex o
AMPL Neos Server)
Archivo de
Instrucciones

Primero debemos escribir


tres archivos: Salida
Resultados
.mod
.dat
.run
5
4. Cmo Resolver un Problema Usando AMPL?

Archivo de
Contiene los modelos (funcin objetivo y
Modelo
.mod
restricciones) a usar.

Archivo de
Datos Contiene los datos del problema.
.dat

Llama al modelo contenido en .mod y a los


Archivo de
datos contenidos en .dat, y configura opciones
Instrucciones
.run de entrada y salida

Todos estos archivos pueden ser escritos en cualquier editor de texto


(WordPad, NotePad, etc.)
6
4. Cmo Resolver un Problema Usando AMPL?

Archivo de
Modelo

Lenguaje Solver
Archivo de
Datos (Minos / Cplex o
AMPL Neos Server)
Archivo de
Instrucciones

Los archivos deben ser


escritos en el lenguaje Salida
apropiado Resultados

7
4. Cmo Resolver un Problema Usando AMPL?
Lenguaje AMPL

Max F(X)
s.a. gi ( X ) bi i I
Comandos de declaracin de elementos del modelo en AMPL:
set: Define y declara un conjunto de elementos del problema.
param: Define y declara un conjunto de parmetros del problema.
var: Define las variables del problema.
maximize o minimize: Se utiliza para declarar la funcin objetivo.
subject to: Se utiliza para declarar las restricciones del problema.

8
4. Cmo Resolver un Problema Usando AMPL?
Lenguaje AMPL

Max ( Pit Ci ) X it X it : Cantidad de producto i


producida en tiempo t
i t

Declaracin de elementos del modelo en AMPL:


set: Dos conjuntos: 1) Productos, 2) Tiempo
param: Precio, definido sobre los conjuntos de Productos y Tiempo
Costo de venta, definido sobre el conjunto Productos
var: Variable x definida sobre los conjuntos Productos y Tiempo
maximize: Estamos maximizando
subject to: No hay restricciones

9
4. Cmo Resolver un Problema Usando AMPL?
Lenguaje AMPL
Expresiones aritmticas:
Existen muchas expresiones aritmticas que se pueden utilizar en el lenguaje
AMPL, algunos ejemplos

+ = sum or o ||
- > min and o &&
* != max not o !
/ <= prod

Funciones matemticas:
Existen muchas funciones matemticas que se pueden utilizar en el lenguaje
AMPL, algunos ejemplos

abs(x) acos(x) round(x) max(x,y,)


cos(x) asin(x) exp(x) min(x,y,)
sin(x) atanh(x) log(x) ceil(x)
tan(x) sqrt(x) log10(x) floor(x)
10
4. Cmo Resolver un Problema Usando AMPL?
Lenguaje AMPL
Reglas lxicas:

Cada lnea de instruccin debe finalizar con un punto y coma (;)

Cada lnea de comentario debe comenzar con un #, varias lneas se


delimitan por /* y */

AMPL considera que las letras maysculas y minsculas son


distintas (case sensitive)

Las constantes con punto decimal se escriben como en este


ejemplo: 1.23E-45

11
4. Cmo Resolver un Problema Usando AMPL?
Lenguaje AMPL
Otros comandos:
reset: limpia la memoria de AMPL para comenzar un nuevo problema.
model: se utiliza para ingresar el archivo de modelo al compilador AMPL.
data: se utiliza para ingresar el archivo de datos al solver.
solve: resuelve el modelo (el solver predeterminado es el MINOS).
options: se utiliza para cambiar algunas opciones de AMPL.
display: se utiliza para ver los resultados despus de resolver.
include: se utiliza para ejecutar un archivo de instrucciones .run

12
4. Cmo Resolver un Problema Usando AMPL?

Archivo de
Modelo

Lenguaje Solver
Archivo de
Datos (Minos / Cplex o
AMPL Neos Server)
Archivo de
Instrucciones

Una vez escritos los


archivos se resuelven Salida
usando el Solver Resultados
apropiado

13
4. Cmo Resolver un Problema Usando AMPL?
Se puede utilizar AMPL con distintos solvers de acuerdo a las caractersticas del
problema a resolver.

Solvers de AMPL versin estudiantil:


CPLEX: Resuelve problemas lineales y no lineales cuadrticos, continuos o enteros.
Utiliza Simplex, mtodos de Punto Interior y Branch and Bound.
DONLP2: Resuelve problemas de optimizacin no lineales.
Utiliza Algoritmo Secuencial Cuadrtico y Dense-Matrix Linear Algebra.
LOQO: Resuelve problemas de optimizacin lineales y no lineales en variables continuas.
Utiliza mtodos de Punto Interior.
LPSOLVE: Resuelve problemas lineales y lineales enteros.
MINOS: Resuelve problemas lineales y no lineales en variable continua.
Utiliza Simplex Primal y Gradiente Reducido respectivamente.

Solvers del Servidor Neos:


El servidor Neos tiene una lista de solvers para resolver
todo tipo de problemas de optimizacin.

14
4. Cmo Resolver un Problema Usando AMPL?

Archivo de
Modelo

Lenguaje Solver
Archivo de
Datos (Minos / Cplex o
AMPL Neos Server)
Archivo de
Instrucciones

Una vez resuelto el


problema se obtienen
resultados e informacin Salida
adicional (como la Resultados
necesaria para anlisis de
sensibilidad)

15
4. Cmo Resolver un Problema Usando AMPL?

Cmo ver los resultados del problema?

Comando display se utiliza para visualizar los resultados.

Se puede ver el valor de la funcin objetivo, el valor de las


variables y el valor de las restricciones con la siguiente sintaxis:

display nombre_funcin_objetivo;
display nombre_variable;
display nombre_restriccin;

Comando show se utiliza ver los nombres de variables, parmetros, etc.

16
4. Cmo Resolver un Problema Usando AMPL?

Cmo ver los resultados del problema?

Se puede ver informacin adicional para las variables y las restricciones


con la siguiente sintaxis:

display nombre_variable.sufijo_variables;
display nombre_restriccin.sufijo_restriccin;

donde sufijo_variables puede ser, entre otras:

.init: valor inicial .ub: cota superior .rc: costo reducido


.val: valor actual .lb: cota inferior .slack: holgura

y el sufijo_restriccin puede ser, entre otras:

.body: valor actual .ub: cota superior .dinit: valor inicial variable dual
.slack: holgura .lb: cota inferior .dual: valor actual variable dual
17
4. Cmo Resolver un Problema Usando AMPL?

Cmo configurar las opciones?

Comando para cambiar el Solver utilizado por AMPL y sus opciones:

option solver nombre_solver; # Cambia solver utilizado por AMPL.


option nombre_solver_options opcin=XX # Cambia opciones de solver utilizado.

Comando para activar/desactivar el presolve:

option presolve 0; # desactiva presolve


option presolve 1; # activa presolve (predeterminado)

Nota: El presolve es un algoritmo que busca reducir el n de re stricciones o el n


de variables, cuando se pueda, para reducir el tamao del problema original.

18
4. Cmo Resolver un Problema Usando AMPL?

Cmo configurar las opciones?

Comando para activar/desactivar informacin estadstica:

option show_stats 0; # desactivar (predeterminado)


option show_stats 1; # activar

Nota: Activado muestra ms informacin sobre el nmero de variables y


restricciones del problema.

Comando para activar/desactivar display de variables con valor cero:

option omit_zero_rows 0; # desactivar (predeterminado)


option omit_zero_rows 1; # activar

Nota: Si est activado omite mostrar variables con valor cero.


19
5. Ejemplo
1. Crear documento de texto en Notepad o Wordpad.
2. Escribir archivo de modelo y guardar con extensin .mod

Comando set define los


conjuntos de restricciones
(Restr) y variables (Var)
Comando param define los parmetros
del modelo, que dependen de los
conjuntos Restr y/o Var
Comando var define la variable X y,
adems, la especifica como no negativa

Se maximiza la funcin objetivo llamada


Total que es una suma.

Se declaran las restricciones del modelo


llamadas Restricciones con subject to.
Hay tantas restricciones como elementos
en el conjunto Restr, donde cada una es Si no se desea utilizar un archivo de datos, se pueden ingresar los datos abajo
una suma. 20
del comando data.
5. Ejemplo
1. Crear documento de texto en Notepad o Wordpad.
2. Escribir archivo de datos y guardar con extensin .dat

Comando data para ingresar


los datos, no es necesario en el
archivo .dat

Comando set declara y


enumera con nombre los
conjuntos en archivo .dat

Comando param declara los


parmetros a utilizar en el
problema, enumerados de
acuerdo a los elementos de los
conjuntos del problema.

21
5. Ejemplo
1. Crear documento de texto en Notepad o Wordpad.
2. Escribir archivo de datos y guardar con extensin .run
3. Se ejecuta en AMPL con el comando: include archivo.run

22
5. Ejemplo

1. Extraer archivo amplcml.zip a un directorio conocido.


2. Ejecutar sw.exe en windows o abrir lnea de comando en DOS.
3. El archivo de modelo y el archivo de datos deben estar en directorio AMPL.

Versin Windows con sw.exe Versin lnea de comando DOS

23
6. Ejercicio Barriles de Petrleo
Problema:
Petrolera debe determinar su produccin de barriles de petrleo para los prximos 3
aos.

Variables de decisin:
x = Produccin en millones de barriles de petrleo para el periodo i.
i

Datos:
P = ( 28 x ), Precio en dlares para barriles vendidos en periodo 1.
1 1

P = ( 30 x ), Precio en dlares para barriles vendidos en periodo 2.


2 2

P = ( 32 x ), Precio en dlares para barriles vendidos en periodo 3.


3 3

2
C = x , Costo de extraccin en millones de dlares para periodo 1.
1 1
2
C = 1.5x , Costo de extraccin en millones de dlares para periodo 2.
2 2

C = 2x 2, Costo de extraccin en millones de dlares para periodo 3.


2 3

Tasa de descuento por periodo = 4%

24
6. Ejercicio Barriles de Petrleo
Problema:
Petrolera debe determinar su produccin de barriles de petrleo para los prximos 3
aos.

Objetivo:
Maximizar las utilidades totales (valor presente) para los 3 periodos:
2 2 2
Max P x - x + (P x -1.5x )/1.04 +( P x -2 x )/1.04 2
1 1 1 2 2 2 3 3 3

{x1,x2,x3} 0

Restricciones:
R : x + x + x 30, Cantidad mxima de extraccin en 3 periodos.
1 1 2 3

R : C + C + C 350, Mximo gasto en extraccin para los 3 periodos.


2 1 2 3

25
6. Ejercicio Barriles de Petrleo
Archivo de modelo: petro.mod

Declara los parmetros del modelo

Declara las variables de decisin del modelo

Declara la funcin objetivo

Declara las restricciones del modelo

26
6. Ejercicio Barriles de Petrleo
Archivo de datos: petro.dat

Define los valores de los parmetros

Archivo de instrucciones: petro.run

27
6. Ejercicio Barriles de Petrleo
Resultado en AMPL

Ejecuta archivo petro.run en


AMPL

Valor ptimo funcin


objetivo

Valor de las variables en el punto ptimo

Valor de los costos reducidos de las


variables

Valor y holgura de las


restricciones en punto ptimo

28
7. Ejercicio Empresa de Computadores
Problema:
Empresa debe determinar sus cantidades ptimas de produccin de dos tipos de
computadores, que llamaremos modelo A y modelo B.

Variables de decisin:
q = Cantidad de computadores modelo i a fabricar, con i={A, B}.
i

p = Precio de venta de computadores modelo i, con i={A, B}.


i

Datos:
Modelo A:
Requiere de 3 horas de trabajo y de 2 chips como insumos.
Funcin de demanda dada por: qA = 6.000 8pA + 2pB.
Modelo B:
Requiere de 2 horas de trabajo y de 4 chips como insumos.
Funcin de demanda dada por: qB = 5.000 + pA 5pB.
Se dispone de 8.000 horas de trabajo y de un inventario de 7.000 chips.
29
7. Ejercicio Empresa de Computadores
Problema:
Empresa debe determinar sus cantidades ptimas de produccin de dos tipos de
computadores, que llamaremos modelo A y modelo B.

Objetivo:
Maximizar las utilidades totales variando el precio y la cantidad producida:
Max pq +pq
A A B B

{p1,p2,q1,q2} 0

Restricciones:
R : qA = 6.000 8pA + 2pB , demanda modelo A.
1

R : qB = 5.000 + pA 5pB,
2 demanda modelo B.
R : 3qA + 2qB 8.000, restriccin de recurso horas de trabajo.
3

R : 2qA + 4qB 7.000, restriccin de recurso chips.


4

30
7. Ejercicio Empresa de Computadores
Archivo de modelo: comp.mod

Declara los conjuntos del modelo

Declara los parmetros del modelo

En la Declara las variables de decisin del modelo


declaracin de
parmetros y
variables se le
pueden dar
otras Declara la funcin objetivo
opciones,
como que sea
integer, binary,
>=0, default Declara las restricciones del modelo
10, etc.

31
7. Ejercicio Empresa de Computadores
Archivo de datos: comp.dat

Ntese la diferencia en el uso de : y := en la declaracin de vectores y matrices


32
7. Ejercicio Empresa de Computadores
Archivo de instrucciones: comp.run

Cmo puedo cambiar interactivamente los valores?


Cmo puedo fijar el valor de una variable?
Cmo puedo guardar los resultados en un archivo?
Cmo puedo medir el tiempo de resolucin? 33
7. Ejercicio Empresa de Computadores
Archivo de instrucciones: comp2.run

Ingreso de datos interactivo

Cambiar valores de datos


(condiciones iniciales o parmetros)

Muestra ms cifras significativas de los


resultados
Muestra tiempos y memoria utilizada

34
7. Ejercicio Empresa de Computadores
Archivo de instrucciones: comp2.run
Ejecuta comando MS-DOS

Guarda datos en .txt

Fija el valor de una variable


Deshace la
fijacin de
una variable

Ntese el uso de > para crear y guardar en un archivo .txt


nuevo y de >> para guardar en un archivo .txt ya existente 35
7. Ejercicio Empresa de Computadores
Archivo de resultados: comp.txt
Parte 1 (todas las variables libres) Parte 2 (Produccin de A fijo en 0)

Ntese el valor de las condiciones iniciales de las variables


36
8. Ejercicio Empresa de Manufactura

Problema:
Empresa debe determinar nivel de produccin y de inventario en cada periodo
para maximizar sus beneficios.

Variables de decisin:
Qjt = Cantidad de producto j a producir en periodo t.
Iit = Inventario de materia prima i en periodo t.

Datos:
3 productos: clavos, pernos y tornillos.
2 tipos de materia prima: nquel y fierro.
T periodos a planificar.
Mxima cantidad a producir por periodo.
Unidades de materia prima para producir por producto.
Inventarios iniciales de materia prima.
Beneficio de cada producto por periodo.
Costo de inventario y valor residual de materia prima.
37
8. Ejercicio Empresa de Manufactura

Problema:
Empresa debe determinar nivel de produccin y de inventario en cada periodo
para maximizar sus beneficios.

Objetivo:
Maximizar beneficio total estimado sobre todos los periodos,
menos los costos totales de almacenaje sobre todos los periodos,
ms el valor de la materia prima restante despus del ltimo periodo

Restricciones:
Cantidad producida total en cada periodo no debe exceder el mximo permitido
Unidades de cada materia prima almacenada al comienzo del periodo 1 no puede
exceder el inventario inicial mximo
Unidades de cada materia prima almacenada al comienzo de cualquier periodo t+1
debe ser igual a las unidades en almacenaje al comienzo del periodo t, menos las
unidades utilizadas para produccin en el periodo t
Debe cumplir cantidades mnimas de produccin requeridas por el cliente 38
8. Ejercicio Empresa de Manufactura
Archivo de modelo: manuf.mod

Parmetro
adicional
que me
obliga a
producir
una
cantidad
mnima de
cada
producto en
cada
periodo 39
8. Ejercicio Empresa de Manufactura
Archivo de modelo: manuf.mod

Restriccin
adicional de
produccin
mnima, puede
ser por
requerimiento
de los clientes

40
8. Ejercicio Empresa de Manufactura
Archivos de datos: manuf1.dat y manuf2.dat

Puedo resolver distintos archivos de datos con el mismo archivo de modelo.


Ntese que los archivos de datos pueden contener distintos conjuntos y nde elementos.
41
8. Ejercicio Empresa de Manufactura

Archivos de instrucciones: manuf1.run

Cmo puedo ingresar valor de produccin mnima requerida interactivamente?

42
8. Ejercicio Empresa de Manufactura
Archivos de instrucciones: manuf1.run
Ingresando cantidades mnimas de produccin interactivamente.

43
8. Ejercicio Empresa de Manufactura
Interfaz AMPL
Ingresando cantidades mnimas de produccin interactivamente.

44
Resultados con y sin restricciones de cantidad mnima de produccin difieren
8. Ejercicio Empresa de Manufactura
Archivos de Resultados: manuf1.txt

Cantidades a producir e inventarios para cada


producto y para cada periodo de tiempo con
y sin restricciones de produccin mnimas
45
9. Modelo de Programacin No Lineal

Queremos calcular el crculo de mayor rea


inscrito en un polgono definido por 4 rectas.

Por lo tanto, sea:


R : Radio de la circunferencia.
(x0,y0) : Centro de la circunferencia.
9. Modelo de Programacin No Lineal

Problema:
Encontrar el crculo de
mayor rea inscrito dentro
de las curvas.
9. Modelo de Programacin No Lineal
P ) Max R 2
s .a 3x 0 + 4y 0 24
5x 0 2y 0 30
El radio se debe encontrar
y0 + 4 0
al interior del polgono
- 3x 0 + 5y 0 15
3x 0 + 4y 0 24
R
5
5x 0 - 2y 0 30
R
29 La distancia desde el centro
y0 + 4 R a cada una de las rectas no
puede ser mayor al radio
- 3x 0 + 5y 0 15
R
34
R 0, x 0, y0
9. Modelo de Programacin No Lineal
En este caso slo utilizaremos el .mod para correr el problema en AMPL

Definicin de variables

Definicin de

Restricciones Lineales

Restricciones No Lineales
9. Modelo de Programacin No Lineal

Opciones de resolucin

Estadsticas del Solver

Tiempos de resolucin

Minos encuentra solucin

Resultados con display


9. Modelo de Programacin No Lineal

Solucin:

rea = 44.1188
Radio = 3.7474
Xo = 1.86285
Yo = -0.25254
Links de inters

www.ampl.com

http://www-neos.mcs.anl.gov/

www.informatica.us.es/~calvo/ampl/amplavanzado.html

52

Potrebbero piacerti anche