Você está na página 1de 3

Departamento de Matemtica

Estatstica e Investigao Operacional


Aplicadas Informtica Mdica

Mestrado em Gesto de Sistemas de Informao Mdica

Formulrio de Investigao Operacional


Mtodo Simplex (problema de minimizao)

Passo 1: SBA inicial


Escolher para VB as variveis auxiliares, cujos vetores constituem uma matriz identidade;

Passo 2: Escolher a nova VB


Identicar as VNB com custos reduzidos negativos. Destas, selecionar para entrar na base a varivel com

cj = cj cB T B 1 Aj (o mais negativo).


cj 0, j , ento a soluo atual tima.
menor

Passo 3: Escolher a nova VNB


Seja xk a nova VB escolhida no passo

Em caso de igualdade, escolher arbitrariamente.

Se

b0i
0
a0ik , tais que aik > 0, com, i = 1, ..., m. A
linha com menor quociente corresponde VB atual que deve sair da base. Em caso de igualdade, escolher
0
arbitrariamente. Se aik 0, i, o valor timo e o algoritmo termina.
2. Calcular os quocientes

Passo 4: Calcular o novo quadro do Simplex


Efetuar transformaes lineares de forma a que as colunas associadas s VB constituam uma matriz
identidade. Todas as VB devem ter

c = 0.

Passo 5: Voltar ao Passo 2.

Mtodo das duas fases

1a Fase:
Passo 1:

Introduzir no problema de PL as variveis articiais

Passo 2:

Aplicar o mtodo simplex ao problema auxiliar com f.o.

Passo 3:

Se

w > 0,

o problema de PL inicial no admissvel e o algoritmo termina;

Passo 4:

Se

w = 0,

ento obtm-se uma SBA para o problema de PL;

Passo 5:

Se, na base do quadro nal, no existem variveis articiais, ento tem-se uma base admissvel

x
j

necessrias;

min w =

P
x
j ;
j

para o problema inicial;

Passo 6:

Se, na base do quadro nal, existem variveis articiais, ento continuar a aplicar o mtodo

simplex at que tal no acontea.

2a Fase:
Passo 1:

O quadro nal da 1

a fase corresponde ao quadro inicial da 2a fase, aps se eliminarem as linhas

e colunas correspondentes s variveis articiais;

Passo 2:

A partir do quadro obtido, aplicar o mtodo simplex ao problema de PL inicial.

Dualidade

Rest i
Rest i
Rest i
Var j
Var j
Var j

x
max y min

Var i

Var i
=
Var i
0
Rest j
Rest j
0
livre
Rest j

0
0
livre

Algoritmo Stepping-Stone

Passo 1: Determinao dos custos reduzidos


_

para as VB,

c ij = cij ui vj = 0,

logo,

cij = ui + vj ; como
u1 = 0;

(m + n)

variveis duais, uma delas

livre, podendo-lhe ser atribudo um valor, por exemplo,

para as VNB,

c ij = cij ui vj .

Passo 2: Determinao da VNB que passa a VB

Entra na base a varivel

xrs

que mais contribui para melhorar o objetivo. Como o problema em anlise

de minimizao, entra a varivel com menor custo reduzido (o mais negativo);

Se todos os custos reduzidos forem positivos ou nulos, no possvel melhorar o valor atual da funo
objetivo e, neste caso, a soluo tima.

Passo 3: Determinao da VB que passa a VNB

Ao entrar na base

xrs

deixa de valer

e passa a valer

> 0.

A reduo no custo total deve ser o maior

possvel, tendo em conta a admissibilidade da soluo;

Forma-se um ciclo que inclua a nova varivel

xrs =

e subtrai-se ou soma-se

xrs

e altera-se o valor das VB includas no ciclo.

Faz-se

s variveis que pertencem ao ciclo, de forma a manter-se a soma por

linhas e por colunas.

Voltar ao

passo 1.

Algoritmo Hngaro
Passo 1:

Subtrair a cada linha da matriz de custos o custo mnimo da respetiva linha.

Passo 2:

Subtrair a cada coluna da matriz resultante do

passo 1

o custo mnimo da respetiva coluna.

A matriz encontrada a matriz dos custos reduzidos.

Passo 3:

Riscar com o menor nmero de traos horizontais ou verticais todos os zeros da matriz de custos

reduzidos. Se o nmero de traos utilizado for:




igual a

ento a soluo tima foi encontrada e denida pelos zeros cobertos da matriz.

menor do que

Passo 4:

ento ir para

passo 4.

Encontrar o menor elemento no coberto,

elemento no coberto e somar

k,

da matriz dos custos reduzidos. Subtrair

a cada elemento coberto por 2 traos. Regressar ao

passo 3.

a cada

Comandos do

vetor com s componentes: a<-c(a1 , a2 , ..., as )

matriz

A(mn) :

inversa

package











A <- matrix(c(linha1,...,linham),m,n,byrow=TRUE)

: A1<-solve(A)

lpSolveAPI:

modelo <- make.lp(0, n)


lp.control(modelo, sense=...)
set.objfn(modelo, c())
set.bounds(modelo, lower = c(), upper = c())
set.type(modelo, c(), type = c(...))
add.constraint(modelo, c(), sinal,

bi )

solve(modelo)
get.variables(modelo)
get.objective(modelo)

package





ORClass:

phaseI(A,Tr)
phaseII(A,Tr=a)
steppingstone(MatrizCusto,Tr)