Você está na página 1de 44

Universidade de So Paulo

Instituto de Cincias Matemticas e de Computao


Programa de Iniciao Cientca e Mestrado
PICME 2009/2010
RELATRIO FINAL
ESTUDOS SOBRE OTIMIZAO LINEAR
SO CARLOS
NOVEMBRO/2010
ELEANDRO MARCONDES DE ALMEIDA
Engenharia Eltrica - nfase em Sistema
de Energia e Automao - EESC
Bolsa referente ao Programa de Iniciao Cientca e Mestrado (PICME)
ESTUDOS SOBRE OTIMIZAO LINEAR
Relatrio Final apresentado ao Programa
Institucional de Bolsas de Iniciao Cientca,
Pr-Reitoria de Pesquisa e Ps-Graduao da
Universidade de So Paulo, e rgos de
fomento, sob orientao da Profa. Dra.
Maristela Oliveira dos Santos.
SO CARLOS
NOVEMBRO/2010
1
Sumrio
1 Introduo 5
2 Mtodos de Resoluo de Sistemas Lineares 6
2.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Mtodos Diretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1 Eliminao de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.2 Fatorao LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.3 Pivoteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Mtodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.1 Critrio Geral de Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.2 Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.3 Critrio de Convergncia - Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.4 Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.5 Critrio de Convergncia - Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Otimizao Linear e Mtodo Simplex 13
3.1 Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Mudana de um problema para a forma padro . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1 Problemas de Maximizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2 Sistema Linear das Restries com Inequaes . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.3 Variveis Livres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Mtodo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Partio Bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2 Determinao de uma Soluo Bsica Factvel . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 Algoritmo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Dualidade 20
4.1 Dualidade Fraca, Dualidade Forte e Teorema das Folgas Complementares . . . . . . . . . . . . 21
4.2 Mtodo Dual Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Algoritmo Dual Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.4 Anlise de Sensibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4.1 Variao no vetor c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4.2 Variao no vetor b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4.3 Adio de uma nova varivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4.4 Adio de uma nova restrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 Aplicao : Expanso de Redes de Transmisso 29
5.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 Restries e Funo Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 Anlise dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6 Concluso 35
A Cdigo Implementado 37
2
Lista de Figuras
4.1 Dualidade: Circuito RLC Srie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 Dualidade: Circuito RLC Paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.1 Esquema de Rede de Transmisso - Adaptado de [Chris Dent] . . . . . . . . . . . . . . . . . . . 29
5.2 Esquema da Rede existente com Possveis Novas Instalaes . . . . . . . . . . . . . . . . . . . . 32
5.3 Esquema Final da Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3
Lista de Tabelas
3.1 Composio dos ingredientes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.1 Regras de Construo de problemas duais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.1 Gerao versus Consumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Caractersticas das Linhas Existentes e dos Caminhos . . . . . . . . . . . . . . . . . . . . . . . 32
4
Captulo 1
Introduo
A cincia de tomada de decises, chamada Pesquisa Operacional, tem ganhado papel importante na busca
da melhor ecincia no desenvolvimento de projetos. Ela investiga problemas, tenta model-los e resolv-los
matematicamente, para inferir os resultados realidade e julg-los aplicveis ou no. As reas de atuao de
um prossional conhecedor de pesquisa operacional so bem variadas, como exemplos as reas militares, reas
mdicas, reas administrativas, reas de engenharia, etc.
O escopo deste trabalho consiste nos estudos sobre otimizao linear, um ramo da pesquisa operacional
que trata da modelagem de problemas em que as variveis so contnuas e as relaes entre elas so lineares.
A resoluo de problemas de otimizao linear, os quais sero referenciados aqui pelo nome problemas
lineares, envolve manipulao de matrizes e vetores cujas dimenses, geralmente, so bem elevadas. A principal
e mais corrente rotina realizada durante a procura da soluo tima de um problema linear a resoluo de
Sistemas Lineares. Para tanto sente-se a necessidade de um estudo mais aprofundado de mtodos numricos
para tal manipulao e assim so apresentados, no primeiro Captulo, alguns conceitos de lgebra linear
numrica e alguns mtodos.
Os dois primeiros mtodos de resoluo de sistemas lineares aqui apresentados so classicados como
mtodos diretos, pois no nal de nitas iteraes retornam a soluo exata dos sistemas (Eliminao de Gauss
e Fatorao LU). Os dois ltimos so chamados mtodos iterativos j que geram uma sequncia de vetores que
converge, sob certas condies, para a soluo do sistema (Mtodo de Gauss-Jacobi e Mtodo Gauss-Seidel).
Aps a apresentao desses conceitos desenvolvida, no incio do segundo Captulo do trabalho, a teoria
sobre otimizao linear, bem como algumas denies e teoremas importantes na anlise de problemas lineares.
Em seguida feito um estudo sobre o Mtodo Primal Simplex, ou simplesmente Mtodo Simplex. Um dos
mais usados para resoluo de problemas lineares, foi desenvolvido na dcada de 40 por George Dantzig
[Bazaraa 2005] e utilizado em larga escala nos dias atuais em praticamente todos os pacotes disponveis no
mercado devido a sua ecincia e praticidade. Um outro tipo do mtodo simplex bem ecaz na resoluo de
problemas lineares e na reotimizao de problemas, que possui abordagem diferente na resoluo o mtodo
Dual Simplex. Esse mtodo apresentado na terceiro Captulo do trabalho, junto com a teoria da Dualidade
e Anlise de Sensibilidade.
Todas essas teorias, juntamente com a base matemtica propiciada no primeiro Captulo, possibilitam a
implementao do Mtodo Simplex num cdigo em linguagem C. Essa implementao utilizada na resolu-
o de uma aplicao de otimizao linear em sistemas de energia eltrica. Tal aplicao, apresentada por
[Villasana 1985], comumente denominada na literatura como problema de Fluxo timo de Potncia e con-
siste na expanso de uma rede de transmisso, com a instalao de uma nova unidade geradora e de novas
linhas, visando minimizar os custos em instalaes e obedecendo s restries fsicas e econmicas do sistema
de energia.
5
Captulo 2
Mtodos de Resoluo de Sistemas
Lineares
2.1 Introduo
muito frequente se deparar com sistemas lineares ao trabalhar com Otimizao Linear, portanto neste
Captulo sero detalhados alguns mtodos para resolv-los. A resoluo de um sistema linear a busca de
valores para suas variveis (busca por uma soluo) tal que todas as suas equaes sejam satisfeitas. Um
sistema linear genrico com m equaes e n variveis escrito usualmente da seguinte maneira:
_

_
a
11
x
1
+a
12
x
2
+. . . + a
1n
x
n
= b
1
a
21
x
1
+a
22
x
2
+. . . + a
2n
x
n
= b
2
.
.
.
.
.
.
a
m1
x
1
+a
m2
x
2
+. . . + a
mn
x
n
= b
m
Usando notao matricial, o sistema linear acima pode ser representado como Ax = b, em que:
A =
_
_
_
_
_
a
11
a
12
. . . a
1n
a
21
a
22
. . . a
2n
.
.
.
.
.
.
.
.
.
a
m1
a
m2
. . . a
mn
_
_
_
_
_
a matriz dos coecientes,
x =
_
_
_
_
_
x
1
x
2
.
.
.
x
n
_
_
_
_
_
o vetor das variveis e b =
_
_
_
_
_
b
1
b
2
.
.
.
b
m
_
_
_
_
_
o vetor constante.
H trs possveis casos quando se tenta encontrar a soluo de um sistema linear. O primeiro caso
quando o sistema possui apenas uma soluo, diz-se que o Sistema Possvel Determinado. O sistema
pode possuir innitas solues, logo dito como Sistema Possvel Indeterminado. Por m, uma ltima
situao a no existncia de soluo para o sistema, chamado portanto de Sistema Impossvel.
Para os mtodos de resoluo de sistemas lineares apresentados neste trabalho ser suposto que h solues
nicas. Tais mtodos esto divididos em dois grupos:
Mtodos Diretos que executam uma srie nita de operaes e geram, salvo os erros de arredondamento,
a soluo exata do sistema linear.
Mtodos Iterativos, a partir de uma aproximao inicial x
(0)
, criam uma sequncia de vetores {x
(k)
} que,
quando satisfazem certas condies, converge para a soluo do sistema.
2.2 Mtodos Diretos
2.2.1 Eliminao de Gauss
O intuito deste mtodo transformar um sistema linear original em um sistema equivalente triangular superior.
Sistemas Equivalentes so aqueles que possuem a mesma soluo. As solues de Sistemas Triangulares so
fceis de serem calculadas, veja:
6
Seja o sistema linear Ax = b, em que A R
nn
triangular superior, com elementos no-nulos na diagonal
principal da matriz dos coecientes.
_

_
a
11
x
1
+a
12
x
2
+a
13
x
3
+. . . + a
1n
x
n
= b
1
a
22
x
2
+a
23
x
3
+. . . + a
2n
x
n
= b
2
a
33
x
3
+. . . + a
3n
x
n
= b
3
.
.
.
.
.
.
a
nn
x
n
= b
n
fcil obter x
n
a partir da ltima equao:
x
n
=
b
n
a
nn
Para se obter os outros valores x
i
(i = 1, 2, . . . , n 1), deve-se usar a seguinte frmula:
x
i
=
b
i

j=i+1
a
ij
x
j
a
ii
Note que para conseguir o valor de x
i
, precisa-se dos valores de x
i+1
, . . . , x
n
.
Agora que j conhecido uma maneira de se resolver um sistema triangular superior, ser mostrado como
transformar um sistema linear qualquer em um sistema triangular superior. Para tanto, ser feito uso do
seguinte teorema cuja prova pode ser encontrada em [Boldrini 1980]:
Teorema 1. Seja um sistema linear Ax = b. Aplicando sobre as equaes desse sistema uma das trs
Operaes Elementares abaixo se formar um novo sistema A

x = b

equivalente ao original.
1. trocar duas equaes;
2. multiplicar uma equao por uma constante diferente de zero;
3. adicionar um mltiplo de uma equao a outra.
O mtodo de eliminao de Gauss dividido em etapas. Denomina-se Etapa k a fase em que se elimina a
varivel x
k
das equaes k +1, k +2, . . . , n. Dessa forma, denota-se a
(k)
ij
para designar o coeciente da linha i
e coluna j no nal da etapa k e b
(k)
i
para o i-simo elemento do vetor constante no nal dessa mesma etapa.
Para melhor explicar o mtodo de Eliminao de Gauss, considere o seguinte exemplo:
Exemplo 1.
_
_
_
3x
1
+ 2x
2
+ 4x
3
= 8
2x
1
2x
2
3x
3
= 3
x
1
+ 3x
2
+x
3
= 0
ETAPA 1
OBJETIVO: Eliminar a varivel x
1
das equaes 2 e 3.
Para tanto, prossegue-se da seguinte maneira:
(a) Conserva-se a primeira equao;
(b) Subtrai-se da segunda equao um mltiplo da primeira;
(c) Subtrai-se da terceira equao um outro mltiplo da primeira equao.
Denota-se por m
i1
o escalar a multiplicar a primeira equao am de eliminar o x
1
da i-sima linha. Esse
escalar denominado multiplicador.
Os nicos multiplicadores que satifazem a escolha acima m
21
=
a
(0)
21
a
(0)
11
e m
31
=
a
(0)
31
a
(0)
11
.
Note que a
(0)
11
=3 =0, caso a
(0)
11
seja nulo, deveria ser utilizada a 1
a
operao elementar de forma a obter
a
(0)
11
= 0 (Esse processo sempre possvel pois suposto que o sistema tenha soluo nica e det(A) = 0).
Na determinao de todos os multiplicadores de uma etapa k utilizado um elemento conhecido como
piv (a
(k1)
kk
). Nesta primeira etapa, o piv a
(0)
11
= 3. Mais a frente, na seo 2.2.3, ser detalhado o
7
processo de pivoteamento que escolhe um elemento para se tornar o piv de uma etapa, am de evitar erros
de arredondamento ocorridos quando o valor absoluto do piv muito prximo de zero.
Para tornar o processo mais fcil de entender, a notao L
i
ser usada para indicar o vetor formado pelos
elementos da linha i da matriz A
(k)
|b
(k)
.Deste modo:
A
(0)
|b
(0)
=
_
_
_
a
(0)
11
a
(0)
12
a
(0)
13
b
(0)
1
a
(0)
21
a
(0)
22
a
(0)
23
b
(0)
2
a
(0)
31
a
(0)
32
a
(0)
33
b
(0)
3
_
_
_ =
_
_
3 2 4 8
2 2 3 3
1 3 1 0
_
_
Piv: a
(0)
11
= 3
m
21
= 2/3 e m
31
= 1/3
L
2
L
2
m
21
L
1
L
3
L
3
m
31
L
1
=A
(1)
|b
(1)
=
_
_
3 2 4 8
0 10/3 17/3 7/3
0 7/3 1/3 8/3
_
_
=
_
_
_
a
(1)
11
a
(1)
12
a
(1)
13
b
(1)
1
a
(1)
21
a
(1)
22
a
(1)
23
b
(1)
2
a
(1)
31
a
(1)
32
a
(1)
33
b
(1)
3
_
_
_
ETAPA 2
OBJETIVO: Eliminar x
2
da terceira equao
Piv: a
(1)
22
= 10/3
m
32
=
7
3

10
3
= 7/10
L
3
L
3
m
32
L
2
=A
(2)
|b
(2)
=
_
_
3 2 4 8
0 10/3 17/3 7/3
0 0 43/10 43/10
_
_
=
_
_
_
a
(2)
11
a
(2)
12
a
(2)
13
b
(2)
1
a
(2)
21
a
(2)
22
a
(2)
23
b
(2)
2
a
(2)
31
a
(2)
32
a
(2)
33
b
(2)
3
_
_
_
O sistema A
(2)
x = b
(2)
encontrado triangular superior e equivalente ao sistema original Ax = b. A soluo
desse sistema x =
_
_
2
1
1
_
_
, a mesma do sistema inicial.
2.2.2 Fatorao LU
O processo de Fatorao de uma matriz consiste em decomp-la como um produto de dois ou mais fatores,
para ento resolver uma sequncia de sistemas lineares am de obter a soluo do sistema original.
Um dos processos de fatorao mais utilizados a Fatorao LU. Nessa fatorao, a matriz dos coecientes
A decomposta como produto de uma matriz triangular inferior com diagonal unitria L por uma matriz
triangular superior U. Ento, a resoluo do sistema Ax = b pode ser feita em duas etapas:
Ax = b = (LU)x = b =
_
Ux = y
Ly = b
Primeiro resolve-se o sistema linear inferior Ly = b, com a soluo deste sistema pode-se encontrar a soluo
original, resolvendo o sistema superior Ux = y. H duas maneiras para se obter a fatorao LU de uma matriz
A:
A primeira delas, atravs de frmulas, determina o valor de cada elemento da matriz L (l
ij
) e cada
elemento da matriz U (u
ij
).
A segunda usa os conceitos do mtodo de Eliminao de Gauss, para formar as matrizes L e U, tendo
uma vantagem sobre a primeira maneira, pois facilita o processo da estratgia de pivoteamento, que ser
estudado mais adiante na Seo 2.2.3.
8
Toma-se como exemplo um sistema linear genrico de dimenso 3:
_
_
_
a
11
x
1
+a
12
x
2
+a
13
x
3
= b
1
a
21
x
1
+a
22
x
2
+a
23
x
3
= b
2
a
31
x
1
+a
32
x
2
+a
33
x
3
= b
3
Modica-se apenas matriz dos coecientes. Ento:
A
(0)
=
_
_
_
a
(0)
11
a
(0)
12
a
(0)
13
a
(0)
21
a
(0)
22
a
(0)
23
a
(0)
31
a
(0)
32
a
(0)
33
_
_
_ = A
Ao nal da etapa 1 da eliminao de Gauss, as seguintes relaes so encontradas:
a
(1)
1j
= a
(0)
1j
para j = 1, 2, 3
a
(1)
ij
= a
(0)
ij
m
i1
a
(0)
1j
para i = 2, 3 e j = 1, 2, 3
Essas relaes podem ser obtidas pr-multiplicando a matriz A pela matriz M
(0)
, onde:
M
(0)
=
_
_
1 0 0
m
21
1 0
m
31
0 1
_
_
J ao nal da segunda etapa da eliminao, as relaes entre os valores dos elementos das matrizes A
(1)
e
A
(2)
equivalem a pr-multiplicar A
(1)
por M
(1)
, da forma:
M
(1)
=
_
_
1 0 0
0 1 0
0 m
32
1
_
_
Logo:
A
(0)
= A = M
(0)
A
(0)
= M
(0)
A =
A
(1)
= M
(0)
A = M
(1)
A
(1)
= M
(1)
M
(0)
A =
A
(2)
= M
(1)
M
(0)
A
Mas:
[M
(1)
M
(0)
]
1
= (M
(0)
)
1
(M
(1)
)
1
Ento:
A = [M
(1)
M
(0)
]
1
A
(2)
= (M
(0)
)
1
(M
(1)
)
1
A
(2)
=
_
_
1 0 0
m
21
1 0
m
31
m
32
1
_
_
_
_
_
a
(2)
11
a
(2)
12
a
(2)
13
0 a
(2)
22
a
(2)
23
0 0 a
(2)
33
_
_
_ = LU
2.2.3 Pivoteamento
Tanto no mtodo de Eliminao de Gauss, quanto na Fatorao LU, efetua-se o clculo do multiplicadores
m
ik
=
a
(k1)
ik
a
(k1)
kk
i = k + 1, . . . , n
em cada etapa k do processo. Note que o valor do piv a
(k1)
kk
pode assumir valor nulo ou quase nulo. Quando
isso acontece e a diviso efetuada, gera-se um nmero muito impreciso, causando erros na resoluo do
problema.
Para tanto, existe um artifcio para eliminar esse problema de impreciso chamado Pivoteamento. Esse
processo consiste em cada etapa escolher um elemento da matriz dos coecientes, diferente de nulo, com maior
valor absoluto, para se tornar o piv.
Existem o processo de Pivoteamento Parcial, que procura o candidato a piv da etapa k entre os elementos
da k-sima coluna pertencentes s linhas k, k + 1, . . . , n e o processo de Pivoteamento Completo, que procura
o piv dentre os elementos da matriz quadrada formada pelas linhas e colunas k, k + 1, . . . , n.
9
2.3 Mtodos Iterativos
O princpio dos mtodos iterativos criar uma funo de iterao capaz de, a partir de um vetor aproximao
inicial x
(0)
, gerar uma sequncia de vetores {x
(k)
} cada vez mais prximos verdadeira soluo do sistema x

.
Dada uma preciso usa-se como teste de parada das iteraes o seguinte critrio:
d
(k)
r
< = Fim das Iteraes
onde:
d
(k)
r
=
d
(k)
max
1in
|x
(k)
i
|
sendo que d
(k)
= max
1in
|x
(k)
i
x
(k1)
i
| chamada distncia entre x
(k)
e x
(k1)
Antes de apresentar os mtodos iterativos, vale a pena notar que do sistema linear Ax = b deve-se achar uma
relao do tipo x = Cx+g permitindo assim construir a funo de iterao na forma matricial (x) = Cx+g.
2.3.1 Critrio Geral de Convergncia
Nesta seo, ser estudado um critrio de convergncia para os mtodos iterativos. Mas antes sero introduzidos
alguns conceitos de lgebra Linear.
Denio 1 (Norma). Chama-se norma de uma matriz A R
mn
uma funo F:
F : R
mn
R
A F(A) = ||A||
que satisfaa as seguintes condies:
1. ||A|| 0 e ||A|| = 0 se, e somente se, A = 0 (Matriz Nula: (a
ij
) = 0 i, j).
2. ||A|| = ||||A|| para todo R.
3. ||A+B|| ||A|| +||B|| (Desigualdade triangular)
Denio 2 (Normas consistentes). Se uma norma de matriz e uma norma de vetor esto relacionadas de
tal modo que a desigualdade abaixo seja satisfeita:
||Ax|| ||A||.||x|| x R
n
, A R
mn
diz-se ento que as normas so consistentes.
Na anlise da convergncia dos mtodos iterativos apresentados a seguir usada a seguinte norma para
matrizes chamada Norma Innita:
||A||

= max
1im
n

j=1
|a
ij
|
E para o caso de um vetor v R
n
, tem-se que sua norma innita descrita como ||v||

= max
1in
|v
i
|.
Essas duas normas so escolhidas pois so consistentes e facilitam a anlise de convergncia. Agora com esses
conceitos, pode-se apresentar um critrio geral de convergncia dos mtodos iterativos:
Teorema 2 (Critrio Geral de Convergncia). Dada uma funo de iterao (x) = Cx +g, ela ser conver-
gente se para qualquer norma ||C|| < 1.
Demonstrao: Para provar o teorema acima, dene-se o vetor erro (e
(k)
) como sendo:
e
(k)
= x x
(k)
onde x a soluo do sistema Ax = b e x
(k)
a aproximao de x encontrada aps a iterao k.
Sabem-se as seguintes relaes:
x = Cx +g (2.1)
x
(k)
= (x
(k1)
) = Cx
(k1)
+g (2.2)
10
Subtraindo (2.2) de (2.1), encontra-se:
x x
(k)
= C(x x
(k1)
)
ou mesmo
e
(k)
= Ce
(k1)
Mais ainda,
e
(k)
= Ce
(k1)
= C(Ce
(k2)
) = . . . = C
k
e
(0)
em que e
(0)
o erro inicial. Agora, usando normas consistentes, tem-se:
||e
(k)
|| = ||C
k
e
(0)
|| ||C||
k
||e
(0)
||
Da desigualdade acima possvel notar que para ||C|| 1, tem-se lim
n
||e
(k)
|| = 0. Portanto, a sequncia
converge para a soluo do sistema e ca demonstrado o teorema. 2
2.3.2 Gauss-Jacobi
Analisando um sistema linear genrico:
_

_
a
11
x
1
+a
12
x
2
+. . . + a
1n
x
n
= b
1
a
21
x
1
+a
22
x
2
+. . . + a
2n
x
n
= b
2
.
.
.
.
.
.
a
n1
x
1
+a
n2
x
2
+. . . + a
nn
x
n
= b
n
e supondo que a
ii
= 0, i = 1, . . . , n o vetor x pode ser isolado, da seguinte maneira:
_

_
x
1
=
1
a
11
(b
1
a
12
x
2
a
13
x
3
. . . a
1n
x
n
)
x
2
=
1
a
22
(b
2
a
21
x
1
a
23
x
3
. . . a
2n
x
n
)
.
.
.
x
n
=
1
a
nn
(b
n
a
n1
x
1
a
n2
x
2
. . . a
n,n1
x
n1
)
Obtendo a relao x = Cx +g, onde:
C =
_
_
_
_
_
0 a
12
/a
11
a
13
/a
11
. . . a
1n
/a
11
a
21
/a
22
0 a
23
/a
22
. . . a
2n
/a
22
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a
n1
/a
nn
a
n2
/a
nn
a
n3
/a
nn
. . . 0
_
_
_
_
_
e
g =
_
_
_
_
_
b
1
/a
11
b
2
/a
22
.
.
.
b
n
/a
nn
_
_
_
_
_
Resumindo, o mtodo Gauss-Jacobi consiste no processo mostrado o qual efetua a seguinte relao recursiva:
x
(k+1)
= Cx
(k)
+g.
2.3.3 Critrio de Convergncia - Gauss-Jacobi
Baseando-se no Critrio Geral de Convergncia fcil enunciar um critrio para a convergncia do mtodo
Gauss-Jacobi: A norma innita da matriz de iterao C, denida para este mtodo :
||C||

= max
1im
n

j=1
|c
ij
| = max
1im
n

j=1
|a
ij
|
|a
ii
|
= max
1im
(

n
j=1
|a
ij
|)
|a
ii
|
Desse modo tem-se o seguinte teorema:
Teorema 3 (Critrio das Linhas). Seja o sistema linear Ax = b,
k
= (
n

j=1j=k
|a
kj
|)/|a
kk
| e = max
1kn

k
.
A condio < 1 suciente para o mtodo de Gauss-Jacobi gerar uma sequncia {x
(k)
} convergente para a
soluo do sistema, independentemente da aproximao inicial, x
(0)
.
11
2.3.4 Gauss-Seidel
O mtodo Gauss-Seidel bem similar ao mtodo Gauss-Jacobi, mas o processo iterativo gera a sequncia de
vetores a partir do sistema:
_

_
x
(k+1)
1
=
1
a
11
(b
1
a
12
x
(k)
2
a
13
x
(k)
3
. . . a
1n
x
(k)
n
)
x
(k+1)
2
=
1
a
22
(b
2
a
21
x
(k+1)
1
a
23
x
(k)
3
. . . a
2n
x
(k)
n
)
x
(k+1)
3
=
1
a
33
(b
3
a
31
x
(k+1)
1
a
32
x
(k+1)
2
. . . a
3n
x
(k)
n
)
.
.
.
x
(k+1)
n
=
1
a
nn
(b
n
a
n1
x
(k+1)
1
a
n2
x
(k+1)
2
. . . a
n,n1
x
(k+1)
n1
)
Nota-se que quando calculado o valor de x
(k+1)
j
usa-se os valores x
(k+1)
1
, . . . , x
(k+1)
j1
j calculados na
iterao em andamento e os valores restantes x
(k)
j+1
, . . . , x
(k)
n
, calculados na iterao anterior.
O sistema acima, escrito na forma matricial, :
x
(k+1)
= Ex
(k)
Fx
(k+1)
+g
em que,
E =
_
_
_
_
_
0 a
12
/a
11
a
13
/a
11
. . . a
1n
/a
11
0 0 a
23
/a
22
. . . a
2n
/a
22
.
.
.
.
.
.
.
.
.
.
.
.
0 0 0 . . . 0
_
_
_
_
_
, F =
_
_
_
_
_
0 0 0 . . . 0
a
21
/a
22
0 0 . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
a
n1
/a
nn
a
n2
/a
nn
a
n3
/a
nn
. . . 0
_
_
_
_
_
e
g =
_
_
_
_
_
b
1
/a
11
b
2
/a
22
.
.
.
b
n
/a
nn
_
_
_
_
_
Logo,
x
(k+1)
= (F +I)
1
Ex
(k)
+ (F +I)
1
g
sendo a seguinte matriz de iterao C = (F +I)
1
E.
2.3.5 Critrio de Convergncia - Gauss-Seidel
A seguir encontra-se uma condio para a convergncia da sequncia gerada pelo mtodo de Gauss-Seidel. A
demonstrao da validade deste critrio est desenvolvida em [Ruggiero 1996]
Teorema 4 (Critrio de Sassenfeld). Seja o sistema linear Ax = b. Faam-se:

1
=
|a
12
| +|a
13
| +. . . +|a
1n
|
|a
11
|
e

j
=
|a
j1
|
1
+|a
j2
|
2
+. . . +|a
j,j1
|
j1
+|a
j,j+1
| +. . . +|a
jn
|
|a
jj
|
(Para j = 2, . . . , n)
A condio = max
1jn
{
j
} < 1 suciente para a sequncia gerada pelo mtodo de Gauss-Seidel ser
convergente, independente da aproximao inicial x
(0)
.
12
Captulo 3
Otimizao Linear e Mtodo Simplex
3.1 Conceitos
A Otimizao Linear o ramo da pesquisa operacional que estuda os mtodos para resoluo de problemas
cuja modelagem descrita apenas por relaes lineares entre variveis contnuas. Uma relao linear uma
equao, uma inequao ou uma funo em que o maior expoente das variveis igual a 1. Os diferentes
exemplos de problemas de otimizao linear podem ser encontrados no Captulo 2 de [Arenales 2007]. Dentre
os exerccios deste livro, se encontra o seguinte exemplo (Exerccio 2.3):
Exemplo 2 (Problema de mistura). Uma fundio tem de produzir 10 toneladas de um tipo de liga metlica
e, para isso, tem desponvel: lingotes de ferro, grate e sucata. Dois componentes so relevantes para a liga:
carbono e silcio. A tabela 3.1 fornece a frao desses elementos nos ingredientes disponveis, seus custos
unitrios, suas disponibilidades em estoque, bem como a composio da liga (isto , porcentagens mnimas e
mximas de cada compontente na liga).
Tabela 3.1: Composio dos ingredientes.
Composio Ingredientes Liga
(%) Lingotes Grate Sucata Composio mnima Composio Mxima
Carbono 0,0050 0,90 0,090 0,00 0,095
Silcio 0,14 - 0,27 0,19 0,20
Custo (R$/ton) 90 180 25
Estoque (ton) 5 5 12
Para modelar este problema, inicialmente so denidas as seguintes variveis:
x
ling
- quantidade em toneladas de lingotes de ferro utilizado para a confeco da liga metlica;
x
graf
- quantidade em toneladas de grate usado;
x
suc
- quantidade em toneladas de sucata usada.
O objetivo do problema minimizar a funo Custo Total gasto na produo das 10 toneladas da liga, logo:
Minimizar C(x
ling
, x
graf
, x
suc
) = 90x
ling
+ 180x
graf
+ 25x
suc
As porcentagens das composies de carbono e silcio devem estar dentro dos limites espicicados, ento:
0, 00
0, 0050x
ling
+ 0, 90x
graf
+ 0, 090x
suc
10
0, 095 Composio de Carbono
0, 19
0, 14x
ling
+ 0, 27x
suc
10
0, 20 Composio de Silcio
As quantidades de ingredientes so valores no-negativos limitados pelas quantidades em estoque e, alm
disso, somam um valor de 10 toneladas:
0 x
ling
5
0 x
graf
5
0 x
suc
12
x
ling
+x
graf
+x
suc
= 10
13
Resumidamente, o problema ca da seguinte forma:
Minimizar C(x
ling
, x
graf
, x
suc
) = 90x
ling
+ 180x
graf
+ 25x
suc
(3.1)
0, 00 0, 0050x
ling
+ 0, 90x
graf
+ 0, 090x
suc
0, 95 (3.2)
1, 9 0, 14x
ling
+ 0, 27x
suc
2, 0 (3.3)
0 x
ling
5 (3.4)
0 x
graf
5 (3.5)
0 x
suc
12 (3.6)
x
ling
+x
graf
+x
suc
= 10 (3.7)
Este exemplo ilustra um problema de otimizao linear, pois trabalha com variveis contnuas e todas
as restries e a funo a ser minimizada so relaes lineares. Pode-se evidenciar algumas propriedades
importantes deste problema em particular e assim inferi-las sobre um problema de otimizao linear genrico.
Seja S = {x R
3
, x = (x
ling
, x
graf
, x
suc
)| x satisfaz as restries (3.2)-(3.7)} o conjunto das possveis
solues das restries do problema. Note que x S est sujeito a trs tipos de restries:
a
T
i
x b
i
, para i I
1
a
T
i
x b
i
, para i I
2
a
T
i
x = b
i
, para i I
3
em que I
1
, I
2
e I
3
so conjuntos de ndices, a
i
so vetores , neste caso, a
i
R
3
e b
i
so escalares. Por
exemplo, a ltima restrio, x
ling
+x
graf
+x
suc
=
_
1 1 1
_
. .
a
T
i
_
_
x
ling
x
graf
x
suc
_
_
. .
x
= 10
..
b
i
, pertence ao terceiro grupo
de restries.
Mais adiante ser observado que, com um aumento de variveis do problema, possvel transformar restri-
es do primeiro e do segundo grupo em restries do terceiro grupo. Outro fato importante para se notar que
as variveis, no exemplo, no podem assumir valores negativos. Este fato ajuda no desenvolvimento do mtodo
simplex apresentado neste trabalho e quando isto no evidenciado durante a modelagem deve-se preocupar
em trabalhar somente com vriveis no-negativas, mais a frente tambm ser assegurada esta possibilidade.
Logo, para simplicao de anlise, suponha que as restries so todas de igualdade e que alm disso as
variveis so todas no-negativas. O conjunto S pode ser escrito como S = {x R
n
|Ax = b, x 0}, em que n
o nmero de variveis que o problema ter ao m dos ajustes mencionados.
Denio 3 (Forma Padro). Um problema de Otimizao Linear est escrito na forma padro caso se
apresente como abaixo:
Minimizar f(x) = c
T
x (3.8)
Ax = b (3.9)
x 0 (3.10)
em que:
A =
_
_
_
_
_
a
11
a
12
. . . a
1n
a
21
a
22
. . . a
2n
.
.
.
.
.
.
.
.
.
a
m1
a
m2
. . . a
mn
_
_
_
_
_
a matriz mn chamada matriz dos coecientes
c =
_
c
1
c
2
. . . c
n
_
T
o vetor dos custos
x =
_
x
1
x
2
. . . x
n
_
T
o vetor das variveis
b =
_
b
1
b
2
. . . b
m
_
T
o vetor dos termos independentes ou vetor dos recursos
0 =
_
0 0 . . . 0
_
T
o vetor nulo
14
A funo linear a ser minimizada f(x) em (3.8) denominada Funo Objetivo e o sistema linear Ax = b
em (3.9) junto com a condio de no-negatividade em (3.10) denem as Restries do problema.
Denio 4 (Soluo Factvel e Regio Factvel). Considerando um problema de otimizao linear escrito na
forma padro, denomina-se Soluo Factvel x = (x
1
, . . . , x
n
) aquela que satisfaz as restries (3.9 e 3.10).
O conjunto S de todas as solues factveis denominado Regio Factvel :
S = {x R
n
: Ax = b e x 0}
Denio 5 (Soluo Bsica). Dene-se x R
n
como sendo uma Soluo Bsica de um problema linear
na forma padro se existir o vetor Ax e se x possuir pelo menos n m entradas nulas. Caso possua mais de
n m elementos iguais a zero diz-se que uma Soluo Degenerada.
Denio 6 (Soluo tima). Soluo tima de um problema em que se deseja minimizar a funo objetivo
denida como a soluo factvel x

= (x

1
, . . . , x

n
), que, para qualquer soluo factvel x, a seguinte relao
verdadeira:
x

S soluo tima x S, f(x

) f(x)
Seguem algumas denies geomtricas que auxiliaro no desenvolvimento do mtodo para a determinao
da soluo tima de um problema linear.
Denio 7 (Conjunto Convexo). Seja A um conjunto de vetores de R
n
. Se para quaisquer x A, y A e
[0, 1] tem-se que (x + (1 )y) A ento diz-se que A um Conjunto Convexo.
Denio 8 (Ponto extremo). Seja S um conjunto convexo. Chama-se x S de ponto extremo de S quando
no possvel encontrar dois vetores y, z S tais que x = y + (1 )z, para algum (0, 1).
Teorema 5 (Convexidade da Regio Factvel). A regio factvel de um problema linear convexa.
Demonstrao: Seja um problema linear e sua regio factvel S. Admitindo que ele j esteja na forma
padro (na prxima seo ser mostrado como tornar qualquer problema linear na forma padro estabelecida
3). Sejam x, y S, [0, 1] e z = (x + (1 )y) logo:
Az = A(x + (1 )y) = Ax + (1 )Ay = b + (1 )b = b
Alm disso, fcil ver que z 0 devido no - negatividade das solues x e y e dos escalares e (1 ).
Portanto z S demonstrando assim a convexidade da regio factvel. 2
Teorema 6. Seja um problema linear na forma padro e S sua regio factvel. As solues bsicas factveis
do problema so pontos extremos de S.
Demonstrao: Seja x S uma soluo bsica factvel. Sem perda de generalidades, suponha que as
n m primeiras variveis so nulas. Admitindo tambm, por absurdo, que x no um ponto extremo da
regio S, ou seja, existem y S e z S tais que x = y + (1 )z para algum (0, 1). Logo:
0 = y
i
+ (1 )z
i
i {1, 2, , n m}
Como (0, 1), y
i
0 e z
i
0 (y, z S) segue que y
i
= z
i
= 0 i {1, 2, , n m}. Sabendo isso as
restries Ay = b e Az = b formam dois sistemas lineares de m variveis. Tais sistemas possuem soluo nica
e consequentemente x = y = z, o que contraria a hiptese de a soluo no ser um ponto extremo. Portanto,
x ponto extremo de S. 2
Abaixo segue um teorema que mostra como procurar a soluo tima dentre as solues factveis.
Teorema 7. Se um problema de otimizao linear tem soluo tima, ento existe um ponto extremo timo.
O teorema acima diz que para resolver um problema de otimizao basta procurar dentre as solues bsicas
factveis aquela que gera um valor mnimo para a funo objetivo. Apesar da resoluo ser restrita a analisar
apenas um nmero nito de solues, ainda assim invivel testar todos os pontos extremos da regio factvel.
Para tanto, o mtodo simplex simplica essa busca pelo vrtice timo, partindo de uma soluo bsica factvel
inicial, denotada por x, verica se ela a soluo tima do problema e caso no seja gera uma direo de busca
para um prximo ponto extremo melhor, x

, tal que f( x

) f( x). A maneira para determinar essa soluo


bsica factvel inicial ser detalhada mais a seguir, na Seo 3.3.2.
3.2 Mudana de um problema para a forma padro
A seguir sero apresentadas algumas tcnicas para modicar um problema qualquer e deix-lo na forma padro:
15
3.2.1 Problemas de Maximizao
A soluo tima x

que maximiza a funo objetivo a soluo factvel tal que f(x

) f(x) para qualquer


soluo factvel x. Note que, multiplicando a desigualdade por 1 obtem-se f(x

) f(x) para toda soluo


factvel x, assim a soluo que maximiza a funo f(x) a soluo que minimiza a funo f(x).
Portanto, para deixar na forma padro um problema de maximizao, basta apenas substituir a funo
objetivo f(x) por f

(x) = f(x).
3.2.2 Sistema Linear das Restries com Inequaes
Suponha-se que a i-sima restrio seja dada pela desigualdade:
a
i1
x
1
+a
i2
x
2
+. . . +a
in
x
n
b
i
Cria-se uma varivel adicional x
k
, chamada varivel de folga, tal que x
k
= b
i
(a
i1
x
1
+a
i2
x
2
+. . . +a
in
x
n
).
Pode se observar que da desigualdade acima tem-se que x
k
0. Assim consegue-se tornar a desigualdade uma
igualdade, criando uma nova varivel no-negativa:
a
i1
x
1
+a
i2
x
2
+. . . +a
in
x
n
+x
k
= b
i
, x
k
0
Analogamente, quando a restrio se apresenta da forma:
a
i1
x
1
+a
i2
x
2
+. . . +a
in
x
n
b
i
Faa x
k
= a
i1
x
1
+a
i2
x
2
+. . . +a
in
x
n
b
i
0, ento a restrio torna-se uma igualdade e acrescentada
uma nova varivel:
a
i1
x
1
+a
i2
x
2
+. . . +a
in
x
n
x
k
= b
i
, x
k
0
3.2.3 Variveis Livres
Num problema de otimizao podem existir variveis que no possuem restrio quanto ao sinal, ou seja, no
tm necessariamente valores no-negativos. Estas variveis so chamadas Variveis Livres. Como na forma
padro as variveis so sempre positivas ou nulas, usa-se o seguinte artifcio:
Todo nmero real pode ser escrito como a diferena de dois nmeros reais no-negativos:
a R, a = a
+
a

, com a
+
0, a

0
Logo, para no se trabalhar com variveis livres, elas devem ser decompostas como diferena entre duas
novas variveis no-negativas, efetuando as devidas modicaes nas restries e na funo objetivo.
3.3 Mtodo Simplex
O mtodo simplex, desenvolvido pelo matemtico norte-americano George Dantzig [Bazaraa 2005], um m-
todo amplamente usado para resoluo de problemas de Otimizao Linear. A verso deste mtodo apresen-
tado aqui aplicado em um problema modelado na forma padro denida anteriormente. A princpio sero
apresentadas algumas denies e notaes.
3.3.1 Partio Bsica
Partio bsica para o mtodo simplex a partio das colunas da matriz dos coecientes A de forma a obter
A =
_
B N

, em que:
B R
mm
denominada Matriz Bsica uma matriz invertvel formada por m colunas de A. Estas
colunas da matriz A so indicadas por ndices armazenados em um vetor B R
m
(Vetor dos ndices
Bsicos), assim a i-sima coluna de B a B
i
-sima coluna de A.
N R
m(nm)
chamada Matriz No-Bsica, formada pelas n m colunas de A no pertencentes
matriz bsica. Para armazenar os ndices que indicam as colunas de A contidas na matriz no-bsica,
utiliza-se o vetor N R
nm
(Vetor dos ndices No-Bsicos).
16
Da mesma maneira o vetor das variveis x particionado em x =
_
x
B
x
N
_
, sendo x
B
=
_
x
B1
. . . x
B
m
_
T
,
o Vetor das Variveis Bsicas e x
N
=
_
x
N1
. . . x
N
nm
_
T
, o Vetor das Variveis No-Bsicas.
Com essa partio, o sistema linear das restries Ax = b torna-se:
Ax = b
Bx
B
+Nx
N
= b
Bx
B
= b Nx
N
x
B
= B
1
b B
1
Nx
N
Eis algumas nomenclaturas importantes:
Soluo Geral :x
B
= B
1
b B
1
Nx
N
.
Soluo Bsica :
_
x
B
= B
1
b
x
N
= 0
.
Soluo Bsica Factvel :
_
x
B
= B
1
b 0
x
N
= 0
.
Soluo Bsica Factvel No-Degenerada:
_
x
B
= B
1
b > 0
x
N
= 0
.
Particiona-se tambm o vetor dos custos, de forma a obter:
f(x) = c
T
x =
_
c
T
B
c
T
N

_
x
B
x
N
_
= c
T
B
x
B
+c
T
N
x
N
Para a soluo bsica factvel inicial, f( x) = c
T
B
x
B
+c
T
N
x
N
= c
T
B
B
1
b. Entretanto, para uma soluo geral
do problema:
f(x) = c
T
B
x
B
+c
T
N
x
N
f(x) = c
T
B
(B
1
b B
1
Nx
N
) +c
T
N
x
N
f(x) = c
T
B
B
1
b c
T
B
B
1
Nx
N
+c
T
N
x
N
f(x) = f( x) + (c
T
N
c
T
B
B
1
N)x
N
Observando a relao acima, pode-se concluir que a soluo bsica factvel inicial a soluo tima quando
(c
T
N
c
T
B
B
1
N)x
N
0, sendo assim f( x) f(x) , para todo x S, logo x = x

.
Para analisar se a sentena verdadeira e se o problema j tem a soluo tima encontrada, mais duas
denies sero usadas:
Denio 9 (Vetor Multiplicador Simplex). Dene-se Vetor Multiplicador Simplex o vetor R
m
, tal
que
T
= c
T
B
B
1
:

T
= c
T
B
B
1
(
T
)
T
= (c
T
B
B
1
)
T
= (B
1
)
T
c
B
[(B
1
)
T
]
1
= c
B
B
T
= c
B
.
Denio 10 (Custos Relativos). Os valores c
N
j
= c
N
j

T
a
N
j
, (para j = 1, . . . , n m e em que a
N
j
representa a N
j
-sima coluna de A) so denidos como Custos Relativos ou Custos Reduzidos.
Utilizando dessas duas denies, tem-se:
f(x) = f( x) + c
N
1
x
N
1
+. . . + c
N
(nm)
x
N
(nm)
Sabendo que x
N
j
0, a condio que deve ser analisada para armar se a soluo bsica factvel inicial
a soluo tima, vericar se c
N
j
0 (para qualquer j = 1, . . . , nm). Esta condio denomina-se Condio
de Otimalidade e quando no satisfeita,isto , se existe pelo menos um k, tal que c
N
k
= c
N
k

T
a
N
k
< 0,
ento deve-se encontrar uma nova soluo bsica factvel x

, que gere um valor na funo objetivo menor que


a soluo bsica factvel inicial. Para tanto utiliza-se o que se dene como Estratgia Simplex:
17
Denio 11 (Estratgia Simplex). Chama-se Estratgia Simplex a alterao das variveis no-bsicas
por:
_
x
N
k
= 0 (Varivel com custo relativo negativo)
x
N
j
= 0 j = 1, . . . , n m (j = k)
Assim a funo objetivo torna-se:
f( x

) = f( x) + c
N
k
< f( x)
Note que quanto maior o valor de menor ser o valor da funo objetivo aplicado ao novo valor x

. Mas
o valor de , chamado Tamanho do Passo, deve ser escolhido de forma que o novo valor x

seja uma soluo


bsica factvel. Ento busca-se encontrar uma relao entre o valor de e as entradas de x

, de forma a obter
uma nova soluo bsica com maior valor para o tamanho do passo.
Denio 12 (Direo Simplex). Dene-se Direo Simplex, o vetor y = B
1
a
N
k
.
Como x

necessariamente uma soluo geral do sistema Ax = b e supondo que foi aplicada a estratgia
simplex na sua parte no-bsica, tem-se:
x

B
= B
1
b B
1
N x
N
x

B
= x
B
B
1
a
N
k

B
= x
B
y
Reescrevendo a ltima equao acima para cada coordenada e considerando a condio de no-negatividade,
tem-se:
x

B
i
= x
B
i
y
i
0 (i = 1, . . . , m).
Deste modo:
se y
i
0, ento x

B
i
0, para todo 0
se y
i
0, pela condio de no-negatividade x

B
i
= x
B
i
y
i
0 tem-se ento que
x
B
i
y
i
.
Para respeitar a relao acima
x
B
i
y
i
(com y
i
0) para todo i = 1, . . . , m e escolher de maior valor
possvel, deve-se optar em substituir x
N
k
por , em que:
=
x
B
l
y
l
= min{
x
B
i
y
i
, tal que y
i
> 0}
OBS: Quando y
i
0 para todo y = 1, . . . , m, no h limite para o valor de , indicando que a soluo
perturbada pela estratgia simplex ser sempre factvel para qualquer 0 e como a funo objetivo decresce
com o crescimento do tamanho do passo , o problema dito ter Soluo tima Ilimitada.
Com a modicao (x
B
l
= 0 e x
N
k
= ), a partio bsica se altera e essa alterao pode ser facilmente
resolvida trocando os ndices B
l
N
k
, nos vetores de ndices. Desta maneira, a matriz bsica modica-se de
B para B

, porm esta nova matriz continua sendo invertvel e a nova partio A =


_
B


continua sendo
bsica.
Retorna-se ento ao processo de vericao da condio de otimalidade e aplica-se a estratgia simplex
caso seja necessrio. Repetem-se esses processos at que a condio de otimalidade seja satisfeita e indique
uma Soluo tima ou at que o algoritmo acuse uma Soluo tima Ilimitada.
3.3.2 Determinao de uma Soluo Bsica Factvel
Para o desenvolvimento do mtodo simplex necessrio determinar uma soluo bsica factvel inicial. Um
mtodo para se determinar essa soluo incial escolher m dentre as n colunas e vericar se a matriz formada
M produz uma soluo x 0 em Mx = b. Mas este mtodo se torna restrito a casos com pequenos nmeros
de colunas e linhas da matriz A.
Uma maneira mais vivel para se determinar uma soluo bsica factvel inicial acrescentar novas variveis
x
a
, denominadas Variveis Articiais, de modo que o problema original torne-se um problema articial, da
forma:
Minimizar f(x, x
a
) =
m

i=1
x
a
i
Ax +Ix
a
= b
x 0 , x
a
0
18
Uma partio bsica desse novo problema pode ser
_
I A

, (com I sendo a matriz identidade de ordem


m). Essa partio gera uma soluo bsica factvel x
a
= b (desde que b
i
0, para qualquer i = 1, . . . , m,
caso no seja basta multiplicar a equao por -1). Por serem variveis adicionadas ao problema original, as
variveis articiais sero, no nal desse problema articial, todas nulas. Mas com isso no nal da resoluo
do problema articial ser gerado uma soluo bsica factvel que pode ser utilizada para comear a aplicar o
mtodo simplex ao problema original.
3.4 Algoritmo Simplex
Abaixo detalhado o Algoritmo Simplex, dividido em duas fases. No Apndice A mostrado o algoritmo
implementado em liguagem C desenvolvido para a resoluo do problema de aplicao do Captulo 5:
Fase I : Determinao de uma Soluo Bsica Inicial, processo observado na seo anterior.
Fase II : O algoritmo simplex em si. apresentado em passos:
FAZER ITERACAO = 1
INCIO DA ITERAO
Passo 1. CALCULAR SOLUO BSICA
_
x
B
= B
1
b
x
N
= 0
Passo 2. DETERMINAR A VARIVEL A ENTRAR NA BASE:
2.1. ENCONTRAR O VETOR MULTIPLICADOR SIMPLEX

T
= c
T
B
B
1
2.2. CALCULAR CUSTOS RELATIVOS
c
N
j
= c
N
j

T
a
N
j
j = 1, . . . , n m
c
N
k
= min c
N
j
, j = 1, . . . , n m
Varivel x
N
k
entra na base
Passo 3. VERIFICAR TESTE DE OTIMALIDADE
Se ( c
N
k
0) ento PARE {Soluo tima Encontrada}
Passo 4. CALCULAR DIREO SIMPLEX
y = B
1
a
N
k
Passo 5. DETERMINAR VALOR DO PASSO E VARIVEL A SAIR DA BASE
Se (y 0) ento: PARE {Soluo Ilimitada f(x) }
seno:
=
x
B
l
y
l
= min{
x
B
i
y
i
, tal que y
i
> 0, i = 1, . . . , m}
Varivel x
B
l
sai da base
Passo 6. ATUALIZAR
Vetores de ndices: N
k
B
l
FAZER ITERACAO = ITERACAO + 1
Enquanto (ITERACAO < ITERACAO_MAXIMA), Voltar para Passo 1
FIM DA ITERAO SIMPLEX
19
Captulo 4
Dualidade
Uma ferramenta muito til na rea de cincias exatas a teoria da dualidade. Atravs dela pode-se resolver
um problema utilizando uma ideia complementar usual. Por exemplo, um circuito eltrico RLC srie, como
mostra a Figura 4.1, tem geralmente uma tenso aplicada como entrada e uma corrente eltrica como resposta
e rege-se a seguinte equao diferencial:
L
d
2
i(t)
dt
2
+R
di(t)
dt
+
1
C
i(t) =
dv(t)
dt
(4.1)
O circuito dual correspondente (Figura 4.2) o circuito paralelo abaixo com um capacitor(C), um indutor(L)
e uma condutncia(G), cuja entrada e sada so a corrente eltrica total e a tenso sobre os componentes,
respectivamente. Esse segundo circuito obedece seguinte equao diferencial:
C
d
2
v(t)
dt
2
+G
dv(t)
dt
+
1
L
v(t) =
di(t)
dt
(4.2)
Note que ambas equaes diferenciais 4.1 e 4.2 diferenciam-se apenas pela modicao dos parmatros R
por G, C por L e v(t) por i(t). Cada par de parmetros corresponde a um par de elementos duais em circuitos
eltricos. Pela dualidade pode-se inferir que a resoluo de um circuito RLC srie a mesma soluo do seu
circuito paralelo dual bastando apenas modicar os elementos duais.
Figura 4.1: Dualidade: Circuito RLC Srie Figura 4.2: Dualidade: Circuito RLC Paralelo
Em Otimizao Linear a teoria de dualidade explora uma maneira diferente de resoluo de um problema
linear utilizando um processo iterativo denominado mtodo dual simplex. A ideia principal do mtodo dual
simplex partir de uma soluo dual bsica inicial, geralmente infactvel para o problema primal para ento
buscar uma soluo bsica factvel para ambos os problemas. Sero demonstradas algumas propriedades
importantes que armaro que a soluo encontrada, sendo bsica factvel tanto primal quanto dual ser
a soluo tima do par de problemas (primal-dual). Atravs da dualidade pode-se realizar uma anlise da
estabilidade da soluo tima de um problema linear quando h modicaes nos parmetros dados. Essa
anlise ser mais detalhada na Seo 4.3.
Para desenvolvimento do mtodo dual simplex, suponha inicialmente o seguinte problema primal na forma
padro:
Minimizar f(x) = c
T
x (4.3)
Ax = b (4.4)
x 0 (4.5)
20
Suponha que possam existir modicaes no vetor de recursos b de maneira que nem sempre b Ax = 0.
Dene-se ento um vetor y = b Ax e constroi-se o seguinte problema denominado problema Lagrangiano:
Minimizar L(x, ) = c
T
x +
T
y
x 0
em que
i
o custo da modicao do recurso i. Observe que
L(x, ) = c
T
x +
T
y = c
T
x +
T
(b Ax) =L(x, ) = (c
T

T
A)x +
T
b
Denio 13 (Funo Dual). Denomina-se funo dual a funo g : R
m
R, tal que:
g() = Minimizar {L(x, ) = (c
T

T
A)x +
T
b}
x 0
S h duas possibilidades de valores para a funo dual g(): ou ela diverge, g() , ou converge
para g() =
T
b. Para mostrar esta propriedade basta observar os elementos da primeira parcela da funo
lagrangiana (c
T
i

T
A
i
)x
i
(em que A
i
a i-sima coluna de A):
se c
T
i

T
A
i
= 0 ento x
i
pode assumir qualquer valor no-negativo, mas (c
T
i

T
A
i
)x
i
= 0
se c
T
i

T
A
i
> 0 ento x
i
deve se nulo para obter o mnimo desta multiplicao, assim (c
T
i

T
A
i
)x
i
= 0
se c
T
i

T
A
i
< 0 ento x
i
+ e (c
T
i

T
A
i
)x
i

Portanto para a funo dual convergir a seguinte restrio deve ser satisfeita
c
T
i

T
A
i
0 i = {1, 2, , m}
Essa restrio escrita na forma matricial ca na forma:
c
T

T
A 0 =
T
A c
T
=A
T
c
Resumindo, a funo dual g() assume valor real quando so satisfeitas as seguintes restries lineares
A
T
c. Nessas condies tem-se g() =
T
b. Inigindo qualquer restrio, a funo diverge g() .
4.1 Dualidade Fraca, Dualidade Forte e Teorema das Folgas Com-
plementares
Nesta seo sero mostrados alguns teoremas e propriedades, importantes na teoria da dualidade em otimizao
linear, que relacionam a funo objetivo primal f com a funo dual g associada.
Sejam R e S dois conjuntos em R
n
tais que S R, diz-se que R uma relaxao de S. Ento fcil ver
que:
Minimizar {f(x), x R} Minimizar {f(x), x S}
Pela denio da funo dual e denindo R = {x R
n
: x 0} e S = {x R
n
: Ax = b, x 0} (claramente
S R), segue que:
g() = Minimizar {c
T
x +
T
(b Ax), x 0}
Minimizar {c
T
x +
T
(b Ax), x 0, Ax = b} =
= Minimizar {c
T
x, x 0, Ax = b} f(x)
Teorema 8. Seja um problema linear na forma padro 4.5. O valor da funo dual g correspondente aplicada
em um vetor R
m
sempre menor ou igual ao valor da funo objetivo primal f aplicado a qualquer ponto
da regio factvel primal:
g() f(x), R
m
e x S = {x R
n
: Ax = b, x 0}
O teorema acima arma que a funo dual g() um limitante inferior da funo primal f(x). Como
procura-se minimizar a funo do problema primal, conveniente que a funo dual convirja (A
T
c) e
assuma maior valor possvel. Portanto feita a seguinte denio:
21
Denio 14 (Problema Dual). Seja um problema primal na forma padro 4.5. Ento o problema dual
associado a este problema descrito por:
Maximizar g() =
T
b = b
T
(4.6)
A
T
c (4.7)
Note que:
A matriz tecnolgica dual a transposta da matriz tecnolgica primal.
O vetor de custos dual o vetor de recursos do primal e vice-versa.
O vetor das variveis () irrestrito quanto ao sinal.
A expresso da funo dual convergida(4.6) a prpria funo objetivo dual.
As restries (4.7) so denominadas restries duais.
Denio 15 (Soluo dual factvel e Regio Dual Factvel). Seja R
m
. Diz-se que uma soluo dual
factvel se satiszer as restries duais 4.7. O conjunto D de todas as solues duais factveis denominado
Regio Dual Factvel:
D = { R
m
: A
T
c} (Regio Dual Factvel)
Abaixo segue uma propriedade importante para estudo da dualidade
Propriedade 1. O dual do problema dual o problema primal
Utilizando as regras de transformao de um problema qualquer para a forma padro vistos na Seo 3.2,
a denio 14 e a propriedade 1 pode-se formular os problemas duais dos diversos tipos de problemas primais.
A seguir mostrada uma tabela com as regras de construo de problemas duais a partir de um problema
primal que no esteja na forma padro.
Tabela 4.1: Regras de Construo de problemas duais
Problema de Minimizao Problema de Maximizao
Vetor de Recursos Vetor de Custos
Vetor de Custos Vetor de Recursos
Restrio
=

Livre

Varivel
Varivel

Livre

=
Restrio
Agora efetuando uma anlise das regies factveis primal e dual pode-se determinar a existncia ou no de
soluo tima para o par de problemas, bem como a existncia de uma soluo ilimitada.
Sejam P a regio factvel de um problema primal na forma padro e D a regio factvel do problema dual
correspondente:
P = {x R
n
: Ax = b, x 0} e D = { R
m
: A
T
c}
Deste modo pode-se reescrever o teorema 8 como: D, xP, g() f(x).
Admitindo que P = , isto , h pelo menos uma soluo factvel primal. Se o problema primal no tem
soluo tima (f(x) ) ento no h limitante inferior para a funo objetivo primal e, consequentemente,
D = .
A mesma anlise pode ser aplicada para o problema dual. Se D = e o problema dual no tem soluo
tima (g() ) ento P = .
As condies inversas, se D = (P = ) ento f(x) (g() ), so verdadeiras porm no so
triviais para serem provadas. As provas podem ser encontradas em [Bazaraa 2005].
Teorema 9. O problema primal possui soluo tima se e somente se o problema dual correspondente possuir
soluo tima.
22
Demonstrao: Suponha que o problema primal tenha soluo tima, ento P = e f(x) > . Segue
que D = e, como P = , g(x) < , ou seja, o problema dual tem soluo factvel e a funo objetivo dual
no diverge, ento o problema dual tem soluo tima. Usa-se o mesmo raciocnio para demonstrar o inverso.
Com esse teorema acima possvel enunciar um dos teoremas mais importantes de dualidade:
Teorema 10 (Dualidade Fraca). Sejam duas solues factveis, x P (Soluo Factvel Primal) e D
(Soluo Factvel Dual). Se f(x) = g() ento x soluo tima do problema primal e a soluo tima
do dual.
Demonstrao: Sejam x P e D, tais que f(x) = g(). Suponha por absurdo que x no soluo
tima, ento existe outra soluo factvel primal x

tal que f(x

) f(x) = g(), isso contradiz o teorema 8


apresentado anteriormente. Portanto x soluo tima do problema primal. Analogamente, soluo tima
do problema dual.
A partir da dualidade fraca acima pode-se observar a seguinte propriedade:
f(x) = g() c
T
x =
T
b c
T
x =
T
Ax
(c
T

T
A)x = 0 (4.8)
Acrescentando variveis de folga nas restries do problema dual, tem-se:
A
T
c A
T
+ = c, com 0
Segue que = c A
T
, ou mesmo,
T
= c
T

T
A e subtituindo em 4.8, obtem-se:
T
x = 0
Entretanto, as componentes dos vetores e x so no-negativas por denio do problema padro, logo
so vlidas as seguintes igualdades para as solues timas do par de problemas:

i
x
i
= 0 , i = 1, , n
Teorema 11 (Folgas Complementares). As solues factveis x R
n
e R
m
so timas, primal e dual,
respectivamente se e somente se:
Ax = b , x 0
A
T
+ = c , 0

i
x
i
= 0 , i = 1, , n
O teorema da folgas complementares acima permite encontrar a soluo tima de um problema primal a
partir da soluo tima do problema dual correspondente e vice-versa. Ele diz tambm que pode-se resolver
um problema linear apenas resolvendo um sistema de equaes no-lineares, ou at mesmo, pode-se resolver
alguns sistemas de equaes no-lineares utilizando tcnicas de otimizao linear.
Uma nova verso para o teorema 10 a dualidade forte que enuncia a seguinte armao:
Teorema 12 (Dualidade Forte). Duas solues x P e D so solues timas dos problemas primal
e dual, respectivamente, se e somente se f(x) = g().
Demonstrao: Seja x P soluo tima do problema primal e D soluo tima do problema
dual correspondente. Portanto pelo teorema das folgas complementares,
T
x = 0 (c
T

T
A)x = 0
c
T
x =
T
Ax. Como x P, segue que c
T
x =
T
b, ou mesmo, f(x) = g().2
Para nalizar esta Seo, segue um ltimo teorema que como os anteriores ser bem empregado durante o
mtodo dual-simplex:
Teorema 13. O Vetor Multiplicador Simplex correspondente soluo tima de um problema primal a
prpria soluo tima do problema dual correspondente.
Demonstrao: Seja x

a soluo tima do problema primal, portanto a partio bsica produzida por


essa soluo gera um Vetor Multiplicador Simplex
T
= c
T
B
B
1
. Aplicando a funo objetivo dual sobre esse
vetor obtm-se g(

) =
T
b = c
T
B
B
1
b. Como x

uma soluo bsica factvel do problema primal tem-se


que x

B
= B
1
b e x

N
= 0. Logo a funo objetivo primal assume valor o f(x

) = c
T
B
x
B
+c
T
N
x
N
= c
T
B
B
1
b +0.
Note que g(

) = f(x

), pela dualidade forte o vetor multiplicador

a soluo tima do problema dual.2


23
4.2 Mtodo Dual Simplex
O mtodo dual simplex uma abordagem alternativa do mtodo simplex apresentado no Captulo anterior.
Sua principal vantagem abrange a realizao de algumas anlises da sensibilidade da soluo tima, j que a
modicao de uma soluo tima pode interferir na sua factibilidade primal, mas no na sua factibilidade
dual.
Seja um problema dual como denido anteriormente (Denio 14). Sua soluo tima um ponto extremo
da sua regio factvel, pois ainda trata-se de um problema linear. Segue abaixo uma denio de soluo bsica
dual e soluo bsica dual factvel, esta sendo tambm associado a um ponto extremo da regio factvel dual.
Denio 16 (Soluo Bsica Dual). Seja uma partio bsica da matriz tecnolgica A como mostrada na
Seo 3.3.1 (A = [ B N ]). Associada essa partio tem-se o que se dene por soluo bsica dual

a
soluo do sistema linear B
T

= c
B
. Caso essa soluo satisfaa as condies no-bsicas N
T

c
N
, diz-se
que

uma soluo bsica dual factvel.
Observe que a factibilidade de uma soluo bsica dual factvel

implica na vericao da otimalidade
primal da soluo bsica x correspondente (Custos relativos c
T
N
no-negativos), veja:
N
T

c
N

T
N c
T
N
c
T
N
= c
T
N

T
N 0
Contudo, a factibilidade dual da soluo

no acarreta na factibilidade primal, ou seja, nem sempre
x
B
= B
1
b 0. Se porventura associada a partio bsica denida por uma soluo bsica dual factvel

gere um vetor x
B
0 pode garantir a factibilidade e otimalidade primais desta soluo, portanto natural
denir como condio de otimalidade dual de uma soluo bsica dual factvel

a condio x
B
= B
1
b 0,
em que B a matriz bsica da partio bsica proporcionada pela soluo

.
Assim como o mtodo simplex, o mtodo dual simplex necessita de uma soluo bsica factvel inicial como
partida para suas iteraes. Suponha ento que j se tem uma soluo inicial

, obtida pela resoluo do
sistema linear B
T

c
B
, como sugere o teorema 13.
Esse sistema linear o resultado da ativao das restries relacionadas s linhas bsicas da matriz A
T
.
Ativar uma restrio de desigualdade signica anular sua varivel de folga, tornando-a assim uma restrio de
igualdade. A factibilidade da soluo bsica em mos

j assegurada, logo deve-se vericar a otimalidade
da mesma, calculando a soluo bsica primal x
B
.
Caso a otimalidade no esteja tambm assegurada, ou seja, quando um elemento de x
B
tem valor negativo,
necessrio buscar uma direo dual simplex
l
que determina uma nova soluo bsica factvel

=

+
l
capaz de fornecer um melhor valor para a funo objetivo dual. Para tanto usa-se a Estratgia dual simplex.
Denio 17 (Estratgia Dual Simplex). Suponha que a varivel x
B
l
assuma valor negativo, portanto sua
coluna bsica associada deve deixar de fazer parte da matriz bsica B. Isso equivale a desativar a B
l
-sima
restrio do problema dual. A pertubao capaz de desativar essa restrio denida como a Estratgia Dual
Simplex:
_
a
T
B
l
= c
B
l
, 0
a
T
B
i
= c
B
i
i = 1, . . . , m, i = l
Note que com a subtrao do valor 0 desativa a restrio, sem contudo criar uma infactibilidade na
nova soluo bsica dual.
Matricialmente a estratgia dual representada por:
B
T

= c
B
e
l
(4.9)
em que e
l
a l-sima coluna da matriz identidade de mesma dimenso que a matriz bsica B.
Isolando

de 4.9 tem-se

= (B
T
)
1
c
B
(B
T
)
1
e
l
.
Denio 18 (Direo Dual Simplex). Dene-se Direo Dual Simplex o vetor
l
= (B
T
)
1
e
l
Portanto, chega-se a seguinte expresso:

=

+
l
(4.10)
Para essa soluo pertubada

tem-se o seguinte valor para a funo objetivo dual:


g(

) = g(

+
l
) = b
T
(

+
l
) = b
T

+b
T

l
Mas
b
T

l
= b
T
((B
T
)
1
e
l
) = (B
1
b)
T
e
l
= x
T
B
e
l
= x
B
l
24
Segue que
g(

) = g(

) x
B
l
Como x
B
l
0 e 0 a funo objetivo dual cresce com o aumento do parmetro . Contudo h um
limite para esse aumento, como foi desativada uma restrio com a estratgia dual simplex, deve-se ativar uma
restrio no-bsica. Logo precisa-se aumentar o valor de at que uma das restries no-bsicas torna-se
ativa.
Analisando cada uma das restries no-bsicas duais a
T
N
j

c
N
j
com j = 1, . . . , n m, em que m o
nmero de variveis duais e n o nmero de restries duais, tem-se:
a
T
N
j

T
a
N
j
= (

+
l
)
T
a
N
j
=

T
a
N
j
+
T
l
a
N
j
c
N
j
Como

soluo bsica factvel do problema dual segue que

T
a
N
j
c
N
j
. Logo, caso
T
l
a
N
j
0 para todo
j = 1, , nm ento a desigualdade se mantm para qualquer valor de 0, consequentemente o problema
dual torna-se ilimitado g() + e como, por hiptese, existe uma soluo factvel D = , conclui-se que o
problema primal infactvel.
Entretanto, se h um valor
T
l
a
N
j
> 0, ento possui limite superior de crescimento determinado pela
frmula:

c
N
j

T
a
N
j

T
l
a
N
j
=
c
N
j

T
l
a
N
j
em que c
N
j
o custo relativo da varivel x
N
j
.
Para manter a factibilidade, o maior valor que pode assumir :

=
c
N
k

T
l
a
N
k
= min{
c
N
j

T
l
a
N
j
, tal que
T
l
a
N
j
> 0}
Deste modo a coluna a
N
k
da matriz tecnolgia comea a fazer parte da base B substituindo o lugar da
coluna a
B
l
retirada anteriormente.
4.3 Algoritmo Dual Simplex
Segue abaixo um pseudocdigo para implementao do mtodo dual simplex:
Fase I : Determinao de uma Soluo Bsica Dual Factvel Inicial.
Fase II : O algoritmo dual simplex propriamente dito:
FAZER ITERACAO = 1
INCIO DA ITERAO
Passo 1. CALCULAR SOLUO BSICA DUAL E CUSTOS RELATIVOS
_

T
= c
T
B
B
1
c
T
N
= c
T
N

T
N
Passo 2. DETERMINAR A VARIVEL A SAIR DA BASE
2.1. CALCULAR SOLUO BSICA PRIMAL
x
B
= B
1
b
x
B
l
= min x
B
i
, i = 1, . . . , m
Varivel x
B
l
sai da base
Passo 3. VERIFICAR TESTE DE OTIMALIDADE DUAL
Se ( x
B
l
0) ento PARE {Soluo tima Dual Encontrada}
Passo 4. CALCULAR DIREO DUAL SIMPLEX

l
= (B
T
)
1
e
l
25
Passo 5. DETERMINAR VALOR DO PASSO E VARIVEL A ENTRAR NA BASE
Se (
T
l
a
N
j
0, para todos j = 1, , n m) ento: PARE {Soluo Ilimitada g() }
seno:

=
c
N
k

T
l
a
N
k
= min{
c
N
j

T
l
a
N
j
, tal que
T
l
a
N
j
> 0}
Varivel x
N
k
entra na base
Passo 6. ATUALIZAR
Vetores de ndices: B
l
N
k
FAZER ITERACAO = ITERACAO + 1
Enquanto (ITERACAO < ITERACAO_MAXIMA), Voltar para Passo 1
FIM DA ITERAO DUAL SIMPLEX
4.4 Anlise de Sensibilidade
Considere o seguinte problema na forma padro e o seu dual:
Minimizar f(x) = c
T
x Maximizar g() = b
T

Ax = b A
T
c
x 0
Ser estudada agora a dependncia entre a soluo tima desse par de problemas e a matriz A e entre os
vetores b e c. Na prtica isso essa anlise interessante pois geralmente no se tem conhecimento total dos
dados do problema, sendo que eles podem variar no decorrer do tempo e tambm pois pode-se predizer os
efeitos causados por mudanas de parmetros de forma a obter uma soluo tima para outro patamar de
valores sem ter a necessidade de resolver novamente o problema linear. Essa anlise denomina-se Anlise de
Sensibilidade de um problema linear e se baseia praticamente na vericao da violao das duas condies de
otimalidade:
c
T
c
T
B
B
1
A 0
T
(Condio de Otimalidade Primal) (4.11)
B
1
b 0 (Condio de Otimalidade Dual) (4.12)
possvel encontrar vrias ocasies ao tentar reotimizar um problema linear, a seguir so enumeradas e
descritas algumas delas.
4.4.1 Variao no vetor c
Note que variaes no vetor de custos primal c no interfere na otimalidade do problema dual (Ver 4.12).
Entretanto, a condio de otimalidade primal pode ser alterada. Suponha que a mudana seja na j-sima
entrada que atualizada com o valor c
j
+ . Se c
j
corresponder ao custo de uma varivel no-bsica, ento
c
B
no se altera e a condio de otimalidade primal satisfeita quando:
(c
j
+) c
T
B
B
1
A
j
0 = + c
j
0 = c
j
Logo, desde que o acrscimo na componente c
j
no seja menor que o oposto do custo relativo dessa
varivel correspondente, a soluo tima no se altera. Caso haja a violao, a otimalidade primal no
satisfeita e atravs do mtodo primal simplex pode-se continuar a procura pela soluo tima.
Agora se c
j
o custo correspondente a uma varivel bsica x
B
l
, ento o vetor de custos das variveis bsicas
c
B
modica-se para c
B
+ e
l
, em que e
l
a l-sima coluna da matriz identidade. A condio de otimalidade
para o novo problema :
(c
B
+e
l
)
T
B
1
A
i
c
i
i = j
(Como x
j
uma varivel bsica, seu custo relativo permanece nulo e no precisa ser vericado). Equiva-
lentemente
q
l
i
c
i
i = j
em que q
l
i
a l-sima componente do vetor B
1
A
i
.
26
4.4.2 Variao no vetor b
Suponha que a componente b
i
do vetor de recursos b foi modicada para b
i
+ . Tal modicao equivale a
mudarm o vetor b para b + e
i
, em que e
i
a i-sima coluna da matriz identidade. Tenta-se determinar o
intervalo para o qual pertena de tal forma que a soluo tima no seja afetada. Observa-se que a condio
de otimalidade primal no depende do vetor de recursos b e por isso mantm-se inalterada (Ver 4.11). H,
ento, a preocupao com a condio de otimalidade dual:
B
1
(b +e
i
) 0
Seja g
i
a i-sima coluna da matriz B
1
, assim a inequao que descreve a condio de otimalidade dual pode
ser escrita como:
x
B
+g 0
Ou
x
B
j
+g
j
0 para j = 1, , m
Equivalentemente, tem-se:
mx
{j|g
j
>0}
(
x
B
j
g
j
) mn
{j|g
j
<0}
(
x
B
j
g
j
)
Portanto, para valores de dentro desse intervalo, a mudana no vetor b no afetar a soluo tima do
problema. Fora dese intervalo, a soluo tima se altera ou o problema pode se tornar infactvel.
4.4.3 Adio de uma nova varivel
Suponha que adicionada mais uma varivel x
n+1
ao problema juntamente com a coluna correspondente
A
n+1
:
Minimizar f(x) = c
T
x +c
n+1
x
n+1
Ax +A
n+1
x
n+1
= b
x 0, x
n+1
0
Deve-se inicialmente vericar a factibilidade primal deste novo problema. Note que o vetor (x, x
n+1
) =
(x

, 0) soluo factvel para o problema primal, entretanto nada garantido quanto sua otimalidade. Por
dualidade a insero dessa nova varivel corresponde a uma nova restrio no problema dual A
T
n+1
c
n+1
,
basta ento vericar se esta restrio satisfeita, caso positivo essa soluo (x, x
n+1
) = (x

, 0) ser factvel
dual e consequentemente ser tima do novo problema.
Se a condio acima for satisfeita ento a soluo (x

, 0) tima e o valor da funo objetivo no se altera.


Porm caso contrrio, c
n+1
< 0, o processo pela busca da soluo tima pode continuar utilizando o mtodo
simplex, calculando a direo simplex conveniente.
4.4.4 Adio de uma nova restrio
Quando se adiciona uma nova restrio ao problema original do tipo a
T
m+1
x b
m+1
(o estudo para a incluso
de uma restrio do tipo a
T
m+1
x b
m+1
segue o mesmo raciocnio desenvolvido a seguir), necessrio apenas
vericar se a soluo tima em mos a satisfaz para que a soluo continue sendo tima. Isso se deve ao fato
de uma soluo tima de um conjunto convexo ser a soluo tima de todas as relaxaes deste conjunto ao
qual ela pertena (Veja Seo 4.1).
Entretanto, caso a soluo tima no satisfaa a restrio adicionada, adiciona-se a restrio uma nova
varivel de folga x
n+1
, obtendo assim a restrio de igualdade a
T
m+1
x x
n+1
= b
m+1
. Tomando a seguinte
base para o novo problema primal:

B =
_
B 0
a
T
1
_
cuja inversa

B
1
=
_
B
1
0
a
T
B
1
1
_
obtm-se a seguinte soluo bsica
x
B
=

B
1
b =
_
B
1
0
a
T
B
1
1
_ _
b
b
m+1
_
=
_
B
1
b
a
T
B
1
b b
m+1
_
27
ou seja,
x
B
=
_
x

a
T
x

b
m+1
_
Vericando a factibilidade dual tem-se:
_
c
T
0

_
c
T
B
0

_
B
1
0
a
T
B
1
1
_ _
A 0
a
T
m+1
1
_
=
_
c
T
c
T
B
B
1
A 0

Todos os custos relativos so no-negativos, logo



B uma base factvel dual e podendo, portanto, continuar
a procurar a soluo tima nova do problema utilizando o mtodo dual simplex.
A insero de uma restrio de igualdade do tipo a
T
m+1
x = b
m+1
pode ser tratada como uma insero de
uma restrio de desigualdade a
T
m+1
x b
m+1
e a cuja varivel de folga x
n+1
atribudo um custo M 0
sucientemente grande. Verica-se o valor do custo relativo desta varivel de folga e continua a resoluo pelo
mtodo simplex. Se M for realmente sucientemente grande, ao nal da resoluo do problema linear obter
x
n+1
= 0, no afetando a veracidade da restrio de igualdade adicionada.
28
Captulo 5
Aplicao : Expanso de Redes de
Transmisso
5.1 Introduo
Como dito anteriormente ser detalhado neste Captulo uma aplicao de otimizao linear para a resoluo de
um problema de uxo timo de potncia apresentado por [Villasana 1985]. A necessidade de um planejamento
de melhoria na estrutura do Sistema de Energia Eltrica, como por exemplo a expanso da rede de transmisso
deve-se principalmente ao aumento do consumo de energia eltrica que surge com o crescimento da populao
de uma regio e com o seu desenvolvimento tecnolgico. O problema apresentado por [Villasana 1985]
comumento denominado na literatura como problema de Fluxo timo de Potncia e consiste na determinao
da melhor distribuio da potncia eltrica til numa rede em expanso, visando minimizar os custos de
instalao de novas linhas ou usinas de gerao de energia.
Em circuitos eltricos e eletrnicos que operam com valores de tenso e corrente eltrica contnuos no
tempo, o uxo de potncia se deve exclusivamente s diferenas de potenciais entre os terminais das cargas.
Entretanto, os modelos de redes de transmisso mais comuns operam com corrente alternada onde o uxo de
potncia ocorre tanto devido diferena de potencial quanto defasagem entre as tenses. Abaixo segue um
esquema de como representada uma rede de transmisso de um sistema eltrico, tal modelo foi adaptado das
notas de aula de [Chris Dent]:
Figura 5.1: Esquema de Rede de Transmisso - Adaptado de [Chris Dent]
A equao que descreve o uxo de potncia til entre dois barramentos (i e j) a seguinte apresentada:
p
ij
= G
ij
|V
i
|
2
G
ij
|V
i
||V
j
|cos(
i

j
) B
ij
|V
i
||V
j
|sen(
i

j
) (5.1)
em que
G
ij
e B
ij
so, respectivamente, a condutncia e a susceptncia das linhas que unem os barramentos i e
j;
|V
i
| e |V
j
| so os mdulos das tenses ecazes dos barramentos i e j;
29

i
e
j
so as fases das tenses nos barramentos i e j.
As condutncias e a susceptncias das linhas juntamente com os mdulos das tenses ecazes dos barramen-
tos so parmetros dados para o projetista. Obviamente estes valores possuem variaes durante a operao
do sistema, contudo no sero consideradas durante a modelagem neste trabalho, j que no produzem erros
signicantes para a abordagem. J as fases dos barramentos so variveis a serem determinadas. Note que
a equao 5.1 acima no-linear pois as variveis se relacionam por funes trigonomtricas. Deve-se ento
realizar algumas consideraes para lineariz-la, so elas:
1. Os mdulos das tenses ecazes dos barramentos do sistema so praticamente o mesmo valor sendo assim
considerados iguas a 1 p.u.
1
2. As linhas possuem resistncias muito menores que impedncias R
ij
<< X
ij
. Logo:
G
ij
=
R
ij
R
2
ij
+X
2
ij
0 e B
ij
=
X
ij
R
2
ij
+X
2
ij

1
X
ij
3. Expandindo as sries de Taylor das funes seno e cosseno e tomando apenas os termos lineares, j que
as diferenas de fases so relativemente pequenas num sistema de potncia, tem-se:
cos(
i

j
) 1 e sen(
i

j
)
i

j
Feitas as consideraes acima, a forma linearizada do clculo do uxo de potncia de um barramento i para
um barramento j, num problema de uxo timo passa a ser atravs da seguinte equao:
p
ij
=
(
i

j
)
X
ij
Para um problema geral, a modelagem matemtica quando se instala um novo barramento feita da
seguinte maneira:
5.2 Restries e Funo Objetivo
As Restries deste problema so basicamente fsicas e econmicas, so elas:
1. A primeira delas o que se chama Equilbrio de Energia em cada Barramento, ou seja, a quantidade de
energia que entra em um n deve ser a mesma que sai (1
a
Lei de Kirchho), isso para todos os n ns da
rede, existentes e novos. O equilbrio respeitado quando a equao a seguir verdadeira:
P
G
P
L
B +KP
D
= 0
em que:
(a) P
G
R
n
o Vetor Gerao de energia, sendo P
Gi
a potncia (em p.u)
2
gerada no i-simo barramento
(com i = 1, . . . , n).
(b) P
L
R
n
o Vetor Consumo de energia, sendo P
Li
a potncia (em p.u.) consumida no i-simo
barramento (com i = 1, . . . , n).
(c) B R
nm
a Matriz de Susceptncia dos barramentos, sendo que valem as seguintes regras:
Para i = j b
ij
=
n
X
ij
_
n : o nmero de linhas entre os ns i e j
X
ij
: o valor da impedncia destas linhas
A soma dos elementos de cada linha nula:
m

j=1
b
ij
= 0 para todo i = 1, . . . , n
(d) R
m
o Vetor dos ngulos de Fases, sendo
i
o ngulo de fase do i-simo barramento (com
i = 1, . . . , m).
1
Sistemas p.u. so muito utilizados em engenharia eltrica pois expressam uma certa grandeza fsica normalizada para uma
base. Por exemplo, considere um barramento cuja tenso seja igual a 370 kV operando num sistema em que a quantidade bsica
seja 375 kV. Portanto a tenso ecaz por-unidade deste barramento de 374kV/375kV = 0, 987p.u.
2
A unidade bsica de potncia til estabelecida pelo problema de 100 MW
30
(e) K R
np
a transposta da Matriz de Conectividade das p linhas de sobrecargas, sendo:
K
ij
= 0, se no existir uma ligao entre o barramento i e a linha de sobrecarga j.
K
ij
= 1, se parte do barramento i um uxo de energia para a linha de sobrecarga j.
K
ij
= 1, se chega no barramento i um uxo de energia da linha de sobrecarga j.
(f) P
D
R
p
o Vetor de Sobrecargas, em que:
P
D
=
_
_
_
P
D1
.
.
.
P
Dp
_
_
_ =
_
_
_
LIGAO i
1
i
2
.
.
.
LIGAO i
n1
i
n
_
_
_
com i
k
{1, 2, . . . , n}
sendo LIGAO a-b o uxo de energia em p.u. que
parte do barramento a e chega ao barramento b
2. A prxima restrio considerada o Equilbrio de Energia em todo Sistema, descrito pela equao:
n

i=1
P
Gi
=
n

i=1
P
Li
3. Tambm considerado os Limites de Gerao, como uma terceira restrio, em que:
0 P
Gi
P
Gi
MAX
para todo i = 1, . . . , n
4. A ltima restrio imposta , de caracter fsico e econmico, a chamada Capacidade Mxima em cada
linha. Esta restrio descrita por:
|
i

j
|
X
ij
CAP
max
ij
(CAP
max
ij
: Capacidade mxima da linha entre os ns i e j.)
O objetivo central do exemplo de planejamento de expanso minimizar os gastos com investimentos em
novas instalaes e os gastos com a gerao de energia. Assim tem-se a funo objetivo descrita como:
Minimizar f(P
D
, P
G
) = c
T
D
P
D
+c
T
G
P
G
em que:
c
D
=
_
c
D
1
. . . c
D
m
_
o Vetor dos Custos de Instalaes por unidade de potncia, sendo c
D
j
direta-
mente proporcional distncia entre os barramentos unidos pela linha de sobrecarga P
D
j
.
c
G
=
_
c
G
1
. . . c
G
n
_
o Vetor dos Custos de Gerao por unidade de potncia, sendo c
G
i
dependente
do tipo de usina de gerao no barramento i.
5.3 Anlise dos Resultados
O exemplo estudado consiste em minimizar o custo de expanso de uma rede de transmisso de energia
eltrica que possui inicialmente 5 barramentos ou ns. A Figura 5.2 a seguir mostra um esquema de como os
barramentos esto dispostos e interligados. Mostra tambm o novo n (6) e suas possveis ligaes.
31
Figura 5.2: Esquema da Rede existente com Possveis Novas Instalaes
A seguir mostrada na Tabela 5.1 a relao da demanda e de gerao de energia em cada barramento:
Tabela 5.1: Gerao versus Consumo
Barramento Gerao Consumo
(MW) (MW)
1 (Existente) 50 80
2 (Existente) 0 240
3 (Existente) 165 40
4 (Existente) 0 160
5 (Existente) 0 240
6 (Novo) 545 0
Nota-se que com os barramentos existentes no ser possvel suprir toda demanda de energia, logo
necessria a instalao de um novo barramento gerador de energia, am de suprir o consumo. Esta anlise
feita num horizonte de aproximadamente 20 anos, logo a utilizao da otimizao linear torna-se adequada,
pois a preciso dos resultados aceitvel para um horizonte to longo quanto o admitido.
A seguir so apresentadas na Tabela 5.2 as caractersticas de cada linha de transmisso, tais como impe-
dncia e capacidade mxima, e de cada caminho onde se pretende colocar uma nova linha. bom notar que o
custo de instalao por unidade de potncia que ui em uma linha diretamente proporcional distncia entre
os dois ns e que tambm existe uma relao direta de proporcionalidade entre a distncia de dois barramentos
e a impedncia (X) da linha entre eles.
Tabela 5.2: Caractersticas das Linhas Existentes e dos Caminhos
Linha ou Terminais X Cap. Mx Distncia Custo de instalao
Caminho (pu) (MW) (milhas) (pu)
1 1 - 2 0,4 100 40 -
2 1 - 4 0,6 80 60 -
3 1 - 5 0,2 100 20 -
4 2 - 3 0,2 100 20 -
5 2 - 4 0,4 100 40 -
6 3 - 5 0,2 100 20 100
7 6 - 2 30 150
8 6 - 4 30 150
9 6 - 5 61 305
A abordagem de resoluo do problema uma heurstica que realiza a anlise dos dados atuais e verica
em qual caminho exige maior sobrecarga de uxo de potncia e deste modo cria-se uma linha com capacidade
mxima igual a 1 p.u. e com impedncia proporcional distncia entre os ns. Em seguida reformula-se o
32
problema inicial, assumindo a existncia da nova linha instalada e refaz-se a anlise, procedendo assim at que
os valores do Vetor de Sobrecargas P
D
sejam todos nulos, indicando que no h mais sobrecargas e que o novo
barramento est interligado corretamente com os outros existentes.
O modelo matemtico do problema foi modicado para a forma padro usando as tcnicas descritas ante-
riormente na Seo 3.2 e resolvido utilizando um programa desenvolvido em linguagem C (Apndice A). Os
resultados sero apresentados em partes para melhor compreenso:
ITERAO I
P
D
=
_
0, 612 0, 000 2, 137 3, 313 0, 000
_
T
=
_
0, 157 0, 272 0, 200 0, 637 0, 000 0, 000
_
T
Nota-se que o caminho de maior exigncia P
D4
= 3, 313 10
8
MW, logo cria-se uma nova linha entre os
ns 6 e 4 (com CAP
max
= 1, 000 10
8
MW e impedncia X = 0, 3).
ITERAO II
P
D
=
_
0, 612 0, 000 2, 137 2, 313 0, 000
_
T
=
_
0, 157 0, 272 0, 200 0, 637 0, 000 0, 937
_
T
A mudana ocorrida nesta parte a diminuio da exigncia no caminho 46, mais mesmo assim possui
a maior exigncia de energia P
D4
= 2, 313 10
8
MW, logo cria-se uma outra nova linha entre os ns 6 e
4 de mesmas caractersticas da anterior.
ITERAO III
P
D
=
_
0, 612 0, 000 2, 137 1, 313 0, 000
_
T
=
_
0, 157 0, 272 0, 200 0, 637 0, 000 0, 937
_
T
Agora, P
D3
= 2, 137 10
8
MW o maior valor do Vetor de Sobrecargas indicando a necessidade de
alocao de uma linha entre os ns 6 e 2 (com CAP
max
= 1, 000 10
8
MW e impedncia X = 0, 3).
ITERAO IV
P
D
=
_
0, 837 0, 000 2, 486 0, 000 0, 000
_
T
=
_
0, 112 0, 317 0, 200 0, 323 0, 000 0, 617
_
T
P
D3
= 2, 486 10
8
MW continua sendo o maior valor do Vetor de Sobrecargas, sendo necessrio a criao
de uma nova linha entre os ns 6 e 2, com mesmas caractersticas que a anterior.
ITERAO V
P
D
=
_
0, 837 0, 000 1, 486 0, 000 0, 000
_
T
=
_
0, 112 0, 317 0, 200 0, 323 0, 000 0, 617
_
T
Por mais uma vez P
D3
= 1, 486 10
8
MW o maior valor do Vetor de Sobrecargas, sendo criada uma
terceira linha entre os ns 6 e 2, com caractersticas iguais s anteriores.
ITERAO VI
P
D
=
_
0, 837 0, 000 0, 486 0, 000 0, 000
_
T
=
_
0, 113 0, 317 0, 200 0, 323 0, 000 0, 617
_
T
Um dos caminhos entre os ns 3 e 5, o qual a energia ui de 3 para 5, apresenta maior exigncia P
D1
=
0, 837 10
8
MW. Acrescenta-se ento uma nova linha entre estes ns (com CAP
max
= 1, 000 10
8
MW e
impedncia X = 0, 2).
33
ITERAO VII
P
D
=
_
0, 000 0, 000 0, 492 0, 000 0, 000
_
T
=
_
0, 108 0, 308 0, 186 0, 314 0, 000 0, 608
_
T
Nesta parte, o nico caminho que possui exigncia P
D3
= 0, 492 10
8
MW, sendo, portanto, adicionada
uma nova linha entre os ns 6 e 2, as caractersticas desta linha a mesma das linhas adicionadas nas
iteraes III e IV.
ITERAO VIII
P
D
=
_
0, 000 0, 000 0, 000 0, 000 0, 000
_
T
=
_
0, 106 0, 311 0, 187 0, 296 0, 000 0, 579
_
T
Chega-se ao nal das iteraes, pois o Vetor de Sobrecargas possui todas as entradas nulas.
A gura 5.3 abaixo mostra um esquema da rede aps as 8 iteraes descritas anteriormente:
Figura 5.3: Esquema Final da Rede
34
Captulo 6
Concluso
A anlise de conceitos bsicos sobre sistemas lineares e suas resolues, tanto por mtodos diretos quanto por
mtodos iterativos, proporcionou uma base matemtica slida para uma introduo ao estudo da otimizao
linear e do mtodo Simplex. Por m aplicou-se este estudo a um problema de otimizao real apresentado.
Houve a necessidade do desenvolvimento de um programa em linguagem C, j que o problema continha um
nmero relativamente grande de variveis. Essa assistncia permitida por um computador pde gerar uma
resoluo do problema, apresentando resultados viveis, com aproximaes aceitveis. Num trabalho futuro
pode ser feita uma anlise no-linear do problema, sendo assim necessrias outras bases matemticas e outros
conceitos de otimizao. Pode ser estudada tambm em uma etapa etapas a aplicao deste problema num
outro sistema de energia, com caractersticas fsicas e restries ecnomicas diferentes.
35
Referncias Bibliogrcas
[Arenales 2007] Arenales, M. N.; Armentano, V. A.; Morabito, R.; Yanasse, H. H. (2007) Pesquisa Operacional.
Editora Campus.
[Bazaraa 2005] Bazaraa, M. S.; Jarvis, J. J.; Sherali H.D. (2005) Linear Programming and Network Flows. 3a
ed. Wiley-Interscience.
[Boldrini 1980] Boldrini, J. L.; Costa, S. I. R.; Ribeiro, V. L. F.; Wetzler, H. G. (1980) lgebra Linear. Harbra.
[Chris Dent] Chris Dent. Notas de Aula - Operational Research in the Energy Industry. School of Engineering
and Computing Sciences, Durham University.
[Ruggiero 1996] Ruggiero, M. A. G.; Lopes, V. L. R. (1996) Cculo Numrico : Aspectos Tericos e Compu-
tacionais. 2a ed. Pearson Makron Books.
[Villasana 1985] Villasana, R.; Garver, L.L.; Salon, S.J. Transmission Network Planning Using Linear Pro-
gramming. IEEE Transaction on Power Apparatus and System, Vol. PAS-104, No. 2, February 1985.
[Young 1972] Young, D. M.; Gregory, R. T. (1972) A Survey of Numerical Mathematics. Addison-Wesley.
36
Apndice A
Cdigo Implementado
O cdigo desenvolvido o seguinte:
/*Este cdigo uma implementao do Mtodo Simplex. O processo
de resoluo de sistemas lineares utilizado a Fatorao LU*/
/*Declarao das bibliotecas*/
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<math.h>
/*Definies das constantes*/
#define TOL_ZERO 1E-8
#define ITERACAO_MAX 100
/*Funes*/
double modulo (double num);
void fatoracao (int n, double **A, int *B,
double **matriz_fatorada, int *p);
void resolve_sistema_inferior (int n, double **L,double *b,double *y,int *p);
void resolve_sistema_superior (int n, double **U,double *y, double *x,int *p);
void resolve_sistema_superiorT (int n, double **U,double *b,double *y,int *p);
void resolve_sistema_inferiorT (int n, double **L,double *y, double *x,int *p);
void resolve_problema (double *x, double **a, double *b, double *c,
int col, int lin, int *IB, int *IN, char tipo);
/*Principal*/
int main(int argc, char* argv[])
{
int m,n; //m: numero de linhas, n: numero de colunas
int i,j;
int *IB; //vetor dos ndices bsicos
int *IN; //vetor dos ndices no-bsicos
double **a; //matriz dos coeficientes
double *b; //vetor das constantes
double *c; //vetor dos custos
double *c_a; //vetor dos custos artificiais
double *x; //vetor das varveis
double fx=0; //valor da funo
FILE *arq;
char nome_arq[100]=" ";
if(argc>1)
37
strcpy(nome_arq, argv[1]);
else
strcpy(nome_arq,"Final1.txt");
/*Incio da leitura dos dados*/
arq=fopen(nome_arq,"r");
if (arq)
{
fscanf(arq,"%d",&m);
fscanf(arq,"%d",&n);
a = (double **) malloc(sizeof(double*)*m);
for(i=0;i<m;i++)
a[i] = (double *) malloc(sizeof(double)*(m+n));
b = (double *) malloc (sizeof(double)*m);
c = (double *) malloc (sizeof(double)*(m+n));
x = (double *) malloc (sizeof(double)*(m+n));
c_a=(double *) malloc (sizeof(double)*(m+n));
for(i=0;i<n;i++)
fscanf(arq,"%lf",&c[i]);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
fscanf(arq,"%lf",&a[i][j]);
fscanf(arq,"%lf",&b[i]);
}
fclose(arq);
}
else printf("Erro ao tentar ler o arquivo!");
/*Fim da leitura dos dados*/
IB=(int *) malloc (sizeof(int)*m);
IN=(int *) malloc (sizeof(int)*n);
for(i=0;i<m+n;i++)
{
x[i]=0;
if(i<n)
{
IN[i]=i;
c_a[i]=0;
}
else
{
IB[i-n] = i;
c_a[i] = 1;
c[i] = 0;
for(j=0;j<m;j++)
{
if(j==(i-n))
{
if(b[j] >= 0)
a[j][i]= 1.0;
38
else
a[j][i]=-1.0;
}
else a[j][i]=0;
}
}
}
resolve_problema(x,a,b,c_a,m+n,m,IB,IN,a); //resolve problema artificial
system("cls");//limpa a tela
//zerar x
for(i=0;i<n;i++)
x[i]=0;
resolve_problema(x,a,b,c,m+n,m,IB,IN,r); //resolve problema real
//clculo e impresso de fx
for(i=0;i<n;i++)
fx=fx+c[i]*x[i];
printf("\n\n%c(x) = %lf\n",159,fx);
//impresso do vetor x
for(i=0;i<n;i++)
printf("x%d = %.5lf\n",i+1,x[i]);
for(i=0;i<m;i++)
free(a[i]);
free(a);
free(b);
free(c);
free(x);
free(c_a);
free(IN);
free(IB);
printf("\nPressione ENTER para sair . . .");
getchar();
return 0;
}
/*Funo que retorna o mdulo do nmero informado*/
double modulo(double num)
{
if(num<0)num=-num;
return(num);
}
/*Funo que efetua a Fatorao LU da matriz dos coeficientes*/
void fatoracao (int n, double **A, int *B,double **matriz_fatorada,int *p)
{
int i,k,r,j,aux;
double m,pv;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
39
matriz_fatorada[i][j] = A[i][B[j]];
}
}
for(i=0;i<n;i++)p[i]=i;
for(k=0;k<n-1;k++)
{
pv=modulo(matriz_fatorada[p[k]][k]);
r=k;
for(i=k+1;i<n;i++) //Pivoteamento Parcial
if(modulo(matriz_fatorada[p[i]][k])>pv)
{
pv=modulo(matriz_fatorada[p[i]][k]);
r=i;
}
if (pv < TOL_ZERO)
{
printf("ERRO - Matriz dos coeficientes no-inversvel!!");
break;
}
if(r!=k)
{
aux=p[k];
p[k]=p[r];
p[r]=aux;
}
for(i=k+1;i<n;i++)
{
m=matriz_fatorada[p[i]][k]/matriz_fatorada[p[k]][k];
matriz_fatorada[p[i]][k]=m;
for(j=k+1;j<n;j++)
matriz_fatorada[p[i]][j] = matriz_fatorada[p[i]][j]-m*matriz_fatorada[p[k]][j];
}
}
}
/*Resolve Ly=b*/
void resolve_sistema_inferior(int n, double **L,double *b,double *y,int *p)
{
int i,j;
double soma;
y[0]=b[p[0]];
for(i=1;i<n;i++)
{
soma=0;
for(j=0;j<i;j++)
soma=soma+L[p[i]][j]*y[j];
y[i]=b[p[i]]-soma;
}
}
/*Resolve Ux=y*/
void resolve_sistema_superior(int n, double **U,double *y, double *x,int *p)
{
int i,j;
double soma;
x[n-1]=y[n-1]/U[p[n-1]][n-1];
for(i=n-2;i>=0;i--)
40
{
soma=0;
for(j=i+1;j<n;j++)
soma=soma+U[p[i]][j]*x[j];
x[i]=(y[i]-soma)/U[p[i]][i];
}
}
void resolve_sistema_inferiorT(int n, double **L,double *y, double *x,int *p)
{
int i,j;
double soma;
x[p[n-1]]=y[n-1];
for(i=n-2;i>=0;i--)
{
soma=0;
for(j=i+1;j<n;j++)
soma=soma+L[p[j]][i]*x[p[j]];
x[p[i]]=y[i]-soma;
}
}
void resolve_sistema_superiorT(int n, double **U,double *b,double *y,int *p)
{
int i,j;
double soma;
y[0]=b[0]/U[p[0]][0];
for(i=1;i<n;i++)
{
soma=0;
for(j=0;j<i;j++) soma=soma+U[p[j]][i]*y[j];
y[i]=(b[i]-soma)/U[p[i]][i];
}
}
void resolve_problema(double *x,double **a,double *b,double *c,
int col, int lin, int *IB, int *IN, char tipo)
{
int iteracao=0;
int i,j,k,l,aux;
double **copia;
int *p = (int*) malloc (sizeof(int)*lin);
double *vet_aux = (double*) malloc (sizeof(double)*lin);
double *xB = (double*) malloc (sizeof(double)*lin);
double *mult = (double*) malloc (sizeof(double)*lin);
double *cB = (double*) malloc (sizeof(double)*(lin));
double min=0;
double *cr = (double*) malloc (sizeof(double)*(col-lin));
double *vet_coluna = (double*) malloc (sizeof(double)*lin);
double *y = (double*) malloc (sizeof(double)*lin);
double e;
/*Alocao da matriz cpia*/
copia = (double**) malloc (sizeof(double*)*lin);
for(i=0;i<lin;i++)
copia[i] = (double*) malloc (sizeof(double)*lin);
/*Custos Bsicos*/
for(i=0;i<lin;i++)
41
cB[i]=c[IB[i]];
do
{
fatoracao(lin,a,IB,copia,p);
/*Clculo da Soluo Bsica*/
resolve_sistema_inferior(lin,copia,b,vet_aux,p);
resolve_sistema_superior(lin,copia,vet_aux,xB,p);
for(i=0;i<lin;i++)
x[IB[i]]=xB[i];
/*Cculo dos custos relativos*/
/*Vetor Multiplicador Simplex*/
resolve_sistema_superiorT(lin,copia,cB,vet_aux,p);
resolve_sistema_inferiorT(lin,copia,vet_aux,mult,p);
/*Custos Relativos*/
k = -1;
min = 0;
for(i=0;i<(col-lin);i++)
if( (tipo==a) || IN[i]<(col-lin) )
{
cr[i]=c[IN[i]];
for(j=0;j<lin;j++)
cr[i]=cr[i]-mult[j]*a[j][IN[i]];
if( cr[i] < min - TOL_ZERO )
{
min=cr[i];
k=i;
}
}
/*Teste de Otimalidade*/
if(k == -1){printf("\t******SOLU%c%cO %cTIMA******\n",128,199,224); break;}
/*Clculo da direo simplex*/
for(i=0;i<lin;i++)
vet_coluna[i]=a[i][IN[k]];
resolve_sistema_inferior(lin,copia,vet_coluna,vet_aux,p);
resolve_sistema_superior(lin,copia,vet_aux,y,p);
/*Determinao do passo*/
l = -1;
for(i=0;i<lin;i++)
if(y[i]>TOL_ZERO || (tipo==r && IB[i]>=(col-lin) && y[i]<-TOL_ZERO))
if( (l == -1) || (x[IB[i]] < e * modulo(y[i])) )
{
e = x[IB[i]]/y[i];
l = i;
}
if(l == -1)
{
printf("\t******SOLU%c%cO ILIMITADA !!!!!******\n",128,199);
break;
}
42
/*Atualizaes*/
cB[l]=c[IN[k]];
x[IB[l]]=0;
aux=IB[l];
IB[l]=IN[k];
IN[k]=aux;
iteracao++;
}
while(iteracao <= ITERACAO_MAX);
free (p);
free (vet_aux);
free (xB);
free (mult);
free (cB);
free (cr);
free (vet_coluna);
free (y);
for(i=0;i<lin;i++)
free (copia[i]);
free (copia);
}
43

Você também pode gostar