Investigação Operacional

Modelo de Programação Linear

Exemplo:

Estes modelos podem ser escritos usando dois tipos de notação: cartesiana ou matricial.

Notação cartesiana:

MaxZ=5x1+2x2Max Z = 5x_{1} + 2x_{2}

Sujeito a:

Notação matricial:

x=[x1x2]x =\begin{bmatrix} x_{1}\\ x_{2}\\ \end{bmatrix} C=[52]C =\begin{bmatrix} 5\\ 2\\ \end{bmatrix} Z=xCT=[x1x2][52]Z = x * C^{T} = \begin{bmatrix} x_{1}\\ x_{2}\\ \end{bmatrix} \begin{bmatrix} 5 & 2\\ \end{bmatrix}

0=[00]0 =\begin{bmatrix} 0\\ 0\\ \end{bmatrix}

A=[121001]A =\begin{bmatrix} 1 & 2\\ 1 & 0\\ 0 & 1\\ \end{bmatrix} b=[934]b =\begin{bmatrix} 9\\ 3\\ 4\\ \end{bmatrix}


Método Gráfico

Este método serve para resolver funções do tipo MaxZMax Z e do tipo MinZMin Z graficamente.

  1. Tornar as equações em inequações e desenhar um gráfico com as retas respetivas
  2. Detetar qual o semiplano representado por cada inequação e qual é a região admissível
  3. Traçar uma reta auxiliar para um valor de ZZ à escolha
  4. Traçar uma reta auxiliar para Z=0Z = 0
  5. 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 x1x_{1} e x2x_{2} para obter o valor ótimo de ZZ.

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 MaxZMax Z.

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
\leqslant + slacks
== + artificial
\geqslant - surplus
+ artificial

Exemplo:

MaxZ=5x1+2x2Max Z = 5x_{1} + 2x_{2}

Sujeito a:

Adicionando slacks:

52000x1x2x3x4x5bx3 0101003x4 0010104x5 0120019zjcj520000 \begin{matrix} \begin{array}{c|ccccc|c} & 5 & 2 & 0 & 0 & 0 & \\ & x_1 & x_2 & x_3 & x_4 & x_5 & b \\ \hline x_3 \ 0 & 1 & 0 & 1 & 0 & 0 & 3 \\ x_4 \ 0 & 0 & 1 & 0 & 1 & 0 & 4 \\ x_5 \ 0 & 1 & 2 & 0 & 0 & 1 & 9 \\ \hline z_j-c_j & -5 & -2 & 0 & 0 & 0 & 0 \\ \end{array} \end{matrix}

SBA: x=(0,0,3,4,9)x=(0, 0, 3, 4, 9)

Enquanto existirem valores negativos na linha zjcjz_{j}-c_{j}, é possivel melhorar o valor de ZZ.

Selecionando a coluna x1x_{1} e a linha x3x_{3} como pivot.

52000x1x2x3x4x5bx1 5101003x4 0010104x5 0021016zjcj0250015(1)=(1)(2)=(2)(3)=(3)(1) \begin{matrix} \begin{array}{c|ccccc|c} & 5 & 2 & 0 & 0 & 0 & \\ & x_1 & x_2 & x_3 & x_4 & x_5 & b \\ \hline x_1 \ 5 & 1 & 0 & 1 & 0 & 0 & 3 \\ x_4 \ 0 & 0 & 1 & 0 & 1 & 0 & 4 \\ x_5 \ 0 & 0 & 2 & -1 & 0 & 1 & 6 \\ \hline z_j-c_j & 0 & -2 & 5 & 0 & 0 & 15 \\ \end{array} \end{matrix} \begin{array}{ll} \\ (1)' = (1) \\ (2)' = (2) \\ (3)' = (3) - (1)' \end{array}

SBA: x=(3,0,0,4,6)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 zjcjz_{j} - c_{j} e, quando isto se verificar diz-se que se atingiu o quadro ótimo e o valor de ZZ 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:

  1. Criar uma nova função objetivo composta pelas variáveis artificiais acompanhadas pelo coeficiente -1
  2. Usar o método simplex até se obter um quadro ótimo (neste quadro as variáveis artificiais devem ter valor 0)

Segunda fase:

  1. Pegar no quadro obtido na primeira fase e remover as colunas das variáveis artificiais
  2. 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


Solução para variáveis com restrição diferente de \geqslant para aplicação do Método Simplex

Por vezes é necessário moldar o modelo PL de modo a ter as variáveis todas com restrições do tipo 0\geqslant 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 livrex1=x1+x1,x1+0,x10x_1 \ livre \rightarrow x_1 = x_1^+ - x_1^-, x_1^+ \geqslant 0, x_1^- \geqslant 0

Após isto é só substituir no problema x1x_1 por x1+x1x_1^+ - x_1^-.


Variável Folga (definição genérica)


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 ZZ do dual e o ZZ do primal são iguais.

Relações Primal-Dual

Max FO Min FO
Restrições


\geqslant
\leqslant
==
0\leqslant 0
0\geqslant 0
livrelivre
Variáveis


Variáveis


0\geqslant 0
0\leqslant 0
livrelivre
\geqslant
\leqslant
==
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+3x2MaxZ = 5x_1 + 3x_2

s.a.

DUAL

MinZd=5u1+3u2+6u3MinZd = 5u_1 + 3u_2 + 6u_3

s.a.

Como tirar a solução ótima dum quadro ótimo dual:

3490M0Mu1u2u3u4u5u6u7bu1 311201112124u3 901210012121zjcj0103M33M321x3x4x5x1x2Zd \begin{matrix} \begin{array}{c|ccc:cccc|c} & -3 & -4 & -9 & 0 & -M & 0 & -M & \\ & u_1 & u_2 & u_3 & u_4 & u_5 & u_6 & u_7 & b \\ \hline u_1 \ -3 & 1 & -\frac{1}{2} & 0 & -1 & 1 & \frac{1}{2} & -\frac{1}{2} & 4 \\ u_3 \ -9 & 0 & \frac{1}{2} & 1 & 0 & 0 & -\frac{1}{2} & \frac{1}{2} & 1 \\ \hline z_j-c_j & 0 & 1 & 0 & 3 & M - 3 & 3 & M - 3 & 21 \\ & \uparrow & \uparrow & \uparrow & \uparrow & & \uparrow & & \uparrow \\ & x_3 & x_4 & x_5 & x_1 & & x_2 & & Zd \\ \end{array} \end{matrix}

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