Fundamentos de Programación Entera

Anuncio
Modelado Algebraico Computacional
Contenido
1
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
1/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Lenguajes de modelado algebraico
Basados en notación algebraica; incorporan conjuntos y relaciones
entre estos para modelar datos. Algunos ejemplos:
1
GAMS General Algebraic Modeling System
2
Xpress Modelado matemático y optimización
3
AMPL A Modeling Language for Mathematical Programming
4
MathProg Lenguaje de GNU Linear Programming Kit (GLPK)
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
2/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Ejemplo problema de transporte
“Cuantas unidades de mercadería deben producirse en un conjunto
de plantas para ser transportadas hacia una conjunto de mercados,
sin superar la capacidad de cada plantas y satisfaciendo las
demandas de los mercados, al menor costo de transporte posible.”
Conjuntos
i ∈ I: Plantas, j ∈ J: Mercados
Parámetros
ai capacidad de planta i
bj demanda del mercado j
cij costo de transporte por unidad entre planta i y mercado j
Variable de decisión
xij cantidad de mercancía a enviar desde planta i a mercado j, no
negativa y entera.
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
3/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Formulación ejemplo problema de transporte
P P
min
c x
Pi∈I j∈J ij ij
s.a.
x ≤ ai , ∀i ∈ I,
Pj∈J ij
∀j ∈ J,
i∈I xij ≥ bj ,
xij ≥ 0, entero, ∀i ∈ I, ∀j ∈ J.
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
4/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Formulación ejemplo problema de transporte vs GNU Mathprog
P P
min
c x
Pi∈I j∈J ij ij
s.a.
x ≤ ai , ∀i ∈ I,
Pj∈J ij
x
∀j ∈ J,
i∈I ij ≥ bj ,
xij ≥ 0, entero, ∀i ∈ I, ∀j ∈ J.
Facultad de Ingeniería. UdelaR
minimize cost:
sum{i in I, j in J} c[i,j] * x[i,j];
s.t. supply{i
sum{j in J}
s.t. demand{j
sum{i in I}
in I}:
x[i,j] <= a[i];
in J}:
x[i,j] >= b[j];
Fundamentos de Programación Entera
5/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema de transporte modelado en GNU Mathprog
set I;
set J;
param a{i in I};
param b{j in J};
param c{i in I, j in J};
var x{i in I, j in J} >= 0, integer;
minimize cost: sum{i in I, j in J} c[i,j] * x[i,j];
s.t. supply{i in I}: sum{j in J} x[i,j] <= a[i];
s.t. demand{j in J}: sum{i in I} x[i,j] >= b[j];
end;
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
6/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema de transporte modelado en GNU Mathprog (datos)
set I := Seattle San-Diego;
set J := New-York Chicago Topeka;
param a := Seattle 350, San-Diego 600;
param b := New-York 325
Chicago 300
Topeka 275;
param c :
New-York Chicago Topeka :=
Seattle
0.225
0.153
0.162
San-Diego
0.225
0.162
0.126 ;
end;
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
7/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema de transporte modelado en GNU Mathprog (modelo y datos juntos
1/5)
Alternativamente el modelo y los datos a usar pueden especificarse en
conjunto en un mismo archivo.
Lo que sigue es el modelo completo con comentarios, separado en
varias diapositivas.
#
#
#
#
#
#
#
#
#
Problema de Transporte
Determina el envio de costo minimo que cumple
con los requisitos de demanda de mercados y
suministro de fabricas.
Basado en Dantzig, G B., Linear Programming and
Extensions.
Princeton University Press, Princeton, New Jersey,
1963, Chapter 3-3.
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
8/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema de transporte modelado en GNU Mathprog (modelo y datos juntos
2/5)
/* plantas */
set I;
/* mercados */
set J;
/* capacidad de planta i */
param a{i in I};
/* demanda de mercado j */
param b{j in J};
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
9/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema de transporte modelado en GNU Mathprog (modelo y datos juntos
3/5)
/* costo de transporte por unidad desde
la planta i al mercado j */
param c{i in I, j in J};
/* unidades de mercadería producidas en la
planta i para el mercado j */
var x{i in I, j in J} >= 0, integer;
/* costo total de transporte */
minimize cost: sum{i in I, j in J} c[i,j] * x[i,j];
/* restringe suministro en planta i */
s.t. supply{i in I}: sum{j in J} x[i,j] <= a[i];
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
10/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema de transporte modelado en GNU Mathprog (modelo y datos juntos
4/5)
/* satisface demanda en mercado j */
s.t. demand{j in J}: sum{i in I} x[i,j] >= b[j];
data;
set I := Seattle San-Diego;
set J := New-York Chicago Topeka;
param a := Seattle 350, San-Diego 600;
param b := New-York 325
Chicago 300
Topeka 275;
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
11/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema de transporte modelado en GNU Mathprog (modelo y datos juntos
5/5)
param c :
New-York
Seattle
0.225
San-Diego
0.225
Chicago
0.153
0.162
Topeka :=
0.162
0.126 ;
end;
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
12/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema transporte: resolución mediante GNU glpsol
Para la resolción, se almacenan el modelo y los datos en archivos de
texto transp.mod y transp.dat respectivamente.
Se resuelve invocando al solver en línea de comando:
> glpsol --model transp.mod --data transp.dat
--output transp.sol
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
13/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema transporte: resolución mediante GNU glpsol
Para la resolción, se almacenan el modelo y los datos en archivos de
texto transp.mod y transp.dat respectivamente.
Se resuelve invocando al solver en línea de comando:
> glpsol --model transp.mod --data transp.dat
--output transp.sol
Lo que sigue es un extracto de la salida transp.sol
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
13/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema transporte: solución 1/2
Problem:
Rows:
Columns:
Non-zeros:
Status:
Objective:
transp
6
6 (6 integer, 0 binary)
18
INTEGER OPTIMAL
cost = 153.675 (MINimum)
No.
Row name
Activity
Lower bound
Upper bound
------ ------------------------ ------------- ------------1 cost
153.675
2 supply[Seattle]
350
350
3 supply[San-Diego]
550
600
4 demand[New-York]
325
325
5 demand[Chicago]
300
300
6 demand[Topeka]
275
275
...
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
14/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
Problema transporte: solución 2/2
...
No. Column name
Activity
Lower bound
Upper bound
------ ------------------------ ------------- ------------1 x[Seattle,New-York]
50
0
*
2 x[Seattle,Chicago]
300
0
*
3 x[Seattle,Topeka]
0
0
*
4 x[San-Diego,New-York]
275
0
*
5 x[San-Diego,Chicago]
0
0
*
6 x[San-Diego,Topeka]
275
0
*
...
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
15/16
Modelado Algebraico Computacional
Lenguajes de modelado algebraico
Ejemplo Problema de Transporte
Modelado con GNU GLPK
GNU Linear Programming Kit (GLPK)
GLPK permite resolver problemas grandes de programación lineal y
pequeños de programación entera-mixta. Está implementado
utilizando el lenguaje de programación C.
Está constituído básicamente por un solver LP/MIP de línea de
comandos, un traductor de GNU MathProg, y una API en C que
permite acceder a su funcionalidad programáticamente.
Su solver utiliza diferentes algoritmos: métodos simplex primal y
dual, punto interior primal-dual y branch and cut.
Sitio GLPK
http://www.gnu.org/software/glpk/glpk.html
GLPK para Windows
http://winglpk.sourceforge.net/
Facultad de Ingeniería. UdelaR
Fundamentos de Programación Entera
16/16
Descargar