Sunteți pe pagina 1din 4
Instituto Superior Politécnico de Viseu Investigação Operacional MÉTODO SIMPLEX: PROGRAMAS LINEARES DE MINIMIZAÇÃO

Instituto Superior Politécnico de Viseu

Investigação Operacional

MÉTODO SIMPLEX: PROGRAMAS LINEARES DE MINIMIZAÇÃO Passo 0: Passo 1: Seja x uma solução básica
MÉTODO SIMPLEX: PROGRAMAS LINEARES DE MINIMIZAÇÃO
Passo 0:
Passo 1:
Seja x uma solução básica admissível associada a um conjunto J de índices das variáveis básicas.
Verificação do Critério de Optimalidade e determinação da variável não básica a passar a básica

Passo 2:

Se

c j 0 ( c j 0 no caso de maximização) para todo jJ, termine: x é solução óptima do programa linear.

De outro modo determine s tal que

{

c

s

=

min c

jj

:

c

< 0

}

.

(

{

c

s

=

j

:

c

j

max c

> 0}

no caso de maximização)

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

Se

partir do Critério do Quociente Mínimo

a is 0,

i=1,

,m,

termine: o programa linear tem solução óptima ilimitada. De outro modo calcule r a

b ⎧ b r i = min ⎨ ⎩ : > 0 ⎫ ⎬ a
b
⎧ b
r
i
=
min
:
>
0
a is
a
a
rs
is ⎭

.

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:

Passo 1:

Passo 2:

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 jJ, ( c j 0, para todo jJ, no caso de maximização).

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

b

r

=

:

b

min{b

ii

< 0

}

.

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

Se a rj 0, para todo jJ, termine: o programa linear é não admissível. De outro modo calcule s a partir do

Critério do Quociente Mínimo

⎧ c c ⎪ j s = min ⎨ : a rj a rs ⎪
c
c
j
s
=
min
:
a
rj
a
rs ⎪
a rj

< 0 ,

j

J

.

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 D UAS F ASES :
Instituto Superior Politécnico de Viseu Investigação Operacional M ÉTODO DAS D UAS F ASES :

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 x 0 na forma tabular (Gauss-Jordan) associada a J com coeficientes p i tais que

⎪ ⎨ ⎧ p 0 se b < 0 i < i . ⎩ ⎪
p
0 se
b
<
0
i <
i
.
⎩ ⎪ se
p
0
b
0
i
i
Calcule k a partir do Critério do Quociente Máximo
b
b
k
i
=
max
:
p
.
i
p k
< 0
p
i ⎭

Passo 1:

Passo 2:

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. Determinação da variável não básica a passar a básica

Se ≤ 0 para todo j∉J, termine: o programa é não admissível. De outro modo
Se
≤ 0 para todo j∉J, termine: o programa é não admissível. De outro modo determine s a partir de
a kj
{
=
max a
: a
> 0}
.
a ks
kj
kj
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
b
b
r
i
= min
: a
>
0
.
is
a
a rs
is
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 x 0 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

Passo 4:

Se

De outro modo determine s a partir de

c j 0 ( c j 0 no caso de maximização) para todo jJ, termine: x é solução óptima do programa linear.

{

c

s

=

min c

jj

:

c

< 0

}

.

{

( c

s

=

j

:

c

j

max c

> 0}

no caso de maximização)

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

Se

partir do Critério do Quociente Mínimo

,m,

a is 0,

i=1,

termine: o programa linear tem solução óptima ilimitada. De outro modo calcule r a

b = min ⎧ ⎨ b r i : a 0 ⎫ ⎬ is >
b
= min
b
r
i
:
a
0
is >
a
a
rs ⎩
is ⎭

.

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 A LGORITMO H ÚNGARO : P ROBLEMA DE
Instituto Superior Politécnico de Viseu Investigação Operacional A LGORITMO H ÚNGARO : P ROBLEMA DE

Instituto Superior Politécnico de Viseu

Investigação Operacional

ALGORITMO HÚNGARO: PROBLEMA DE AFECTAÇÃO

Passo 0:

Passo 1:

Passo 2:

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.

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

x ij

= ⎨

1

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

0

caso contrário

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

c ij

c ij

c ij

c ij

+ θ

θ

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

ALGORITMO KRUSKAL: ÁRVORE GERADORA DE CUSTO MÍNIMO

Passo 0:

Passo 1:

Ordenar todas as arestas por ordem crescente.

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 A LGORITMO D IJKSTRA : P ROBLEMA DO
Instituto Superior Politécnico de Viseu Investigação Operacional A LGORITMO D IJKSTRA : P ROBLEMA DO

Instituto Superior Politécnico de Viseu

Investigação Operacional

ALGORITMO DIJKSTRA: PROBLEMA DO CAMINHO MAIS CURTO

Passo 0:

Passo 1:

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

S

d i

= {2,3,…,n},

S =

=

d 1i

se i é adjacente a 1

+caso contrário

ant(i) =

1 se i é adjacente a 1

+caso contrário

Para k = 1,2,…,n1 fazer

Determine d r = min{d i , iS }

Actualize

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

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

S

= S − {r},

S = S ∪ {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 x ij o fluxo de

i para j e u ij a capacidade do arco (i,j). O algoritmo Ford-Fulkerson tem os seguintes passos:

Passo 0:

Considere um fluxo inicial x ij = 0 (i,j)A.

Passo 1:

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

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

1.2 Se x ij = u ij em G, introduz-se um arco de j para i em G(x) com capacidade igual a u ij .

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

de j para i com capacidade igual a x ij .

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 x ij óptima. Caso

contrário passamos ao passo seguinte.