Taller AMPL 1
Short Description
Download Taller AMPL 1...
Description
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 modelos de optimización y programación matemática. Permite formular los modelos con notación común y conceptos matemáticos familiares. Permite resolver distintos tipos de problemas de optimización (lineales, no lineales, enteros, cuadráticos, etc.) mediante solvers especializados para cada caso. Traduce la formulación del modelo matemático y los datos del problema a lenguaje de máquina, que es el que utilizan los solvers y el computador.
2
2. ¿Cómo Opera AMPL? Archivo de Modelo Archivo de Datos
Lenguaje
Solver
AMPL
(Minos / Cplex o Neos Server)
Archivo de Instrucciones
Salida Resultados
3
3. ¿Cómo Obtener AMPL? AMPL Línea de Comandos: Versión 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. ¿Cómo Resolver un Problema Usando AMPL? Archivo de Modelo Archivo de Datos
Lenguaje
Solver
AMPL
(Minos / Cplex o Neos Server)
Archivo de Instrucciones
Primero debemos escribir tres archivos: .mod
Salida Resultados
.dat .run
5
4. ¿Cómo Resolver un Problema Usando AMPL? Archivo de Modelo .mod
Contiene los modelos (función 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. ¿Cómo Resolver un Problema Usando AMPL? Archivo de Modelo Archivo de Datos
Lenguaje
Solver
AMPL
(Minos / Cplex o Neos Server)
Archivo de Instrucciones
Los archivos deben ser escritos en el lenguaje apropiado
Salida Resultados
7
4. ¿Cómo Resolver un Problema Usando AMPL? Lenguaje AMPL
Max F(X) s.a. gi ( X ) ≤ bi ∀i ∈ I 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.
8
4. ¿Cómo Resolver un Problema Usando AMPL? Lenguaje AMPL
Max ∑∑ ( Pit − Ci ) X it i
X it :
Cantidad de producto i producida en tiempo t
t
Declaración 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. ¿Cómo Resolver un Problema Usando AMPL? Lenguaje AMPL Expresiones aritméticas: Existen muchas expresiones aritméticas que se pueden utilizar en el lenguaje AMPL, algunos ejemplos … + * /
= > != =0, default 10, etc.
Declara las variables de decisión del modelo
Declara la función objetivo
Declara las restricciones del modelo
31
7. Ejercicio Empresa de Computadores Archivo de datos: comp.dat
Nótese la diferencia en el uso de : y := en la declaración de vectores y matrices 32
7. Ejercicio Empresa de Computadores Archivo de instrucciones: comp.run
• ¿Cómo puedo cambiar interactivamente los valores? • ¿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?
33
7. Ejercicio Empresa de Computadores Archivo de instrucciones: comp2.run
Ingreso de datos interactivo
Cambiar valores de datos (condiciones iniciales o parámetros)
Muestra más 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 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
35
7. Ejercicio Empresa de Computadores Archivo de resultados: comp.txt Parte 1 (todas las variables libres)
Parte 2 (Producción de A fijo en 0)
Nótese el valor de las condiciones iniciales de las variables
36
8. Ejercicio Empresa de Manufactura Problema: Empresa debe determinar nivel de producción y de inventario en cada periodo para maximizar sus beneficios.
Variables de decisión: 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. 37
8. Ejercicio Empresa de Manufactura Problema: Empresa debe determinar nivel de producción 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, más el valor de la materia prima restante después del último periodo
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 las unidades utilizadas para producción en el periodo t Debe cumplir cantidades mínimas de producción requeridas por el cliente 38
8. Ejercicio Empresa de Manufactura Archivo de modelo: manuf.mod
Parámetro adicional que me obliga a producir una cantidad mínima de cada producto en cada periodo
39
8. Ejercicio Empresa de Manufactura Archivo de modelo: manuf.mod
Restricción adicional de producción mínima, 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. • Nótese que los archivos de datos pueden contener distintos conjuntos y n°de elementos. 41
8. Ejercicio Empresa de Manufactura Archivos de instrucciones: manuf1.run
¿Cómo puedo ingresar valor de producción mínima requerida interactivamente? 42
8. Ejercicio Empresa de Manufactura Archivos de instrucciones: manuf1.run Ingresando cantidades mínimas de producción interactivamente.
43
8. Ejercicio Empresa de Manufactura Interfaz AMPL Ingresando cantidades mínimas de producción interactivamente.
44 Resultados con y sin restricciones de cantidad mínima de producción 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 producción mínimas 45
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: R : Radio de la circunferencia. (x0,y0) : Centro de la circunferencia.
9. Modelo de Programación No Lineal
Problema: Encontrar el círculo de mayor área inscrito dentro de las curvas.
9. Modelo de Programación 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
29 y0 + 4 ≥ R - 3x 0 + 5y 0 − 15
El radio se debe encontrar al interior del polígono
≥R
34 R ≥ 0, x 0, y0 ∈ ℜ
La distancia desde el centro a cada una de las rectas no puede ser mayor al radio
9. Modelo de Programación No Lineal En este caso sólo utilizaremos el .mod para correr el problema en AMPL
Definición de variables
Definición de π
Restricciones Lineales
Restricciones No Lineales
9. Modelo de Programación No Lineal
Opciones de resolución
Estadísticas del Solver
Tiempos de resolución
Minos encuentra solución
Resultados con display
9. Modelo de Programación No Lineal
Solución: Área = 44.1188 Radio = 3.7474 Xo = 1.86285 Yo = -0.25254
Links de interés
www.ampl.com http://www-neos.mcs.anl.gov/ www.informatica.us.es/~calvo/ampl/amplavanzado.html
52
View more...
Comments