Está en la página 1de 2

PROBLEMAS DE, DUALIDAD Y ANALISIS DE SENSIBILIDAD CON LA FUNCION

lp DEL PAQUETE DE R lpSolve EJEMPLO 1: PROBLEMA CON SOLUCION UNICA


El siguiente problema tiene solucion unica x1 = 1, x2 = 1, con valor de la
funcion objetivo 13 Min z = 5x1 + 8x2 sujeto a x1 + x2 2 x1 + 2x2 3 x1,
x2 0 Resolucion con R R> library(lpSolve) R> Ejemplo1 <lp(objective.in=c(5,8), const.mat=matrix(c(1,1,1,2),nrow=2, byrow=TRUE), +
const.rhs=c(2,3), const.dir=c(>=,>=)) R> Ejemplo1 Success: the objective
function is 13 R> Ejemplo1$solution [1] 1 1 EJEMPLO 2: PROBLEMA INFACTIBLE
El siguiente problema tiene solucion unica x1 = 1, x2 = 1, con valor de la
funcion objetivo 13 Min z = 5x1 + 8x2 sujeto a x1 + x2 2 x1 + 2x2 1 x1,
x2 0 Resolucion con R R> library(lpSolve) R> Ejemplo2 <lp(objective.in=c(5,8), const.mat=matrix(c(1,1,1,2),nrow=2, byrow=TRUE), +
const.rhs=c(2,1), const.dir=c(>=,<=)) R> Ejemplo2 Error: no feasible
solution found R> Ejemplo2$status [1] 2 1 EJEMPLO 3: PROBLEMA CON
OPTIMOS ALTERNATIVOS Esta funcion no identifica cuando un problema tiene
optimos alternativos. Por ejemplo, para Min z = 4x1 + 8x2 sujeto a x1 + x2
2 x1 + 2x2 3 x1, x2 0 son soluciones (1,1) y (3,0) y, por tanto, cualquier
punto del segmento que los une. Sin embargo, al aplicar la funcion anterior a
este problema, resulta: R> library(lpSolve) R> Ejemplo3 <lp(objective.in=c(4,8), const.mat=matrix(c(1,1,1,2),nrow=2, byrow=TRUE), +
const.rhs=c(2,3), const.dir=c(>=,>=)) R> Ejemplo3 Success: the objective
function is 12 R> Ejemplo3$solution [1] 3 0 EJEMPLO 4: PROBLEMA CON
SOLUCION NO ACOTADA Cuando el problema tiene solucion no acotada, da
error. Por ejemplo para Max z = 5x1 + 8x2 sujeto a x1 + x2 2 x1 + 2x2 3
x1, x2 0 Resolucion con R R> library(lpSolve) R> Ejemplo4 <lp(direction=max, objective.in=c(5,8), +
const.mat=matrix(c(1,1,1,2),nrow=2, byrow=TRUE), + const.rhs=c(2,3),
const.dir=c(>=,>=)) R> Ejemplo4 Error: status 3 EJEMPLO 5: CASO DE
VARIABLES NO NECESARIAMENTE NO NEGATIVAS Esta funcion no contempla el
caso en que haya variables no necesariamente no negativas. La forma de
abordar este problema con la funcion lp() es la habitual transformacion
previa. Min z = x1 + 10x2 sujeto a 2 x1 + x2 2 x1 x2 3 x1 0 Hacemos
x2 = x3 x4, con x3, x4 0 y el problema se transforma en Min z = x1 +
10x3 10x4 sujeto a x1 + x3 x4 2 x1 x3 + x4 3 x1, x3, x4 0
Resolucion con R R> library(lpSolve) R> Ejemplo5 <- lp(objective.in=c(1,10,10), + const.mat=matrix(c(1,1,-1,1,-1,1,nrow=2, byrow=TRUE), +
const.rhs=c(2,3), const.dir=c(>=,<=)) R> Ejemplo5 Success: the objective
function is -2.5 R> Ejemplo5$solution [1] 2.5 0.0 0.5 Y la solucion al problema
original es x1 = 2,5 y x2 = 0 0,5 = 0,5 EJEMPLO 6: DUALIDAD Y ANALISIS
DE SENSIBILIDAD Las siguientes tablas del simplex son la tabla inicial y
optima de un problema en forma estandar de maximizar. TABLA INICIAL cB 0
0 cj 15 30 20 0 0 V B x1 x2 x3 s1 s2 xB s1 1 0 1 1 0 4 s2 0,5 2 1 0 1 3 TABLA
OPTIMA cB 15 30 cj 15 30 20 0 0 V B x1 x2 x3 s1 s2 xB x1 1 0 1 1 0 4 x2 0 1
0,25 0,25 0,5 0,5 zj cj 0 0 2,5 7,5 15 Z = 75 3 a) Cual es el precio sombra

asociado a la segunda restriccion? Que significa? b) Determinar el rango de


variacion de cada uno de los coeficientes de la funcion objetivo para que la
solucion siga siendo optima. c) Determinar el rango de variacion de cada
uno de los recursos para que la solucion siga siendo optima. Resolucion con
R R> library(lpSolve) R> Obj.Ej6<-c(15,30,20) R> Mat.Ej6<matrix(c(1,0,1,0.5,2,1),nrow=2,byrow=TRUE) R> Dir.Ej6<-c(<=,<=) R>
Rec.Ej6<-c(4,3) R> Sol.Ej6<lp(direction=max,objective.in=Obj.Ej6,const.mat=Mat.Ej6,const.dir=Dir.Ej6,
+ const.rhs=Rec.Ej6,compute.sens=1) R> Sol.Ej6$solution [1] 4.0 0.5 0.0 R>
Sol.Ej6$sens.coef.from [1] 1.25e+01 2.00e+01 -1.00e+30 R>
Sol.Ej6$sens.coef.to [1] 1.00e+30 6.00e+01 2.25e+01 R> Sol.Ej6$duals [1] 7.5
15.0 0.0 0.0 -2.5 R> Sol.Ej6$duals.from [1] -8.881784e-16 2.000000e+00
-1.000000e+30 -1.000000e+30 -1.000000e+30 R> Sol.Ej6$duals.to [1] 6e+00
1e+30 1e+30 1e+30 2e+00 Las respuestas son: a) El precio sombra asociado
a la segunda restriccion es 15 (elemento zj cj correspondiente a la segunda
variable de holgura en la tabla optima y se corresponde con el segundo
elemento del resultado de solicitar Sol.Ej6$duals en R). Significa el incremento
que se produce en el valor optimo de la funcion objetivo cuando el segundo
recurso se incrementa en una unidad. O bien, la contribucion por unidad del
segundo recurso a la variacion del valor optimo del objetivo. b) Considerando
un valor c1 arbitrario para que la tabla siga siendo optima (nuevos zjcj 0)
se debe cumplir c1+300,2520 0 y c10,2530 0, es decir, c1 12,5.
Dicho resultado se deduce a partir de los primeros elementos de
Sol.Ej6$sens.coef.from y Sol.Ej6$sens.coef.to, 1.25e+01 (12.5) y
1.00e+30(equivalente a +), respectivamente. Considerando un valor c2
arbitrario para que la tabla siga siendo optima (nuevos zj cj 0) se debe
cumplir 15 + 0,25c2 20 0, 15 0,25c2 0 y 0,5c2 0, es decir, 20 c2
60. Dicho resultado se deduce a partir de los segundos elementos de 4
Sol.Ej6$sens.coef.from y Sol.Ej6$sens.coef.to, 2.00e+01 (20) y 6.00e+01(60),
respectivamente. c) Obtenemos el nuevo valor de xbB en cada uno de los
casos e imponemos factibilidad Recurso 1 xbB = 1 0 0,25 0,5 bb1 3 =
bb1 0,25bb1 + 1,5 ! Se deduce que se debe cumplir bb1 0 y 0,25bb1 +
1,5 0, es decir, 0 bb1 6, en cuyo caso la solucion x1 = bb1, x2 =
0,25bb1 + 1,5 sigue siendo optima con Z = 15 bb1 + 30(0,25bb1 +
1,5). El resultado 0 bb1 6 se deduce de los primeros elementos de
Sol.Ej6$duals.from y Sol.Ej6$duals.to, -8.881784e-16 (0) y 6e+00,
respectivamente. Recurso 2 xbB = 1 0 0,25 0,5 4 bb2 = 4 0,5bb2
1 Se deduce que se debe cumplir 0,5bb2 1 0, es decir, bb2 2. As, si
bb2 (2, +), la solucion x1 = 4, x2 = 0,5bb2 1 sigue siendo optima con
Z = 15 4 + 30(0,5bb2 1). El resultado bb2 2 se deduce de los
segundos elementos de Sol.Ej6$duals.from y Sol.Ej6$duals.to, 2.000000e+00
(2) y 1e+30 (equivalente a +), respectivamente.

También podría gustarte