Casos prácticos con AMPL - Departamento de...

Post on 26-Sep-2018

219 views 0 download

Transcript of Casos prácticos con AMPL - Departamento de...

Programación Lineal y Entera

Balbina Virginia Casas Méndez

Casos prácticos con AMPL

MÁSTER EN TÉCNICAS ESTADÍSTICAS

Curso 2010/11

IntroducciónEl lenguaje AMPLOptimizadores: KNITROEl servidor NEOS

Caso 1: Problema del TransporteUn modelo para el Problema del TransporteUn modelo AMPL para el Problema del Transporte

Enlaces en INTERNET

IntroducciónEl lenguaje AMPLOptimizadores: KNITROEl servidor NEOS

Caso 1: Problema del TransporteUn modelo para el Problema del TransporteUn modelo AMPL para el Problema del Transporte

Enlaces en INTERNET

IntroducciónEl lenguaje AMPLOptimizadores: KNITROEl servidor NEOS

Caso 1: Problema del TransporteUn modelo para el Problema del TransporteUn modelo AMPL para el Problema del Transporte

Enlaces en INTERNET

IntroducciónEl lenguaje AMPLOptimizadores: KNITROEl servidor NEOS

Caso 1: Problema del Transporte

Enlaces en INTERNET

Lenguaje AMPLAMPL es un lenguaje de modelado algebraico paraprogramación matemática: un lenguaje capaz de expresar ennotación algebraica problemas de optimización tales como losproblemas de programación lineal y entera.

La gran potencia del lenguaje AMPL está en separar elmodelo en sí por un lado y por otro los datos particulares delproblema concreto.

Los modelos AMPL involucran variables, restricciones yobjetivos, expresados con la ayuda de conjuntos yparámetros. A todos se les llama elementos del modelo.

La llamada a AMPL normalmente causa la entrada en unentorno de comandos, donde los comandos pueden serintroducidos interactivamente. Las declaraciones del modelo ylas instrucciones de introducción de datos son tambiénaceptados como comandos.

IntroducciónEl lenguaje AMPLOptimizadores: KNITROEl servidor NEOS

Caso 1: Problema del Transporte

Enlaces en INTERNET

KNITRO es un software para resolver problemas deoptimización matemática a gran escala. KNITRO estáespecializado en optimización no lineal, pero tambiénresuelve problemas de programación lineal, problemas deprogramación cuadrática y sistemas de ecuaciones no lineales.Puede resolver también problemas con variables que tomanvalores enteros.

Los problemas de optimización deben ser presentados enforma matemática. Los problemas pueden ser escritos en C,C++, Fortran, o Java, en cuyo caso KNITRO se llama comouna rutina software para resolver el problema.

Una a menudo sencilla aproximación es desarrollar elproblema de optimización en un lenguaje de modeladoalgebraico (AML) como AIMMS, AMPL, GAMS, Mathematica,etc. KNITRO se llama como un “solver" desde dentro de algúnentorno o servidor.

KNITRO ofrece tres algoritmos para resolver problemas deoptimización. Dos son de los denominados de punto interior yuno es de los denominados de conjuntos activos.

Los métodos de punto interior siguen un camino a través delinterior de la región factible mientras que los métodos deconjuntos activos tienden a permanecer en la frontera.KNITRO proporciona ambos tipos de algoritmos para mayorflexibilidad en la resolución de problemas y permite pasar deuno a otro durante el proceso de obtención de la solución.

Proporciona una opción de “multistart" para promover elcálculo del óptimo global y utiliza algoritmos de “branch andbound" ante la presencia de variables enteras.

KNITRO, acrónimo de “Nonlinear Interior point Trust RegionOptimization" (la “K" es muda) fue creado en 2001 enNorthwestern por R. Waltz, J. Nocedal, T. Plantenga y R. Byrd.Está comercializado por Ziena Optimization, Inc.

IntroducciónEl lenguaje AMPLOptimizadores: KNITROEl servidor NEOS

Caso 1: Problema del Transporte

Enlaces en INTERNET

Podemos acceder a este servidor libre en la dirección:

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

Los problemas de optimización se resuelven automáticamente.El usuario debe proporcionar una definición del problema(modelo, datos concretos y comandos a ejecutar en ficherosde texto) y toda la información adicional requerida por el“solver" de optimización se determina automáticamente. Losresultados son enviados a la dirección de correo electrónicoproporcionada por el usuario.

Es necesario escoger un “solver" según el tipo de problema deoptimización que se quiera resolver y en caso de duda sepuede consultar el “Optimization Tree" de la guía de NEOS. Laelección del “solver" también depende del lenguaje utilizadopara definir el problema de optimización.

Introducción

Caso 1: Problema del TransporteUn modelo para el Problema del TransporteUn modelo AMPL para el Problema del Transporte

Enlaces en INTERNET

Un ejemplo de problema del transporte: resolucióninformática (Parlar, 2000; Fourer y otros, 2002)

Ejemplo. Gastos de envío de esquíes. Para ilustrar estemodelo vamos a considerar el problema de SunSno, unaempresa multinacional con tres factorías en (1) Jasper,Canadá, (2) Seoul, Korea, and (3) Toronto, Canadá. SunSnotransporta esquíes a cuatro empresas propietarias dealmacenes en (1) Frankfurt, Alemania, (2) New York, USA, (3)París, Francia, y (4) Yokohama, Japón.

Las capacidades de producción semanales, ai , i = 1; 2; 3 delas m = 3 factorías y las demandas semanales, bj ,j = 1; 2; 3; 4 de los n = 4 almacenes están dados en lasiguiente tabla donde también indicamos los costes por unidadde transporte cij , i = 1; 2; 3 y j = 1; 2; 3; 4.

Desde# n A! Frankfurt NY París Yoko- SUMI-hama NISTRO

Jasper 19 7 13 8 100Seoul 15 21 18 6 300Toronto 11 3 12 20 200DEMANDA 150 100 200 150 600

Para resolver este problema como uno de programación lineal,definimos las variables Xij como el número de unidadestransportadas desde la factoría i al almacén j para las factoríasi = 1; � � � ;m y los almacenes j = 1; � � � ;n.

De esta forma, el modelo de programación lineal del problemadel transporte toma la siguiente forma:

Min Z = 19X11 + 7X12 + 13X13 + 8X14 + 15X21 + 21X22 +

18X23 + 6X24 + 11X31 + 3X32 + 12X33 + 20X34

sujeto a

X11 + X12 + X13 + X14 = 100 (Capacidad de Jasper)X21 + X22 + X23 + X24 = 300 (Capacidad de Seoul)X31 + X32 + X33 + X34 = 200 (Capacidad de Toronto)X11 + X21 + X31 = 150 (Demanda de Frankfurt)X12 + X22 + X32 = 100 (Demanda de New York)X13 + X23 + X33 = 200 (Demanda de París)X14 + X24 + X34 = 150 (Demanda de Yokohoma)

Todo Xij � 0:

Introducción

Caso 1: Problema del TransporteUn modelo para el Problema del TransporteUn modelo AMPL para el Problema del Transporte

Enlaces en INTERNET

El modelo del Transporte (transp_mod.txt)

set ORIG; # orígenesset DEST; # destinosparam capacidad fORIGg >= 0; # cantidades en orígenesparam demanda fDESTg >= 0; # cantidades en destinoscheck:

sum fi in ORIGg capacidad[i] = sum fj in DESTgdemanda[j];

param coste fORIG,DESTg >= 0; # coste unitariovar Trans fORIG,DESTg >= 0; # unidades a ser transportadasminimize Coste_Total:

sum fi in ORIG, j in DESTg coste[i,j] * Trans[i,j];subject to Capacidad fi in ORIGg:

sum fj in DESTg Trans[i,j] = capacidad[i];subject to Demanda fj in DESTg:

sum fi in ORIGg Trans[i,j] = demanda[j];

Datos para el modelo del Transporte (transp_dat.txt)# definimos los conjuntos “ORIG" y “DEST" y los parámetros“capacidad" y “demanda"param: ORIG: capacidad :=

JASPER 100SEOUL 300TORONTO 200 ;

param: DEST: demanda :=FRANKFURT 150NEWYORK 100PARIS 200YOKOHAMA 150 ;

param coste:FRANKFURT NEWYORK PARIS YOKOHAMA :=

JASPER 19 7 13 8SEOUL 15 21 18 6

TORONTO 11 3 12 20 ;

Comandos para el modelo del Transporte(transp_run.txt)

#Ejemplo del problema del transporte

solve;

display Trans, Coste_Total;

Resultados para el modelo del Transporte

NEOS Server Version 5.0Host : vieta.mcs.anl.gov

1 linear objective;

KNITRO 6.0.0:Objective goal: MinimizeNumber of variables: 12bounded below: 12Number of constraints: 7linear equalities: 7No start point provided – KNITRO computing one.KNITRO changing algorithm from AUTO to 1.

Total program time (secs) = 0.003526 iterations; 7 function evaluations

Trans :=

JASPER FRANKFURT 0JASPER NEWYORK 0JASPER PARIS 100JASPER YOKOHAMA 0SEOUL FRANKFURT 150SEOUL NEWYORK 0SEOUL PARIS 0SEOUL YOKOHAMA 150TORONTO FRANKFURT 0TORONTO NEWYORK 100TORONTO PARIS 100TORONTO YOKOHAMA 0;

Coste_Total = 5950

Referencias Bibliográficas

I FOURER, R. / GAY, D. M. / KERNIGHAM, B. W. (2002):“AMPL: A modeling language for MathematicalProgramming". Ed. Duxbury Press.

I HILLIER, F. / LIEBERMAN, G. (2005): “Introduction tooperations research". Ed. McGraw-Hill.

I NOCEDAL, J. / WRIGHT, S. J. (2006): “NumericalOptimization", 2nd Edition. Ed. Springer.

I PARLAR, M. (2000): “Interactive operations research withMaple. Methods and models". Ed. Birkhäuser.

Enlaces en INTERNET

I Libro y software AMPL:http://www.ampl.com

I KNITRO: An Integrated Package for NonlinearOptimization. R.H. Byrd, J. Nocedal, R.A. Waltz (2006)(PDF):http://www.ziena.com/papers/integratedpackage.pdf

I Plataforma NEOS:http://neos.mcs.anl.gov/neos/solvers/index.html

I Apuntes:http://destio.us.es/calvo/ampl2a.pdf

I Grupo de trabajo en Google grupos:http://groups.google.com/group/ampl