Upload
juan-karlos
View
167
Download
3
Tags:
Embed Size (px)
Citation preview
Guıa basica para el uso de Xpress
22 de octubre de 2004
Xpress-MP es un software de optimizacion desarrollado por la empresa britanica Dash Optimization. Xpress-MP consiste en una familia de herramientas para el modelado y optimizacion de problemas lineales, cuadraticosy enteros, utilizando tecnicas de programacion lineal y diversos algoritmos de busqueda.
Para tener acceso a Xpress, siga la ruta: Inicio, Programas, Xpress-Mp, Xpress IVE.
Para abrir la ventana de codigo, de click en New y dele un nombre al programa, especificando donde quiereque sea guardado. Recuerde que la extension de los archivos de Xpress es .mos
Antes de trabajar en la ventana de codigo, es necesario que usted tenga la formulacion del problema quedesea implementar y ası pasarlo al lenguaje que usa Xpress.
Por eso, consideremos el siguiente ejemplo:
Una companıa fabrica televisores y grabadoras. La companıa tiene 3 almacenes y 2 tiendas de venta almenudeo. En los tres almacenes se dispone, respectivamente, de 60, 80, y 50 televisores y de 80, 50 y 50grabadoras. En las tiendas de venta al menudeo, se requieren respectivamente 100 y 90 televisores y 60 y120 grabadoras. La Tabla 1 muestra los costos de envio por unidad de los almacenes a las tiendas. Planteeun problema de optimizacion que minimice el costo total de transporte.
Almacen Tienda 1 Tienda 21 300 5002 200 3003 600 300
Tabla 1: Datos para el problema de Electrodomesticos
Indices y Conjuntos:i ∈ E= Conjunto de artıculos.j ∈ A= Conjunto de almacenes.k ∈ T = Conjunto de tiendas.
Parametros:cjk= Costo de envio por unidad del almacen j a la tienda k.hij= Inventario disponible del artıculo i en el almacen j.dik= Demanda del artıculo i en la tienda k.
Variable de decision:xijk=Cantidad de artıculo i que envıa del almacen j a la tienda k.
1
Formulacion:
En este problema, se busca minimizar los costos totales por el envıo de unidades de cada uno de los productosde los almacenes a las tiendas. Las restricciones incluyen:
1. Una restriccion de demanda que debe ser satisfecha. Para esto, lo que se envıe de todos los almacenes aesa tienda y de ese producto sea igual a lo que se demanda. Esta restriccion debe funcionar para cadatienda y para cada producto. Esta restriccion se escribe como aparece en (1)
2. Una restriccion que indique que lo que cada almacen envıe a todas las tiendas de cada producto nopuede superar el numero de artıculos disponibles de ese almacen. Por lo tanto, esta restriccion debefuncionar para cada almacen y producto. Esta restriccion se escribe como aparece en (2)
3. Restricciones de no negatividad sobre las variables de decision. Esta restriccion se escribe como apareceen (3)
Minimizar z =∑i∈E
∑j∈A
∑k∈T
cjkxijk
sujeto a∑j∈A
xijk = dik i ∈ E , k ∈ T (1)
∑k∈T
xijk ≤ hij i ∈ E , j ∈ A (2)
xijk ≥ 0 i ∈ E , j ∈ A, k ∈ T (3)
Para pasar el programa a Xpress, consideremos inicialmente la siguiente plantilla de trabajo:
Archivo plantilla.mos
model ”Nombre”uses ”mmxprs”
( ! Con e s t a i n s t r u c c i o n se van a l lamar l o s datos d e l problemadesde un arch ivo cuya ex t ens i o n es . dat ! )
parametersi npu tF i l e =
end−parameters
( ! Esta func i on permite determinar como es l a so l u c i o n d e l problemaEsta func i on fue d e s a r r o l l a d a por e l Pro fesor Andres M. Medaglia ! )
forward function getProblemStatus ( s t a tu s : integer ) : string
( ! Para dec l a ra r l o s conjuntos y parametros d e l problemausamos usamos e l s i g u i e n t e b l oque ! )
declarations
end−declarations
! El s i g u i e n t e b l oque permite ” l lamar ” l o s datos desde e l arch ivo de datos
2
in i t i a l i zat ions from i npu tF i l e
end−in i t i a l i zat ions
!En e s t a par t e declaramos l a s v a r i a b l e s de d e c i s i o ndeclarations
end−declarations
( !En e s t a par t e se e s c r i b e e l problema en Xpress , de acuerdo al o que se d e f i n i o en l a par t e de a r r i ba ! )
! Funcion o b j e t i v o
! Re s t r i c c c i one s
( ! Para determinar s i l o que se busca es maximizar o minimizarl a func i on o b j e t i v o , se e s c r i b e l a s i g u i e n t e i n s t r u c c i o n :
minimize ( ) en caso de minimizaci onmaximize ( ) en caso de maximizacion ! )
! Para generar e l r epor t e tenemos :
writeln ( ”SOLUCION” )writeln ( ”Costo : ” + g e t s o l ( ) + ” \n ” ) ;! Funcion que retorma e l s t a t u s d e l problema
writeln ( ” Status : ” , getProblemStatus ( ge tp robs ta t ) )f o ra l l ( )write ( g e t s o l ( ) , ”\n” )
! Codigo de l a func ion que retorma e l s t a t u s d e l problemafunction getProblemStatus ( s t a tu s : integer ) : string
case s t a tu s ofXPRS OPT: returned := ”Se ha l l o un optimo . ”XPRS UNF : returned := ”Sin terminar . ”XPRS INF : returned := ”No Fac t i b l e . ”XPRS UNB: returned := ”Problema no acotado . ”
else returned := ” Status desconoc ido . ”end−case
end−functionend−model
Dado el problema que se quiere solucionar, la formulacion en Xpress, es la siguiente:
Archivo Articulos.mos
model ” a r t i c u l o s ”uses ”mmxprs”
parametersi npu tF i l e=”datos . dat”
3
end−parameters
declarationsARTICULOS: set of stringALMACENES: set of realTIENDAS : set of stringInven ta r i o : array (ARTICULOS,ALMACENES) of realDemanda : array (ARTICULOS,TIENDAS) of realCosto : array (ALMACENES,TIENDAS) of realx : array (ARTICULOS,ALMACENES,TIENDAS) of mpvar
end−declarations
in i t ia l i zat ions from i npu tF i l eARTICULOSALMACENESTIENDASInventa r i oDemandaCosto
end−in i t i a l i zat ions
fora l l ( i in ARTICULOS, j in ALMACENES, k in TIENDAS)doc r e a t e ( x ( i , j , k ) )
end−do
CostoTotal := sum( i in ARTICULOS, j in ALMACENES, k in TIENDAS) Costo ( j , k )∗x ( i , j , k )
f o ra l l ( i in ARTICULOS, j in ALMACENES)sum( k in TIENDAS) x ( i , j , k) <= Inventa r i o ( i , j )
f o ra l l ( i in ARTICULOS, k in TIENDAS)sum( j in ALMACENES) x ( i , j , k ) = Demanda( i , k )
f o ra l l ( i in ARTICULOS, j in ALMACENES, k in TIENDAS)x ( i , j , k ) i s integer
minimize ( CostoTotal )
! De f in i c i o n de l a func i on S ta tu sfunction getProblemStatus ( s t a tu s : integer ) : string
case s t a tu s ofXPRS OPT: returned :=”Solved to opt ima l i ty . ”XPRS UNF : returned :=” Unf in i shed . ”XPRS INF : returned :=” I n f e a s i b l e . ”XPRS UNB: returned :=”Unbounded . ”else returned := ”Unknown Status . ”
end−caseend−function
! Report genera t ionwriteln ( ” Transportat ion problem” )
4
! w r i t e l n (” Ins tance : ” , i n pu tF i l e )writeln ( ” Status : ” , getProblemStatus ( ge tp robs ta t ) )writeln ( ”Total co s t : ” , g e t s o l ( CostoTotal ) )f o ra l l ( i in ARTICULOS, j in ALMACENES, k in TIENDAS | g e t s o l ( x ( i , j , k))<>0)
writeln ( ”x ( ” , i , ” , ” , j , ” , ” ,k , ”)=” , g e t s o l ( x ( i , j , k ) ) )
end−model
El archivo de datos es:
Archivo datos.dat
ARTICULOS : [ ” Te l e v i s o r e s ” ”Grabadoras” ]ALMACENES: [ 1 2 3 ]TIENDAS : [ ”1” ”2” ]
Inven ta r i o : [ 6 0 8 0 5 080 50 50 ]
Demanda : [ 1 0 0 9 060 120 ]
Costo : [ 3 0 0 5 0 0200 300600 300 ]
1. DEFINICION DE ALGUNOS TIPOS DE VARIABLES
Variables Binarias: Son variables de decision que toman el valor de 0 o 1. Para decir en Xpressque un conjunto de variables son binarias se escribe:
forall(i in C) x(i)is binary
Variables Enteras: Son variables de decision que toman solo valores enteros. Se definen de lasiguiente forma:
forall(i in C) x(i)is integer
Variables Libres: Son aquellas que pueden tomar valores entre menos infinito y mas infinito. Sedefinen de la siguiente forma:
forall(i in C) x(i)is free
2. CONJUNTOS
Otra ventaja que tiene Xpress es la forma como permite manipular los conjuntos, para eso consideremoslos siguientes 3 conjuntos:
A:[1 3 5 7]B:[2 4 6 8]C:[1 2 3]
5
Unir Conjuntos: La forma como Xpress permite unir los tres conjuntos es:NUMEROS:=A+B+CNUMEROS:[1 2 3 4 5 6 7 8]
Interseccion de Conjuntos: La forma como Xpress permite la interseccion de conjuntos es:INTERSECCION:=A*CINTERSECCION:[1 3]
Diferencia de Conjuntos: La forma como Xpress permite la diferencia de conjuntos es:INTERSECCION:=A-CINTERSECCION:[5 7]
3. CONDICIONALES
Consideremos el siguiente caso en una restriccion:
It = It−1 + xt −Dt t = 1, . . . , T Balance de Inventario
Xpress nos permite reescribirla de la siguiente forma
forall(t in PERIODOS)invent(t)=if (t¿1,invent(t-1),I INIC)+pnorm(t)-DEM(t)
Donde I INIC es un parametro y representa el inventario inicial. Esta instruccion con el if nos dice quesi t>1 se debe seleccionar el inventario del periodo anterior, y si t<1 debe tomar el inventario inicial.
Ademas de hacer condiciones sobre las restricciones de un problema, podemos hacerlas sobre los indicesy conjuntos que trabajemos como se ilustra a continuacion:
forall(i in -10..10, j in 0..5 | A(i) > 20)y(i,j) ≥ U(i,j)
forall(i in -10..10, j in 0..5)if A(i) > 20y(i,j)≥U(i,j)end-if
forall(i in -10..10, j in 0..5 | A(i) > 20 and B(i,j) <> 0 )y(i,j) ≤ U(i,j)
forall(i in -10..10 | A(i) > 20, j in 0..5 | B(i,j) <> 0 )y(i,j) ≤ U(i,j)
Ejemplos tomados del libro Applications of optimization with Xpress-Mp.
Ejemplo 1:
Una companıa necesita transportar 180 toneladas de productos quımicos de sus 4 depositos (D1 a D4)a 3 centros de reciclaje (C1 a C4). Cada deposito contiene respectivamente 50,40,35 y 65 toneladas, loque representa 190 toneladas en total. Existen 2 formas de transportar los quımicos, por tren y porcarretera. El deposito 1 solo puede enviar al centro 1 y 2 por carretera a un costo de $12 y $11. Eldeposito 2 solo envıa al centro 1 por tren a un costo de $12 y al centro 2 por tren a un costo de $14. Eldeposito 3 envıa al centro 2 por carretera a un costo de $9 y al centro 3 por tren y carretera a un costode $4 y $5 respectivamente. El deposito 4 puede enviar al centro 2 por tren y carretera a un costo de$11 y $14 y al centro 3 por tren o por carretera a un costo de $10 $14 respectivamente.
6
La companıa tiene un contrato con la empresa duena del los trenes, en el cual lo mınimo que se puedetransportar es 10 toneladas y lo maximo 50. Por carretera no existen limitaciones de envıo. ¿Comopuede la companıa enviar las 180 toneladas minimizando el costo de transporte?
Indices y Conjuntos: A = Conjunto de arcos de precedencia. Es decir (`, j) ∈ A si ` precede a j.
Parametros:cij = Costo de envıo de i a j.
minij = Envıo mınimo de i a j (para el tren).maxij = Envıo maximo de i a j (para el tren).
E = Cantidad que necesita ser transportada.
Variables de decision:xji = Variable que determina la cantidad de quımico que es necesario enviar de i
a j.
Formulacion:
Minimizar z =∑j∈A
cijxij (4a)
sujeto a∑
(i,j)∈A
xij =∑
i,j∈Axji (∀i 6= origen,destino) ∈ A (4b)
xij ≥ minij (i, j) ∈ A (4c)xij ≤ maxij (i, j) ∈ A (4d)∑
(origen,j)∈A
xij ≥ E (4e)
Archivo quimicos.mos
model ”E−2 Minimum cos t x”uses ”mmxprs”
declarationsNODOS: set of stringE : integerA: array (ARCS: range , 1 . . 2 ) of stringCOST: array (ARCS) of integerMINCAP,MAXCAP: array (ARCS) of integer
end−declarations
in i t ia l i zat ions from ’ datosquimicos . dat ’A E MINCAP MAXCAP COST
end−in i t i a l i zat ions
NODOS:=union ( a in ARCS) {A(a , 1 ) ,A(a , 2 )}
declarationsx : array (ARCS) of mpvar ! x on arcs
end−declarations
! Ob j e c t i v e : t o t a l t r an spo r t co s tCost := sum( a in ARCS) COST( a )∗x ( a )
7
! x ba lance : inx e qua l s outxf o ra l l (n in NODOS | n<>”Source ” and n<>”Sink” )sum( a in ARCS |A(a ,2)=n)x ( a)=sum( a in ARCS |A(a ,1)=n)x ( a )
! Min and max x c a p a c i t i e sf o ra l l ( a in ARCS | MAXCAP(a ) > 0) dox ( a) >= MINCAP(a )x ( a) <= MAXCAP(a )
end−do
! Minimum t o t a l q uan t i t y to t r an spo r tsum( a in ARCS |A(a ,1)=”Source ” )x ( a)>= E
! So l ve the problemminimize ( Cost )
! So l u t i on p r i n t i n gwriteln ( ”Total co s t : ” , g e t ob j va l )f o ra l l ( a in ARCS)write ( i f ( g e t s o l ( x ( a )) >0 ,
A(a , 1 ) + ” −> ”+ A(a , 2 ) + ” : ”+ g e t s o l ( x ( a))+”\n” , ”” ) )
end−model
El archivo de datos es:
Archivo datosquimicos.dat
! Data f i l e f o r ‘ e2minf low .mos ’
A: [ ( 1 1 ) ”Source ” ”D1”( 2 1 ) ”Source ” ”D2”( 3 1 ) ”Source ” ”D3”( 4 1 ) ”Source ” ”D4”( 5 1 ) ”D1” ”road−C1”( 6 1 ) ”D1” ”road−C2”( 7 1 ) ”D2” ” r a i l −C1”( 8 1 ) ”D2” ”road−C1”( 9 1 ) ”D3” ”road−C2”
( 1 0 1 ) ”D3” ” r a i l −C3”( 1 1 1 ) ”D3” ”road−C3”( 1 2 1 ) ”D4” ” r a i l −C2”( 1 3 1 ) ”D4” ”road−C2”( 1 4 1 ) ”D4” ” r a i l −C3”( 1 5 1 ) ”D4” ”road−C3”
( 1 6 1 ) ” r a i l −C1” ”C1”( 1 7 1 ) ”road−C1” ”C1”( 1 8 1 ) ” r a i l −C2” ”C2”( 1 9 1 ) ”road−C2” ”C2”( 2 0 1 ) ” r a i l −C3” ”C3”( 2 1 1 ) ”road−C3” ”C3”( 2 2 1 ) ”C1” ”Sink”( 2 3 1 ) ”C2” ”Sink”( 2 4 1 ) ”C3” ”Sink” ]
8
MINCAP: [ ( 7 ) 1 0 ( 1 0 ) 1 0 ( 1 2 ) 1 0 ( 1 4 ) 1 0 ]
MAXCAP: [ ( 1 ) 5 0 40 35 6 5 ( 7 ) 5 0 ( 1 0 ) 5 0 ( 1 2 ) 5 0 ( 1 4 ) 5 0 ]
COST: [ ( 5 ) 1 2 1 1 1 2 1 4 9 4 5 1 1 1 4 1 0 1 4 ]
E: 1 8 0
Ejemplo 2:
Una empresa produce un producto el cual es ensamblado en 4 estaciones. Este producto es ensambladoen 12 operaciones las cuales tienen algunas precedencias. La Tabla 2 describe la duracion para cadaproceso ası como los predecesores de dicha actividad:
Operacion Duracion Predecesor1 3 -2 6 13 7 14 6 25 4 26 8 2,37 9 38 11 69 2 4,5,810 13 8,1111 4 712 3 9,10
Tabla 2: Lista de operaciones y predecesores
Cualquiera de las 4 estaciones puede hacer cualquiera de las operaciones sujeto a las restricciones deprecedencia. Es decir, una operacion solo puede ser asignada a una estacion si las operaciones prede-cesoras fueron asignadas a esa estacion o a una anterior.
Plantee un modelo para hacer un balanceo de linea y obtener la mayor tasa de produccion posible(o, equivalentemente, minimizar el tiempo de ciclo, que es el tiempo asignado a la estacion que mastrabajo tiene).
Indices y Conjuntos:T = Conjunto de Operaciones o tareas (indexados con j y `).E = Conjunto de Estaciones (indexados con k).A = Conjunto de arcos de precedencia. Es decir (`, j) ∈ A si ` precede a j.
Parametros:Dj = Duracion de la tarea j.
Variables de decision:
9
T = Variable de decision que representa el tiempo de ciclo.xjk = Variable binaria que vale i si si la tarea j es asignada a la estacion k y 0 en
caso contrario.
Formulacion:
Minimizar z = T (5a)
sujeto a∑j∈T
Djxjk ≤ T k ∈ E (5b)
∑k∈E
xjk = 1 j ∈ T (5c)∑k∈E
kx`k ≤∑k∈E
kxjk (`, j) ∈ A (5d)
xjk ∈ {0, 1} j ∈ T , k ∈ E (5e)
Archivo balanceo.mos
model ”B−6 Assembly l i n e ba lanc ing ”uses ”mmxprs”
declarationsESTACIONES=1. .4TAREAS=1. .12DUR: array (TAREAS) of integerARC: array (RA: range , 1 . . 2 ) of integerx : array (TAREAS,ESTACIONES) of mpvarc i c l o : mpvar
end−declarations
in i t ia l i zat ions from ’ datosba lanceo . dat ’DUR ARC
end−in i t i a l i zat ions
! Una e s t a c i o n por tareaf o ra l l ( i in TAREAS) sum(m in ESTACIONES) x ( i ,m) = 1
! Secuencia de l a s t a r ea sf o ra l l ( a in RA)sum(m in ESTACIONES) m∗x (ARC(a , 1 ) ,m) <= sum(m in ESTACIONES) m∗x (ARC(a , 2 ) ,m)
! Tiempo de c i c l of o ra l l (m in ESTACIONES) sum( i in TAREAS) DUR( i )∗x ( i ,m) <= c i c l o
f o ra l l ( i in TAREAS, m in ESTACIONES) x ( i ,m) is binary
! Minimizar e l tiempo de c i c l ominimize ( c i c l o )
! So l u t i on p r i n t i n gwriteln ( ”Minimo Tiempo de c i c l o : ” , g e t ob j va l )f o ra l l (m in ESTACIONES) dowrite ( ” Estac i on ” , m, ” : ” )f o ra l l ( i in TAREAS)
10
write ( i f ( g e t s o l (sum( k in ESTACIONES) k∗x ( i , k ) ) = m, ” ”+i , ”” ) )writeln ( ” ( durac i on : ” , g e t s o l (sum( i in TAREAS) DUR( i )∗x ( i ,m) ) , ” ) ” )
end−do
end−model
El archivo de datos es:
Archivo datosbalanceo.dat
ARC: [ ( 1 1 ) 1 2( 2 1 ) 1 3( 3 1 ) 2 4( 4 1 ) 2 5( 5 1 ) 2 6( 6 1 ) 3 6( 7 1 ) 3 7( 8 1 ) 4 9( 9 1 ) 5 9
( 1 0 1 ) 6 8( 1 1 1 ) 7 11( 1 2 1 ) 8 9( 1 3 1 ) 8 10( 1 4 1 ) 9 12( 1 5 1 ) 1 0 12( 1 6 1 ) 1 1 1 0 ]
DUR: [ 3 6 7 6 4 8 9 1 1 2 1 3 4 3 ]
Ejemplo 3:
Un Modelo de Transporte
Archivo Transporte.mos
model Transport
uses ”mmxprs”
parametersi npu tF i l e=”datos2 . dat”
end−parameters
forward function getProblemStatus ( s t a tu s : integer ) : string
declarationsREGION: set of string ! Conjunto de c l i e n t e sPLANTA: set of string ! Conjunto de PlantasDemanda : array (REGION) of real ! DemandaCapacidad : array (PLANTA) of real ! Capacidad de ProduccionCosto : array (PLANTA) of real ! Costo por unidad de Produccion! Capacidad de t r an spo r t e para cada rutaCapTransporte : array (PLANTA,REGION) of real! D i s t ac i a en t re l a pa ln ta y l a reg i onDis tanc ia : array (PLANTA,REGION) of realGasol ina : real ! Costo de ga so l i na por unidad de d i s t an c i ax : array (PLANTA,REGION) of mpvar ! Envıo
11
end−declarations
in i t ia l i zat ions from i npu tF i l eDemanda[ Capacidad , Costo ] as ”PLANTDATA”[ Distanc ia , CapTransporte ] as ”ROUTES”Gasol ina
end−in i t i a l i zat ions
! Crear l a s v a r i b l e s x que e x i s t e nf o ra l l (p in PLANTA, r in REGION | e x i s t s ( CapTransporte (p , r ) ) ) c r e a t e ( x (p , r ) )
! Funcion Ob j e t i vo : minimizar e l cos toCostoTotal := sum(p in PLANTA, r in REGION | e x i s t s ( x (p , r ) ) )( Gasol ina ∗ Dis tanc ia (p , r ) + Costo (p ) ) ∗ x (p , r )
! Re s t r i c c i o n de l a capacidad de p lan taf o ra l l (p in PLANTA) sum( r in REGION) x (p , r ) <= Capacidad (p)! Re s t r i c c i o n de l a s a t i s f a c c i o n de l a demandaf o ra l l ( r in REGION) sum(p in PLANTA) x (p , r ) = Demanda( r )! Re s t r i c c i o n de l a s capacidad de l a s ru ta sf o ra l l (p in PLANTA, r in REGION | e x i s t s ( x (p , r ) ) )x (p , r ) <= CapTransporte (p , r )
minimize ( CostoTotal )fopen ( ” s o l u c i on . txt ” ,F OUTPUT)writeln ( ”Problema de Transporte ” )writeln ( ” Status : ” , getProblemStatus ( ge tp robs ta t ) )writeln ( ”Total co s t : ” , g e t s o l ( CostoTotal ) )f o ra l l (p in PLANTA, r in REGION | g e t s o l ( x (p , r ))<>0)writeln ( ”De l a p lanta ” ,p , ” a l a r eg i o n ” , r , ” se deben env ia r ” , g e t s o l ( x (p , r ) ) ,” unidades ” )f c l o s e (F OUTPUT)
function getProblemStatus ( s t a tu s : integer ) : stringcase s t a tu s of
XPRS OPT: returned := ”Se ha l l o un optimo . ”XPRS UNF : returned := ”Sin terminar . ”XPRS INF : returned := ”No Fac t i b l e . ”XPRS UNB: returned := ”Problema no acotado . ”
else returned := ” Status desconoc ido . ”end−case
end−functionend−model
El archivo de datos es:
Archivo datos2.dat
Demanda : [ ( Scot land ) 2 8 4 0 ( North ) 2 8 0 0 ( SWest ) 2 6 0 0 ( SEast ) 2 8 2 0 ( Midlands ) 2 7 5 0 ]
PLANTDATA: [ ( Corby ) [ 3 0 0 0 1 7 0 0 ]( Dees ide ) [ 2 7 0 0 1 6 0 0 ]( Glasgow ) [ 4 5 0 0 2 0 0 0 ]( Oxford ) [ 4 0 0 0 2 1 0 0 ] ]
12
ROUTES: [ ( Corby North ) [ 4 0 0 1 0 0 0 ](Corby SWest ) [ 4 0 0 1 0 0 0 ](Corby SEast ) [ 3 0 0 1 0 0 0 ](Corby Midlands ) [ 1 0 0 2 0 0 0 ]( Dees ide Scot land ) [ 5 0 0 1 0 0 0 ]( Dees ide North ) [ 2 0 0 2 0 0 0 ]( Dees ide SWest ) [ 2 0 0 1 0 0 0 ]( Dees ide SEast ) [ 2 0 0 1 0 0 0 ]( Dees ide Midlands ) [ 4 0 0 3 0 0 ]( Glasgow Scot land ) [ 2 0 0 3 0 0 0 ]( Glasgow North ) [ 4 0 0 2 0 0 0 ]( Glasgow SWest ) [ 5 0 0 1 0 0 0 ]( Glasgow SEast ) [ 9 0 0 2 0 0 ]( Oxford Scot land ) [ 8 0 0 ∗ ]( Oxford North ) [ 6 0 0 2 0 0 0 ]( Oxford SWest ) [ 3 0 0 2 0 0 0 ]( Oxford SEast ) [ 2 0 0 2 0 0 0 ]( Oxford Midlands ) [ 4 0 0 5 0 0 ] ]
Gasol ina : 1 7
Archivo solucion.txt
Problema de TransporteStatus : Se ha l l o un optimo .Total co s t : 8 . 1 0 1 8 e+007De l a p lanta Corby a l a r eg i o n SWest se debe env ia r 180 unidadesDe l a p lanta Corby a l a r eg i o n SEast se debe env ia r 820 unidadesDe l a p lanta Corby a l a r eg i o n Midlands se debe env ia r 2000 unidadesDe l a p lanta Dees ide a l a r eg i o n North se debe env ia r 1530 unidadesDe l a p lanta Dees ide a l a r eg i o n SWest se debe env ia r 920 unidadesDe l a p lanta Dees ide a l a r eg i o n Midlands se debe env ia r 250 unidadesDe l a p lanta Glasgow a l a r eg i o n Scot land se debe env ia r 2840 unidadesDe l a p lanta Glasgow a l a r eg i o n North se debe env ia r 1270 unidadesDe l a p lanta Oxford a l a r eg i o n SWest se debe env ia r 1500 unidadesDe l a p lanta Oxford a l a r eg i o n SEast se debe env ia r 2000 unidadesDe l a p lanta Oxford a l a r eg i o n Midlands se debe env ia r 500 unidades
Referencias
[1] Applications of optimization with Xpress-Mp. Christelle Gueret, Christian Prins and Marc SevauxTranslated and revised by Susanne Heipcke Dash Optimization, 2002,ISBN 0-9543503-0-8.
[2] Manuales:Xpress-MP Essentials,Xpress-Mosel User Guide.
[3] Palacios F., Medaglia A. y Riano G., Ejemplos de Formulacion de Modelos usando Xpress-MP. 4 deSeptiembre de 2003.
[4] http://www.dashoptimization.com/
13