Introducción a la Optimización

Anuncio
Introduction to Optimization
Ángel Marín
Integer Programming 3:
Cutting plane technique.
1
Cutting plane
Each Plane Cut must verify:
a) Delete the previous continuous (LR) optima solution,
b) Not eliminate any integer feasible solution.
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
2
Gomory cuts: parts integer and fractionary
Let x
(b , o ) be the solution of the linear relaxation (LR) of the previous iteration:
xi
aij x j
ai 0 , i
B
j N
Like x is not integer: ai 0
aij
I ij
Fij , i
n
B, j
:
N
0
, where Iij is the inferior integer part of aij and Fij
0,1 is the decimal part of aij .
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
3
Gomory cuts: Separating parts integer and
fractionary
Separating the integer and decimal parts:
xi
I ij x j
I io
Fi 0
j N
Fij x j , i
B
j N
The right side is inferior of 1 and it is integer, it defines a Gomory cut (GC):
Fi 0
Fij x j
0, i
B
j N
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
4
Gomory cuts: verify the definition
These GC Fi 0
Fij x j
0, i
B verifies the properties:
j N
a) The previous optima solution not verify the GC:
x kj
0, j
N ; Fio
0 for some i
B
b) The factionary parts of the integer feasible solutions are zero and they
verify the GC.
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
5
Cortes de Gomory: Ejemplo
x2
MinxЄZ+ 3x1+4x2
sujeto a: 3x1+x2≥4
x1+2x2 ≥4
Aplicamos el método Simplex para obtener
una solución óptima del Problema Lineal
Relajado (que no es solución entera)
a1
a2
a3
a4
b
1
0
-2/5
1/5
4/5
0
1
1/5
-3/5
8/5
0
0
2/5
9/5
-44/5
(4/5,8/5)
x1
Fijándonos en la variable básica x1:
x1-2/5x3+1/5x4=4/5
Para realizar el Corte de Gomory es necesario separar la parte entera de la parte fraccionaria:
x1-2/5x3+1/5x4=4/5 x1+(-1+3/5)x3+1/5x4=4/5 x1-x3 = -3/5x3-1/5x4+4/5
(P.entera)
(P.fraccionaria)
El corte de Gomory exige que para que no eliminemos ninguna solución factible y además la
solución de la que venimos ya no esté dentro de la región de factibilidad, se cumpla:
P.fraccionaria ≤ 0, en este caso: 3/5x3+1/5x4 ≥ 4/5
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Sabiendo que las restricciones son:
3x1+x2-x3 =4
x1+2x2-x4 =4
x2
Si despejamos x3 y x4 de las restricciones y
sustituimos en la condición de Gomory anterior
(3/5x3+1/5x4 ≥ 4/5) obtenemos: 2x1+x2 ≥4
Vemos que:
1) NO hemos eliminado ninguna solución
factible.
2) La solución NO ENTERA de la que veníamos
ha quedado fuera de nuestra región de
factibilidad.
(4/3,4/3)
Pero nuestra nueva solución óptima aún no
es entera: x*=(4/3,4/3)
Realizamos un nuevo corte de Gomory:
Fijándonos en la variable básica x2:
x2+1/5 x3-3/5 x4 = 8/5
x2+1/5 x3 + (-1+ 2/5) x4 = 1 + 3/5
Repitiendo el proceso de separación de parte entera y parte fraccionaria,
1/5 x3 +2/5 x4 ≥ 3/5, despejando x3 y x4:
llegamos a que el nuevo corte de Gomory es: x1+x2 ≥3
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
x1
Se comprueba que la solución óptima del
Problema Lineal:
x2
Min xЄZ+ 3x1+4x2
sujeto a las restricciones:
3x1+x2≥4
x1+2x2 ≥4
y los cortes de Gomory:
2x1+x2 ≥4
x1+x2 ≥3
(2,1)
Es x*=(2,1).
De manera que la solución del
problema entero también será
(2,1).
x1
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Branch and cut example
Branch and cut (B&C)
Introduce in the B&B active nodes cutting planes that would be violated by the active
node.
Min z
x
6 x1 5 x2
3x1 x2 11
x1 2 x2 5
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
9
Branch and cut example
3 5
(2 , 3 ); z
7 7
x1
(2,3.5); z
2 x1
(1.8,3.4); z
2
29.5
x2
x1
33
1
7
3
(3,2); z
28
7
27.8
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
10
ALGORITMO BRANCH AND CUT: Min (Max)
Iniciación: L
PRL , Z 0
, Z
0
Do while: L 0
Seleccionar un nodo “l” de L y eliminar l de L.
Relajación: Resolver su RL: Si no solución factible se poda el nodo (se elimina
de L). Si existe solución óptima entera: xl , z l son la solución y el valor óptimo.
Añadir planos de corte: a la relajación y volver a Relajacion.
Acotar: Si x
Z : se actualiza la cota superior: z
y se podan las ramas activas que verifican: z
z i (z
Min. z, z z
z i ),
i
Max z, z
L.
Si x Z : se va a ramificar.
Ramificar: se selecciona una variable no entera (mediante análisis de
sensibilidad se evalúa la penalización que se incurre antes de resolverlo, y se añade a L.
Terminación: Si x* existe es la solución óptima ( z es óptimo), si no existe
(z
) y el problema es infactible.
End do while
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
11
Cliques
n
For x
0,1 , from a knapsack constraint:
a jxj
b;
j 1
with a j
0,and ordened coeficients : a1
x j 1;
S
... a n ,a cliqué is:
1,..,n
j S
S
The first a jwhich sum brakes the bound plus the previous ones
Example: constraint: 1'8 x1 1'5 x2
Avalaible Cliqués: x1
x2
x3
x4
2
x3 1 ; x1
x2
x4
1
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
12
Cover constraints with some ai
0
'
i
si ai 0: reemplazar xi por 1 x
'
i
ajxj
ai (1 x ) b
'
j j
ajxj
j
aj 0
ax b
j
aj 0
aj
j
aj 0
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
13
Cover constraints Example
1)
3x
3 x2
'
2
2)
2 x3
'
3
2x
3x
'
1
'
3
x
x
3x
4
x1
x3
3) x1 2 x2
6 x3
5
'
2
2 x1 2(1 x ) 6 x3
x1
x3
1; x
x3
x
1; x
5
1
'
3
1
x2
2
x3 1
6
cliqué
1
'
2
'
2
3 x3
'
3
'
3
3(1 x ) 2(1 x )
cliqué
3
'
2
4x
x
2
4 x1 3 x2
'
1
'
2
x
'
2
'
2
x
x
'
1
2 x1
x2
'
3
1
x2
x2
2x
x3
1
'
2
6 x3
x3 1;
x1 1
7
0
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
14
Generalized upper bound
xj
GUB constraints:
1, i
I
j Qi
,where Qi are disjoints subsets of X.
Assuming that x(k) is non integer. Conventional branching
on x(k) is equivalent to x(k)=0 or x(k)=1, equivalent to
xj
1
. This node will contain few solutions
compared with branch x(k)=0.
It is more desirable divide the feasible region of the father
roughly equally:
j Qi \ k
xj
j Q 'i
0 or
xj
0
j Qi \Q 'i
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
15
Predominio
x
x
Si tenemos dos restricciones válidas dadas por:
0
0
La primera predomina sobre la segunda si existe algún
u
u>0 que verifique:
0
u
and
,
0
u ,u
0
0
Mediante estas consideraciones podemos eliminar
Restricciones redundantes para la definición de P.
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Predominio. Ejemplo
Tenemos las restricciones:
x1 3x2 4
2 x1 4 x2 9
Eligiendo u=1/2 se verifica:
1
1,3
2, 4
2
1
4
9
2
1,3, 4
2, 4,9
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Restricciones de cobertura
Sea X el conjunto binario definido por:
n
X
x Bn :
aj xj
b
N
1, 2,..., n
j 1
Un subconjunto C de N es una cobertura si:
C
N
aj
b
j C
Si C es una cobertura, la siguiente restricción de cobertura
es valida para X:
xj
C 1
j C
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Restricciones de cobertura. Ejemplo
Consideremos la siguiente restricción:
x B7 : 11x1 6 x2 6 x3 5x4 5x5 4 x6
x7 19
Algunas restricciones de cobertura mínimas son:
x1
x2
x3
2
x1
x2
x6
2
x3
x4
x5
x6
3
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Fortaleciendo una restricción de
cobertura.
Si C es una cobertura para X, la restricción de cobertura
extendida es válida para X.
xj
C 1
siendo
E (C ) C
j : aj
ai i C
j E (C )
Las restricciones extendidas predominan sobre las
restricciones de las que partimos. Ejemplo:
x3 x4 x5 x6 3
u 1
extendemos
1,1,1,1,1,1
x1 x2 x3 x4 x5 x6 3
1 0, 0,1,1,1,1
and
3 1·3
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Capacitated Network Design
Grover et al. 2001
w w
ij ij
Min .
y 0,1
x 0
c x
w W ij A
f ij yij
ij A
g w , if i d ( w)
x wji
j: ji A
xijw
xijw
biw
j:ij A
qij yij , ij
g w , if i o( w) , i , w
0, otherwise.
A
w W
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Capacitated Network Design
Min .
Grover et al. 2001
y 0,1
w W ij A
x 0
w w
ij ij
c x
f ij yij
ij A
g w , if i d ( w)
x
w
ji
j: ji A
w
ij
x
w
i
b
j:ij A
w
ij
x
g w , if i o( w) , i, w
0, otherwise.
qij yij , ij
A
w W
w
ij
x
qw
yij , ij
A, w W
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Uncapacited Network Design
w w
ij ij
Min .
y 0,1
x R
c x
w W ij A
x
w
ji
j: ji A
w
ij
x
f ij yij
w
ij
x
j:ij A
x
w
ji
ij A
0
ij
y
w
i
b
1, if i d ( w)
1, if i o( w) , i, w
0, otherwise.
yij , ij A, i
j, w
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
Considérese el modelo de optimización entera siguiente:
Mín. c1 x1
x1 , x2
Z
a11 x1
a12 x2
a21 x1
a22 x2
c2 x 2
b1
b2
1.
Resolver gráficamente y mediante el método de Ramificación y Acotación
(B&B) el modelo citado.
Hacer las operaciones a mano, aunque los modelos relajados lineales pueden
resolverse con GAMS. Mostrar los listados de salida concentrados en unas pocas
hojas. En algunos casos pueden resolverse los problemas relajados por simple
representación gráfica, justificarlo.
2. Resolver mediante cortes de Gomory el modelo anterior.
Resolución manual.
Intentar generar cortes por otros procedimientos y resolver B&B con ellos.
Integrar los cortes anteriores en un esquema de B&B para definir un
algoritmo de Branch and Cut.
3. Resolver un modelo de 4 variables y 4 restricciones, inventado pero interesante,
mediante preproceso hasta reducirlo a un problema de 1 dimensión o lo máximo
que se pueda. Cada alumno resolverá un problema diferente
Resolver el modelo utilizando GAMS y como resolvedor CPLEX. Utilizar los datos que
corresponden a cada alumno y pueden verse abajo. Comprobar computacionalmente
que los
“Introduction Optimization”, Ángel Marín: Integer Programming: Cutting plane
24
Descargar