Você está na página 1de 4

Instituto Superior Politécnico de Viseu

Investigação Operacional

MÉTODO SIMPLEX: PROGRAMAS LINEARES DE MINIMIZAÇÃO

Passo 0: Seja x uma solução básica admissível associada a um conjunto J de índices das variáveis básicas.
Passo 1: Verificação do Critério de Optimalidade e determinação da variável não básica a passar a básica
Se c j ≥ 0 ( c j ≤ 0 no caso de maximização) para todo j∉J, termine: x é solução óptima do programa linear.

De outro modo determine s tal que

{ }
cs = min c j : c j < 0 . { }
( cs = max c j : c j > 0 no caso de maximização)

Passo 2: Determinação da variável básica a passar a não básica


Se ais ≤ 0, i=1,...,m, termine: o programa linear tem solução óptima ilimitada. De outro modo calcule r a

partir do Critério do Quociente Mínimo

br ⎧b ⎫
= min ⎨ i : ais > 0⎬ .
ars ⎩ ais ⎭
Actualize o conjunto J para
J → J − {t} ∪ {s}
com t o índice da variável básica associada à r-ésima linha do quadro. Utilize as operações elementares para
actualizar a forma tabular (Gauss-Jordan) da solução básica associada ao novo conjunto J. Volte ao Passo 1.

MÉTODO DUAL DO SIMPLEX: PROGRAMAS LINEARES DE MINIMIZAÇÃO

Passo 0: Seja x uma solução básica dual admissível associada a um conjunto J de índices das variáveis básicas, isto é
c j ≥ 0, para todo j∉J, ( c j ≤ 0, para todo j∉J, no caso de maximização).

Passo 1: Verificação do Critério de Admissibilidade e determinação da variável básica a passar a não básica
Se b ≥ 0, termine : x é solução óptima do programa linear. De outro modo determine r tal que

{ }
br = min bi : bi < 0 .

Passo 2: Determinação da variável não básica a passar a básica


Se arj ≥ 0, para todo j∉J, termine: o programa linear é não admissível. De outro modo calcule s a partir do

Critério do Quociente Mínimo

cs ⎧⎪ c j ⎫⎪
= min ⎨ : arj < 0 , j ∉ J ⎬ .
ars ⎪⎩ arj ⎪⎭
Actualize o conjunto J para
J → J − {t} ∪ {s}
com t o índice da variável básica associada à r-ésima linha do quadro. Utilize as operações elementares para
actualizar o quadro (Gauss-Jordan) da solução básica associada ao novo conjunto J. Volte ao Passo 1.
Instituto Superior Politécnico de Viseu
Investigação Operacional

MÉTODO DAS DUAS FASES: PROGRAMAS LINEARES DE MINIMIZAÇÃO

Fase I: Determinação de uma solução básica admissível


Passo 0: Seja x uma solução básica não admissível associada a um conjunto J de índices das variáveis básicas.
Introduza uma variável artificial x0 na forma tabular (Gauss-Jordan) associada a J com coeficientes pi tais que
⎧⎪ pi < 0 se bi < 0
⎨ .
⎪⎩ pi ≤ 0 se bi ≥ 0
Calcule k a partir do Critério do Quociente Máximo
bk ⎧b ⎫
= max ⎨ i : pi < 0⎬ .
pk ⎩ pi ⎭
Actualize o conjunto J para
J → J − {t} ∪ {0}
com t o índice da variável básica associada à k-ésima linha do quadro. Utilize as operações elementares para
actualizar a forma tabular (Gauss-Jordan) da solução básica associada ao novo conjunto J.
Passo 1: Determinação da variável não básica a passar a básica
Se akj ≤ 0 para todo j∉J, termine: o programa é não admissível. De outro modo determine s a partir de
{
aks = max akj : akj > 0 . }
Passo 2: Determinação da variável básica a passar a não básica
Calcule r a partir do Critério do Quociente Mínimo
br ⎧b ⎫
= min ⎨ i : ais > 0⎬ .
ars ⎩ ais ⎭
Actualize o conjunto J para
J → J − {t} ∪ {s}
com t o índice da variável básica associada à r-ésima linha do quadro. Utilize as operações elementares para
actualizar a forma tabular (Gauss-Jordan) da solução básica associada ao novo conjunto J. Se x0 saiu da base
passe ao Passo 3. De outro modo volte ao Passo 1.

Fase II: Determinação da solução óptima


Passo 3: Verificação do Critério de Optimalidade e determinação da variável não básica a passar a básica
Se c j ≥ 0 ( c j ≤ 0 no caso de maximização) para todo j∉J, termine: x é solução óptima do programa linear.
De outro modo determine s a partir de
{ }
cs = min c j : c j < 0 . { }
( cs = max c j : c j > 0 no caso de maximização)
Passo 4: Determinação da variável básica a passar a não básica
Se ais ≤ 0, i=1,...,m, termine: o programa linear tem solução óptima ilimitada. De outro modo calcule r a
partir do Critério do Quociente Mínimo
br ⎧b ⎫
= min ⎨ i : ais > 0⎬ .
ars ⎩ ais ⎭
Actualize o conjunto J para
J → J − {t} ∪ {s}
com t o índice da variável básica associada à r-ésima linha do quadro. Utilize as operações elementares para
actualizar a forma tabular (Gauss-Jordan) da solução básica associada ao novo conjunto J. Volte ao Passo 3.
Instituto Superior Politécnico de Viseu
Investigação Operacional

ALGORITMO HÚNGARO: PROBLEMA DE AFECTAÇÃO

Passo 0: Passo Inicial


Constrói-se um quadro de valores a partir da matriz de custos subtraindo a cada linha o seu valor mínimo. De
seguida actualiza-se este quadro subtraindo a cada coluna o seu valor mínimo.

Passo 1: Processo de enquadramento de zeros (um e um só em cada linha e coluna)


Escolhe-se a linha ou a coluna com menor número de zeros e enquadra-se um desses zeros. De seguida
elimina-se a linha e a coluna correspondente a esse zero e escolhe-se a linha ou a coluna que tenha menor
número de zeros, enquadrando-se um desses zeros. Este processo é repetido até não haver mais zeros para
enquadrar.
Se o número de zeros enquadrados é inferior à dimensão do problema, passa-se ao passo seguinte. Caso
contrário, o algoritmo termina e a solução óptima corresponde ao enquadramento obtido

⎧ 1 se existe um zero enquadrado na posição i,j


x ij = ⎨
⎩ 0 caso contrário

Passo 2: Processo de cobertura de zeros (com um menor número de traços)


Escolhe-se a linha ou coluna com maior número de zeros e cobrimos essa linha ou coluna com um traço.
Deixamos de considerar essa linha ou coluna e escolhemos uma outra linha ou coluna com maior número de
zeros e eliminamos essa outra linha ou coluna. Este processo é repetido até não haver mais zeros para cobrir
com traços. De seguida passamos ao passo 1, actualizando o quadro do seguinte modo
cij → cij + θ

cij → cij

cij → cij

cij → cij − θ

onde θ é o menor valor entre os valores não cobertos por traços.

ALGORITMO KRUSKAL: ÁRVORE GERADORA DE CUSTO MÍNIMO

Passo 0: Ordenar todas as arestas por ordem crescente.

Passo 1: Examinam-se todas as arestas, seguindo a ordem do passo 0, do seguinte modo


Se a aresta forma um ciclo com as escolhidas
Então rejeitamos a aresta para a árvore
Caso contrário escolhemos a aresta para a árvore
Instituto Superior Politécnico de Viseu
Investigação Operacional

ALGORITMO DIJKSTRA: PROBLEMA DO CAMINHO MAIS CURTO

Passo 0: Suponhamos que 1 é o nó inicial e n é o nó terminal e façamos


S = {2,3,…,n}, S = ∅

⎧ d1i se i é adjacente a 1
di = ⎨
⎩ +∞ caso contrário

⎧ 1 se i é adjacente a 1
ant( i ) = ⎨
⎩ +∞ caso contrário

Passo 1: Para k = 1,2,…,n−1 fazer


Determine dr = min{di, i∈ S }

Actualize S = S − {r}, S = S ∪ {r}


Para cada nó i adjacente a r ((r,i)∈E) faça di = min{di, dr + dri} com dri o peso da aresta (r,i)

Se di decresce de valor faça ant(i) = r

ALGORITMO DE FORD-FULKERSON: PROBLEMA DO FLUXO MÁXIMO

Seja G(N,A) um grafo em que N representa o conjunto de nós e A o conjunto de arcos. Representemos por xij o fluxo de
i para j e uij a capacidade do arco (i,j). O algoritmo Ford-Fulkerson tem os seguintes passos:

Passo 0: Considere um fluxo inicial xij = 0 ∀(i,j)∈A.

Passo 1: Construa uma rede auxiliar G(x) do seguinte modo:

1.1 Se xij = 0 em G, introduz-se um arco de i para j em G(x) com capacidade igual a uij.
1.2 Se xij = uij em G, introduz-se um arco de j para i em G(x) com capacidade igual a uij.

1.3 Se 0 < xij < uij em G, introduz-se um arco de i para j em G(x) com capacidade igual a uij − xij e outro

de j para i com capacidade igual a xij.

Passo 2: Determine o caminho de fluxo máximo com menor número de arcos entre o nó inicial e o nó terminal em
G(x). Se não existir nenhum caminho, o algoritmo termina, sendo a solução corrente xij óptima. Caso
contrário passamos ao passo seguinte.

Passo 3: Calcule o fluxo que pode ser enviado pelo caminho determinado no passo 2, actualize a solução e volte ao
passo 1.

Você também pode gostar