Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Curso 2010/11
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS
Enlaces en INTERNET
Introduccin
El lenguaje AMPL
Optimizadores: KNITRO
El servidor NEOS
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
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
Enlaces en INTERNET
Podemos acceder a este servidor libre en la direccin:
http://www-neos.mcs.anl.gov/
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
Todo Xij 0:
Introduccin
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)