Escolar Documentos
Profissional Documentos
Cultura Documentos
Discente:
André Antão – 19556
Docente:
João Luís de Miranda
Índice de Anexos
v
Estudo de um Problema de Programação Linear
Índice Geral
vi
Estudo de um Problema de Programação Linear
vii
Estudo de um Problema de Programação Linear
Índice de Expressões
viii
Estudo de um Problema de Programação Linear
Índice de Quadros
ix
Estudo de um Problema de Programação Linear
Índice de Gráficos
x
Estudo de um Problema de Programação Linear
Introdução
11
Estudo de um Problema de Programação Linear
Abstract
In various circumstances of business life and, in many cases, of personal life, there is
a need to seek, among several possible solutions to a given problem, the optimal solution.
This, in turn, must satisfy an objective, considering the constraints imposed by limitations
on the variables of the problem. In this context, linear programming arises, which consists
of a technique whose objective is to optimize linear functions, subject to restrictions, also,
linear.
Since the Operational Research for Management curricular unit is a theoretical-
practical discipline, we also sought to develop this work to create a link between the most
important theoretical aspects and the resolutions themselves, of a practical nature.
In this academic work, I set out to develop a problem of linear programming, through
its formulation, implementation and interpretation of values, with the various techniques and
methodologies taught in the classroom, and which consist, in general, in graphic resolution,
simplex method (tableau and matrix form), duality and existing relationships between primal
and dual problems, using, for this purpose, some computational resolution tools, which help
not only as validation tools and measurement of the values obtained, but also in the
interpretation of the values, since they produce reports that enable it.
In the end, some conclusions are also presented regarding the critical aspects of the
preparation and development of this academic work.
12
Estudo de um Problema de Programação Linear
Uma das principais tarefas dos gestores é a capacidade para tomarem decisões. Por
vezes, para que estes consigam dar resposta a problemas com dimensões significativas
e/ou elevado grau de complexidade, é necessário que existam ferramentas fiáveis e
eficazes que os apoiem nessa responsabilidade. Para dar resposta a essa necessidade,
surge a Investigação Operacional, que se trata de uma abordagem científica direcionada à
tomada de decisão e que se socorre de modelos matemáticos para esse efeito.
A Investigação Operacional foca-se no estudo de problemas a nível da afetação de
recursos escaços, na medida em que estes, precisamente por serem limitados, devem ser
alocados da melhor forma possível e de acordo com as necessidades da organização. Os
modelos matemáticos, dos quais a Investigação Operacional se suporta, visam otimizar
recursos através da minimização ou maximização de funções compostas por um
determinado conjunto de restrições. Dessa forma, começa a ser estudado e analisado, em
meados do século XX, em plena Segunda Grande Guerra, o ramo científico da
Investigação Operacional a que se denomina de Programação Linear. Esta, por sua vez,
consiste na resolução de problemas de otimização através de sistemas de inequações
lineares.
Os militares da altura depararam-se com problemas diversos a nível logístico, tanto
no alojamento como na manutenção dos exércitos. Assim, em 1947, George Dantzig, em
conjunto com o grupo de trabalho SCOOP (Scientific Computation of Optimum Programs)
da Força Aérea Americana, desenvolveu um algoritmo de resolução de problemas de
Programação Linear denominado Algorítmo do Simplex, ou método do Simplex. Este
método, trata-se se um mecanismo robusto e eficaz para solucionar problemas com um
elevado número de variáveis e equações.
Atualmente, na maioria dos casos, a Programação Linear é utilizada por grandes
organizações como fonte de vantagem competitiva, na medida em que possibilita o
processamento e a gestão dos recursos e meios da empresa em tempo real, levando a
uma redução sistemática dos custos de produção e a um aumento da eficiência e
produtividade geral.
13
Estudo de um Problema de Programação Linear
Para além das noções, gerais e abstratas, mais importantes num programa de
programação linear, importa ainda conhecer as características que estão implícitas em
qualquer modelo de programação linear:
➢ Proporcionalidade: a contribuição de cada atividade para o objetivo é
proporcional ao nível próprio da atividade;
➢ Aditividade: o valor global, do objetivo ou de utilização de recursos, obtem-se da
adição das contribuições individuais das diferentes atividades;
➢ Continuidade ou divisibilidade: a variáveis de decisão podem assumir valores
fracionários.
Por se considerar que estas noções e características servem como base de suporte
à interpretação do conteúdo, e que não constituem o foco do trabalho académico, e sim
como complemento deste, optou-se por colocar apenas as suas definições, a partir da
sebenta da unidade curricular.
14
Estudo de um Problema de Programação Linear
15
Estudo de um Problema de Programação Linear
Unidades de Disponibilidade
participação do monetária para o
produto B produto B
Unidades de Disponibilidade
Unidades de
monetária para
participação do participação do
produto A ambos os
produto B
produtos
16
Estudo de um Problema de Programação Linear
A análise que visa definir ao certo a aplicação que maximiza o lucro, e à qual se
dedicam os seguintes capítulos, deve ter em consideração alguns fatores para a
construção do sistema de tomada de decisão. Ou seja, para que se possa tomar a melhor
decisão possível quanto à aplicação financeira a realizar, devem-se ter bem definidos, à
priori, os aspetos sobre os quais se vai decidir.
Nesse âmbito, destacam-se duas variáveis:
17
Estudo de um Problema de Programação Linear
Expressão 1 – Modelo de PL
18
Estudo de um Problema de Programação Linear
A função objetivo é uma função linear, que tanto pode ser de minimização como de
maximização, e que surge na perspetiva daquilo que se pretende otimizar.
Neste caso em concreto, tem-se uma função de maximização, cujas variáveis de
decisão, A e B, correspondem ao número de unidades de participação dos produtos A e
B, respetivamente, sendo Z o lucro total (rentabilidade global) proveniente da aplicação
financeira efetuada pelo investidor. Dessa forma, o objetivo será determinar valores para
os quais as variáveis definidas anteriormente maximizam a função:
Z = 0,7 A + 0,9 B
A função objetivo do problema em análise trata-se de uma função de maximização
(Z) com coeficientes 0,7 e 0,9, que dizem respeito às variáveis de decisão A e B,
respetivamente.
A ≥ 3B
B 25.000
A + B 80.000
3.2.3. Aproximações
19
Estudo de um Problema de Programação Linear
⇔ A ≥ B ⇔
⇔ A + 3B ≥ 0 ⇔
⇔ -A + 3B 0
A, B ≥ 0
20
Estudo de um Problema de Programação Linear
3.2.5. Simplificações
É percetível que a formulação final assume, tanto valores muito pequenos, como por
exemplo os coeficientes da função objetivo, com também valores demasiado grandes,
como por exemplo os valores que se encontram do lado direito das desigualdades. Na
tentativa de tornar a modelação matemática mais elucidativa e uniforme, optou-se por tratar
os coeficientes da função objetivo em unidades, bem como os valores que se encontram
do lado direito das desigualdades em milhares de unidades. Como resultado desta
alteração, surge uma nova formulação, como versão final do modelo de programação
linear:
Maximizar Z = 7A + 9B
Sujeito a, -1A+3B 0
1 B 25
1 A + 1 B 80
A, B ≥ 0
3333333
Fonte: Elaboração própria
21
Estudo de um Problema de Programação Linear
Primeira restrição:
-A + B 0
Transformando a desigualdade numa igualdade, obtém-se:
-A + 3B = 0
Já que uma linha reta pode ser traçada graficamente por dois pontos, atribuiu-se o
valor de zero à variável A (A = 0 ⇒ 3 B = 0 ⇔ B = 0) o que faz com que a variável B
assuma o valor 0, dando origem ao ponto (0 , 0). De igual forma, atribuiu-se o valor de zero
à variável B (B = 0 ⇒ - A = 0 ⇔ A = 0) assumindo a variável A valor 0, originando o ponto
(0 , 0).
22
Estudo de um Problema de Programação Linear
Segunda restrição:
B 25
Adotando um procedimento análogo ao utilizado na primeira restrição, obtém-se:
B = 25
Uma vez que a equação é composta apenas pela variável B, assume-se que B = 25
⇔ B = 25), e obtém-se o ponto (25, 0) para aquela variável.
Terceira restrição:
A + B 80
Convertendo a desigualdade numa igualdade, obtém-se:
A + B = 80
E logo, para traçar um segmento de reta que represente esta restrição, assume-se
para a variável A um valor igual a 0 (A = 0 ⇒ B = 80 ⇔ B = 80), o que dá origem ao ponto
(0, 80). Também nesta perspetiva, se se considerar um valor igual a zero para a variável
B, então: (B = 0 ⇒ A = 80 ⇔ A = 80) e obtém-se o ponto (80, 0).
Uma vez concluída a análise das restrições do problema e identificados os pontos
que permitem traçar os segmentos de reta no gráfico, utilizou-se o software “IOR Tutorial”
para traçar uma representação gráfica válida do problema (Anexo 1). O gráfico obtido
nesse programa pode ser representado da seguinte forma:
Gráfico 1 – Representação gráfica do problema
1ª Linha -A+3B=0 -
2ª Linha A + B = 80 A = 80 - B
Pelo que…
- (80 - B) + 3 B = 0 ⇔
⇔ (- 80) + B + 3 B = 0 ⇔
⇔ 4 B = 80 ⇔
⇔ B = 20
Logo…
A + B = 80 ⇔
⇔ A + 20 = 80 ⇔
⇔ A = 60
O vértice B está, dessa forma, demarcado no ponto (60, 20), que corresponde ao
vértice ótimo (solução ótima) do problema e que pode ser verificado da seguinte maneira:
24
Estudo de um Problema de Programação Linear
25
Estudo de um Problema de Programação Linear
Do problema inicial (Expressão 1), composto por duas variáveis (n = 2) e por três
restrições (m = 3), resulta a seguinte forma canónica:
Maximizar Z = 7 A + 9 B + 0 s1 + 0 s2 + 0 s3
Sujeito a, - A + 3 B + 1 s1 = 0
B + 1 s2 = 25
A + B + 1 s3 = 80
A, B, s1, s2, s3 ≥ 0
s1 = (– A) – 3 B
s2 = 25 – B
s3 = 80 – A – B
Adicionadas as variáveis de folga ao problema inicial, constata-se que este fica agora
composto por cinco variáveis (n = 5) e três equações (m = 3), o que o torna um problema
indeterminado, já que (n > m), podendo-lhe corresponder mais do que uma solução. Dessa
maneira, para que o problema possa ser resolvido, deve-se achar a diferença entre o
número de variáveis e o número de equações (n – m), já que só assim é possível calcular
os “graus de liberdade”, ou seja, o número de variáveis que terão de ser anuladas
(atribuição de valor nulo) no sistema para que a igualdade entre variáveis e equações se
verifique (n = m).
O problema atual (Expressão 3), em que (n > m) ⇔ (5 > 3), dá origem a (n – m) ⇔
(5 – 3) = 2 graus de liberdade, ou seja, há duas variáveis a que se deve atribuir valor nulo
(variáveis não-básicas), já que não entram na base da solução. Por sua vez, as restantes
três variáveis (variáveis básicas) são aquelas que, tendo valores não nulos, entram nada
base da solução (solução básica).
26
Estudo de um Problema de Programação Linear
Maximizar Z = 7 A + 9 B + 0 s1 + 0 s2 + 0 s3
Sujeito a, - A + 3 B + 1 s1 = 0
B + 1 s2 = 25
A+3B + 1 s3 = 80
A, B ≥ 0
27
Estudo de um Problema de Programação Linear
Logo…
s1 = 0
A=0
s2 = 25 e Z=0
B=0 s3 = 80
Para que seja possível melhorar o objetivo é necessário que se aumentem também
os valores de uma das duas variáveis não-básicas, já que são estas as variáveis que
apresentam quocientes positivos na função objetivo e, por esse motivo, possibilitam o
aumento da rentabilidade da solução.
Com vista a melhorar o objetivo do sistema, seleciona-se uma nova variável para
entrar na base. A primeira etapa a ter em consideração para esse efeito é a de escolher a
variável que apresenta coeficiente mais elevado na função objetivo e dessa forma
seleciona-se a variável B para entrar na base. A segunda etapa, depois de definir a variável
que entra na base da solução, é definir a variável que sai da base e, para esse efeito,
utiliza-se o teste da razão mínimo. Este, por sua vez, consiste em selecionar o valor mínimo
do apuramento das razões entre o lado direito das igualdades e as variáveis básicas:
Da seleção da variável que entra na base da solução (B) e da variável que sai (s1),
obtém-se o seguinte quadro:
Base A B s1 s2 s3 b
L1 s1 -1 3 1 0 0 0
L2 s2 0 1 0 1 0 25
L3 s3 1 1 0 0 1 80
L4 Z -7 -9 0 0 0 0
28
Estudo de um Problema de Programação Linear
Selecionado o pivot (3), procede-se à divisão de toda a L1 pelo seu valor (L1 ⇒ L1
÷ 3), de forma a que este passe a assumir coeficiente 1, como se pode verificar no quadro
seguinte:
Base A B s1 s2 s3 b
L1 s1 - 1/3 1 1/3 0 0 0
L2 s2 0 1 0 1 0 25
L3 s3 1 1 0 0 1 80
L4 Z -7 -9 0 0 0 0
Base A B s1 s2 s3 b
L1 B - 1/3 1 1/3 0 0 0
L2 s2 1/3 0 - 1/3 1 0 25
L3 s3 4/3 0 - 1/3 0 1 80
L4 Z -10 0 3 0 0 0
A solução não é ótima e ainda pode melhorar, já que na linha do objetivo (L4) ainda
se encontra um valor que, estando no simétrico (- 10), corresponde a (+ 10) e, assim sendo,
29
Estudo de um Problema de Programação Linear
Tem-se que:
B=0
s1 = 0
s2 = 25 e Z=0
A=0 s3 = 80
θ1 = 0/(-1/3) = n.d.
θ2 = 25/(1/3) = 75
θ3 = 80/(4/3) = 60 A variável s3 sai da
base e passa a
variável não-básica.
Seleciona-se o pivot, neste caso 1, e divide-se toda a sua linha correspondente pelo
seu valor (L3 ⇒ L3 ÷ 4/3), de forma a que este passe a assumir coeficiente 1, como se
pode verificar no quadro seguinte:
Base A B s1 s2 s3 b
L1 B - 1/3 1 1/3 0 0 0
L2 s2 1/3 0 - 1/3 1 0 25
L3 s3 1 0 - 1/4 0 3/4 60
L4 Z -10 0 3 0 0 0
30
Estudo de um Problema de Programação Linear
Base A B s1 s2 s3 b
L1 B 0 1 1/4 0 1/4 20
L2 s2 0 0 - 1/4 1 - 1/4 5
L3 A 1 0 - 1/4 0 3/4 60
Chega-se dessa forma, na terceira iteração, à solução ótima. O objetivo não tem
agora valores positivos e dessa forma significa que esta é a solução ótima para este
problema de programação linear. A solução é composta por 60 milhares de unidades do
produto A (A = 60), por 20 milhares de unidades do produto B (B = 20) e por uma folga de
5 milhares de unidades para o produto B ( s2 = 5), o que perfaz uma rentabilidade de 600
centenas de euros (Z = 600).
Em suma, pode dizer-se que para chegar à solução ótima, ou seja, ao ponto em que
não é possível aumentar mais a rentabilidade da nossa solução, foi necessário, ao longo
do tratamento pela forma tabular, retirar da base inicial (colocar como variáveis não-
básicas) as variáveis de folga s1 e s3, enquanto se colocou na base da solução as variáveis
A e B (variáveis básicas).
Veja-se o resultado final através da forma tabular do algoritmo do Simplex:
B = 20
s1 = 0
s2 = 5 e Z = 600 Solução ótima e que já
s2 = 0 A = 60
não pode ser melhorada.
31
Estudo de um Problema de Programação Linear
32
Estudo de um Problema de Programação Linear
-1 3 1 0 0 0 s1
c= 7 9 , A, I = 0 1 0 1 0 , b = 25 , x= A , xs = s2
1 1 0 0 1 80 B s3
1ª Iteração:
s1 1 0 0
xB = s2 , B= 0 1 0
s3 0 0 1
Opta-se por selecionar as variáveis de folga para entrarem na base, já que são
aquelas que melhor se representam em função do lado direito das igualdades (b).
33
Estudo de um Problema de Programação Linear
1 0 0
B-1 = 0 1 0
0 0 1
s1 1 0 0 0 0
s2 = 0 1 0 . 25 = 25
s3 0 0 1 80 80
Sucede ainda que, devido aos coeficientes básicos correspondem aos coeficientes
das variáveis de folga (cB), ou seja, a valores zero, o valor da função objetivo (Z), também
ela será igual a zero:
cB = 0 0 0
0
Z= 0 0 0 . 25 = 0
80
Para melhorar o valor do objetivo deve-se fazer uma aplicação, ou seja, adquirir
unidades de participação do produto A ou do produto B que, por sua vez, têm associada
uma rentabilidade e, por esse motivo, permitem o aumento do valor de Z. Essa alteração,
implica que uma variável de folga saia da base e que uma variável, A ou B ,entre na base
da solução.
34
Estudo de um Problema de Programação Linear
Para além da atualização do lado direito feita anteriormente, deve-se neste momento
proceder-se ainda à atualização da matriz não-básica (K):
1 0 0 -1 3 -1 3
K= 0 1 0 . 0 1 = 0 1
0 0 1 1 1 1 1
1 0 0
y= 0 0 0 . 0 1 0 = 0 0 0
0 0 1
1 0 0 -1 3
r= 7 9 - 0 0 0 . 0 1 0 . 0 1 = 7 9
Entra
0 0 1 1 1 B!
Posto isto, importa agora verificar a solução quanto à sua otimalidade. Neste sentido,
se a solução for ótima e não existir nenhuma iteração que cause uma melhor solução,
então os coeficientes dos custos reduzidos devem ser negativos. Como se pode verificar,
existem ainda valores positivos, ou seja, a solução não é ótima, pelo que se adota o critério
de seleção do maior valor, neste caso 9, que corresponde à variável B que irá entrar na
base da solução (índice “e”) da próxima iteração. Como o número de varáveis deve ser
igual ao número de equações, haverá uma variável que tem de sair da base da solução,
pelo que se adota o teste da razão mínima (θ) para verificar qual a variável que sai:
0 Sai s1!
θ = 25
80
Seleciona-se o menor valor, ou seja, o recurso limitante, que diz respeito ao recurso
que ocorre em menor quantidade relativa, neste caso 0, correspondente à variável s1 que
35
Estudo de um Problema de Programação Linear
sai da base da solução (índice “s”). Na próxima iteração, B será uma variável não-básica
e s1 uma variável básica.
2ª Iteração
Como se verificou na primeira iteração, existe uma alteração das variáveis básicas
(xB) que dão origem a uma nova matriz básica (B), uma vez que a solução do problema
não era ótima. Assim, para esta nova iteração, obtêm-se as seguintes matrizes:
B 3 0 0
xB = s2 , B= 1 1 0
s3 1 0 1
1/3 0 0
B-1 = - 1/3 1 0
- 1/3 0 1
B 1/3 0 0 0 0
s2 = - 1/3 1 0 . 25 = 25
s3 - 1/3 0 1 80 80
Uma vez que o coeficiente básico da variável B é 9 e no lado direito das igualdades
(b) o coeficiente para esta variável é 0, a sua multiplicação (9x0=0) não originará aumentos
nos valores do objetivo:
cB = 9 0 0
0
Z= 9 0 0 . 25 = 0
80
36
Estudo de um Problema de Programação Linear
1/3 0 0
y= 9 0 0 . - 1/3 1 0 = 3 0 0
- 1/3 0 1
1/3 0 0 -1 1
r= 7 0 - 9 0 0 . - 1/3 1 0 . 0 0 = 10 0
Entra
- 1/3 0 1 1 0 A!
A solução ainda não é ótima, já que ainda existe um coeficiente positivo nos custos
reduzidos. Seleciona-se o valor 10, correspondente à variável A para entrar na base da
solução (índice “e”) e a variável que sai da base, através do teste da razão mínima ( θ):
n.d.
θ = 75
60 Sai s3!
37
Estudo de um Problema de Programação Linear
3ª Iteração
B 3 0 -1
xB = s2 , B= 1 1 0
A 1 0 1
1/4 0 1/4
B-1 = - 1/4 1 - 1/4
- 1/4 0 3/4
B 1/4 0 1/4 0 20
s2 = - 1/4 1 - 1/4 . 25 = 5
A - 1/4 0 3/4 80 60
38
Estudo de um Problema de Programação Linear
cB = 9 0 7
20
Z= 9 0 7 . 5 = 600
60
Para verificar se a solução é ótima, não devem existir coeficientes positivos nos
custos reduzidos (r), pelo que se procede primeiramente à atualização da matriz não-
básica (K) e da função objetivo para variáveis duais (y), para posteriormente se verificar a
otimalidade da solução:
1/4 0 1/4
y= 9 0 7 . - 1/4 1 - 1/4 = 1/2 0 7 1/2
- 1/4 0 3/4
1/4 0 1/4 0 1
r= 0 0 - 9 0 7 . - 1/4 1 - 1/4 . 0 0 = 0 0
Solução
- 1/4 0 3/4 1 0 Ótima!
Chega-se então à solução ótima do problema, já que não existem valores positivos
nos custos reduzidos (r). Assim, a solução ótima da forma matricial, é equivalente à forma
tabular, já que se obtém um valor final de 600 centenas de euros [(9 x 20 = 180) + (7 x 60
= 420) = 600] de rentabilidade na aplicação financeira efetuada.
De forma sintética, podem representar-se as matrizes de cada iteração anteriormente
realizada para o problema em estudo, e que visam sintetizar aquilo que foi feito. Para a
primeira iteração, obtêm-se as seguintes tabelas:
Primeiramente, representa-se: a matriz do sistema (A); a matriz de identidade (I)
correspondente às variáveis de folga (s1, s2, s3); os coeficientes do sistema (c); os
39
Estudo de um Problema de Programação Linear
coeficientes das variáveis de folga (0); o vetor independente (b); e, o valor da função
objetivo no ponto inicial, que apresenta valor 0.
-1 3 1 0 0 0
A= 0 1 I= 0 1 0 b= 25
1 1 0 0 1 80
c= 7 9 0= 0 0 0 0
1 0 0 -1 3 0
B= 0 1 0 AN = 0 1 b= 25
0 0 1 1 1 80
cB = 0 0 0 cN = 7 9 0
1 0 0 -1 3 0
-1 -1
I= 0 1 0 B . AN = 0 1 B . b = 25
0 0 1 1 1 80
0= 0 0 0 cN - cB . B-1 . AN = 7 9 - cB . B-1. b = 0
Quando se resolve o sistema, multiplica-se a matriz básica (B) pela matriz inversa
(B-1), obtendo-se a matriz identidade (I). Esta atualização, que ocorre através da
eliminação Gaussiana, que é efetuada sobre a matriz do sistema (B), permite obter do lado
direito (B-1 . b) a solução do sistema (xB). As operações efetuadas sobre o lado direito e
sobre a matriz básica, são também as operações efetuadas (B-1 . AN) sobre a matriz não-
40
Estudo de um Problema de Programação Linear
básica (AN). Da mesma forma, atualiza-se a função objetivo, também por eliminação
Gaussiana, começando por eliminar valores que sucederiam nos coeficientes básicos (0),
e, de forma semelhante, ocorre a subtração (cN - cB . B-1 . AN) do coeficiente básico (cB) à
matriz K. No lado direito, através da subtração (- cB . B-1. b) dos coeficientes básicos (cB),
que dá origem ao valor da função objetivo (Z).
Como a solução identificada no valor da função objetivo não é ótima, procede-se
agora à representação das tabelas identificadas anteriormente, desta vez relativamente à
segunda iteração:
-1 1 1/3 0 0 0
A= 0 0 I = - 1/3 1 0 b= 25
1 0 - 1/3 0 1 80
c= 7 0 9 0 0 0
3 0 0 -1 1 0
B= 1 1 0 AN = 0 0 b= 25
1 0 1 1 0 80
cB = 9 0 0 cN = 7 0 0
0= 0 0 0 CN - CB . B-1 . AN = 10 0 - CB . B-1 . b = 0
41
Estudo de um Problema de Programação Linear
Ainda não foi encontrada a solução ótima, já que existe um coeficiente positivo de 10
nos custos reduzidos. Posto isto, elaboraram-se as seguintes tabelas, correspondentes à
terceira iteração:
0 1 1/4 0 1/4 0
A= 0 0 I = - 1/4 1 - 1/4 b= 25
1 0 - 1/4 0 3/4 80
c= 0 0 9 0 7 600
3 0 -1 0 1 0
B= 1 1 0 AN = 0 0 b= 25
1 0 1 1 0 80
cB = 9 0 7 cN = 0 0 600
0= 0 0 0 CN - CB . B-1 . AN = 0 0 - CB . B-1 . b = 0
0 1 1/4 0 1/4 20
A* = 0 0 S* = - 1/4 1 - 1/4 b* = 5
1 0 - 1/4 0 3/4 60
42
Estudo de um Problema de Programação Linear
43
Estudo de um Problema de Programação Linear
44
Estudo de um Problema de Programação Linear
Maximizar Z = 7 A + 9 B
Sujeito a,
- A + B ≤ 0
B ≤ 25
A + B ≤ 80
A, B ≥ 0
Minimizar W = 0 y1 + 25 y2 + 80 y3
Sujeito a,
- y1 + y3 ≥ 7
3 y1 + y2 + y3 ≥ 9
y 1, y 2 , y 3 ≥ 0
45
Estudo de um Problema de Programação Linear
Maximizar Z = 7 9 . A
Sujeito a, B
-1 3 A 0
.
0 1 B ≤ 25
1 1 80
A 0
≥
B 0
Minimizar W = 0 25 80 . y1
Sujeito a, y2
y3
-1 0 1 y1 7
. ≥
3 1 1 y2 9
y3
y1 y2 y3 ≥ 0 0 0
46
Estudo de um Problema de Programação Linear
Em suma, pode-se afirmar que as variáveis duais (y1, y2, y3) correspondem ao valor
interno dos recursos, ou seja, ao custo (em euros), das unidades de participação do produto
A, ou B, ou de ambos os produtos, que será minimizado de forma a manter a sua
rentabilidade individual.
47
Estudo de um Problema de Programação Linear
Incrementos nos coeficientes das variáveis duais podem provocar variações positivas
no objetivo, ou seja, aumentar os lucros do problema. Para essa verificação, elaboraram-
se alguns cálculos no sentido de aferir valor do objetivo através de uma variação positiva,
de uma unidade, nos coeficientes de cada uma das variáveis. Para confirmar os cálculos,
procedeu-se ao apuramento da solução através do software LINDO (Anexo 4).
Inicia-se a análise através de um aumento nos coeficientes das variáveis na função
objetivo (+1):
y1 = 0 y1 = 1
+1
y2 = 25 y2 = 26
y3 = 80 y3 = 81
Verifica-se, então, a repercussão que tem uma variação positiva de 1 (mil unidades)
valor na primeira variável (y1):
Δ A = - 0,25
Δ y1 = 1 =
Δ B = 0,25
Procede-se novamente à mesma análise, desta vez através de uma variação positiva
de 1 (mil unidades) valor na segunda variável (y2):
ΔA=0
Δ y2 = 1 =
ΔB=0
ΔW = (0) x 7 + (0) x 9 = 0
Verifica-se (Anexo 4 - Alteração na variável y2), que um aumento da variável y2, não
provoca qualquer alteração no objetivo, pelo que este mantém o mesmo valor W = 600.
48
Estudo de um Problema de Programação Linear
Por fim, procede-se à mesma análise, através da aplicação de uma variação positiva
de 1 (mil unidades) no valor na terceira variável (y3):
Δ A = 0,75
Δ y3 = 1 =
Δ B = 0,25
Desta análise é possível concluir que existe um lucro adicional pelo aumento do valor
de duas variáveis (y1, y3) que produzem um incremento no objetivo em + 0,50 e +
7,50, respetivamente. A estes aumentos de valor denomina-se de preço sombra, e
estes são muito importantes, na medida em que, no contexto do problema em estudo,
refletem o máximo que o investidor estaria disposto a investir, para além das
unidades de participação que estão definidas desde o início no problema (Expressão
1), para dispor de mais 1000 unidades de participação de algum dos produtos, ou de
ambos em simultâneo.
49
Estudo de um Problema de Programação Linear
➢ Dualidade fraca: sendo que x consiste numa solução possível para o problema
primal e y numa solução possível para o problema dual, deve verificar-se a seguinte
propriedade resultante dessa relação:
c.x ≤ y.b
No problema em estudo, uma solução possível seria A = 50, B = 15, cujo valor da
função objetivo seria Z = c . x = 485 para o problema primal, enquanto que o problema
dual corresponderia a y1 = 1, y2 = 0, y3 = 10, com a função objetivo a assumir o seguinte
valor W = y . b = 800. Estas são apenas duas soluções possíveis para os dois problemas
(primal e dual), no entanto, adequam-se perfeitamente à verificação da propriedade: c . x
≤ y . b ⇔ 485 ≤ 800. Esta verificação deve ser válida para todas as soluções possíveis do
problema.
50
Estudo de um Problema de Programação Linear
51
Estudo de um Problema de Programação Linear
- ( c1 / 4 - 0 + 3c2 / 4 ) ≤ 0 c1 ≥ - 3c2
⇔
- ( c1 / 4 - 0 - c2 / 4 ) ≤ 0 c1 ≥ c 2
Com base no resultado, procede-se agora à aferição da gama ótima de variação para
o parâmetro c1, partindo do pressuposto que c2 = 7 e que este valor é constante:
c1 ≥ - 3c2 c1 ≥ - 3 . (7) c1 ≥ - 21
⇔ ⇔
c1 ≥ c2 c1 ≥ 7 c1 ≥ 7
52
Estudo de um Problema de Programação Linear
Procede-se agora à aferição da gama ótima de variação para o parâmetro c2, partindo
do pressuposto que c1 = 9 e que este valor é constante:
c1 ≥ - 3c2 9 ≥ - 3c2 c2 ≥ - 3
⇔ ⇔
c1 ≥ c2 9 ≥ c2 c2 ≤ 9
53
Estudo de um Problema de Programação Linear
possible), para a qual os valores do lado direito podem variar, num sentido ou noutro.
Desde que a otimalidade da solução se mantenha possível, as variações ocorridas nestes
termos não a afetam.
Nesse sentido, apresentam-se os cálculos da aferição da gama de variação possível
para os parâmetros do lado direito:
1/4 1/4 b1
b* = - 1/4 - 1/4 . b2 ≥ 0
3/4 - 1/4 b3
A través da multiplicação matricial, da matriz inversa (B-1) pelo lado direito () obtém-
se as três inequações que dão suporte aos cálculos da gama de variação possível dos
parâmetros desse mesmo lado direito:
1 / 4 b1 + 0 b2 + 1 / 4 b3 ≥0 b1 ≥ - b3
1 / 4 b1 + 1 b2 - 1 / 4 b3 ≥0 ⇔ b1 ≤ 4 b2 - b3
1 / 4 b1 + 0 b2 + 3 / 4 b3 ≥0 b1 ≤ 3 b3
54
Estudo de um Problema de Programação Linear
valor pode aumentar em 20, bem como, também, diminuir em 80. No intervalo, de – 80 a
20, a base da solução não se modifica:
b1 ≥ - b3 b1 ≥ - 80 b1 ≥ - 80
b1 ≤ 4 b2 - b3 ⇔ b1 ≤ 4 . (25) - 80 ⇔ b1 ≤ 20
b1 ≤ 3 b3 b1 ≤ 3 . (80) b1 ≤ 240
Esta gama de variação (possível) pode ser verificada na linha 2 da solução do LINDO
(Anexo 6 – gama de variação do parâmetro b1).
b1 ≥ - b3 0 ≥ - 80 0 ≥ - 80
b1 ≤ 4 b2 - b3 ⇔ 0 ≤ 4 b2 - 80 ⇔ b2 ≥ 20
b1 ≤ 3 b3 0 ≤ 240 0 ≤ 240
b1 ≥ - b3 0 ≥ - b3 b3 ≥ 0
b1 ≤ 4 b2 - b3 ⇔ 0 ≤ 4 . (25) - b3 ⇔ b3 ≤ 100
b1 ≤ 3 b3 0 ≤ 3 b3 b3 ≥ 0
55
Estudo de um Problema de Programação Linear
c1
800
700
600
500
400
300
200
100
0
6 7 8 9 10 11 12 13 14 15 16
56
Estudo de um Problema de Programação Linear
b1
700
600
500
400
300
200
100
0
-80 -60 -40 -20 0 20 40
Z* y1 - Dual
57
Estudo de um Problema de Programação Linear
Conclusão
Assimilar conceitos novos é sempre uma tarefa gratificante. Pegar nesses conceitos
e transformá-los em algo palpável, com princípio, meio e fim é um processo desafiante,
complexo e, por vezes, de extrema exigência. Mas ver nascer um projeto, alimentá-lo e
fazê-lo crescer, sabendo que esse esforço será uma mais-valia futura, é algo que se
entende como compensador. Foi o caso deste trabalho, ou pelo menos assim foi assimilado
por mim, que ao mesmo tanto me dediquei.
À medida que o mesmo foi progredindo, e por vezes regredindo para tornar a
avançar, auxiliou-me muito no entendimento e compreensão dos diversos tópicos
lecionados na disciplina de investigação operacional para gestão, já que a elaboração de
um trabalho académico de carácter prático como este, obriga a um estudo ativo dos tópicos
abordados em sala de aula.
Não foi fácil a adaptação à nova realidade derivada da pandemia. Aulas à distância,
novas tecnologias e condicionantes que tiveram que se conjugar com as obrigações
profissionais que, pelo menos no meu caso, nunca se suspenderam e antes se tornaram
mais exigentes. Mas, a maior exigência, maior compensação no alcance dos objetivos. E
os meus estão bem definidos, custe o que custar, vou terminar com o maior êxito possível
a meta a que me propus.
Também para este trabalho académico contei com a disponibilidade do docente, que
também ele, apanhado nesta amálgama de novidades e ajustamentos, sempre se
disponibilizou para apoiar no que fosse necessário. Os meus agradecimentos.
58
Estudo de um Problema de Programação Linear
Bibliografia
Tavares, Luís., Oliveira, Rui., Themido, Isabel., Correia., Francisco. (1996). Investigação
Operacional. Lisboa: MCGraw-Hill editora.
Apontamentos da Unidade Curricular.
59
Estudo de um Problema de Programação Linear
60
Estudo de um Problema de Programação Linear
61
Estudo de um Problema de Programação Linear
62
Estudo de um Problema de Programação Linear
63
Estudo de um Problema de Programação Linear
64
Estudo de um Problema de Programação Linear
65
Estudo de um Problema de Programação Linear
66
Estudo de um Problema de Programação Linear
67
Estudo de um Problema de Programação Linear
68
Estudo de um Problema de Programação Linear
69