Professional Documents
Culture Documents
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.
Lenguaje
Archivo de Datos Archivo de Instrucciones
AMPL
Salida Resultados
Lenguaje
Archivo de Datos Archivo de Instrucciones
AMPL
Salida Resultados
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.)
6
Lenguaje
Archivo de Datos Archivo de Instrucciones
AMPL
Salida Resultados
Max ( Pit Ci ) X it
i t
X it :
var: Variable x definida sobre los conjuntos Productos y Tiempo maximize: Estamos maximizando subject to: No hay restricciones
9
Funciones matemticas:
Existen muchas funciones matemticas que se pueden utilizar en el lenguaje AMPL, algunos ejemplos
11
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
Lenguaje
Archivo de Datos Archivo de Instrucciones
AMPL
Salida Resultados
13
Lenguaje
Archivo de Datos Archivo de Instrucciones
AMPL
Una vez resuelto el problema se obtienen resultados e informacin adicional (como la necesaria para anlisis de sensibilidad)
Salida Resultados
15
16
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
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
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; option omit_zero_rows 1;
# desactivar (predeterminado) # activar
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 una suma.
Si no se desea utilizar un archivo de datos, se pueden ingresar los datos abajo 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.
23
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. P = ( 30 x ), Precio en dlares para barriles vendidos en periodo 2. P = ( 32 x ), Precio en dlares para barriles vendidos en periodo 3.
1 2 3 1 2 3
C = x , Costo de extraccin en millones de dlares para periodo 1. 2 C = 1.5x , Costo de extraccin en millones de dlares para periodo 2. C = 2x 2 , Costo de extraccin en millones de dlares para periodo 3.
1 2 2 1 2 3
Objetivo:
Maximizar las utilidades totales (valor presente) para los 3 periodos: 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
25
26
27
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
Variables de decisin:
q = Cantidad de computadores modelo i a fabricar, con i={A, B}. p = Precio de venta de computadores modelo i, con i={A, B}.
i 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
Objetivo:
Maximizar las utilidades totales variando el precio y la cantidad producida: Max
{p1,p2,q1,q2} 0
pq +pq
A A B
Restricciones:
R : qA = 6.000 8pA + 2pB , demanda modelo A.
1
R : qB = 5.000 + pA 5pB,
2 3
demanda modelo B.
R : 3qA + 2qB 8.000, restriccin de recurso horas de trabajo. R : 2qA + 4qB 7.000, restriccin de recurso chips.
4
30
En la declaracin de parmetros y variables se le pueden dar otras opciones, como que sea integer, binary, >=0, default 10, etc.
31
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
34
Ntese el uso de > para crear y guardar en un archivo .txt nuevo y de >> para guardar en un archivo .txt ya existente
35
36
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
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
Parmetro adicional que me obliga a producir una cantidad mnima de cada producto en cada periodo
39
Restriccin adicional de produccin mnima, puede ser por requerimiento de los clientes
40
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
43
Cantidades a producir e inventarios para cada producto y para cada periodo de tiempo con y sin restricciones de produccin mnimas
45
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.
29 y0 + 4 R - 3x 0 + 5y 0 15 34 R 0, x 0, y0 R
La distancia desde el centro a cada una de las rectas no puede ser mayor al radio
Definicin de variables
Definicin de
Restricciones Lineales
Restricciones No Lineales
Opciones de resolucin
Tiempos de resolucin
Links de inters
52