Sei sulla pagina 1di 32

1

4.1.

Modelizacin de problemas enteros o

En un contexto general un problema de programacin lineal entera es cualquier o problema de optimizacin en el cual las variables de decisin todas o algunas de o o ellas toman valores enteros. La formulacin general de un problema de prograo macin lineal entera podr ser la siguiente: o a M in s.a. ct x Ax b xj 0 j N = {1, 2, ..., n} xj entero j N1 N

siendo c I n y b I m los vectores de costes y recursos respectivamente, y A una R R matriz de orden mn denominada usualmente matriz de coecientes tecnolgicos. o 1. Si N = N1 el problema recibe el nombre de programacin lineal entero o puro. o 2. Si N = N1 , el citado problema recibe la denominacin de problema lineal entero mixto. Ejemplo 4.1.1 Una empresa va a construir 2 tipos de chalets: tipo A y tipo B, en una parcela cuya supercie edicable es de 1190 m2 . La ganancia en los chalets de tipo A se ha estimado que ser de 700 u.m. y en los de tipo B de 1000 u.m. . Los a chalets de tipo A ocuparn una supercie de 140 m2 y constarn de una planta a a mientras que los del tipo B ocuparn 3 plantas con una supercie por planta de a 80 m2 ; siendo estos adems de mayor lujo que los anteriores. El capital que la a

empresa est dispuesta a emplear en su construccin es a lo sumo de 91 millones a o de pesetas siendo el coste para los del tipo A de 7 millones de pesetas y para los del tipo B de 13 millones de ptas. Cuntos chalets deber construir de cada tipo a a con el n de maximizar el benecio?. La solucin ptima del problema de programacin lineal continua asociado es: o o o x1 = 6,5 x2 = 3,5 Observemos que si bien esta solucin es ptima no es admisible. Qu sentido o o e tiene para la empresa construir 6.5 chalets del tipo A y 3.5 del tipo B? Si se redondea esta solucin al entero ms prximo, las cuatro posibles soluo a o ciones sern: a x1 = 6 x1 = 7 x1 = 6 x1 = 7 x2 = 4 x2 = 4 x2 = 3 x2 = 3

Y si dibujamos la grca de la funcin objetivo con las posibles soluciones enteras, a o podemos ver que la unica solucin factible, de entre las 4 anteriores es o x1 = 6 x2 = 3 a la que corresponden unos benecios de 7,200,000 ptas.

4.2.

Formulacin general de problemas de Programacin o o entera. Ejemplos clsicos. a


M in s.a.

ct x Ax = b x0 x entero c t x + ht y

(P.L.E.)

(P.L.E.M )

M in

s.a. A x + G y = b x, y 0 x entero

Un caso especial de problemas de programacin entera es el de aquellos en o que las variables toman slo valores 0 y 1. Es la programacin 01 y han sido o o desarrollados algoritmos espec cos.

M in

ct x Ax = b x {0, 1}

(P.L.E,0 1) s.a.

Cualquier problema de programacin totalmente entera se puede convertir en uno o de programacin 01 sin ms que convertir cada variable entera en un conjunto o a de variables 01 transformndola al sistema de numeracin binaria. a o Si xk es entera, con xk uk (lo cual es casi siempre posible en sistemas reales) podemos poner xk =
k p=0

2p ypk ypk {0, 1}

Ejemplos clsicos a

4.2.1.

El problema de la mochila

Hay n art culos, cada uno de ellos proporciona un benecio bj , con j {1, 2, ..., n}. Por contra, cada art culo consume m recursos (peso, volumen, etc.); sea aij el consumo del recurso i, con i {1, 2, .., m}, de cada articulo j. Se desea saber cuntos a art culos de cada tipo hay que seleccionar para maximizar el benecio total considerando que cada recurso i est limitado por una cantidad ri . a Se considera la variable de decisin xj que representa el nmero de art o u culos del tipo j. M ax s.a.
n j=1 n j=1

bj x j

aij xj ri i {1, ..., m} xj 0 ( entera)

El problema de la mochila 01

Hay n proyectos, el proyecto jsimo, con j {1, 2, ..., n}, tiene una coste aj e y proporciona un benecio bj . Con un presupuesto global P, se desea saber en qu proyectos conviene invertir el dinero disponible: Se considera las variables de e decisin xj dadas por o xj =

1 0

si invertimos en el proyecto j si no invertimos M ax s.a.


n j=1 n j=1

bj x j

aj xj P

xj {0, 1}

4.2.2.

Problemas de cubrimiento, empaquetado y particin o

Sea M = {1, 2, .., m} un conjunto nito y sea la familia P = {Pj /j N } Pj M , con N = {1, 2, ..., n} una coleccin de subconjuntos de M. Se tienen las o siguientes deniciones: Un subconjunto F N es un cubrimiento de M si jF Pj = M . Un subconjunto F N es un empaquetado de M si Pj Pk = j, k F j = k.

Un subconjunto F N es una particin de M si es simultneamente un o a cubrimiento y un empaquetado. de M. El problema de cubrimiento asigna un coste cj a cada coleccin Pj y trata de o buscar el cubrimiento de coste m nimo. En el problema de empaquetado, cada coleccin Mj tiene asignado un peso wj y se trata de encontrar el empaquetado o de mximo peso. A continuacin se plantean los correspondientes problemas de a o programacin. o Sea A = (aij )mn la matriz de incidencia de la familia de conjuntos {Pj /j N }: aij =

1 0

si i Pj si i Pj /

donde la variable de decisin ser j N : o a xj =


1 0

si j F si j F /

Los problemas de cubrimiento, empaquetado y particin exigirn respectivamente o a que A x 1, A x 1 y A x = 1 donde 1 es el vector columna de dimensin m y 1 o en todas las componentes.

4.2.3.

Restricciones disyuntivas

El planteamiento de un problema de programacin matemtica supone que se o a deben vericar un conjunto de restricciones. En otras situaciones, sin embargo, se exige que se verique un subconjunto de ellas, pudiendo elegir el subconjunto que ms interese; es el caso de restricciones disyuntivas, que permite elegir k de las m a restriciones posibles. Para simplicar, se supone que se debe vericar una de las dos restricciones siguientes: y1 k1 y1 k2 . Para modelizar esta situacin se introduce una o o variable binaria:

z1 =

1 0

si y1 k1 si y1 k2

y esta variable va condicionada por las restricciones siguientes, donde M es una constante positiva arbitrariamente grande y1 k1 + (1 z1 )M y1 k 2 z 1 M

As se consigue que cuando z1 = 1 slo sea relevante la primera restriccin y no o o la segunda, que se verica trivialmente. El caso z1 = 0 es anlogo. Obsrvese que a e en la segunda restriccin el trmino que se aade con la variable z1 va restando. o e n

4.3.

Relajacin de un problema de Programacin Entera o o

Dado que la unica diferencia entre un problema de programacin entera y o otro de programacin lineal es la restriccin de integralidad de las variables, una o o opcin es aplicar el algoritmo del simplex al problema entero y, olvidndose de o a

la restriccin de integralidad, obtener la solucin. En el caso en que esta solucin o o o ptima sea entera, se ha resuelto el problema. En otro caso, no siempre se puede o asegurar que el redondeo de la solucin ptima proporcione la solucin ptima (ni o o o o siquiera una solucin factible) del problema entero. o Ejemplo 4.3.1 M in s.a. x1 x2 2 x1 + 2 x2 1 16 x1 14 x2 7 x1 , x2 0 enteras

Dado un problema de programacin entera o


P.E. M in{ct x/x S} = zP E

se dene una relajacin del problema, y se denota por P.E.R. a un problema de o optimizacin o
P.E.R. M in{zP R (x)/x SP R } = zP R

donde:

S SP R ct x zP R (x) x S

De la denicin se deducen automticamente dos propiedades: Si PR no tiene o a solucin factible, PE tampoco la tiene. Si PR tiene solucin factible, se verica o o
que zP E zP R

4.4.

Mtodos de Ramicacin y acotacin e o o

Ejemplo 4.4.1 M in s.a. 4 x1 6 x2 x1 + x2 1 x1 + 3 x2 9 3 x1 + x2 15 x1 , x2 0 enteras El proceso de dividir el problema PR, denominado problema maestro, en dos subproblemas se denomina ramicacin y es la clave del procedimiento de ramo icacin y acotacin. o o Cuando se ha conseguido una solucin factible entera, su valor en la funcin o o objetivo es una cota superior. La solucin ptima entera debe ser inferior a dicha o o cota, de forma que si en cualquier subproblema se alcanza una funcin objetivo o mayor, se descarta este subproblema y cualquiera de los que se pueden construir a partir de l por el procedimiento de ramicacin descrito anteriormente con el e o ejemplo. Ejemplo 4.4.2 M ax s.a. 2 x1 + 3 x2 5 x1 + 7 x2 35 4 x1 + 9 x2 36 x1 , x 2 0 x1 , x2 enteras

4.4.1.

El algoritmo de ramicacin y acotacin o o

Sea el problema de programacin totalmente entera: o


M in

z(x) = ct x xS xj entero j {1, 2, ..., n}

(P.L.E.) s.a.

Algoritmo de Ramicacin y Acotacin: o o PASO 1 Inicializacin o

(a) Resolver la relajacin continua del problema entero (PE). o (b) Si la solucin es entera = SOLUCION OPTIMA. PARAR. o o (c) En caso contrario, sea zU una cota superior del valor ptimo (vale la funcin objetivo de una solucin factible entera, puede ser si no se o o conoce ninguna). Ir al paso siguiente. PASO 2 Ramicacin o

A partir de un nodo pendiente no exclu do, (inicialmente, el conjunto S), seleccionar una componente que no es entera en el ptimo de este conjunto. o Sea xi dicha componente que toma un valor x no entero. Se ramica segn u i xi |x | y xi |x | + 1. i i PASO 3 Acotacin o

Para cada uno de los dos subproblemas, determinar el ptimo de la funcin o o objetivo (vale una cota inferior). Sea zL dicha cota. PASO 4 Sondeo

10

Examinar cada uno de los dos subproblemas y excluirlo de procesos de ramicacin futuros si verica alguna de las dos condiciones siguientes: o (a) zL zU . (b) No existe solucin factible del subproblema. o (b) zL se alcanza en una solucin entera y zL < zU : o Se ha obtenido la solucin ptima hasta el momento. zL = zU . o o Observacin: este nodo esta excluido en el sentido de que no ser ramio a cado posteriormente aunque almacene la mejor solucin entera obtenida. o Cada vez que se actualiza la cota zU se puede excluir aquellos vrtices e pendientes cuya cota asociada sea mayor que la nueva zU . REPETIR EL PASO HASTA QUE NO HAYA VERTICES POR SONDEAR PASO 5 Comprobacin o

Hay dos opciones: e do. Ir al paso de ramicacin. o (a) Seleccionar un vrtice pendiente no exclu (b) Todos los vrtices pendientes han sido exclu e dos. El ptimo es la mejor o solucin obtenida hasta el momento. Parar. o 4.4.2. Seleccin de variables para ramicar o

Hay dos criterios bsicos: uno ramicar todos los posibles vrtices de un a a e mismo nivel antes de bajar al siguiente nivel, ser el criterio .a lo ancho; por a el otro criterio, .a lo profundo, se bajar de nivel hasta llegar a una solucin a o entera. La ventaja de este ultimo es la de conseguir una buena cota que descarte la ramicacin del mximo nmero de vrtices; la desventaja es que posiblemente o a u e

11

no se baje por la rama adecuada que d una solucin buena. A priori no se puede e o avanzar cul es el mejor criterio, puesto que depende del problema concreto. En a problemas medianos o incluso grandes la eleccin de uno u otro es fundamental. o Ejemplo 4.4.3 M in s.a. 4 x1 11 x2 2 x1 x2 4 2 x1 + 5 x2 16 x1 + 2 x2 4 x1 , x 2 0 x1 , x2 enteras

12

4.5.

Programacin entera mixta. o

El algoritmo de ramicacin y acotacin para el P.L.E.M. de programacin o o o entera mixta es el mismo sin ms que modicar el paso de ramicacin: slo hay a o o que ramicar en aquellas variables que debiendo ser enteras no lo sean.

4.6.

Programacin 01. Algoritmo aditivo de Balas. o

El problema a resolver ser el siguiente: a

M ax s.a.

n j=1 n j=1

c j xj aij xj bi i = 1, 2, ..., m

xj {0, 1} j = 1, 2, ..., n

En el desarrollo posterior del algoritmo, se supondr siempre que todos los a coecientes cj de la funcin objetivo son positivos. Esto no supone ninguna reo striccin del modelo, puesto que una variable xj con coeciente negativo puede o ser sustitu por su complementaria yj = 1 xj en la funcin objetivo y en las da o restricciones para conseguir que sea positivo el correspondiente coeciente. Una solucin parcial es un vector (x1 , x2 , ..., xn ), solucin del problema de o o programacin 01, en el que un subconjunto de componentes no todas tiene o jado el valor. Se distinguen as las variables jas, identicadas por el subconjunto de ndices F {1, ..., n}, de las libres, identicadas por el subconjunto L = {1, ..., n} F = . Hay dos ideas bsicas que sustentan el algoritmo de Balas: a

13

Acotacin de las soluciones parciales o Dada una solucin parcial xj = xj , j F , es muy sencillo determinar una o cota superior del valor que puede alcanzar cualquier solucin completada a o partir de dicha solucin parcial. Sea fU dicha cota superior: o fU =
jF

cj xj +
jL

cj

Compatibilidad de soluciones parciales con las restricciones. Para que una solucin parcial pueda ser completada, debe vericarse o aij xj bi
jL jF

aij xj xj {0, 1} j L

Considerando que m n aij xj =


jL

xj {0,1},jL jL

M in{aij , 0}

se deduce que una solucin parcial ser exclu del proceso de ramicacin o a da o por no poder ser completada si existe una restriccin i {1, 2, .., m} verio cando M in{aij , 0} > bi
jL jF

aij xj

14

4.6.1.

Algoritmo de Balas

PASO 1

Determinar cota inferior

Sea fL la cota inferior. Puede ser el valor de la f. objetivo de una solucin o factible. Si no se conoce ninguna, tomar, fL = . L = {1, 2, ..., n} F = PASO 2 Fijar una variable libre.

Sea k L. Determinar dos soluciones parciales con los valores 0 y 1 para xk . F = F {k} L = L {k}. PASO 3 Determinar cota superior.

Para cada subproblema determinar la cota superior fU =


jF

cj xj +
jL

cj

PASO 4

Anlisis de soluciones parciales. a

Para toda solucin parcial: excluirla si se verica una de las condiciones: o fU < fL No hay complementos factibles. Si la solucin parcial est completada y fU > fL = fL = fU . En este o a caso, sta ser la mejor solucin obtenida. e a o PASO 5 Test de nalizacin o

Dos opciones:

15

Todas las soluciones parciales han sido exclu das: solucin ptima es la o o mejor obtenida. Hay ms soluciones parciales no exclu a das. Ir al paso 2. Ejemplo 4.6.1 Sea el siguiente problema de programacin 01: o M ax s.a. 4 x1 3 x2 + 2 x3 x1 x2 + x3 1 3 x1 x2 x3 0 xi {0, 1}

4.7.

Mtodos de planos de corte. e

En esta seccin se estudian los algoritmos de resolucin del modelo de prograo o macin entera basados en la introduccin de restricciones vlidas o cortes. o o a Una inecuacin o corte x 0 es vlido para el recinto S de soluciones o a factibles enteras si se verica que x 0 x S Observemos que, a diferencia del mtodo de ramicacin y acotacin, que divid el recinto S, se trata de limitar e o o a la parte continua de S sin eliminar ninguna solucin factible entera. o La parte entera de un nmero real ser denotada por [a], de forma que u a a = [a] + fa 0 fa < 1

16

4.8.

Programacin totalmente entera o

El algoritmo que se desarrollar a continuacin exige que todas las variables de a o decisin y todos los coecientes que aparecen en el modelo, matriz A y vectores c o y b, sean enteros.

M in s.a.

ct x Ax = b x0 x entera

(P.L.E.)

4.8.1.

Corte asociado

Sea xs la variable que en el ptimo de la relajacin continua no alcanza un o o valor entero xs = xs = [xs ] + fs , 0 < fs < 1 La ecuacin asociada en la tabla del simplex a la variable xs o xs +
jJ

ysj xj = xs

al exigir a xs que sea entera se transforma en xs = xs


jJ

ysj xj Z Z

Sustituyendo en esta ecuacin las variables por su parte entera ms su parte o a fraccional, se tiene: [xs ] + fs
jJ

xj ([ysj ] + fj ) Z Z

que es equivalente a fs
jJ

xj fj z Z Z

17

este valor debe ser menor o igual que 0, puesto que en caso contrario, al ser entero: fs
jJ

fj xj 1
jJ

fj xj fs 1 < 0

y esto es absurdo por ser

fj xj 0.

Introduciendo, pues, la variable ys = z 0, se tiene denido el corte: fj xj + ys = fs


jJ

Al aadir esta restriccin a la tabla ptima del simplex del problema relajado n o o continuamente, al ser las variables secundarias nulas, el valor asignado a la variable de holgura es ys = fs < 0, por lo que se aplica el algoritmo dual para intentar corregir esta situacin. o Ejemplo 4.8.1 M in s.a. 4 x1 6 x2 x1 + x2 1 x1 + 3 x2 9 3 x1 + x2 15 x1 , x2 0 enteras

Al sacar la variable de holgura ys de la base con el algoritmo dual no se garantiza que la variable del corte xs sea entera; es preciso, adems, que la variable a secundaria xk que entra sustituyendo a ys sea entera, en caso contrario, habr que a introducir otro corte anlogo al anterior para dicha variable. a Ejemplo 4.8.2 Considerese el siguiente problema:

18

M ax s.a.

x 1 + 2 x2 x 1 + x2 5 x1 x2 0 2/3 x1 + 2 x2 7 xi 0 i (enteras)

Pasamos a coecientes enteros: M ax s.a. x 1 + 2 x2 x 1 + x2 5 x1 x2 0 2 x1 + 6 x2 21 xi 0 i (enteras)

x1 x2 xh1 xh2 xh3 0 xh1 0 xh2 0 xh3 1 1 2 1 -1 6 1 0 0 0 0 1 0 0 0 0 1 0 5 0 21

-1 -2 Entra: x2 Sale: xh3

19

1 x1 0 xh1 0 xh2 2 x2 2/3 4/3 1/3 -1/3 Entra: x1 Sale: xh1 1 2

0 xh3 -1/6 3/2 1/6 1/6 1/3 7/2 7/2

x2 xh1 xh2 0 0 1 0 1 0 0 0 0 1 0 0

0 xh1 3/2 -2 -1/2 1/2

0 xh2 0 1 0 0

0 xh3 -1/4 1/2 1/4 1/4 9/4 1/2 11/4

x1 x2 1 x1 1 0 0 0 0 0 1 0

0 xh2 2 x2

9 11 SOLUCION OPTIMA: x1 = , x2 = . 4 4 Con lo cual las variables bsicas se pueden expresar como: a x1 : = 9/4 3/2 xh1 + 1/4 xh3 xh2 : = 1/2 + 2 xh1 1/2 xh3

x2 : = 11/4 + 1/2 xh1 1/4 xh3 As pues es posible construir planos de corte asociados a las variables x1 , xh2 , x2 .

20

Para x1 :

9 4 3 2

2+

1 1 f1 = 4 4

1+

1 1 f1,h1 = 2 2

1 3 3 = 1 + f1,h3 = 4 4 4 = 0+ 1 1 fh2 = 2 2

Para xh2 :

1 2

2 = 2 + 0 fh2 ,h1 = 0 1 2 Para x2 : 1 1 fh2 ,h3 = 2 2 3 3 f2 = 4 4

= 0+

11 = 4

2+

1 1 1 = 1 + f2,h1 = 2 2 2

1 1 1 = 0 + f2,h3 = 4 4 4 As el corte asociado a cada variable ser: a 1 3 1 x1 : xh1 + xh3 y 1 = 2 4 4 xh2 : 1 1 xh3 yh2 = 2 2 1 3 1 xh1 + xh3 s1 = 2 4 4

x2 :

Cul de los tres cortes aadiremos a la tabla ptima del simplex? a n o

21

En principio elegiremos el asociado a la variable bsica con mayor fs . a f1 = 1 1 3 fh2 = f2 = 4 2 4

Elegiremos por tanto el asociado a x2 : 1 1 3 xh1 + xh3 s1 = 2 4 4 1 2 0 xh1 3/2 -2 -1/2 -1/2 1/2 0 xh2 0 1 0 0 0 0 xh3 -1/4 1/2 1/4 -1/4 1/4 0 s1 0 0 0 1 0 9/4 1/2 11/4 -3/4

x1 x2 0 x1 1 0 0 0 0 Sale s1 y entra xh1 xh3 : o 1 2 0 0 1 0 0

0 xh2 0 0 x2 s1

x1 x2 xh1 xh2 xh3 s1 0 x1 1 0 0 0 0 Sale xh2 y entra xh1 : 0 0 1 0 0 2 -3 -1 2 0 0 1 0 0 0 0 0 0 1 0 -1 2 1 -4 1 3 -1 2 3

0 xh2 0 x2

0 xh3

22

0 xh2 2/3 -1/3 -1/3 2/3 0

0 xh3 0 0 0 1 0

0 s1 1/3 7/3

x1 x2 xh1 0 x1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0

0 xh1 0 x2

-2/3 1/3 1/3 7/3

0 xh3

-8/3 7/3 1 7

Al no ser entera hay que imponer otro plano de corte. Los valores fs asociados a las variables bsicas son: a 7 3 1 3 7 3 7 3 1 3 1 = 0+ 3 1 = 2+ 3 1 = 2+ 3 = 2+ 1 3 1 fh1 = 3 1 f2 = 3 1 fh3 = 3 f1 =

Se elige por ejemplo el plano asociado a la variable x2 : 7 1 1 = 2 + f2 = 3 3 3 1 2 2 = 1 + f2,h2 = 3 3 3 1 1 1 = 0 + f2,s1 = 3 3 3

As la ecuacin de plano de corte asociado a la variable x2 es: o 1 1 2 xh2 + s1 s2 = 3 3 3 Con lo cual la nueva tabla es:

23

0 xh2 2/3 -1/3 -1/3 2/3 -2/3 0

0 xh3 0 0 0 1 0 0

0 s1 1/3 -2/3 1/3 -8/3 -1/3 1

0 s2 0 0 0 0 1 0 7/3 1/3 7/3 7/3 -1/3 7

x1 x2 xh1 0 x1 1 0 0 0 0 0 Sale s2 y entra xh2 : 1 2 0 0 0 1 0 0 0 0 1 0 0 0 0

0 xh1 0 x2

0 xh3 0 s2

0 s1 0

0 s2 1 2

x1 x2 xh1 xh2 xh3 0 x1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0

0 xh1 0 x2

-1/2 -1/2 1/2 1/2 -3 1/2 1 -1/2 5/2 1 2

0 xh3 0 xh2

-3/2 1/2 0 7

Como no tenemos variables enteras imponemos un nuevo corte: Al ser fh1 = f2 = fh2 = 1/2 se puede construir un plano de corte asociado a cualquiera de ellas. La ecuacin del plano de corte asociado a xh1 es: o 1 1 1 s1 + s2 s3 = 2 2 2 Y la nueva tabla ser: a

24

0 s1 0

0 s2 1

0 s3 0 0 0 0 0 1 0 2 1/2 5/2 2 1/2 -1/2 7

x1 x2 xh1 xh2 xh3 0 x1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0

0 xh1 0 x2

-1/2 -1/2 1/2 -3 1/2 -1/2 1 -3/2

0 xh3 0 xh2 0 s3

-1/2 -1/2 1 0

Ahora aplicamos el algoritmo dual y sale s3 y entra s2 obteniendo la siguiente tabla: 1 2 0 0 0 0 0 0

x1 x2 xh1 xh2 xh3 s1 s2 s3 0 x1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 -1 0 1 -4 2 1 1 0 0 0 0 0 1 0 2 1

0 xh1 0 x2

-1 1 -1 3 2 1

0 xh3 0 xh2 0 s2

-3 2 -2 1 0 7

SOLUCION OPTIMA x1 = 1, x2 = 3, z = 7. Para expresar el primer plano de corte en trminos de x1 y x2 se observa que e las variables de holgura xh1 y xh3 en trminos de las variables de decisin x1 y x2 e o

25

se pueden expresar como: xh1 = 5 (x1 + x2 )

xh3 = 21 (2 x1 + 6 x2 ) que sustituyendo en el corte 1 1 3 xh1 + xh3 s1 = 2 4 4 queda s1 = 7 x1 2 x2 0 Para el segundo plano que se introduce queda s2 = 2 x1 0 y para el tercer plano s3 = 4 (x1 + x2 ) 0

26

Tablas resumidas del ejemplo. I x1 x2 z x1 x2 0 0 0 -1 -1 0 1 1 2 -2 0 -1 1 -1 6 z x1 II 7 0 x1 xh3 -1/3 -1 1/3 0 1/6 -1/6 1/6 -1 z x1 III 31/4 9/4 xh1 xh3 1/2 3/2 1/4 -1/4 1/4 0 1/2 -1 -1/4

x2 7/2 1/3 xh1 3/2 2/3 xh2 7/2 4/3 xh3 0 0

x2 11/4 -1/2 xh1 0 -1 -2 0

xh1 5 xh2 0 xh3 21

xh2 1/2 xh3 s1 0

-3/4 -1/2

27

VI xh1 s1 z x1 x2 xh1 7 3 2 0 0 2 -1 -1 -3 2 1 -1 1 0 2 -4 z x1 x2

V 7 7/3 7/3

xh2 s1 0 2/3 -1/3 1 1/3 1/3 z x1 x2

VI 7 2

s2 s1 0 1 1 0

5/2 -1/2 1/2

xh1 1/3 xh2 0

-1/3 -2/3 -1 2/3 0 -8/3

xh1 1/2 -1/2 -1/2 xh2 1/2 -3/2 1/2 xh3 2 1 -3

xh2 -1 xh3 3

xh3 7/3

s2 -1/3 -2/3 -1/3

s3 -1/2 -1/2 -1/2

VII s3 s1 z x1 x2 xh1 xh2 xh3 7 1 3 1 2 1 0 2 -1 -1 -3 2 1 -1 1 0 2 -4

La reiteracin de este proceso da lugar al siguiente algoritmo: o

28

4.8.2.

Algoritmo fraccional c o clico

PASO 1 Resolver la relajacin continua o Sea x la solucin ptima. o o PASO 2 Hay dos opciones: Si la solucin actual x es entera: Solucin ptima. FIN: o o o En caso contrario, sea xs una componente no entera tal que xs = [xs] + fs. La eleccin de esta variable entera se ajusta a o lo explicado en la observacin anterior. o (a) Se introduce el corte fj xj ys = fs

(b) Se aplica el algoritmo dual al problema ampliado (c) Con la nueva solucin obtenida x, repetir este paso. Las vario ables de holgura ys han de ser enteras tambin. Si en la aplie cacin del algoritmo dual alguna variable se hace negativa, o pivotar de nuevo antes de introducir otro corte. Ejemplo 4.8.3 M ax s.a. 4 x1 + 5 x2 + x3 3x1 + 2x2 x1 + 4 x2 10 11

29

3 x1 + 3 x2 + x3 = 13 x1, x2, x3 0 enteras

4.9.

Programacin entera mixta o

En muchos problemas de programacin se mezclan variables enteras y o continuas, es el modelo de programacin entera mixta: o

M in

ct x + ht y

(P.L.E.M )

s.a. A x + G y = b x, y 0 x entera

Al no exigir que todas las variables sean enteras, el corte introducido en el modelo anterior no es vlido. a El esquema inicial de resolucin, sin embargo, es el mismo: se resuelve o la relajacin continua del problema y si todas las restricciones de inteo gralidad se verican, ya se ha obtenido la solucin ptima del problema. o o En caso contrario, hay que distinguir entre aquellas que son enteras y las que son continuas.

30

4.9.1.

Corte asociado

Sea xi una varaible entera de forma que la solucin ptima de la relao o jacin continua da un valor no entero xi = [xi] + fi, con 0 < fi < 1. La o ecuacin isima del sistema expl o e cito queda: xi + equivalente a
jJ

jJ

yij xj = [xi] + fi

yij xj = fi + ([xi] xi)

El conjunto de sub ndices J se descompone segn J = J + J , donde u J + = {j J/yij 0} J = {j J/yij < 0} A continuacin se seleccionar un corte que excluya el valor xi de la o a solucin ptima. Se distinguirn dos casos: o o a 1. xi > [xi] Como xi debe ser entero, [xi] xi en un entero negativo y, alser 0 fi < 1, fi + ([xi] xi) fi 1 Por consiguiente,
jJ +

yij xj +

jJ

yij xj fi 1

jJ +

yij xj 0

jJ

yij xj fi 1

31

de donde se deduce fi yij xj fi fi 1 jJ y al aadir el trmino asociado a J + queda el corte n e yij xj + fi yij xj fi jJ fi 1

jJ +

2. xi [xi] En este caso, al vericarse fi < 1 y [xi] xi ser entero, se deduce que [xi] xi 0 y la restriccin se convierte en o
jJ +

yij xj +

jJ

yij xj fi

Por la denicin de J y al ser 0 fi < 1, se verica o


jJ

yij xj 0

fi yij xj fi 1 jJ

y se concluye tambin e yij xj + fi yij xj fi fi 1 jJ

jJ +

Por consiguiente, en ambos casos, el corte asociado es yij xj fi yij xj + ui = fi fi 1 jJ

jJ +

de forma que anular todas las variables secundarias, la variable de holgura ui < 0 y debe ser sacada de la base por el algoritmo dual.

32

En resumen, en el caso en que todas la variables secundarias sean continuas, se introduce el corte:
jJ

dj xj + ui = fi

donde:

yij yij 0 dj = fi yij yij < 0 fi 1 No obstante, en el caso general, en que alguna de las variables secundarias deba ser entera , el corte anterior ser a: ui = fi + donde (yij = [yij ] + gij ):

jJ

dj xj

dj =

yij fi yij fi 1 gij

yij 0 yij < 0

xj real xj real

gij fi xj entero

fi (gij 1) gij > fi xj entero fi 1 M in s.a. 5 x1 6 x2 10 x1 + 3 x2 52 2 x1 + 3 x2 18 x1, x2 0 x1 entera

Ejemplo 4.9.1

Potrebbero piacerti anche