Sei sulla pagina 1di 23

Programacin Lineal y Entera

Balbina Virginia Casas Mndez

Casos prcticos con AMPL

MSTER EN TCNICAS ESTADSTICAS

Curso 2010/11
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS

Caso 1: Problema del Transporte


Un modelo para el Problema del Transporte
Un modelo AMPL para el Problema del Transporte
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS

Caso 1: Problema del Transporte


Un modelo para el Problema del Transporte
Un modelo AMPL para el Problema del Transporte

Enlaces en INTERNET
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS

Caso 1: Problema del Transporte

Enlaces en INTERNET
Lenguaje AMPL
AMPL es un lenguaje de modelado algebraico para
programacin matemtica: un lenguaje capaz de expresar en
notacin algebraica problemas de optimizacin tales como los
problemas de programacin lineal y entera.
La gran potencia del lenguaje AMPL est en separar el
modelo en s por un lado y por otro los datos particulares del
problema concreto.
Los modelos AMPL involucran variables, restricciones y
objetivos, expresados con la ayuda de conjuntos y
parmetros. A todos se les llama elementos del modelo.
La llamada a AMPL normalmente causa la entrada en un
entorno de comandos, donde los comandos pueden ser
introducidos interactivamente. Las declaraciones del modelo y
las instrucciones de introduccin de datos son tambin
aceptados como comandos.
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS

Caso 1: Problema del Transporte

Enlaces en INTERNET
KNITRO es un software para resolver problemas de
optimizacin matemtica a gran escala. KNITRO est
especializado en optimizacin no lineal, pero tambin
resuelve problemas de programacin lineal, problemas de
programacin cuadrtica y sistemas de ecuaciones no lineales.
Puede resolver tambin problemas con variables que toman
valores enteros.
Los problemas de optimizacin deben ser presentados en
forma matemtica. Los problemas pueden ser escritos en C,
C++, Fortran, o Java, en cuyo caso KNITRO se llama como
una rutina software para resolver el problema.
Una a menudo sencilla aproximacin es desarrollar el
problema de optimizacin en un lenguaje de modelado
algebraico (AML) como AIMMS, AMPL, GAMS, Mathematica,
etc. KNITRO se llama como un solver" desde dentro de algn
entorno o servidor.
KNITRO ofrece tres algoritmos para resolver problemas de
optimizacin. Dos son de los denominados de punto interior y
uno es de los denominados de conjuntos activos.
Los mtodos de punto interior siguen un camino a travs del
interior de la regin factible mientras que los mtodos de
conjuntos activos tienden a permanecer en la frontera.
KNITRO proporciona ambos tipos de algoritmos para mayor
flexibilidad en la resolucin de problemas y permite pasar de
uno a otro durante el proceso de obtencin de la solucin.
Proporciona una opcin de multistart" para promover el
clculo del ptimo global y utiliza algoritmos de branch and
bound" ante la presencia de variables enteras.
KNITRO, acrnimo de Nonlinear Interior point Trust Region
Optimization" (la K" es muda) fue creado en 2001 en
Northwestern por R. Waltz, J. Nocedal, T. Plantenga y R. Byrd.
Est comercializado por Ziena Optimization, Inc.
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS

Caso 1: Problema del Transporte

Enlaces en INTERNET
Podemos acceder a este servidor libre en la direccin:

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

Los problemas de optimizacin se resuelven automticamente.


El usuario debe proporcionar una definicin del problema
(modelo, datos concretos y comandos a ejecutar en ficheros
de texto) y toda la informacin adicional requerida por el
solver" de optimizacin se determina automticamente. Los
resultados son enviados a la direccin de correo electrnico
proporcionada por el usuario.
Es necesario escoger un solver" segn el tipo de problema de
optimizacin que se quiera resolver y en caso de duda se
puede consultar el Optimization Tree" de la gua de NEOS. La
eleccin del solver" tambin depende del lenguaje utilizado
para definir el problema de optimizacin.
Introduccin

Caso 1: Problema del Transporte


Un modelo para el Problema del Transporte
Un modelo AMPL para el Problema del Transporte

Enlaces en INTERNET
Un ejemplo de problema del transporte: resolucin
informtica (Parlar, 2000; Fourer y otros, 2002)
Ejemplo. Gastos de envo de esques. Para ilustrar este
modelo vamos a considerar el problema de SunSno, una
empresa multinacional con tres factoras en (1) Jasper,
Canad, (2) Seoul, Korea, and (3) Toronto, Canad. SunSno
transporta esques a cuatro empresas propietarias de
almacenes en (1) Frankfurt, Alemania, (2) New York, USA, (3)
Pars, Francia, y (4) Yokohama, Japn.

=
Las capacidades de produccin semanales, ai , i 1; 2; 3 de
=
las m 3 factoras y las demandas semanales, bj ,
= =
j 1; 2; 3; 4 de los n 4 almacenes estn dados en la
siguiente tabla donde tambin indicamos los costes por unidad
= =
de transporte cij , i 1; 2; 3 y j 1; 2; 3; 4.
Desde# n A! Frankfurt NY Pars Yoko- SUMI-
hama NISTRO
Jasper 19 7 13 8 100
Seoul 15 21 18 6 300
Toronto 11 3 12 20 200
DEMANDA 150 100 200 150 600

Para resolver este problema como uno de programacin lineal,


definimos las variables Xij como el nmero de unidades
transportadas desde la factora i al almacn j para las factoras
= =
i 1;    ; m y los almacenes j 1;    ; n.

De esta forma, el modelo de programacin lineal del problema


del 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 Pars)
X14 + X24 + X34 = 150 (Demanda de Yokohoma)

Todo Xij  0:
Introduccin

Caso 1: Problema del Transporte


Un modelo para el Problema del Transporte
Un modelo AMPL para el Problema del Transporte

Enlaces en INTERNET
El modelo del Transporte (transp_mod.txt)
#
set ORIG; orgenes
#
set DEST; destinos
#
param capacidad fORIGg >= 0; cantidades en orgenes
#
param demanda fDESTg >= 0; cantidades en destinos
check:
sum fi in ORIGg capacidad[i] = sum fj in DESTg
demanda[j];
#
param coste fORIG,DESTg >= 0; coste unitario
#
var Trans fORIG,DESTg >= 0; unidades a ser transportadas
minimize 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 parmetros
capacidad" y demanda"
param: ORIG: capacidad :=
JASPER 100
SEOUL 300
TORONTO 200 ;
param: DEST: demanda :=
FRANKFURT 150
NEWYORK 100
PARIS 200
YOKOHAMA 150 ;
param coste:
FRANKFURT NEWYORK PARIS YOKOHAMA :=
JASPER 19 7 13 8
SEOUL 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.0
Host : vieta.mcs.anl.gov
1 linear objective;
KNITRO 6.0.0:
Objective goal: Minimize
Number of variables: 12
bounded below: 12
Number of constraints: 7
linear equalities: 7
No start point provided KNITRO computing one.
KNITRO changing algorithm from AUTO to 1.
Total program time (secs) = 0.00352
6 iterations; 7 function evaluations
Trans :=
JASPER FRANKFURT 0
JASPER NEWYORK 0
JASPER PARIS 100
JASPER YOKOHAMA 0
SEOUL FRANKFURT 150
SEOUL NEWYORK 0
SEOUL PARIS 0
SEOUL YOKOHAMA 150
TORONTO FRANKFURT 0
TORONTO NEWYORK 100
TORONTO PARIS 100
TORONTO YOKOHAMA 0;
Coste_Total = 5950
Referencias Bibliogrficas

I FOURER, R. / GAY, D. M. / KERNIGHAM, B. W. (2002):


AMPL: A modeling language for Mathematical
Programming". Ed. Duxbury Press.
I HILLIER, F. / LIEBERMAN, G. (2005): Introduction to
operations research". Ed. McGraw-Hill.
I NOCEDAL, J. / WRIGHT, S. J. (2006): Numerical
Optimization", 2nd Edition. Ed. Springer.
I PARLAR, M. (2000): Interactive operations research with
Maple. Methods and models". Ed. Birkhuser.
Enlaces en INTERNET

I Libro y software AMPL:


http://www.ampl.com
I KNITRO: An Integrated Package for Nonlinear
Optimization. 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

Potrebbero piacerti anche