Investigação Operacional
Modelo de Programação Linear
- Variáveis de decisão (sempre quantitativas)
- x1,x2,x3...
- Função objetivo
- Restrições
Exemplo:
- Variáveis de decisão
- x1 → número de unidades de área a plantar de arroz
- x2 → número de unidades de área a plantar de milho
- Função objetivo
- maximizar o lucro (UM aka unidades monetárias) a obter das plantações
- MaxZ=5x1+2x2
- Restrições
- x1+2x2⩽9 (mão-obra)
- x1⩽3 (unidades de área)
- x2⩽4 (unidades de área)
- x1⩾0,x1⩾0 (não negatividade)
Estes modelos podem ser escritos usando dois tipos de notação: cartesiana ou matricial.
Notação cartesiana:
MaxZ=5x1+2x2
Sujeito a:
- x1+2x2⩽9
- x1⩽3
- x2⩽4
- x1⩾0,x1⩾0
Notação matricial:
x=[x1x2]
C=[52]
Z=x∗CT=[x1x2][52]
0=[00]
A=⎣⎢⎡110201⎦⎥⎤
b=⎣⎢⎡934⎦⎥⎤
Método Gráfico
Este método serve para resolver funções do tipo MaxZ e do tipo MinZ graficamente.
- Tornar as equações em inequações e desenhar um gráfico com as retas respetivas
- Para obter pontos para facilitar o desenho é ir igualando as variáveis x1 e x2 individualmente para obter pontos que se situem nos eixos principais (geralmente sao x e y, mas neste caso serão x1 e x2)
- Detetar qual o semiplano representado por cada inequação e qual é a região admissível
- Para facilitar a perceção disto é só igualar x1 e x2 a 0 para perceber se a origem do referencial (ou seja, o ponto (0, 0)) faz parte do semiplano
- Traçar uma reta auxiliar para um valor de Z à escolha
- A recomendação é que este valor de Z seja um mmc dos coeficientes das variáveis
- Traçar uma reta auxiliar para Z=0
- Fazemos isto para conseguir perceber em que sentido é que o Z aumenta ou diminui
- Com o auxílio duma régua ou algo que possa fazer de régua, seguir paralelamente às retas auxiliares no sentido relevante para o problema até atingir o último PEA (ponto extremo admissível)
As coordenadas do PEA escolhido no final dos passos em cima serão os valores que temos que dar às variáveis x1 e x2 para obter o valor ótimo de Z.
Em caso de ambiguidade em algum dos valores, usa-se o valor que temos a certeza e substituimos nas equações das retas que se cruzam para obter o outro.
Método Simplex
Apenas funciona para funções do tipo MaxZ.
Como o método simples apenas funciona com equações, transformamos as inequações em equações usando slacks, artificiais e/ou surplus.
Condição |
Regra |
⩽ |
+ slacks |
= |
+ artificial |
⩾ |
- surplus + artificial |
Exemplo:
MaxZ=5x1+2x2
Sujeito a:
- x1+2x2⩽9
- x1⩽3
- x2⩽4
- x1⩾0,x1⩾0
Adicionando slacks:
- x1+2x2+x3=9
- x1+x4=3
- x2+x5=4
- xj⩾0,j=1,...,5
x3 0x4 0x5 0zj−cj5x1101−52x2012−20x310000x401000x50010b3490
SBA: x=(0,0,3,4,9)
Enquanto existirem valores negativos na linha zj−cj, é possivel melhorar o valor de Z.
Selecionando a coluna x1 e a linha x3 como pivot.
- Coluna pivot: coluna da variável que vai entrar na base
- Linha pivot: linha da variável que vai sair da base
x1 5x4 0x5 0zj−cj5x110002x2012−20x310−150x401000x50010b34615(1)′=(1)(2)′=(2)(3)′=(3)−(1)′
SBA: x=(3,0,0,4,6)
O objetivo com as operações de linhas é fazer com que o número pivot seja 1 e os restantes 0.
O objetivo com o método simplex é ir resolvendo quadros até não existirem valores negativos na linha zj−cj e, quando isto se verificar diz-se que se atingiu o quadro ótimo e o valor de Z obtido será o valor ótimo (ou seja, máximo).
Método Simplex e Variáveis Artificiais
Com a introdução de variáveis artificiais (como às vezes é obrigatório) torna-se impossível usar o método simplex sem fazer alguns ajustes na maneira como usamos o método. Para solucionar este problema temos o método do Grande M e o método das 2 fases.
Não esquecer que um problema só esta resolvido se as variáveis artificiais tiverem valor 0.
Método do Grande M:
Neste método damos uso a uma número imaginário chamado de M. Este é uma constande positiva de valor muito elevado.
Para usar este método, ao adicionarmos as variáveis necessárias ao problema para usar o método simplex, metemos as variáveis artificais na função objetivo com -M. Depois é só aplicar o método simplex usando a nova função objetivo.
Método das 2 fases:
Neste método separamos o uso do método simplex em duas fases (como indica o nome).
Primeira fase:
- Criar uma nova função objetivo composta pelas variáveis artificiais acompanhadas pelo coeficiente -1
- Usar o método simplex até se obter um quadro ótimo (neste quadro as variáveis artificiais devem ter valor 0)
Segunda fase:
- Pegar no quadro obtido na primeira fase e remover as colunas das variáveis artificiais
- Usar a função objetivo original e obter um quadro ótimo
De um modo geral o método da 2 fases é considerado mais fácil e mais intuitivo.
Casos Particulares do Método Simplex
- Empate na escolha do valor mais negativo na linha zj−cj
- Qualquer um pode ser selecionado
- Existe zj−cj negativos, mas apenas elementos não positivos na coluna pivot
- Este problema de otimização tem solução não limitada
- Variável artificial aparece na solução ótima (tem valor diferente de 0)
- Este problema de otimização não tem solução
- Empate nos quocientes, ou seja, nas escolha da variável que vai sair da base
- Qualquer uma pode sair, mas conduz a uma solução degenerada
- Valor de zj−cj nulo sendo xj uma variável não básica
- Este problema tem mais do que uma solução ótima
Por vezes é necessário moldar o modelo PL de modo a ter as variáveis todas com restrições do tipo ⩾0.
Para fazer isto, dum modo geral, transforma-se a variável em 2 variáveis: uma que representa a parte positiva e outra que representa a parte negativa (ambas com valor superior ou igual a 0).
Exemplo:
x1 livre→x1=x1+−x1−,x1+⩾0,x1−⩾0
Após isto é só substituir no problema x1 por x1+−x1−.
Variável Folga (definição genérica)
- slack (folga negativa)
- representa o défice do lado esquerdo em relação ao lado direito
- surplus (folga positiva)
- representa o excesso do lado esquerdo em relação ao lado direito
Dualidade
A cada modelo PL corresponde um outro chamado dual, formado pelos mesmos coeficientes mas organizado de maneira diferente.
Na relação com o problema dual, o problema inicial chama-se de problema primal.
Na solução ótima, o Z do dual e o Z do primal são iguais.
Relações Primal-Dual
Max FO |
|
|
Min FO |
Restrições
|
⩾ ⩽ = |
⩽0 ⩾0 livre |
Variáveis
|
Variáveis
|
⩾0 ⩽0 livre |
⩾ ⩽ = |
Restrições
|
Variável Primal |
Variável Dual Associada |
Básica (valor = 0) |
Não Básica (valor = 0) |
Não Básica (valor = 0) |
Básica (valor = 0) |
Exemplo:
PRIMAL
MaxZ=5x1+3x2
s.a.
- x1+2x2⩽5←u1
- −x1+x2⩽3←u2
- 3x1+x2⩽6←u3
- x1⩾0,x2⩾0
DUAL
MinZd=5u1+3u2+6u3
s.a.
- u1−u2+3u3⩾5
- 2u1+u2+u3⩾3
- u1⩾0,u2⩾0,u3⩾0
Como tirar a solução ótima dum quadro ótimo dual:
u1 −3u3 −9zj−cj−3u1100↑x3−4u2−21211↑x4−9u3010↑x50u4−103↑x1−Mu510M−30u621−213↑x2−Mu7−2121M−3b4121↑Zd
A divisão feita no quadro Simplex separa as variáveis originais para a esquerda e as folgas mais as artificiais para a direita.
Começamos da linha que separa para a direita, saltando as artificiais, depois começamos da direita para a esquerda na parte esquerda da tabela, obtendo assim os valores equivalentes às variáveis originais e, deste modo, obtendo a solução básica admíssivel a partir do dual.
Página Inicial | Página Anterior