Você está na página 1de 29

Investigação Operacional

Métodos de Programaç ão Linear: Gráfica, Simplex

• Engenharia Civil (LEC)

Universidade do Minho - Escola de Engenharia


Departamento de Produção e Sistemas

Universidade do Minho Investigação Operacional 1


2010

Autoria
• Este conjunto de slides contém slides da autoria do Doutor
Filipe Alvelos (falvelos@dps.uminho.pt) do Departamento de
Produção e Sistemas da Universidade do Minho,

Universidade do Minho Investigação Operacional 2


2010

1
Representação Gráfica
Considere o seguinte problema de PL:

duas variáveis, permite a representação gráfica do problema

Universidade do Minho Investigação Operacional 3


2010

Representação Gráfica
Não negatividade
Uma restrição

Universidade do Minho Investigação Operacional 4


2010

2
Representação Gráfica
Duas restrições

Universidade do Minho Investigação Operacional 5


2010

Representação Gráfica
Conjunto de restrições

Universidade do Minho Investigação Operacional 6


2010

3
Representação Gráfica
Espaço de soluções

Universidade do Minho Investigação Operacional 7


2010

Representação Gráfica
Função objectivo:
família de rectas

Universidade do Minho Investigação Operacional 8


2010

4
Representação Gráfica

Universidade do Minho Investigação Operacional 9


2010

Soluções de modelos de PL
Conjunto das soluções admissíveis pode ser
–Vazio
–Não vazio (Limitado ou Ilimitado)
Um modelo de PL pode
–Ser impossí vel
–Ser ilimitado
–Ter soluções óptimas alternativas*
–Ter uma única solução óptima
Os dois primeiros casos, normalmente, indicam que o modelo de PL
está mal formulado ou houve erros na sua introdução, já que não é
frequente existirem problemas de decisão "reais" sem alternativas
ou com alternativas tão boas quanto desejarmos.
* Tipicamente, o software para PL só identifica uma solução óptima.

Universidade do Minho Investigação Operacional 10


2010

5
Universidade do Minho Investigação Operacional 11
2010

Algoritmos para PL

Universidade do Minho Investigação Operacional 12


2010

6
Simplex

Universidade do Minho Investigação Operacional 13


2010

Simplex
Considere um problema de maximização de lucro
relacionado com duas actividades e três recursos.

Na tabela seguinte são dados os consumos unitários de


cada recurso (A, B e C) por actividade (1 e 2), a
disponibilidade de cada recurso e o lucro unitário de
cada actividade.

Formule o problema através de um modelo de PL.

Universidade do Minho Investigação Operacional 14


2010

7
Simplex

• Temos 3 equações e 5 incógnitas (sistema de equações indeterminado).


• Se fixarmos 2 variáveis a zero, temos 3 equações a 3 incógnitas e
podemos determinar a solução desse sistema.

Universidade do Minho Investigação Operacional 15


2010

Simplex

Universidade do Minho Investigação Operacional 16


2010

8
Simplex

Universidade do Minho Investigação Operacional 17


2010

Simplex

Universidade do Minho Investigação Operacional 18


2010

9
Simplex

Universidade do Minho Investigação Operacional 19


2010

Simplex

Universidade do Minho Investigação Operacional 20


2010

10
Simplex

Universidade do Minho Investigação Operacional 21


2010

Simplex

Universidade do Minho Investigação Operacional 22


2010

11
Simplex

Universidade do Minho Investigação Operacional 23


2010

Simplex

Universidade do Minho Investigação Operacional 24


2010

12
Simplex

Universidade do Minho Investigação Operacional 25


2010

Simplex
Problema geral: n variáveis, m
equações.
Qualquer conjunto de m variáveis
cujo sistema de equações tenha
solução designa-se por base
(exemplo, x3, x4, x5).

Dada uma base é fácil determinar


a solução lhe está associada, basta
fixar a 0 as variáveis que não
fazem parte da base (variáveis
não básicas, no exemplo dado x1 e
x2) e resolver o sistema de
equações para as restantes
(variáveis básicas) - obtendo-se
uma solução básica
ex. x 1=0, x 2=0, x 3=720, x 4=880, x 5=160

Universidade do Minho Investigação Operacional 26


2010

13
Simplex
•Uma solução básica pode ser admissível ou não
admissível (no exemplo, A,B,G,F,I correspondem a bases
admissíveis e C,H,E,D a bases não admissíveis). Para
saber se a base é admissível ou não basta ver se as
restrições de não negatividade são satisfeitas.

Universidade do Minho Investigação Operacional 27


2010

Simplex
•Uma solução básica pode ser admissível ou não
admissível (no exemplo, A,B,G,F,I correspondem a bases
admissíveis e C,H,E,D a bases não admissíveis). Para
saber se a base é admissível ou não basta ver se as
restrições de não negatividade são satisfeitas.
•Já tínhamos chegado à conclusão de que se existe uma
solução óptima finita, então há, pelo menos, um ponto
extremo que é solução óptima. A cada ponto extremo
está associada uma base admissível...
•...então basta determinar todas as soluções básicas e o
seu valor (na função objectivo) e ver qual é a solução que
tem maior valor (problema de maximização).

Universidade do Minho Investigação Operacional 28


2010

14
Simplex
•Determinar a solução associada a uma base é fácil:
resolver um sistema de m equações a m incógnitas
(método de Gauss-Jordan).
•Só há um "pequeno" problema, o número de bases pode
atingir n!
n
Cm =
( n − m )!m !
•Por exemplo, para um problema com 100 variáveis e 10 restrições esse
número é 1.73e+13. Com a folha de cálculo Excel (Microsoft Office 2003)
já não se consegue determinar esse valor para um problema com 2000
variáveis e 250 restrições. O número de combinações é gigantesco para um
problema pequeno!

Universidade do Minho Investigação Operacional 29


2010

Simplex
•Algoritmo Simplex:
– começa-se numa base e vê-se se ela corresponde à
solução óptima (temos maneira de fazer isso?).
– Se for, temos a solução óptima.
– Se não for, passamos para outra base (como?) que
pareça promissora (e como se vê isso?) e repetimos
o procedimento.

•Não parece grande ideia, dado o número de bases ser tão grande...
De facto, a análise (com base na teoria da complexidade) do
comportamento do algoritmo simplex no pior caso não é muito
simpá tica para este algoritmo (já foram construídos
propositadamente problemas em que o simplex tinha de testar
todas as bases!).

Universidade do Minho Investigação Operacional 30


2010

15
Simplex
A boa notícia é que, em problemas reais, o
comportamento do algoritmo é muitíssimo melhor do que
a análise para o pior caso da teoria da complexidade.
•O algoritmo Simplex (na verdade, os algoritmos da
classe de métodos Simplex, porque, na prática, há
diferenças consideráveis entre os diferentes algoritmos
que se baseiam nestas ideias) continua a ser largamente
o mais utilizado na resolução de problemas de PL reais.

•O Simplex é um exemplo clássico de como, por vezes, a


análise teórica do pior caso, não é adequada à
classificação prática dos algoritmos.

Universidade do Minho Investigação Operacional 31


2010

Simplex
•No seguinte problema qual é a base que tem
uma solução mais fácil de calcular?

Universidade do Minho Investigação Operacional 32


2010

16
Simplex

•função objectivo: z-10x1 -9x2-0x3-0x4-0x5=0


•Os valores que aparecem nesta linha são denominados por custos reduzidos.

•A que solução corresponde o quadro simplex apresentado?

Universidade do Minho Investigação Operacional 33


2010

Simplex
•Um quadro simplex que corresponda a uma solução
básica admissível (primal) tem as seguintes
características:
– Uma coluna correspondente a uma variável básica tem um 1 na
linha associada à variável básica e zeros em todas as outras
linhas (exemplo, a coluna de x5 tem um 1 na terceira linha -
associada à variável x5 e zeros nas primeira e segunda linhas).
Esta característica implica que as colunas das variáveis
básicas formam uma matriz identidade.
– Na linha da função objectivo, todas as variáveis bá sicas têm
coeficiente 0.
– Os termos independentes são sempre maiores ou iguais a
zero (manter válida a não-negatividade).

Universidade do Minho Investigação Operacional 34


2010

17
Simplex
•A cada quadro simplex corresponde uma solução básica
admissível imediatamente perceptível através das
variáveis básicas e da coluna dos termos independentes.
– No exemplo, x3=200, x4=230, x5=70.

•A solução associada ao quadro simplex é óptima?


Universidade do Minho Investigação Operacional 35
2010

Simplex
•Não! Se se aumentar o valor de x1 ou x2 o valor de z
aumenta (e pretende-se maximizar o valor de z). O que o
coeficiente -10 de x1 (linha da função objectivo)
significa é que por cada unidade de aumento de x1 o valor
da função objectivo, aumenta 10 unidades (o sinal
negativo é devido à mudança de membro efectuada
inicialmente).

Universidade do Minho Investigação Operacional 36


2010

18
Simplex
•Em cada iteração do simplex passa-se (da base actual)
para uma base adjacente (que se obtém da actual
passando uma variável não básica a básica e uma variável
básica a não básica - o número de variáveis básicas é
constante).

Universidade do Minho Investigação Operacional 37


2010

Simplex
•Qual a variável mais promissora para entrar na base?

Universidade do Minho Investigação Operacional 38


2010

19
Simplex
•A variável mais promissora é x1 (aumento de 10
unidades na função objectivo por unidade de aumento de
x1, para x2 esse valor é 9 o que é pior já que se está a
maximizar).

– Isto é uma decisão gulosa, míope… não garante que seja a


melhor decisão.
– E se houver empate? (custos reduzidos iguais)

Universidade do Minho Investigação Operacional 39


2010

Simplex

•Sendo assim x1 entra na base (passará a tomar um valor


positivo)!
– Qual a variável que sai base?
•Como o aumento do valor de x1 aumenta o valor da
função objectivo, queremos aumentar o mais possível o
seu valor.
– Qual é o limite?
Universidade do Minho Investigação Operacional 40
2010

20
Simplex
• Tem de haver um limite (ou melhor, se não houver um
limite o problema é ilimitado, mas não é esse o caso do
exemplo).
O que acontece às outras variáveis
quando se aumenta o valor de x1
A variável x2 continua não básica
(logo com valor igual a 0).
As outras relacionam-se com x1
através das restrições.

Qual a variável que deve sair da base?

Universidade do Minho Investigação Operacional 41


2010

Simplex

Universidade do Minho Investigação Operacional 42


2010

21
Simplex

Universidade do Minho Investigação Operacional 43


2010

Coluna pivot
Simplex

Universidade do Minho Investigação Operacional 44


2010

22
Coluna pivot
Simplex

Universidade do Minho Investigação Operacional 45


2010

Coluna pivot
Simplex

Linha pivot

A variável que sai da base é x5, a primeira que se anula (logo passa a não
básica) quando se tenta aumentar x1 o mais possível.
A razão entre o valor da coluna dos termos independentes e o valor da coluna da vari ável que vai
entrar na base para todas as linhas (cujo valor seja positivo) e escolher a menor.

Universidade do Minho Investigação Operacional 46


2010

23
Coluna pivot
Simplex

Linha pivot

(Na resolução primal) O elemento pivot nunca pode ser


negativo.

Universidade do Minho Investigação Operacional 47


2010

Coluna pivot
Simplex

Se houver empate na saída?


– escolha indiferente: algoritmo pode entrar em ciclo

– escolhe-se a razão de maior divisor: sai x3


Universidade do Minho Investigação Operacional 48
2010

24
Simplex
•Como obter o quadro correspondente à nova base?
– Cada linha corresponde a uma equação de um sistema, logo
• pode-se multiplicar toda a linha por uma constante
• pode-se somar duas linhas, substituindo uma delas pelo
resultado da soma, que o sistema de equações não se altera (só
se altera a sua representação). No exemplo, a linha 3 (L3) é a
linha pivot, fazendo as operações

L’3 = L3 / 2 (para a linha L3)


Coluna pivot
L1 - 5L’3 (para a linha L1)
L2 - 4L’3 (para a linha L2)
L4 + 10L’3 (para a linha L4)

•obtém-se o quadro simplex correspondente à nova base

Universidade do Minho Investigação Operacional 49


2010

Simplex

Para experimentar e/ou verificar cálculos:


http://www.tutor.ms.unimelb.edu.au/simplex_intro/index.html

Universidade do Minho Investigação Operacional 50


2010

25
PROGRAMAÇÃO LINEAR - PL
• Fizemos uma iteração do algoritmo simplex primal:

1. Teste de optimalidade (a solução básica actual é óptima se todos os


coeficientes da função objectivo (custos reduzidos) são não
negativos). Se a solução é óptima, parar. Se não, prosseguir com o
passo 2.
2. Decidir qual a variável que entra na base (é aquela que tem o
coeficiente mais negativo na linha da função objectivo - em caso
de empate escolher a variável que “crescerá mais”. Se persistir o
empate, escolher arbitrariamente). Prosseguir com o passo 3.
3. Decidir qual a variável básica que sai da base (é aquela que tem a
razão do critério de saída mais pequena - excluindo as razões
negativas; em caso de empate, escolher o maior elemento pivot. Se
persistir o empate, escolher arbitrariamente). Se não houver nenhuma
razão estritamente positiva o problema é ilimitado, parar. Se não,
prosseguir para 4.
4. Actualizar o quadro simplex para a base actual e passar à iteração
seguinte (passo 1).

Universidade do Minho Investigação Operacional 51


2010

Simplex

Universidade do Minho Investigação Operacional 52


2010

26
Simplex
• O quadro simplex obtido em qualquer iteração corresponde
sempre a uma solução básica admissível e a um ponto extremo.

• Quadro óptimo do exemplo (após duas iterações).

Universidade do Minho Investigação Operacional 53


2010

Simplex
• Soluções alternativas

– O que são?

– Como se identifica a sua existência?

•Custo(s) reduzido(s) NULO(s) nas variáveis não básicas.

Universidade do Minho Investigação Operacional 54


2010

27
Simplex
• Degenerescência…
– O algoritmo simplex pode entrar em ciclo (se não
forem tomadas as devidas previdências) por causa
da existência de soluções básicas degeneradas
(soluções em que há variáveis básicas com valor
zero).
– A causa é a presença de restrições redundantes
(que não são fáceis de detectar analiticamente...).
De uma iteração para a seguinte, pode acontecer
que a base seja diferente, mas o valor das
variáveis de decisão seja o mesmo (uma básica com
valor zero sai da base e uma não básica entre na
base com valor zero).
Universidade do Minho Investigação Operacional 55
2010

Simplex
• Degenerescência…
– Na prá tica, o software actual tem implementadas formas de
lidar com a degenerescência (através de regras mais
sofisticadas do que escolher arbitrariamente a variável que
entra na base em caso de empate).
– De qualquer maneira, em problemas muito degenerados, este
fenómeno pode abrandar significativamente a execução do
método.

Um só ponto extremo
e duas bases!

Universidade do Minho Investigação Operacional 56


2010

28
Simplex
•Como obter um quadro simplex válido para um problema
que tenha restrições de igualdade e/ou de maior ou
igual?
– Note -se que, se o problema só tiver restrições de "menor
ou igual", temos sempre uma base "à mão": a constituída
pelas variáveis de folga - como no exemplo anterior.
– O ponto de solução nula pertence ao espaço de soluções
válidas, e forma -se a base com as variáveis de folga.

Universidade do Minho Investigação Operacional 57


2010

Simplex
•Modelos (a) e (b) são equivalentes.
– O modelo (b) está na forma estandardizada e inclui uma vari ável de
excesso (primeira restrição) e uma variável de folga (segunda restrição).
– Para a segunda linha é fácil encontrar uma variável básica inicial (tem
coeficiente 1 na própria linha e 0 nas restantes).
– Qual a vari ável básica a associar à primeira linha? Não é claro. Não há
nenhuma variável que tenha coeficiente 1 na própria linha e 0 nas
restantes.

•Modifica-se o modelo por inclusão de variáveis


artificiais ->vê-se isso na próxima aula
Universidade do Minho Investigação Operacional 58
2010

29

Você também pode gostar