PES Pesquisa Operacional
Prof. Milton Procópio de Borba
Originais do Prof. Fernando Deeke Sasse
6. Análise de Sensitividade e Dualidade
6.1 Mudanças nas restrições e preços duais
Voltemos ao problema da fábrica de brinquedos, ou seja
max
,
,
( limites de capacidade de produção de cada departamento)
( limite das peças especiais)
Sabemos da solução do problema original que é ótimo produzir
= 48 carros de brinquedo e
= 60 trens de brinquedo, resultando num lucro diário de
z = $3840. Com esta solução a capacidade do departamento de trens é utilizada completamente. Queremos saber agora se é desejável adquirir recursos adicionais e aumentar a capacidade de produção do departamento de trens.
Vamos supor que a capacidade de produção de trens é aumentada por 10 unidades, para 70.
Temos então o novo problema
max
,
,
> restart:
> with(simplex):
Warning, the protected names maximize and minimize have been redefined and unprotected
> Rest:=[ x1 <= 90, x2 <= 70,5*x1+6*x2 <= 600, x1>=0,x2>=0];
> z:=30*x1+40*x2;
> sol:=maximize(z,Rest);
> assign(sol);
> z;
>
Portanto, com uma capacidade extra de 10 unidades no departamento de trens, é agora ótimo produzir 36 carros, 70 trens, com um lucro diário z = $3880. Portanto, o máximo lucro aumentou em $40. Isso implica que o aumento marginal no lucro para um aumento unitário na capacidade do departamento de trens é $40/10 = $4. Este valor é denominado preço dual da capacidade de produção do departamento. Se o custo marginal do aumento da capacidade neste departamento é menor do que o benefício marginal de $4, então a gerência deveria aumentar a capacidade, pois o benefício líquido é positivo.
Para pequenos aumentos na capacidade disponível do departamento de trens, observamos que o preço dual é $4. Não devemos esperar que este resultado aplique-se independentemente do aumento de capacidade. Vamos examinar aumentos de capacidade em intervalos de 10 unidades e observar o lucro:
Podemos observar que se, por exemplo, a nova capacidade é
110 , a solução ótima é
,
e z = $4000. Portanto, para um aumento de 50 unidades na capacidade, o lucro máximo aumenta em $4000 - $3840 = $160, implicando que o benefício marginal por unidade é agora $160/50 = $3.20. É fácil explicar tal comportamento observando a solução gráfica, que mostra que para uma capacidade de produção de trens acima de 100, a restrição das partes especiais as torna redundantes. Neste caso é imediato que para manter o preço dual em $4.00, devemos utilizar uma capacidade de produção de trens de no máximo 100 unidades. Vamos apresentar o tratamento a ser utilizado no caso geral, e determinar o intervalo na capacidade de modo a manter o preço dual em $4.00.
Do método manual sabemos que a solução ótima para o problema original é obtida pela relação
, onde B =
. Vamos estabelecer as possíveis variações na capacidade de produção, alterando
e examinando as possíveis variações na capacidade de produção de trens.
> restart;
> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
> sistema:=[x[1]+x[3]=90,x[2]+x[4]=60+Delta[2],5*x[1]+6*x[2]+x[5]=600];
> A:=genmatrix(sistema,[x[1],x[2],x[3],x[4],x[5]],b):
> evalm(b);
> for j to 5 do a[j]:=col(A,j) od;
> B:=augment(a[1],a[2],a[3]);
> xB:=evalm(B^(-1)&*b);
> solve({seq(xB[i]>=0,i=1..3)});
Obviamente, a solução
é a que otimiza o lucro.
Exercício 6.1
Determine o intervalo de possível variação da capacidade de fornecimento de peças especiais, assim como
o respectivo preço dual.
6.2 Mudanças nos coeficientes da função objetivo
O segundo problema em análise de sensitividade está relacionado com os efeitos das mudanças na solução decorrentes de variações nos coeficientes da função objetivo. Por exemplo, vamos supor que, devido a economias de custo no departamento de carros de brinquedo, o lucro por unidade passa de $30 a $35. Em que isso muda a solução original? Resolvendo o problema novamente verificamos que a solução ótima muda de vértice:
,
e z = $4150. Portanto, para este aumento de $5 no lucro unitário
, a solução ótima se modifica.Por outro lado, se o aumento em
for muito pequeno, digamos, $2, a solução ótima ainda mudará ? De modo mais geral, para qual intervalo de valores
(intervalo de optimalidade) a solução ótima permanecerá inalterada ?
Vamos supor que o lucro de cada carro é
, onde
é a quantidade que mede a variação do lucro por unidade. Portanto, o vetor de preço agora torna-se
= (30 +
, 40,0,0,0) .
Esta mudança em
afeta os valores de
, e portanto os valores de
no algoritmo simplex. Para que a solução ótima permaneça inalterada, devemos ter
(para que processo termine no mesmo ponto). Vamos resolver este problema no Maple:
> restart:
> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
> sistema:=[x[1]+x[3]=90,x[2]+x[4]=60,5*x[1]+6*x[2]+x[5]=600];
> A:=genmatrix(sistema,[x[1],x[2],x[3],x[4],x[5]],b):
> c:=vector(5,[30+theta[1],40,0,0,0]);
> for j to 5 do a[j]:=col(A,j) od;
> B:=augment(a[1],a[2],a[3]);
> xB:=evalm(B^(-1)&*b);
> cB:=[30+theta[1],40,0];
> for j to 5 do
> y[j]:=evalm(B^(-1)&*a[j]);
> z[j]:=evalm(cB&*y[j]);
> od;
> ineg:={seq(c[j]-z[j]<=0,j=1..5)};
> solve(ineg);
Portanto, alterações no lucro por unidade de carros em até 3.33 não alteram a optimalidade do problema.
Exercício 6.2
Determine o máximo aumento possível no lucro por unidade de trens.
Exercício 6.3
Faça análises similares (alterar restrições e coeficientes da função objetivo)
para o problema das duas minas.