Académique Documents
Professionnel Documents
Culture Documents
Contenidos
1. Introduccin.
2. Programacin Lineal
3. Tcnicas de Descomposicin.
3.1 Introduccin.
3.2 Mtodo de Generacin de Columnas.
3.3 Mtodo de Dantzig & Wolfe.
3.4 Mtodo de Benders.
4. Problemas de Flujo en Redes.
5. Programacin Entera.
6. Programacin Estocstica Lineal.
3.1 Introduccin.
Existe una amplia variedad de problemas en
diversas disciplinas que dan origen a modelos de
optimizacin de gran tamao que poseen una
determinada estructura donde se combinan
restricciones simples con otras ms complejas.
Los Mtodos de Decomposition proveen una
tcnica numrica de optimization para resolverles.
TSx
+ WyS = hS
x0, y10, y20, , yS0.
de
las
10
Contenidos
1. Introduccin.
2. Programacin Lineal
3. Tcnicas de Descomposicin.
3.1 Introduccin.
3.2 Mtodo de Generacin de Columnas.
3.3 Mtodo de Dantzig & Wolfe.
3.4 Mtodo de Benders.
4. Problemas de Flujo en Redes.
5. Programacin Entera.
6. Programacin Estocstica Lineal.
11
Notacin.
W = ancho de las piezas a cortar
wi = ancho del trozo demandado i=1,,m
bi = demanda de trozos de ancho wi con i=1,,m
aij = nmero de veces que aparece el trozo de tamao wi
en el patrn de corte j, con i=1,,m j=1,,n
A=(aij)i=1,,m j=1,,n matriz que rene todos los patrones de
corte.
aj = j-sima columna de A, correspondiente al patrn de
corte j=1,,n.
12
13
1 - Ta
a1w1 + a2w2 + + amwm W
a 0, entero.
Implementacin en AMPL
www.ampl.com
14
cut1.mod
set WIDTHS;
param orders {WIDTHS} > 0;
# number of patterns
# set of patterns
minimize Number:
sum {j in PATTERNS} Cut[j];
cut.dat
# ---------------------------------------# CUTTING STOCK
# ----------------------------------------
data;
param roll_width := 110 ;
param: WIDTHS: orders :=
20 48
45 35
50 24
55 10
75 8 ;
15
cut1.run
#
#
#
#
in WIDTHS} {
nPAT := nPAT + 1;
nbr[i,nPAT] := floor (roll_width/i);
{i2 in WIDTHS: i2 <> i} nbr[i2,nPAT] := 0;
repeat {
solve Cutting_Opt;
let {i in WIDTHS} price[i] := Fill[i].dual;
solve Pattern_Gen;
if Reduced_Cost < -0.00001 then {
let nPAT := nPAT + 1;
let {i in WIDTHS} nbr[i,nPAT] := Use[i];
}
else break;
};
display nbr;
display Cut;
option Cutting_Opt.relax_integrality 0;
option Cutting_Opt.presolve 10;
solve Cutting_Opt;
display Cut;
16