Sunteți pe pagina 1din 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. Cmo Opera AMPL?


Archivo de Modelo

Lenguaje
Archivo de Datos Archivo de Instrucciones

Solver (Minos / Cplex o Neos Server)

AMPL

Salida Resultados

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. Cmo Resolver un Problema Usando AMPL?


Archivo de Modelo

Lenguaje
Archivo de Datos Archivo de Instrucciones

Solver (Minos / Cplex o Neos Server)

AMPL

Primero debemos escribir tres archivos: .mod .dat .run

Salida Resultados

4. Cmo Resolver un Problema Usando AMPL?


Archivo de Modelo .mod

Contiene los modelos (funcin objetivo y restricciones) a usar.

Archivo de Datos .dat

Contiene los datos del problema.

Archivo de Instrucciones .run

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

4. Cmo Resolver un Problema Usando AMPL?


Archivo de Modelo

Lenguaje
Archivo de Datos Archivo de Instrucciones

Solver (Minos / Cplex o Neos Server)

AMPL

Los archivos deben ser escritos en el lenguaje apropiado

Salida Resultados

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.

4. Cmo Resolver un Problema Usando AMPL?


Lenguaje AMPL

Max ( Pit Ci ) X it
i t

X it :

Cantidad de producto i producida en tiempo 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 min max prod or o || and o && not o !

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

abs(x) cos(x) sin(x) tan(x)

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)


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
Archivo de Datos Archivo de Instrucciones

Solver (Minos / Cplex o Neos Server)

AMPL

Una vez escritos los archivos se resuelven usando el Solver apropiado

Salida Resultados

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: DONLP2: LOQO: LPSOLVE: MINOS:
Resuelve problemas lineales y no lineales cuadrticos, continuos o enteros. Utiliza Simplex, mtodos de Punto Interior y Branch and Bound. Resuelve problemas de optimizacin no lineales. Utiliza Algoritmo Secuencial Cuadrtico y Dense-Matrix Linear Algebra. Resuelve problemas de optimizacin lineales y no lineales en variables continuas. Utiliza mtodos de Punto Interior. Resuelve problemas lineales y lineales enteros. 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
Archivo de Datos Archivo de Instrucciones

Solver (Minos / Cplex o Neos Server)

AMPL

Una vez resuelto el problema se obtienen resultados e informacin adicional (como la necesaria para anlisis de sensibilidad)

Salida Resultados

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 .val: valor actual .ub: cota superior .rc: costo reducido .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; option nombre_solver_options opcin=XX
# Cambia solver utilizado por AMPL. # Cambia opciones de solver utilizado.

Comando para activar/desactivar el presolve: option presolve 0; option presolve 1;


# desactiva presolve # 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; option show_stats 1;
# desactivar (predeterminado) # 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; option omit_zero_rows 1;
# desactivar (predeterminado) # 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 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.

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. 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

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: 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}. 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

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
{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

7. Ejercicio Empresa de Computadores


Archivo de modelo: comp.mod
Declara los conjuntos del modelo

Declara los parmetros del modelo

En la declaracin de parmetros y variables se le pueden dar otras opciones, como que sea integer, binary, >=0, default 10, etc.

Declara las variables de decisin del modelo

Declara la funcin objetivo

Declara las restricciones del modelo

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 y0 + 4 0 - 3x 0 + 5y 0 15 3x 0 + 4y 0 24 5 5x 0 - 2y 0 30 R R

El radio se debe encontrar al interior del polgono

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

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

S-ar putea să vă placă și