taller ampl 1
Post on 26-Oct-2015
830 Views
Preview:
TRANSCRIPT
ICS1113 Optimización
�
Taller 3:
Introducción a AMPL
1. ¿Qué es AMPL?
A Mathematical Programming Language
Es un lenguaje de programación especializado en la formulación de modelosde optimización y programación matemática.
Permite formular los modelos con notación común y conceptos matemáticos
2
Permite formular los modelos con notación común y conceptos matemáticosfamiliares.
Permite resolver distintos tipos de problemas de optimización (lineales, nolineales, enteros, cuadráticos, etc.) mediante solvers especializados para cadacaso.
Traduce la formulación del modelo matemático y los datos del problema alenguaje de máquina, que es el que utilizan los solvers y el computador.
2. ¿Cómo Opera AMPL?
Archivo deModelo
Archivo de Datos
Lenguaje
AMPL
Solver
(Minos / Cplex oNeos Server)
3
AMPL
SalidaResultados
Neos Server)
Archivo de Instrucciones
3. ¿Cómo Obtener AMPL?
AMPL Línea de Comandos:
Versión estudiantil (limitada a 200 variables y 200restricciones) disponible en:
www.ampl .com
4
AMPL Servidor Neos Online
Subir los archivos de modelo, de datos y de instrucciones al Servidor Neos en:
www-neos.mcs.anl.gov/neos/
www.ampl .com
4. ¿Cómo Resolver un Problema Usando AMPL?
Archivo deModelo
Archivo de Datos
Lenguaje
AMPL
Solver
(Minos / Cplex oNeos Server)
5
Primero debemos escribir tres archivos:
.mod
.dat
.run
AMPL
SalidaResultados
Neos Server)
Archivo de Instrucciones
Archivo deModelo.mod
Archivo de Datos
Contiene los modelos (función objetivo y restricciones) a usar.
Contiene los datos del problema.
4. ¿Cómo Resolver un Problema Usando AMPL?
6
Datos.dat
Archivo de Instrucciones
.run
Contiene los datos del problema.
Llama al modelo contenido en .mod y a los datos contenidos en .dat, y configura opciones
de entrada y salida
Todos estos archivos pueden ser escritos en cualquier editor de texto (WordPad, NotePad, etc.)
Archivo deModelo
Archivo de Datos
Lenguaje
AMPL
Solver
(Minos / Cplex oNeos Server)
4. ¿Cómo Resolver un Problema Usando AMPL?
7
Los archivos deben ser escritos en el lenguaje
apropiado
AMPL
SalidaResultados
Neos Server)
Archivo de Instrucciones
Lenguaje AMPL
IibXgas
F(X)Max
ii ∈∀≤ )( ..
4. ¿Cómo Resolver un Problema Usando AMPL?
8
Comandos de declaración de elementos del modelo en AMPL:
• set: Define y declara un conjunto de elementos del problema.
• param: Define y declara un conjunto de parámetros del problema.
• var: Define las variables del problema.
• maximize o minimize: Se utiliza para declarar la función objetivo.
• subject to: Se utiliza para declarar las restricciones del problema.
∑∑ −i
)( t
itiit XCPMax :itXCantidad de producto i producida en tiempo t
4. ¿Cómo Resolver un Problema Usando AMPL?
Lenguaje AMPL
9
Declaración de elementos del modelo en AMPL:
• set: Dos conjuntos: 1) Productos, 2) Tiempo
• param: Precio, definido sobre los conjuntos de Productos y TiempoCosto 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
Expresiones aritméticas:Existen muchas expresiones aritméticas que se pueden utilizar en el lenguaje AMPL, algunos ejemplos …
+-
or o ||and o &&
summin
=>
4. ¿Cómo Resolver un Problema Usando AMPL?
Lenguaje AMPL
10
abs(x)cos(x)sin(x)tan(x)
Funciones matemáticas:Existen muchas funciones matemáticas que se pueden utilizar en el lenguaje AMPL, algunos ejemplos …
acos(x)asin(x)atanh(x)sqrt(x)
round(x)exp(x)log(x)log10(x)
max(x,y,…)min(x,y,…)ceil(x)floor(x)
-*/
and o &¬ o !
minmaxprod
>!=<=
Reglas léxicas:
• Cada línea de instrucción debe finalizar con un punto y coma (;)
• Cada línea de comentario debe comenzar con un #, varias líneas se
4. ¿Cómo Resolver un Problema Usando AMPL?
Lenguaje AMPL
11
• Cada línea de comentario debe comenzar con un #, varias líneas sedelimitan por /* y */
• AMPL considera que las letras mayúsculas y minúsculas sondistintas (case sensitive)
• Las constantes con punto decimal se escriben como en esteejemplo: 1.23E-45
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.
4. ¿Cómo Resolver un Problema Usando AMPL?
Lenguaje AMPL
12
• 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 después de resolver.
• include: se utiliza para ejecutar un archivo de instrucciones .run
Archivo deModelo
Archivo de Datos
Lenguaje
AMPL
Solver
(Minos / Cplex oNeos Server)
4. ¿Cómo Resolver un Problema Usando AMPL?
13
Una vez escritos los archivos se resuelven
usando el Solver apropiado
AMPL
SalidaResultados
Neos Server)
Archivo de Instrucciones
Solvers de AMPL versión estudiantil:
Se puede utilizar AMPL con distintos solvers de acuerdo a las características delproblema a resolver.
• 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.
4. ¿Cómo Resolver un Problema Usando AMPL?
14
• DONLP2: Resuelve problemas de optimización no lineales.Utiliza Algoritmo Secuencial Cuadrático y Dense-Matrix Linear Algebra.
• LOQO: Resuelve problemas de optimización lineales y no lineales en variables continuas.Utiliza métodos 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 optimización.
4. ¿Cómo Resolver un Problema Usando AMPL?
Archivo deModelo
Archivo de Datos
Lenguaje
AMPL
Solver
(Minos / Cplex oNeos Server)
15
Una vez resuelto el problema se obtienen
resultados e información adicional (como la
necesaria para análisis de sensibilidad)
AMPL
SalidaResultados
Neos Server)
Archivo de Instrucciones
¿Cómo ver los resultados del problema?
• Comando display se utiliza para visualizar los resultados.
• 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:
4. ¿Cómo Resolver un Problema Usando AMPL?
16
variables y el valor de las restricciones con la siguiente sintaxis:
display nombre_función_objetivo;display nombre_variable;display nombre_restricción;
• Comando show se utiliza ver los nombres de variables, parámetros, etc.
• Se puede ver información adicional para las variables y las restricciones con la siguiente sintaxis:
display nombre_variable.sufijo_variables;
¿Cómo ver los resultados del problema?
4. ¿Cómo Resolver un Problema Usando AMPL?
17
display nombre_restricción.sufijo_restricción;
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_restricción 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
• Comando para cambiar el Solver utilizado por AMPL y sus opciones:
option solver nombre_solver; # Cambia solver utilizado por AMPL.
option nombre_solver_options ‘opción=XX’ # Cambia opciones de solver utilizado.
¿Cómo configurar las opciones?
4. ¿Cómo Resolver un Problema Usando AMPL?
18
option nombre_solver_options ‘opción=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 tamaño del problema original.
• Comando para activar/desactivar información estadística:
option show_stats 0; # desactivar (predeterminado)
option show_stats 1; # activar
4. ¿Cómo Resolver un Problema Usando AMPL?
¿Cómo configurar las opciones?
19
option show_stats 1; # activar
Nota: Activado muestra más información sobre el número 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.
1. Crear documento de texto en Notepad o Wordpad.
2. Escribir archivo de modelo y guardar con extensión .mod
Comando set define los
5. Ejemplo
20
Comando set define los conjuntos de restricciones (Restr) y variables (Var)
Comando param define los parámetros del modelo, que dependen de los conjuntos Restr y/o Var
Comando var define la variable X y, además, la especifica como no negativa
Se maximiza la función 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 una suma.
Si no se desea utilizar un archivo de datos, se pueden ingresar los datos abajo del comando data.
1. Crear documento de texto en Notepad o Wordpad.
2. Escribir archivo de datos y guardar con extensión .dat
Comando data para ingresar los datos, no es necesario en el
5. Ejemplo
21
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 parámetros a utilizar en el problema, enumerados de acuerdo a los elementos de los conjuntos del problema.
1. Crear documento de texto en Notepad o Wordpad.
2. Escribir archivo de datos y guardar con extensión .run
3. Se ejecuta en AMPL con el comando: include archivo.run
5. Ejemplo
22
1. Extraer archivo amplcml.zip a un directorio conocido.
2. Ejecutar sw.exe en windows o abrir línea de comando en DOS.
3. El archivo de modelo y el archivo de datos deben estar en directorio AMPL.
5. Ejemplo
23
Versión Windows con sw.exe Versión línea de comando DOS
Problema:
Petrolera debe determinar su producción de barriles de petróleo para los próximos 3 años.
6. Ejercicio Barriles de Petróleo
Variables de decisión:
x = Producción en millones de barriles de petróleo para el periodo i.
24
xi = Producción en millones de barriles de petróleo para el periodo i.
Datos:P1 = ( 28 – x1 ), Precio en dólares para barriles vendidos en periodo 1.P2 = ( 30 – x2), Precio en dólares para barriles vendidos en periodo 2.P3 = ( 32 – x3), Precio en dólares para barriles vendidos en periodo 3.
C1 = x1, Costo de extracción en millones de dólares para periodo 1.C2 = 1.5x2, Costo de extracción en millones de dólares para periodo 2.C2 = 2x3, Costo de extracción en millones de dólares para periodo 3.
Tasa de descuento por periodo = 4%
2
2
2
Objetivo:
Problema:
Petrolera debe determinar su producción de barriles de petróleo para los próximos 3 años.
6. Ejercicio Barriles de Petróleo
25
Restricciones:
R1: x1 + x2 + x3 ≤ 30, Cantidad máxima de extracción en 3 periodos.
R2: C1 + C2 + C3 ≤ 350, Máximo gasto en extracción para los 3 periodos.
Maximizar las utilidades totales (valor presente) para los 3 periodos:
Max P1 x1 - x1 + (P2 x2 -1.5x2 )/1.04 +(P3 x3 -2 x3)/1.042 2 2 2
{x1,x2,x3} ≥ 0
Archivo de modelo: petro.mod
Declara los parámetros del modelo
Declara las variables de decisión del modelo
6. Ejercicio Barriles de Petróleo
26
Declara la función objetivo
Declara las restricciones del modelo
Archivo de datos: petro.dat
Define los valores de los parámetros
6. Ejercicio Barriles de Petróleo
27
Archivo de instrucciones: petro.run
Resultado en AMPL
Ejecuta archivo petro.run en AMPL
6. Ejercicio Barriles de Petróleo
28
Valor óptimo función 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
Problema:
Empresa debe determinar sus cantidades óptimas de producción de dos tipos de computadores, que llamaremos modelo A y modelo B.
7. Ejercicio Empresa de Computadores
Variables de decisión:
qi = Cantidad de computadores modelo i a fabricar, con i={A, B}.
29
qi = Cantidad de computadores modelo i a fabricar, con i={A, B}.pi = Precio de venta de computadores modelo i, con i={A, B}.
Datos:
Modelo A:• Requiere de 3 horas de trabajo y de 2 chips como insumos.• Función de demanda dada por: qA = 6.000 – 8pA + 2pB.
Modelo B:• Requiere de 2 horas de trabajo y de 4 chips como insumos.• Función 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 .
Objetivo:
Problema:
Empresa debe determinar sus cantidades óptimas de producción de dos tipos de computadores, que llamaremos modelo A y modelo B.
7. Ejercicio Empresa de Computadores
30
Restricciones:
R1: qA = 6.000 – 8pA + 2pB , demanda modelo A.
R2: qB = 5.000 + pA – 5pB, demanda modelo B.
R3: 3qA + 2qB ≤ 8.000, restricción de recurso horas de trabajo.
R4: 2qA + 4qB ≤ 7.000, restricción de recurso chips.
Maximizar las utilidades totales variando el precio y la cantidad producida:
Max pA qA + pB qB
{p1,p2,q1,q2} ≥ 0
Archivo de modelo: comp.mod
Declara los parámetros del modelo
Declara los conjuntos del modelo
7. Ejercicio Empresa de Computadores
31
Declara las variables de decisión del modelo
Declara la función objetivo
Declara las restricciones del modelo
En la declaración de parámetros y variables se le
pueden dar otras
opciones, como que sea integer, binary,
>=0, default 10, etc.
Archivo de datos: comp.dat
7. Ejercicio Empresa de Computadores
32
Nótese la diferencia en el uso de : y := en la declaración de vectores y matrices
Archivo de instrucciones: comp.run
7. Ejercicio Empresa de Computadores
33
• ¿Cómo puedo fijar el valor de una variable?
• ¿Cómo puedo guardar los resultados en un archivo?
• ¿Cómo puedo medir el tiempo de resolución?
• ¿Cómo puedo cambiar interactivamente los valores?
Archivo de instrucciones: comp2.run
Ingreso de datos interactivo
7. Ejercicio Empresa de Computadores
34
Cambiar valores de datos (condiciones iniciales o parámetros)
Muestra más cifras significativas de los resultados
Muestra tiempos y memoria utilizada
Archivo de instrucciones: comp2.run
Guarda datos en .txt
Ejecuta comando MS-DOS
7. Ejercicio Empresa de Computadores
35
Fija el valor de una variableDeshace la fijación de
una variable
Nótese el uso de > para crear y guardar en un archivo .txt
nuevo y de >> para guardar en un archivo .txt ya existente
Archivo de resultados: comp.txt
Parte 1 (todas las variables libres) Parte 2 (Producción de A fijo en 0)
7. Ejercicio Empresa de Computadores
36Nótese el valor de las condiciones iniciales de las variables
Variables de decisión:
Q = Cantidad de producto j a producir en periodo t.
Problema:
Empresa debe determinar nivel de producción y de inventario en cada periodo para maximizar sus beneficios.
8. Ejercicio Empresa de Manufactura
37
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: níquel y fierro.• T periodos a planificar.• Máxima 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.
Objetivo:
Problema:
Empresa debe determinar nivel de producción y de inventario en cada periodo para maximizar sus beneficios.
8. Ejercicio Empresa de Manufactura
38
Restricciones:
• Cantidad producida total en cada periodo no debe exceder el máximo permitido• Unidades de cada materia prima almacenada al comienzo del periodo 1 no puede
exceder el inventario inicial máximo• 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 lasunidades utilizadas para producción en el periodo t
• Debe cumplir cantidades mínimas de producción requeridas por el cliente
Maximizar beneficio total estimado sobre todos los periodos,menos los costos totales de almacenaje sobre todos los periodos,más el valor de la materia prima restante después del último periodo
Archivo de modelo: manuf.mod
8. Ejercicio Empresa de Manufactura
39
Parámetro adicional que me obliga a producir
una cantidad
mínima de cada
producto en cada
periodo
Archivo de modelo: manuf.mod
8. Ejercicio Empresa de Manufactura
40
Restricción adicional de producción
mínima, puede ser por
requerimiento de los clientes
Archivos de datos: manuf1.dat y manuf2.dat
8. Ejercicio Empresa de Manufactura
41
• Puedo resolver distintos archivos de datos con el mismo archivo de modelo.
• Nótese que los archivos de datos pueden contener distintos conjuntos y n°de elementos.
Archivos de instrucciones: manuf1.run
8. Ejercicio Empresa de Manufactura
42
¿Cómo puedo ingresar valor de producción mínima requerida interactivamente?
Archivos de instrucciones: manuf1.run
Ingresando cantidades mínimas de producción interactivamente.
8. Ejercicio Empresa de Manufactura
43
Interfaz AMPLIngresando cantidades mínimas de producción interactivamente.
8. Ejercicio Empresa de Manufactura
44Resultados con y sin restricciones de cantidad mínima de producción difieren
Archivos de Resultados: manuf1.txt
8. Ejercicio Empresa de Manufactura
45
Cantidades a producir e inventarios para cadaproducto y para cada periodo de tiempo cony sin restricciones de producción mínimas
9. Modelo de Programación No Lineal
Queremos calcular el círculo de mayor área
inscrito en un polígono definido por 4 rectas.
Por lo tanto, sea:Por lo tanto, sea:
R : Radio de la circunferencia.
(x0,y0) : Centro de la circunferencia.
Problema:Encontrar el círculo de mayor área inscrito dentro de las curvas.
9. Modelo de Programación No Lineal
≤≤≤≤++++≥≥≥≥++++≤≤≤≤−−−−≤≤≤≤++++
00
0
00
00
2
15y53x-
04y
30y25x
244y3x .
R )
as
MaxP ππππ
El radio se debe encontrar al interior del polígono
9. Modelo de Programación No Lineal
ℜℜℜℜ∈∈∈∈≥≥≥≥
≥≥≥≥−−−−++++
≥≥≥≥++++
≥≥≥≥−−−−
≥≥≥≥−−−−++++
≤≤≤≤++++
00,
00
0
00
00
00
x,0R
34
155y3x-
4y
29
302y-5x
5
244y3x
15y53x-
y
R
R
R
R
La distancia desde el centro a cada una de las rectas no puede ser mayor al radio
Definición de variables
En este caso sólo utilizaremos el .mod para correr el problema en AMPL
Definición de π
9. Modelo de Programación No Lineal
Definición de π
Restricciones Lineales
Restricciones No Lineales
Opciones de resolución
Estadísticas del Solver
9. Modelo de Programación No Lineal
Minos encuentra solución
Tiempos de resolución
Resultados con display
Solución:
Área = 44.1188Radio = 3.7474Xo = 1.86285Yo = -0.25254
9. Modelo de Programación No Lineal
Links de interés
www.ampl.com
52
http://www-neos.mcs.anl.gov/
www.informatica.us.es/~calvo/ampl/amplavanzado.html
top related