+ All Categories
Home > Documents > Optimización I

Optimización I

Date post: 05-Jul-2018
Category:
Upload: makintoxx
View: 220 times
Download: 0 times
Share this document with a friend
17
1 PII-401 Optimización I Prof. Víctor M. Albornoz S. Departamento de Industrias Campus Santiago Vitacura SEGUNDO SEMESTRE 2015 Martes 3 de Noviembre de 2015 Contenidos 1. Introducción. 2. Programación Lineal 3. Técnicas de Descomposición. 3.1 Introducción. 3.2 Método de Generación de Columnas. 3.3 Métod o de Dantzig & Wolfe. 3.4 Método de Benders. 4. Problemas de Flujo en Redes. 5. Programación Entera. 6. Programación Estocástica Lineal.
Transcript

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 1/16

PII-401 Optimización IProf. Víctor M. Albornoz S.Departamento de IndustriasCampus Santiago Vitacura

SEGUNDO SEMESTRE 2015

Martes 3 de Noviembre de 2015

Contenidos1. Introducción.

2. Programación Lineal

3. Técnicas de Descomposición.

3.1 Introducción.

3.2 Método de Generación de Columnas.

3.3 Método de Dantzig & Wolfe.

3.4 Método de Benders.

4. Problemas de Flujo en Redes.

5. Programación Entera.

6. Programación Estocástica Lineal.

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 2/16

3.1 Introducción.

Existe una amplia variedad de problemas endiversas disciplinas que dan origen a modelos deoptimización de gran tamaño que poseen unadeterminada estructura donde se combinanrestricciones simples con otras más complejas.

Los Métodos de Decomposition proveen una técnica numérica de optimization para resolverles.

En el caso de modelos de Programación Lineal,hay problemas cuya matriz que representa lasdiferentes ecuaciones (Ax=b) resulta ser unamatriz poco densa con un claro patrón de suselementos no-nulos.

Por ejemplo,   A   podría ser una matriz bloqueangular:

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 3/16

tener una estructura dual bloque angular:

o bien ser una matriz con forma de escalera:

Un modelo lineal de Programación Estocásticacon recurso de dos-etapas (en el caso finito)corresponde por ejemplo a:

Min cx + p1q1y1 + p2q

2y2 + ··· + pSqSyS

s.a.

Ax = b

T1x + Wy1 = h1

T

2

x + Wy

2

= h

2

···

TSx + WyS = hS

x≥0, y1≥0, y2≥0, … , yS≥0.

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 4/16

En Albornoz et al. (2004) se abordó un problema

de expansión de capacidad de un sistema depotencia eléctrica térmico que ante incertidumbreen la disponibilidad de las unidades degeneración existentes se resolvió mediante elMétodo de Descomposición de Benders.

En Albornoz and Canales (2006), usamos unMétodo de   Descomposición Lagrangeana  pararesolver un modelo de programación estocásticacon recurso de dos-etapas que provee una cuotatotal de captura de un recurso pesqueroparticular regulado por el Estado.

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 5/16

En Albornoz and Ñanco (2014) se abordó un

problema de partición en zonas homogéneas deun terreno agrícola basado en información geo-referenciada de propiedades del suelo medianteun Método de Generación de Columnas .

En Palomo-Martínez et al. (2015) se estáabordando un problema de ruteo vehicularconocido en la literatura como OrienteeringProblem (OP), que incluye adicionalmente lavisita a nodos obligatorios y nodos en conflictopara el diseño de las rutas, que considera elMétodo de Branch-and-Price  para su resolución.

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 6/16

Existen numerosos problemas de gran tamaño 

altamente estructurados que contribuyen a la toma de buenas decisiones y cuya resolución plantea desafíos algorítmicos por su complejidad.

La presencia de tal estructura puede y (debe) serempleada en métodos eficientes para laresolución de tales tipos de problema (anteinstancias de gran tamaño).

En un contexto más amplio, los primeros trabajosque hacen uso de   Métodos de Descomposición se remontan a más de cinco décadas con laaparición de los métodos de Descomposición deDantzig y Wolfe (1960) y el método deDescomposición de Benders (1962).

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 7/16

A ello se agrega una primera aplicación de un

Método de Generación de Columnas en el trabajode Gilmore y Gomory (1961,1963) quienes loaplicaron al problema de corte de piezas.

Con posterioridad son numerosos los problemasque han sido abordados con este método, ver porejemplo Desaulniers et al. (2005).

Otras referencias de interés:

VRPTW, Desrosiers et al. (1984).

Two-stage stochastic linear program, Birge (1985).

Column Generation in IP, Vanderveck and Wolsey (1996).

Branch-and-price, Barnhart et al. (1998).

Two-Stage Column Generation, Salani and Vacca (2008).

Primal-dual column generation method, Gondzio et al.(2013).

Bi-objective column generation algorithm, Moradi et al.(2015)

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 8/16

Para abordar computacionalmente un problema

complejo mediante el uso de un Método deDescomposición la idea básica consiste en:

descomponer o simplificar la resolución del problema original resolviendo separadamente un Problema Maestro (reducido) y un Subproblem, este útimo usualmente con un subjunto de las restricciones originales que poseen una estructura especial.

Para llevar a cabo esta idea en un contextoalgorítmico, la estrategia consiste en enviarinformación tales como precios sombra ysoluciones factibles entre el   Problema Maestro Reducido y el Subproblema   hasta alcanzar lasolución óptima o una aproximación a la mismaen un número finito de iteraciones.

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 9/16

En Albornoz et al. (2004) se considera el Método

de Descomposición de Benders donde:

Problema Maestro : plan de inversiones sobre todoel horizonte de planificación de largo plazo.

Subproblema(s): operación óptima del sistema encada mes y escenario de disponibilidad deunidades.

En Albornoz and Canales (2006), se considera elMétodo de Descomposición Lagrangeana donde: 

Problema Maestro : coordinación de lasrestricciones de no-anticipatividad.

Subproblema(s): problema de cuota de capturaanual para cada escenario de comportamiento de

dinámica poblacional (ecosistema marino).

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 10/16

En Albornoz and Ñanco (2014) se considera el

Método de Generación de Columnas  donde:

Problema Maestro : Partición óptima del terrenopara un conjunto dado de potenciales zonas.

Subproblema(s): determinación de una potencialzona rectangular para el terreno.

En Palomo-Martínez et al. (2015) se considera elMétodo de Branch-and-Price  donde:

Problema Maestro : Selección de una ruta queverifica cumplimiento de visita a nodos obligatoriosy elimina conflictos de entre un conjunto dado depotenciales rutas.

Subproblema(s): Problema de ruteo vehicularcapacitado.

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 11/16

Contenidos

1. Introducción.

2. Programación Lineal

3. Técnicas de Descomposición.

3.1 Introducción.

3.2 Método de Generación de Columnas.

3.3 Método de Dantzig & Wolfe.

3.4 Método de Benders.

4. Problemas de Flujo en Redes.

5. Programación Entera.

6. Programación Estocástica Lineal.

3.2 Método de Generación de Columnas.

Como ya se señaló, una primera aplicación de unMétodo de Descomposición corresponde al usodel método de Generación de Columnas para elproblema de corte de piezas, ver NEOS

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 12/16

Notación.

W = ancho de las piezas a cortarwi = ancho del trozo demandado i=1,…,mbi = demanda de trozos de ancho w i con i=1,…,maij = número de veces que aparece el trozo de tamaño wien el patrón de corte j, con i=1,…,m j=1,…,nA=(aij)i=1,…,m j=1,…,n matriz que reúne todos los patrones decorte.aj = j-ésima columna de   A, correspondiente al patrón decorte j=1,…,n.

Un patrón de corte j es factible en la medida queverifique: a1jw1 + a2jw2 +  … + amjwm  ≤ W

Si  xj representa el número de veces que se empleael patrón de corte  j, un modelo que minimiza elnúmero total de piezas a cortar corresponde a:

Min   x1 + x2+  ... + xn

s.a. ai1x1 + ai2x2 +   ... + ainxn = bi   i=1,…,mx1≥≥≥≥0, x2≥≥≥≥0, …, xn≥≥≥≥0, enteros,

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 13/16

Al emplear el  Método de Generación de Columnas 

los patrones se van generando iteración trasiteración al aplicar el método Simplex Revisado ala relajación continua del modelo anterior.

El método parte de una solución básica factibleque en general es fácil de conseguir. En el ejemplose puede partir de m patrones iniciales cada unode los cuales contiene únicamente   W/wi   trozosdel tamaño  wi, es decir para i=1,…,m se define:

aij= W/wi si i=j   y   0 sino para j=1,…,m

Siendo B la respectiva matriz de base asociada aesta solución básica factible, es posible saber sies óptima mediante el cálculo de los costosreducidos para cada variable no-básica   x j,verificando si se cumple:

1 - cBTB-1a j = 1-  λTa

 j≥≥≥≥ 0

para cada patrón j, lo cual equivale a:

min j=1,…,n {1-  λTa j}  ≥≥≥≥ 0

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 14/16

Para verificar esto último no es necesario

conocer todos los patrones sino simplementeverificar si le cumple aquel patrón que minimizael siguiente Suproblema :

Min   1 -  λTa

s.a.   a1w1 + a2w2 +  … + amwm  ≤  W

a  ≥≥≥≥ 0, entero.

si   a=ak es el patrón donde se alcanza la solución

óptima y verifica:   1 -  λT

ak ≥≥≥≥

 0, entonces todos losotros patrones le verifican y hemos alcanzado lasolución óptima. Sino se sigue con el M.Simplex.

Implementación en AMPLwww.ampl.com 

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 15/16

cut1.mod

# ----------------------------------------

# CUTTING STOCK USING PATTERNS

# ----------------------------------------

param roll_width > 0; # width of raw rolls

set WIDTHS; # set of widths to be cut

param orders {WIDTHS} > 0; # number of each width to be cut

param nPAT integer >= 0; # number of patterns

set PATTERNS := 1..nPAT; # set of patterns

param nbr {WIDTHS,PATTERNS} integer >= 0;

  check {j in PATTERNS}:

sum {i in WIDTHS} i * nbr[i,j] <= roll_width;

  # defn of patterns: nbr[i,j] = number

  # of rolls of width i in pattern j

var Cut {PATTERNS} integer >= 0; # rolls cut using each pattern

minimize Number: # minimize total raw rolls cut

  sum {j in PATTERNS} Cut[j];

subj to Fill {i in WIDTHS}:

  sum {j in PATTERNS} nbr[i,j] * Cut[j] >= orders[i];

  # for each width, total

  # rolls cut meets total orders

# ----------------------------------------

# KNAPSACK SUBPROBLEM FOR CUTTING STOCK

# ----------------------------------------

param price {WIDTHS} default 0.0;

var Use {WIDTHS} integer >= 0;

minimize Reduced_Cost:

1 - sum {i in WIDTHS} price[i] * Use[i];

subj to Width_Limit:

sum {i in WIDTHS} i * Use[i] <= roll_width;

cut.dat# ----------------------------------------

# CUTTING STOCK# ----------------------------------------

data;

paramroll_width := 110 ;

param: WIDTHS: orders :=

20 48

45 35

50 24

55 10

75 8 ;

8/16/2019 Optimización I

http://slidepdf.com/reader/full/optimizacion-i 16/16

cut1.run# ----------------------------------------

# GILMORE-GOMORY METHOD FOR

# CUTTING STOCK PROBLEM

# ----------------------------------------

option solver lpsolve;

option solution_round 6;

model cut1.mod;

data cut1.dat;

problem Cutting_Opt: Cut, Number, Fill;

  option relax_integrality 1;

  option presolve 0;

problem Pattern_Gen: Use, Reduced_Cost, Width_Limit;

  option relax_integrality 0;

  option presolve 1;

let nPAT := 0;

for {i in WIDTHS} {

  let nPAT := nPAT + 1;

  let nbr[i,nPAT] := floor (roll_width/i);

  let {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;


Recommended