You are on page 1of 70

Introdução à Otimização

AAAA-S
Disciplina: Introdução à Otimização Código: CCCCCC
Horário: Sala: SSSS
Professor: Sérgio Haffner (mailto:slhaffner@gmail.com) Sala: SSSS

Ementa da disciplina
Fundamentos da otimização. Otimização irrestrita. Otimização com restrições. Programação linear.
Programação inteira e inteira mista.

Bibliografia
1 – Ronald L. Rardin (1998). Optimization in operations research. Prentice Hall, New Jersey.
2 – David G. Luenberger (1973). Introduction to linear and nonlinear programming. Addison-Wesley Publishing
Company Inc.
3 – David G. Luenberger (1984). Linear and nonlinear programming. Addison-Wesley Publishing Company Inc.
4 – Katta G. Murty (1983). Linear programming. John Wiley & Sons, New York.
5 – Frederick S. Hillier e Gerald J. Lieberman (2002). Introduction to Operations Research. Holden-Day, Inc.,
Oakland, California. 658.4034 H654i (Central, Edição 1980)
6 – Dimitri P. Bertsekas (1999). Nonlinear Programming. Athena Scientific, Belmont, Massachusetts. 519.76
B551n (Central, Edição 1995)
7 – Joseph G. Ecker e Michael Kupferschmid (1999). Introduction to Operations Research. John Wiley & Sons,
New York. 658.4034 E19i (Central, Edição 1988)
8 – G. V. Reklaitis, A. Ravindran & K. M. Ragsdell (1983). Engineering optimization methods and applications.
John Wiley and Sons, New York. 620.0042 R381e (Central)
9 – James A. Momoh (2001). Electric power system applications of optimization. Marcel Dekker Inc., New
York. 621.31 M733e (IPCT)
10 – David E. Goldberg (1989). Genetic algorithms in search, optimization and machine learning. New York, NY.
412 p. 005.1 G618g (IPCT)
11 – Christos H. Papadimitriou (1998). Combinatorial optimization: algorithms and complexity. Dover
Publications, Inc., Mineola, Ney York. 004.0151 P213c (Central)
12 – Valdisio Viana (1998). Meta-heurísticas e programação paralela em otimização combinatória. UFC Edições,
Fortaleza.
13 – Anthony Brooke, David Kendrick e Alexander Meeraus (1997). GAMS: sistema geral de modelagem
algébrica. E. Blücher, São Paulo. 519.7 B871g (Central)
14 – Marco Cesar Goldbarg e Henrique Pacca Loureiro Luna (2000). Otimização combinatória e programação
linear. Ed. Campus.
15 – Stephen J. Chapman (2003). Programação em Matlab para Engenheiros. Thomson.
16 – Publicações Especializadas.

Avaliação
Duas provas (P1 e P2) e dois trabalhos (T1 e T2) com a seguinte ponderação para composição da nota final:
 T1 + T 2 
N = 0,20 P1 + 0,40 P 2 + 0,40 
 2 
A freqüência mínima é de 75% das aulas.

Software de apoio
• GAMS (General Algebraic Modeling System) – disponível para download em:
http://www.gams.com/
• Matlab – Optimization Toolbox (incluída no programa) e Matlab Central File Exchange
(http://www.mathworks.com/matlabcentral/fileexchange/)

Apresentação da Disciplina – Sérgio Haffner Versão: 12/9/2007 Página 1 de 2


Introdução à Otimização

Cronograma
Aula Dia Assunto
Apresentação da disciplina; Introdução à otimização em engenharia; Exercícios de
1
modelagem
2 Revisão de álgebra linear e cálculo com várias variáveis
3 Otimização irrestrita 1
4 Otimização irrestrita 2
5 Otimização irrestrita 3
6 Aplicação otimização irrestrita
7 Prova P1
8 Otimização com restrições 1
9 Otimização com restrições 2
10 Otimização com restrições 3
11 Aplicação otimização com restrições
12 Programação linear 1
13 Programação linear 2
14 Programação inteira e inteira mista 1
15 Programação inteira e inteira mista 2
16 Prova P2

Programa
1. Introdução à otimização em engenharia
2. Tipos de problemas de otimização (programação linear; otimização irrestrita; otimização com restrições).
3. Revisão de álgebra linear e cálculo com várias variáveis
4. Otimização irrestrita
Formulação
Condições de otimalidade
Minimização de funções convexas
Busca unidimensional:
Métodos que não utilizam derivada (busca uniforme, busca dicotômica, segmento áureo, seqüência de Fibonacci)
Métodos que utilizam derivada (bi-seção, Newton, falsa posição)
Problema multidimensional:
Gradiente
Direções conjugadas
Quase-Newton
Newton
5. Otimização com restrições
Formulação
Condições de otimalidade
Métodos primais:
Gradiente projetado
Gradiente reduzido
Métodos das penalidades e barreiras
Método de Lagrange
6. Programação linear
Formulação
Resolução de forma geométrica
Método simplex
Dualidade em programação linear
Análise de sensibilidade
Aplicação: Modelo de transportes para expansão de sistema de transmissão
7. Programação inteira e inteira mista
Formulação
Solução por enumeração
Relaxação de modelos discretos
Algoritmo branch-and-bound

Apresentação da Disciplina – Sérgio Haffner Versão: 12/9/2007 Página 2 de 2


Introdução à Otimização

I Revisão de álgebra linear e cálculo com várias variáveis

I.1 Operações elementares com matrizes

Sejam: A, B, C – matrizes
ai , j – elemento i j da matriz
AT – transposta de A

Simetria (para matrizes quadradas): A é simétrica ⇔ A = A T


A é anti-simétrica ⇔ A = − A T

Soma de matrizes: A(n, m ), B (n, m ) : C (n, m ) = A(n, m ) + B(n, m ) ⇔ ci , j = ai , j + bi , j

Multiplicação por escalar: αA = {α ⋅ ai , j }

l
Multiplicação de matrizes: C (n, m ) = A(n, l ) ⋅ B (l , m ) ⇔ ci , j = ∑a i ,k ⋅ bk , j
k =1
Em geral, A ⋅ B ≠ B ⋅ A

Transposição: ( A ⋅ B )T = B T ⋅ AT

adj A cof AT
Inversa de uma matriz quadrada A (não-singular: det A ≠ 0 ): A−1 = =
det A det A
−1 −1
A⋅ A = A ⋅ A = I
(A ) = A
−1 −1

(A ) = (A )
−1 T T −1

(A ) = (A )
−1 * * −1

Se A e B são não-singulares ⇒ o produto A ⋅ B é não singular e: ( A ⋅ B )−1 = B −1 ⋅ A−1


Prova (Inversa composta): (B −1
) ( )
⋅ A −1 ⋅ A ⋅ B = B −1 ⋅ A −1 ⋅ A ⋅ B = B −1 ⋅ I ⋅ B = B −1 ⋅ B = I
Analogamente, ( −1
A⋅ B ⋅ B ⋅ A ⋅ = I −1
)
 b1 
b 
Particionamento de matrizes: A ⋅ B = [a1 a 2 L a n ] 2  = a1 ⋅ b1 + a 2 ⋅ b 2 + K + a n ⋅ b n
M
 
b n 
A ⋅ B = A ⋅ [b1 b 2 L b n ] = [ A ⋅ b1 A ⋅ b 2 L A ⋅ b n ]
 a1   a1 ⋅ B 
a  a ⋅ B 
A⋅ B =  2 ⋅ B =  2 
M  M 
   
a n  a n ⋅ B 

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 1 de 8
Introdução à Otimização

Sendo x i um vetor linha ou coluna, conforme o caso, e:


 a1,i   a1,i ⋅ bi ,1 a1,i ⋅ bi , 2 L a1,i ⋅ bi ,n 
a  a ⋅ b a ⋅ b L a ⋅ b 
ai ⋅ bi =  2,i 
[⋅ b b L bi ,n = 
 M  i ,1 i , 2
] M
2,i i ,1 2,i
M
i,2
O
2,i
M 
i ,n 

   
 an ,i  an,i ⋅ bi ,1 an,i ⋅ bi , 2 L an,i ⋅ bi ,n 
 n 

 a1, j ⋅ b j ,i 
 a1,1 a1, 2 L a1,n   b1,i   j =1 
 a a L a  b   n 
A ⋅ bi = 
2 ,1 2, 2 2 ,n   2 ,i 
⋅ = ∑ a2, j ⋅ b j ,i 
 M M O M   M   j =1 
     M 
an ,1 an , 2 L an ,n  bn ,i   n 

 an , j ⋅ b j ,i 
 j =1 
 b1,1 b1, 2 L b1,n 
b a L b   n 
a i ⋅ B = [ai ,1 ai , 2 L ai ,n ] ⋅ 
n n
2 ,n 

=  ai , j ⋅ b j ,1 ∑ ai , j ⋅ b j , 2 L ∑a ⋅ b j ,n 
2 ,1 2, 2
 M M O M   j =1 i, j

   j =1 j =1 
bn ,1 bn , 2 L bn ,n 

I.2 Definições e propriedades

644 n7 44
vezes 8
Definição 1 (ESPAÇO N-DIMENSIONAL ou ℜ = ℜ × ℜ × K × ℜ ): Conjunto dos vetores de n
n

componentes reais:
x = ( x1 , x2 , L , xn ), xi ∈ ℜ

Para x, y ∈ ℜ n e α ∈ ℜ ,
x + y = ( x1 + y1 , x2 + y2 , L , xn + y n )
α x = (αx1 ,αx2 ,L,αxn )

Forma matricial (preferencial) como vetor coluna:


 x1 
x 
x= 
2
M
 
 xn 
 x1 + y1 
x + y 
x+ y =
2 2
 M 
 
 xn + y n 
αx1 
αx 
αx =  2
 M 
 
αxn 

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 2 de 8
Introdução à Otimização

Definição 2 (CONJUNTO CONVEXO): C é um conjunto convexo se para qualquer x, y ∈ C


α x + (1 − α ) y ∈ C , ∀α ∈ [0;1]

Pode-se observar, na Figura I.1 que todos os pontos contidos entre a combinação linear de quaisquer dois
pontos (linha que une os pontos x e y) pertencentes a um conjunto convexo estão contidos dentro deste
conjunto.

x
y
x
y

Convexo Não-convexo
Figura I.1 – Definição de conjuntos convexo e não convexo.

Propriedades dos conjuntos convexos:

Dados dois conjuntos convexos X e Y, também são convexos os seguintes conjuntos:


X ∩Y
{
X + Y = z : z = x + y, x ∈ X , y ∈ Y }
αX = {z : z = α x, x ∈ X ,α ∈ ℜ}

Definição 3 (HIPERPLANO): Sejam c ∈ ℜ n , c ≠ 0 e α ∈ ℜ quaisquer. O conjunto


{
H = x:c x =α
T
}
representa um hiperplano do ℜ n . Cada hiperplano caracteriza dois semi-espaços fechados:
{
H≥ = x : c x ≥ α
T
} e H≤ = x : c x ≤ α
T
{ }
e dois semi-espaços abertos:
{
H> = x : c x > α
T
e} H< = x : c x < α
T
{ }
Exemplo de hiperplano no ℜ 2 :
− 10  x  
Sejam c =   ∈ ℜ ≠ 0 e α = 5 ∈ ℜ . O conjunto
2
H =  x : [− 10 5] ⋅  1  = 5 representa um
 5    x2  
hiperplano do ℜ 2 (uma reta) e define dois semi-espaços conforme mostrado na Figura I.2.
x2 x2 x2

H≥
− 10 x1 + 5 x2 = 5 H≤

x1 x1 x1

Figura I.2 – Hiperplano e semi-espaços no ℜ 2 .

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 3 de 8
Introdução à Otimização

Definição 4 (POLIEDRO e POLITOPO): A interseção de um número finito de semi-espaços fechados


determina um poliedro. Um poliedro limitado é chamado de politopo.

Poliedro Politopo
Figura I.3 – Poliedro e politopo.

Definição 5 (FUNÇÃO CONVEXA): f é uma função convexa sobre um conjunto convexo C se para
quaisquer x , x ∈ C e qualquer α ∈ [0;1]
a b

( ) ( )
f α x + (1 − α )x ≤ αf x + (1 − α ) f x
a b a
( )
b

Para uma função escalar f pode-se utilizar a interpolação geométrica da Figura I.4 para a qual o valor da
função é menor ou igual à sua interpolação linear entre dois pontos quaisquer xa e xb.
f(x)

Interpolação linear:
f(xb)
αf(xa)+(1–α) f(xb)
f(xa)

xa xb x
Figura I.4 – Interpretação geométrica no plano de uma função convexa.

Por outro lado, para uma função não convexa, mostrada na Figura I.5, o valor da função não é menor ou
igual à sua interpolação linear para alguns valores de xa e xb.
f(x)

Interpolação linear:
f(xb)
αf(xa)+(1–α) f(xb)
f(xa)

xa xb x
Figura I.5 – Interpretação geométrica no plano de uma função não-convexa.

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 4 de 8
Introdução à Otimização

Se para quaisquer x , x ∈ C , x ≠ x e qualquer α ∈ (0;1) a desigualdade é estrita (<), f é uma função


a b a b

estritamente convexa (vide Figura I.5).

Estritamente convexa Convexa

Figura I.6 – Funções convexa e estritamente convexa.

f é uma função (estritamente) côncava sobre um conjunto convexo C se − f for uma função (estritamente)
convexa sobre C.

Propriedades das funções convexas:

• Se f é uma função convexa sobre C convexo e f possui primeiras derivadas parciais contínuas, então
( ) ( ) [ ( )] (x
f x ≥ f x + ∇x f x
b a a T b
−x
a
) ∀x , x ∈ C
a b

 ∂f (x ) a

 
 ∂x1 
 ∂f x a  ( )
( )
onde ∇ x f x =  ∂x  é o gradiente de f em relação à x calculado no ponto x .
a
 2 
a

 Ma 
 ∂f x 
 ∂x 
( )
 n 
Para uma função escalar, conforme ilustrado na Figura I.7, significa que o valor da função é sempre
maior ou igual à sua aproximação linear calculada em um determinado ponto xa.
f(x)

Aproximação linear em xa:


f(xa)
f(xa)+[∇xf(xa)]T (xb– xa)

xa x
Figura I.7 – Aproximação linear de uma função convexa.

• Se f é uma função convexa sobre C convexo, possui segundas derivadas parciais contínuas e
 ∂ 2 f (x )
F (x ) =  2 
 ∂x 
é a MATRIZ HESSIANA de f em x, então
F (x ) ≥ 0 ∀x ∈ C (semidefinida positiva)
isto é, para todo x ∈ C ,
y F (x )y ≥ 0 ∀ y ∈ ℜn
T

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 5 de 8
Introdução à Otimização

Exemplo: f ( x ) = x12 + x24


2x 
∇ x f ( x ) =  13 
 4 x2 
2 0 
F (x ) =  2
0 12 x2 
Verificação:
T
 y  2 0   y1 
y F (x )y =  1   2 ⋅   = 2 y1 + 12 x2 y 2 ≥ 0
T 2 2 2
y
 2  0 12 x y
2   2

Contra-exemplo: f (x ) = x12 + x1 x2
2 x + x2 
∇ x f (x ) =  1 
 x1 
2 1
F (x ) =  
1 0 
Verificação:
T
 y   2 1  y1 
y F (x )y =  1   ⋅   = 2 y12 + y1 y 2 + y1 y2 = 2 y12 + 2 y1 y 2
T

 y 2  1 0   y 2 

Teorema do valor médio: Seja f contínua em I = [a; b] , tal que f ′ exista em cada ponto de (a; b ) . Então
existe ao menos um x ∈ (a; b ) tal que
()
f (b ) = f (a ) + f ′ x (b − a )

O teorema do valor médio afirma que existe algum ponto sobre a curva entre a e b onde a reta tangente é
paralela à reta secante que passa por a e b. Na Figura I.8, este ponto é notado por x .

f(x) Ponto no qual a


∆f
derivada é igual à
∆x

f(a)

f(b)

a x b x

Figura I.8 – Ilustração do teorema do valor médio.

Para a função da Figura I.8, a taxa de variação média, entre os pontos a e b corresponde à derivada da
função, calculada no ponto x , ou seja

∆f (x ) f (b ) − f (a )
∆x
=
(b − a )
= f′x =
d
dx
()
f (x )
x=x

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 6 de 8
Introdução à Otimização

Assim, para determinar-se o valor de f ( x + ∆x ) , na Figura I.9, pode-se utilizar o seguinte procedimento:

∆f ( x ) = f ( x ) ∆x
d
dx x= x
e
f ( x + ∆x ) = f ( x ) + ∆f (x ) = f ( x ) + f ( x ) ∆x
d
dx x= x

A única dificuldade reside no fato de ser necessário o conhecimento do ponto x .


f(x)
∆x

f(x+∆x)

∆f(x)

f(x)

x x+∆x x

Figura I.9 – Utilização da taxa de variação média para obter o valor de f ( x + ∆x ) .

Polinômios de Taylor

A série de Taylor é obtida a partir da aplicação do teorema do valor médio. A partir de um ponto inicial x0,
no qual o valor da função f(x0) é conhecido, pode-se determinar o valor da função para os demais valores de
x pela seguinte expressão (aplicação do teorema do valor médio):
( )
f (x ) = f x 0 +
d
dx
f (x ) (
x − x0 )
x= x
ou, de forma mais compacta,
( ) ( )(
f (x ) = f x 0 + f ′ x x − x 0 )
O problema de empregar esta expressão reside no fato de ser necessário determinar o ponto x no qual a
derivada corresponde à derivada reta secante entre os pontos x0 e x (este valor depende de x). A solução para
este problema é utilizar a derivada da função no ponto inicial x0 mas para manter a igualdade é necessário
acrescentar um resto (R):
( ) ( )(
f (x ) = f x 0 + f ′ x 0 x − x 0 + R )
Caso o resto R seja negligenciado, tem-se a seguinte aproximação linear:
( ) ( )(
f (x ) ≈ f x 0 + f ′ x 0 x − x 0 )
Observar que o teorema do valor médio pode ser aplicado de forma recursiva, resultando no seguinte
polinômio
( )1
1!
( )( 1
2!
) 2 1
n!
( )( )
f ( x ) = f x 0 + f ′ x 0 x − x 0 + f ′′ x 0 x − x 0 + K + f (n ) x 0 x − x 0 +
n
( )( )
+
1
(n + 1)!
f (n+1)
( )(
x x−x 0 n +1
)
Observar que apenas o último termo é função de x ; todos os demais termos são calculados diretamente em
x0. Aproximações podem ser obtidas desprezando-se o último termo e utilizando-se um número finito de

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 7 de 8
Introdução à Otimização

termos, em função da precisão que se está buscando. Por exemplo, para utilizar-se uma aproximação
quadrática (n=2), tem-se a seguinte expressão:
( ) ( )( ) ( )(
f ( x ) ≈ f x 0 + f ′ x 0 x − x 0 + f ′′ x 0 x − x 0
1
2
2
)
De uma forma mais geral, a aproximação por série de Taylor com termos até a ordem n é dada por

( ) ∑ ( )( )
n
f (x ) ≈ f x 0 +
1 (k ) 0 k
f x x − x0
k =1 k!

Quando se está utilizando funções de várias variáveis x , tem-se as seguintes expressões para as
aproximações linear e quadrática:

644Aproximaçã
4474 o linear
4448
( ) [ ( )] (
f (x ) ≈ f x + ∇ x f x
0 0 T 0 1
2
0 T
) (
x−x + x−x F x x−x
0 0
) ( )( )
1444444444 424444444444 3
Aproximaçã o quadrática

Exercício:

Para as funções a seguir, fazer o solicitado:


f1 ( x ) = x12 + x24
f 2 ( x ) = x12 + x1 x2
a) Utilizando o Matlab ou outro utilitário similar, determinar o gráfico.
b) Determinar a aproximação linear por série de Taylor, em torno do ponto x = (1,1) , e plotar em conjunto
0

com o gráfico da função.


c) Determinar a aproximação quadrática por série de Taylor, em torno do ponto x = (1,1) , e plotar em
0

conjunto com o gráfico da função.

Revisão de álgebra linear e cálculo com várias variáveis – Sérgio Haffner Versão 1.0: 12/9/2007 Página 8 de 8
Introdução à Otimização em Engenharia

II Otimização Irrestrita

II.1 Condições necessárias de 1a ordem

II.1.1 Mínimo local e global

A figura a seguir ilustra algumas situações de mínimo relativo e global.

Mínimo global Mínimo relativo

Ω Ω Ω

Mínimo relativo (ou local)


• x * ponto de mínimo relativo (ou local)
∃ε > 0 tal que para x − x * < ε f ( x ) ≥ f (x *)

• x * ponto de mínimo relativo (ou local) estrito


∃ε > 0 tal que para x − x * < ε f ( x ) > f ( x *)

Mínimo global
• x * ponto de mínimo global

∀ x ∈ Ω f ( x ) ≥ f ( x *)

• x * ponto de mínimo global estrito


∀ x ≠ x* ∈ Ω f ( x ) > f (x *)
Observações:
1. Na prática os algoritmos computacionais garantem apenas um ponto de mínimo local.
2. Necessidade de propriedades de convexidade.

II.1.2 Direções factíveis

A figura a seguir ilustra direções factíveis.

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 1 de 12


Introdução à Otimização em Engenharia

2
Factíveis x Não factíveis
1
x
d
d

• d direção factível

∃ε > 0 tal que para 0 ≤ α ≤ ε x +αd ∈Ω

II.1.3 Condições necessárias de 1a ordem

Sejam Ω ⊂ ℜ n e f ∈ C1 (possui todas as derivadas de 1a ordem). Se x * é ponto de mínimo relativo (ou


local) então, para qualquer direção factível d em x * ,

∇ x f ( x *) ⋅ d ≥ 0
T

Ilustração

∇ x f (x )
x
x*
∇ x f (x *) d
x*

d
Ω Ω Ω

Como ∇ x f (x *) = 0 ∇ x f ( x *) ⋅ d > 0
T
∃d | ∇ x f (x ) ⋅ d < 0
T

∇ x f ( x *) ⋅ d = 0
T
pois ângulo < 90 x não é mínimo local

O produto escalar de dois vetores g e d , notado por g ⋅ d , tem as seguintes propriedades:


T

g ⋅d =0
T
⇒ g e d são ortogonais

g ⋅d > 0
T
⇒ o ângulo entre g e d é menor do que 90º

g ⋅d < 0
T
⇒ o ângulo entre g e d é maior do que 90º

g ⋅d
T

( )
cos ∠ g , d = ou g ⋅ d = g d cos ∠ g , d
T
( )
gd

Comentário: Seja α > 0 , conforme figura a seguir.

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 2 de 12


Introdução à Otimização em Engenharia

x = x * +α d
f ( x ) = f ( x *) + ∇ x f ( x *) ⋅ α d + R α 2
T
( )
x f ( x ) − f ( x *) = α∇ x f ( x *) ⋅ d + R (α )
T 2
d
quando α → 0 tem - se :
α >0
f ( x ) − f ( x *) ≈ α∇ x f ( x *) ⋅ d
T
x*
Se f (x ) ≥ f ( x *) então :
∇ x f ( x *) ⋅ d ≥ 0
T

Para o caso irrestrito, x * é interior a Ω (todas as direções são factíveis), então ∇ x f ( x *) = 0

II.2 Condições necessárias de 2a ordem

Sejam Ω ⊂ ℜ n e f ∈ C 2 (possui todas as derivadas de 2a ordem). Se x * é ponto de mínimo relativo (ou


local) então, para qualquer direção factível d em x * ,

∇ x f ( x *) ⋅ d ≥ 0
T

Se ∇ x f ( x *) ⋅ d = 0 então d ⋅ ∇ 2x f (x *) ⋅ d ≥ 0 (matriz Hessiana semi-definida positiva)


T T

Comentário: Seja α > 0 , conforme figura a seguir.


x = x * +α d
f ( x ) = f ( x *) + ∇ x f (x *) ⋅ α d + 12 α d ⋅ ∇ 2x f (x *) ⋅ α d + R α 3
T T
( )
f ( x ) − f (x *) = α∇ x f (x *) ⋅ d + 12 α 2 d ⋅ ∇ 2x f (x *) ⋅ d + R (α )
T T 3

d x quando α → 0 tem - se :
f ( x ) − f (x *) ≈ α∇ x f (x *) ⋅ d + 12 α 2 d ⋅ ∇ 2x f (x *) ⋅ d
T T

α >0 Caso ∇ x f (x *) ⋅ d = 0, tem - se :


x*
f ( x ) − f (x *) ≈ 12 α 2 d ⋅ ∇ 2x f ( x *) ⋅ d
T

Se f ( x ) ≥ f (x *) então :
d ⋅ ∇ 2x f (x *) ⋅ d ≥ 0
T

Para o caso irrestrito, x * é interior a Ω (todas as direções são factíveis). Assim, se x * é um mínimo local,
então:
∇ x f ( x *) = 0

d ⋅ ∇ 2x f ( x *) ⋅ d ≥ 0
T
Para qualquer direção viável d ,

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 3 de 12


Introdução à Otimização em Engenharia

II.3 Condições suficientes para um mínimo relativo

Sejam Ω ⊂ ℜ n , f ∈ C 2 (possui todas as derivadas de 2a ordem) e x * um ponto interior a Ω, no qual:


∇ x f ( x *) = 0

d ⋅ ∇ 2x f (x *) ⋅ d > 0
T
(matriz Hessiana definida positiva)

Então x * é um ponto de mínimo relativo (ou local) estrito.

II.4 Métodos de descida

Seja o problema de otimização (P), no qual são conhecidos x k ∈ Ω e d k , uma direção factível:

f (x )
(P )
Min
s.a. x∈Ω

x k +1
Curvas de nível
dk f ( x ) = constante
d k +1

xk

Para diminuir f ( x ) , segue-se a seguinte seqüência:


x k +1 = x k + α d k

sendo d k uma direção de descida e α o tamanho do passo nesta direção. Torna-se assim, um problema
unidimensional (PU) no qual se busca determinar o tamanho do passo α que minimize f ( x ) :

Min g k (α ) = f (x k + α d k )
(PU )k s.a. α > 0

 (x k + α d k ) ∈ Ω
Assim, o problema original (P) é resolvido através de uma seqüência de problemas unidimensionais (PU)k,
k = 1,2, ⋯ .
A direção de busca adotada é a direção oposta ao vetor gradiente ou se baseia nesta informação. Assim, um
procedimento para determinação do mínimo irrestrito de uma função de múltiplas variáveis segue os
seguintes passos:
1. Fazer k = 0 e determinar uma solução inicial x k .

2. Calcular o vetor gradiente da função objetivo em x k .

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 4 de 12


Introdução à Otimização em Engenharia

3. Se ∇ x f (x k ) ≤ ε , terminar, pois o problema convergiu para a solução ótima x* = x k . Caso contrário,


prosseguir.
4. Determinar uma direção de descida: d k = −∇ x f ( x k ) e formular o problema unidimensional (PU)k:

Min g k (α ) = f (x k + α d k )
(PU )k s.a. α > 0

 (x k + α d k ) ∈ Ω
5. Resolver o problema unidimensional (PU)k e determinar α * .
6. Atualizar x k +1 = x k + α * d k .
7. Fazer k = k + 1 e retornar para o Passo 2.

II.4.1 Métodos que não utilizam derivadas

Dado um problema convexo (ou estritamente quase convexo) unidimensional, no qual se conhece um
intervalo de incerteza [a; b] , que inclui a solução,

g (α )
(PU )
Min
s.a. a ≤α ≤ b
o procedimento de busca consiste em sucessivamente excluir as partes do intervalo de incerteza que não
contém o mínimo de g (α ) .
Uma alternativa intuitiva para realizar a redução do intervalo de incerteza [a; b] é dividi-lo em partes e
avaliar a função nas extremidades destas partes. Na figura a seguir, a função é inicialmente avaliada nos
pontos 1, 2 e 3. Após o intervalo 3-2 é dividido ao meio e a função é avaliada em 4. Como g 3 < g 4 < g 2 , o
mínimo não está no intervalo 4-2 e o extremo b1 é substituído por b2 . A seguir, a função é avaliada em 5.
Como g1 > g 5 > g 3 , o mínimo não está no intervalo 1-5 e o extremo a1 é substituído por a2 . Este
procedimento se repete até que o intervalo [a; b] seja tão pequeno quanto desejado.

g (α )
1
2
5
4

a1 a2 b2 b1 α

De uma maneira geral todos os métodos que não utilizam derivadas se baseiam neste princípio.

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 5 de 12


Introdução à Otimização em Engenharia

II.4.1.1 Busca uniforme


Os pontos nos quais será realizada a avaliação da função são decididos antecipadamente. O intervalo [a; b] é
sucessivamente subdividido e a função é calculada em cada um dos pontos. De acordo com a figura a seguir,
o intervalo [a; b] é reduzido para [λ − δ ; λ + δ ] .

g (α )

λ α
a λ −δ λ +δ b

Inicialmente, utiliza-se um intervalo δ grande e depois este é paulatinamente reduzido.

II.4.1.2 Busca dicotômica


Realiza a redução do intervalo com 2 avaliações da função objetivo. A partir do centro do intervalo de
incerteza, a função é avaliada em dois pontos:
ak + bk
λk = −ε
2
a +b
µk = k k + ε
2

g (α )

ak λk µk α
bk

Quando g (λk ) > g (µ k ) (como na Figura anterior), sabe-se que o ponto de mínimo não se encontra no
intervalo [ak ; λk ] . O novo intervalo de incerteza será [λk ; bk ] .
Caso g (λk ) < g (µ k ) , sabe-se que o ponto de mínimo não se encontra no intervalo [µ k ; bk ] . O novo intervalo
de incerteza será [ak ; µ k ] .
Observações:
• Quanto menor for ε, maior será o intervalo descartado de cada vez.
• O que fazer quando g (λk ) = g (µ k ) ?

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 6 de 12


Introdução à Otimização em Engenharia

II.4.1.3 Segmento áureo


Realiza a redução do intervalo com apenas 1 avaliação da função objetivo. As estimativas intermediárias são
definidas de modo que uma delas possa ser aproveitada na próxima redução, conforme ilustrada a Figura a
seguir.

µ k − ak

λk − ak

ak λk µk α
bk
Iteração k

Iteração k+1
ak +1 µk+1 bk +1 α

Para o intervalo da iteração k, tem-se:


µ k − ak
=β ⇒ µ k − ak = β (bk − ak ) (1)
bk − ak

λk − ak
=1− β ⇒ λk = a k + (1 − β ) (bk − ak ) (2)
bk − a k
Para o intervalo da iteração k+1, tem-se:
µ k +1 − a k +1 λk − a k
=β ⇒ =β ⇒ λk = ak + β (µ k − ak ) (3)
bk +1 − a k +1 µ k − ak
Substituindo (1) em (3)
λk = a k + β (β (bk − ak )) = ak + β 2 (bk − ak ) (4)
Para (2)=(4) é necessário que:
−1 ± 5  β1 ≈ 0,618
1− β = β 2 ⇒ β 2 + β −1 = 0 ⇒ β1, 2 = ⇒ 
2  β 2 ≈ −1,618
Como 0 < β < 1 , a solução é: β ≈ 0,618 .
Para cada intervalo de incerteza, a função é avaliada nos seguintes pontos (um deles já foi calculado
anteriormente):
λk = ak + (1 − β )(bk − ak )
µ k = ak + β (bk − ak )

II.4.2 Métodos que utilizam derivadas

II.4.2.1 Método da bi-seção


A derivada da função é avaliada no ponto central do intervalo de incerteza:

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 7 de 12


Introdução à Otimização em Engenharia

ak + bk
λk =
2
∂g (λk )
• Se =0 ⇒ λk é a solução
∂α
∂g (λk )
• Se >0 ⇒ a função é crescente em λk e a solução se encontra no intervalo [ak ; λk ] . Logo
∂α
ak +1 = ak e bk +1 = λk

∂g (λk )
• Se <0 ⇒ a função é decrescente em λk e a solução se encontra no intervalo [λk ; bk ] .
∂α
Logo ak +1 = λk e bk +1 = bk

II.4.2.2 Busca pelo método de Newton

A minimização da função g ∈ C 2 (possui todas as derivadas de 2a ordem) é obtida a partir da minimização


da sua aproximação quadrática:
min g (α ) → min g~ (α )

∂g (α k )
(α − α k ) + 1 ∂ g (α2 k ) (α − α k )2
2
g~ (α ) = g (α k ) +
∂α 2 ∂α
A nova estimativa α k +1 é tal que:

∂g~ (α k +1 )
=0
∂α
∂g (α k )
∂g (α k ) ∂ 2 g (α k )
+ (α k +1 − α k ) = 0 ⇒ α k +1 = α k − 2 ∂α
∂α ∂α 2 ∂ g (α k )
∂α 2

II.5 Método de Newton

A idéia por detrás do método de Newton é que a função f ( x ) a ser minimizada seja aproximada localmente
por uma função quadrática que é minimizada de forma exata.
Utilizando a série de Taylor, a função f pode ser aproximada, nas proximidades de x k , por:

f ( x ) ≈ f (x k ) + ∇ x f ( x k ) ( x − x k ) + (x − x k )T ∇ 2x f (x k )(x − x k )
T 1
2

cuja expressão do valor mínimo é utilizada para determinar a nova aproximação x k +1 para a solução do
problema:

[ ]
x k +1 = x k − ∇ 2x f (x k ) ∇ x f (x k )
−1

Observar que não é necessário realizar uma busca, pois a nova estimativa é determinada de forma analítica
pela expressão anterior.

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 8 de 12


Introdução à Otimização em Engenharia

Método de Newton
1. Fazer k = 0 e definir uma aproximação inicial x 0 ∈ ℜ n .
2. Para o ponto x k , determinar o vetor gradiente: ∇ x f ( x k ) .
Caso ∇ x f ( x k ) < ε o processo convergiu para a solução x = x k ; caso contrário prosseguir.
*
3.
4. Calcular a matriz Hessiana: ∇ 2x f (x k ) .

5. [ ]
Calcular a nova estimativa: x k +1 = x k − ∇ 2x f (x k ) ∇ x f (x k ) .
−1

6. Fazer k = k + 1 e retornar para o Passo 2.

O método de Newton é bastante atrativo em termos de propriedade de convergência nas proximidades da


solução, entretanto pode vir a requerer modificações antes de ser utilizado em pontos muito distantes da
solução. A primeira modificação é a introdução de um parâmetro de busca α,

[ ]
x k +1 = x k − α k ∇ 2x f (x k ) ∇ x f (x k )
−1

onde α k é selecionado de modo que minimize f. Nas proximidades da solução, espera-se que a aproximação
quadrática seja razoável e tal parâmetro seja próximo a unidade.
A segunda modificação é oriunda da análise da classe de algoritmo na qual:
x k +1 = x k − α k S k ∇ x f (x k )

onde S k é uma matriz n × n e α k é um parâmetro de busca. Observar que para o método de descida S k = I
[ ]
e para o método de Newton S k = ∇ 2x f ( x k ) . Surge, então, uma família de aproximações, nas quais são
−1

utilizadas matrizes intermediárias entre a identidade e a inversa da matriz Hessiana.


Um método de Newton modificado clássico pode ser definido utilizando-se uma matriz Hessiana constante e
igual ao valor calculado no ponto inicial. Neste caso, o processo seria definido por:

[ ]
x k +1 = x k − ∇ 2x f (x 0 ) ∇ x f (x k )
−1

Isto reduz o esforço computacional investido no cálculo da inversa da Hessiana, mas pode prejudicar a
convergência do processo quando a Hessiana varia sensivelmente de um ponto para outro.

II.6 Direções conjugadas

Direções conjugadas é um método bastante utilizado que se situa em uma posição intermediária entre os
métodos de descida e o método de Newton, conforme ilustra a Figura a seguir.

Gradiente Direções Quase


Newton
“Ótimo” Conjugadas Newton

Definição (Direções conjugadas): Dada uma matriz simétrica Q, dois vetores d1 e d2 são ditos Q-
ortogonais, ou conjugados, com relação a Q se d 1 Q d 2 = 0 .
T

Propriedade: Se Q é positiva definida e o conjunto {d 0 , d 1 , ⋯ , d k } é Q-ortogonal, então esses vetores são


linearmente independentes (LI).

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 9 de 12


Introdução à Otimização em Engenharia

II.6.1 Teorema das direções conjugadas

Considere o seguinte problema quadrático:


x Qx − b x
1 T T
min 2

cuja solução é obtida igualando sua derivada a zero, resultando em:


Qx = b

Teorema das direções conjugadas: Seja {d i }i =0 um conjunto de vetores não nulos Q-ortogonais. Para
n −1

qualquer x 0 ∈ ℜ n , a seqüência {x k } gerada por:

x k +1 = x k + α k d k , k ≥0
com

− gk dk
T

αk = T
d k Qd k
e
g k = Qxk − b

converge para a solução única x , de Q x = b em n passos, isto é, x n = x


* *

II.6.2 Método do gradiente conjugado

O método do gradiente conjugado é o método das direções conjugadas que é obtido pela seleção de
sucessivos vetores direção como uma versão conjugada dos sucessivos gradientes obtidos ao longo do
processo de solução. Em um determinado passo k utiliza-se o vetor gradiente com sinal trocado acrescido de
uma combinação linear dos vetores direção já empregados para obter uma nova direção conjugada às demais.

Algoritmo gradiente conjugado


1. Dado x 0 ∈ ℜ n (aproximação inicial), calcular g 0 = ∇ x f (x 0 ) e fazer d 0 = − g 0 .
2. Para k = 0,1, ⋯ , n − 1 :
− gk dk
T

a) Fazer: x k +1 = x k + α k d k , com α k =
d k ∇ 2x f (x k )d k
T

b) Calcular g k +1 = ∇ x f (x k +1 ) e verificar se g k +1 < ε (tolerância). Caso afirmativo, a solução do

problema é x = x k +1 ; Caso contrário prosseguir.


*

c) Para k < n − 1 , fazer:


g k +1∇ 2x f (x k )d k
T

i. d k +1 = − g k +1 + β k d k , com β k =
d k ∇ 2x f (x k )d k
T

ii. Fazer k = k + 1 e voltar para o Passo 2.


3. Trocar x 0 por x n e voltar ao Passo 1.

Observar que não é necessário realizar uma busca unidimensional, pois α k é calculado analiticamente no
Passo 2(a).

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 10 de 12


Introdução à Otimização em Engenharia

II.6.3 Método com busca unidimensional (Fletcher-Reeves)

Ao invés de se utilizar uma expressão analítica para determinar α k , é possível obter o tamanho do passo
através de uma busca unidimensional, como proposto pelo método de Fletcher-Reeves.

Algoritmo Fletcher-Reeves

1. Dado x 0 ∈ ℜ n (aproximação inicial), calcular g 0 = ∇ x f (x 0 ) e fazer d 0 = − g 0 .


2. Para k = 0,1, ⋯ , n − 1 :
a) Fazer: x k +1 = x k + α k d k , onde α k minimiza f ( x k + α k d k )
b) Calcular g k +1 = ∇ x f (x k +1 ) e verificar se g k +1 < ε (tolerância). Caso afirmativo, a solução do

problema é x = x k +1 ; Caso contrário prosseguir.


*

c) Para k < n − 1 , fazer:


T
g k +1 g k +1
i. d k +1 = − g k +1 + β k d k , com β k = T
gk gk
ii. Fazer k = k + 1 e voltar para o Passo 2.
3. Trocar x 0 por x n e voltar ao Passo 1.

II.7 Quase-Newton

A idéia fundamental por detrás dos métodos Quase-Newton é a tentativa de construir a inversa da matriz
Hessiana do problema (ou uma aproximação dela), utilizando as informações colhidas ao longo do processo
de descida.
O primeiro esquema de construção da inversa da Hessiana foi proposto por Davidon e desenvolvido por
Fletcher e Powell.

Método de Davidon-Fletcher-Powell
1. Fazer k = 0 , definir aproximações iniciais x 0 ∈ ℜ n e H 0 (por exemplo, a matriz identidade).
2. Para o ponto x k , determinar o vetor gradiente: ∇ x f (x k ) .
Caso ∇ x f ( x k ) < ε , o processo convergiu para a solução x = x k ; caso contrário prosseguir.
*
3.
4. Fazer d k = − H k ∇ x f (x k )
5. Minimizar f ( x k + α k d k ) com relação à α k ≥ 0 , para obter:
x k +1 = x k + α k d k
pk = αk d k
∇ x f (x k +1 )
6. Fazer q k = ∇ x f (x k +1 ) − ∇ x f ( x k ) e calcular a nova estimativa para a Hessiana:
T T
pk pk H k qk qk H k
H k +1 = H k + T
− T
.
pk qk qk H k qk
7. Fazer k = k + 1 e retornar para o Passo 2.

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 11 de 12


Introdução à Otimização em Engenharia

Uma variante na expressão de atualização da inversa da Hessiana foi proposta por Broyden-Fletcher-
Goldfarb-Shanno.

Família Broyden-Fletcher-Goldfarb-Shanno
1. Fazer k = 0 , definir aproximações iniciais x 0 ∈ ℜ n e H 0 (por exemplo, a matriz identidade).
2. Para o ponto x k , determinar o vetor gradiente: ∇ x f (x k ) .
Caso ∇ x f ( x k ) < ε o processo convergiu para a solução x = x k ; caso contrário prosseguir.
*
3.
4. Fazer d k = − H k ∇ x f (x k )
5. Minimizar f ( x k + α k d k ) com relação à α k ≥ 0 , para obter:
x k +1 = x k + α k d k
pk = αk d k
∇ x f (x k +1 )
6. Fazer q k = ∇ x f (x k +1 ) − ∇ x f ( x k ) e calcular a nova estimativa para a Hessiana:
 qT H k q  p pT p qT H k + H k q pT
H k +1 = H k +  1 + k T k  kT k − k k T k k
.
 q p p q q p
 k k  k k k k

7. Fazer k = k + 1 e retornar para o Passo 2.

Exercício: Para a função f ( x ) = 3 x12 + x22 − 6 x1 − 4 x2 + 9 determinar o solicitado:

0 
a) A aproximação quadrática no ponto x 0 =   .
0 
b) O gráfico em 3D da função e da aproximação quadrática anterior.
7 
c) As curvas de nível da função e o vetor gradiente em x 0 e x1 =   .
5
d) A interpretação geométrica do ponto no qual ∇ x f ( x ) = 0 .

Otimização Irrestrita – Sérgio Haffner Versão 25/8/2009 Página 12 de 12


Introdução à Otimização

III Otimização com Restrições

III.1 Introdução

Nesta seção serão abordados os problemas de otimização não linear (função objetivo e/ou restrições não
lineares) com a seguinte forma geral:
min f (x )
s.a. h( x ) = 0
 Restrições de igualdade
 (III.1)
 g (x ) ≤ 0 Restrições de desigualdade
 x∈Ω
Observações:
1. Um ponto x ∈ Ω que satisfaça a todas as restrições funcionais h( x ) = 0 e g ( x ) ≤ 0 é denominado( )
ponto factível.
2. O conjunto das restrições de igualdade h(x ) = 0 define uma hipersuperfície S.
3. No espaço das soluções viáveis, uma restrição de desigualdade i pode estar ativa, quando g i (x ) = 0 ,
ou inativa, quando g i (x ) < 0 . Se fosse possível conhecer a priori quais restrições estão ativas na
solução de (III.1), a solução seria o ponto de mínimo local do problema definido ignorando as
restrições inativas e considerando todas as restrições ativas como restrições de igualdade. Isto motiva
o estudo em separado dos problemas que possuem apenas restrições de igualdade.
Os métodos empregados na solução de (III.1) se dividem em duas famílias:
• Pontos factíveis (por exemplo: gradiente projetado; gradiente reduzido)
• Pontos infactíveis (por exemplo: penalidades e métodos duais)

Definição (Ponto Regular): Um ponto x* satisfazendo h x * = 0 é dito ser um ponto regular das ( )
restrições se os vetores gradiente ∇h1 x , ∇h2 x , ⋯ , ∇hn x ( )
*
( )
*
( ) são linearmente independentes (LI).
*

Propriedade: O plano tangente à superfície em um ponto regular x* é dado por:


{
M = y : ∇h x y = 0 ( ) *
}
∇h x( )*

( )
∇h x
*
Plano tangente

*
x

Plano tangente
h( x ) = 0
*
x
h( x ) = 0 S
S

*
Figura III.1 – Ilustração de um ponto regular x .

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 1 de 29


Introdução à Otimização

Plano tangente
( )
∇h2 x
*

h( x ) = 0

*
∇h1 x ( )
*

h2 (x ) = 0
S

h1 (x ) = 0

Figura III.1 (continuação) – Ilustração de um ponto regular x* .

III.2 Condições necessárias de 1a ordem (restrições de igualdade)

Seja x* um ponto regular das restrições h(x ) = 0 e um extremo local (mínimo ou máximo) de f ( x ) sujeito a
estas restrições. Então, todo y ∈ ℜ n tal que

( )
∇h x y = 0
*
( y pertence ao plano tangente)

deve também satisfazer


( )
∇f x y = 0
*
(gradiente perpendicular ao plano tangente)

( )
Assim, o gradiente da função objetivo ∇f x é ortogonal ao plano tangente à superfície definida pelas
*

restrições h(x ) = 0 , ou seja, pode ser representado por uma combinação linear do gradiente de h( x ) ,
calculado em x , ∇h x .
*
( )
*

Teorema: Seja x* um ponto extremo de f ( x ) sujeito as restrições h(x ) = 0 . Suponha que x* é um ponto
regular destas restrições. Então existe λ ∈ ℜ m tal que

( )
∇f x + λ ∇h x = 0
* T
( )
*
( )
Combinação linear: − ∇f x = λ ∇ h x
* T
( )
*

As condições necessárias de 1ª ordem são dadas por:


( )
∇f x + λ ∇h x = 0
* T
( )
*
(n equações para n variáveis)

h(x ) = 0
*
(m equações para m restrições)

e originam um total de n + m equações (geralmente não lineares) em n + m variáveis que constituem x e


*

λ.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 2 de 29


Introdução à Otimização

Definição (Lagrangeano): O Lagrangeano associado a um problema com restrições de igualdade é dado


por:
l ( x , λ ) = f ( x ) + λ h( x ) Dimensão: [1 × 1] = [1 × 1] + [1 × m][m × 1]
T

sendo λ o vetor dos multiplicadores de Lagrange cujos componentes são associados a cada uma das
restrições do problema.
Utilizando-se esta definição é possível escrever as condições necessárias de 1ª ordem de forma mais
compacta:
∇ xl ( x, λ ) = 0 ( )
(ou seja, ∇ x f x + λ ∇ x h x = 0 )
* T
( )
*

∇ λ l ( x, λ ) = 0 (ou seja, h(x ) = 0 )


*

III.2.1 Dimensões dos vetores e matrizes

Com relação às dimensões dos vetores e matrizes envolvidos nos cálculos anteriores, considerar o exemplo
no qual se tem três variáveis (n=3) e duas restrições de igualdade (m=2). Neste caso, o problema de
otimização é dado por:
min f (x )
s.a. h1 ( x ) = 0


 h2 ( x ) = 0
 x = [x1 x2 x3 ]

a função Lagrangeana associada é dada por:


 h ( x )
l (x, λ ) = l (x1 , x2 , x3 , λ1 , λ2 ) = f ( x ) + [λ1 λ2 ] 1 
h2 (x )
l (x, λ ) = f (x ) + λ1h1 (x ) + λ2 h2 (x )

sendo o gradiente, com relação à x , calculado como segue:


∇ x l ( x, λ ) = ∇ x [ f (x ) + λ1h1 (x ) + λ2 h2 ( x )]

 ∂f ( x ) ∂h ( x ) ∂h ( x ) ∂f (x ) ∂h ( x ) ∂h (x ) ∂f (x ) ∂h (x ) ∂h (x ) 
∇ x l (x, λ ) =  + λ1 1 + λ2 2 + λ1 1 + λ2 2 + λ1 1 + λ2 2  =
 ∂x1 ∂x1 ∂x1 ∂x 2 ∂x 2 ∂x 2 ∂x 3 ∂x 3 ∂x 3 

 ∂f ( x ) ∂f (x ) ∂f (x )   ∂h1 (x ) ∂h ( x ) ∂h1 ( x ) ∂h (x ) ∂h1 (x ) ∂h ( x ) 


=   + λ1 + λ2 2 λ1 + λ2 2 λ1 + λ2 2 
 ∂x1 ∂x 2 ∂x 3   ∂x1 ∂x1 ∂x 2 ∂x 2 ∂x 3 ∂x 3 

 ∂h1 (x ) ∂h1 ( x ) ∂h1 (x ) 


 ∂x ∂x2 ∂x3 
∇ x l ( x, λ ) = ∇ x f (x ) + [λ1 λ2 ] 1 =
 2∂h ( x ) ∂h 2 (x ) ∂h2 (x ) 
 ∂x1 ∂x2 ∂x3 
 ∇ x h1 ( x )
= ∇ x f (x ) + [λ1 λ2 ] 
∇ x h2 (x )

∇ x l ( x, λ ) = ∇ x f ( x ) + λ T ∇ x h ( x ) Dimensões: [1 × n ] = [1 × n] + [1 × m][m × n ]

Observar que a expressão em destaque corresponde ao termo igualado á zero nas condições necessárias de 1a
ordem.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 3 de 29


Introdução à Otimização

Exemplo III.1: Considere o problema de otimização


min x1 x2 + x2 x3 + x1 x3

s.a. x1 + x2 + x3 = 3
Na forma padrão, tem-se:
min x1 x2 + x2 x3 + x1 x3

s.a. x1 + x2 + x3 − 3 = 0

O Lagrangeano deste problema é dado por


l ( x1 , x2 , x3 , λ ) = x1 x2 + x2 x3 + x1 x3 + λ (x1 + x2 + x3 − 3)
Aplicando as condições necessárias de 1ª ordem, tem-se:

l ( x1 , x2 , x3 , λ ) = 0
∂x1

l ( x1 , x2 , x3 , λ ) = 0
∂x2

l (x1 , x2 , x3 , λ ) = 0
∂x3

l (x1 , x2 , x3 , λ ) = 0
∂λ
Neste caso, tem-se um sistema de equações lineares (4 equações e 4 variáveis):
x2 + x3 + λ = 0
x1 + x3 + λ = 0
x2 + x1 + λ = 0
x1 + x2 + x3 − 3 = 0
cuja solução é:
x1 = 1
x2 = 1
com f ( x ) = 3
x3 = 1
λ = −2

Exemplo III.2: Considere o problema de otimização


min 400 x12 + 800 x22 + 200 x1 x2 + 1600 x32 + 400 x2 x3 (risco)

s.a. 10 x1 + 10 x2 + 15 x3 = 12 (meta de ganho )

 x1 + x2 + x3 = 1 (capital investido)
Na forma padrão, tem-se:
min 400 x12 + 800 x22 + 200 x1 x2 + 1600 x32 + 400 x2 x3

s.a. 10 x1 + 10 x2 + 15 x3 − 12 = 0
 x1 + x2 + x3 − 1 = 0

O Lagrangeano deste problema é dado por

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 4 de 29


Introdução à Otimização

 h1 ( x1 , x2 , x3 , λ1 , λ2 )
l (x1 , x2 , x3 , λ1 , λ2 ) = f ( x1 , x2 , x3 , λ1 , λ2 ) + [λ1 λ2 ] =
 h2 (x1 , x2 , x3 , λ1 , λ 2 )
= 400 x12 + 800 x22 + 200 x1 x2 + 1600 x32 + 400 x2 x3 +
+ λ1 (10 x1 + 10 x2 + 15 x3 − 12) + λ2 ( x1 + x2 + x3 − 1)
Aplicando as condições necessárias de 1ª ordem, tem-se:

l ( x1 , x2 , x3 , λ1 , λ2 ) = 0
∂x1

l ( x1 , x2 , x3 , λ1 , λ2 ) = 0
∂x2

l (x1 , x2 , x3 , λ1 , λ2 ) = 0
∂x3

l ( x1 , x2 , x3 , λ1 , λ2 ) = 0
∂λ1

l ( x1 , x2 , x3 , λ1 , λ2 ) = 0
∂λ2
Neste caso, tem-se um sistema de equações lineares (5 equações e 5 variáveis):
800 x1 + 200 x2 + 10λ1 + λ2 = 0
1600 x2 + 200 x1 + 400 x3 + 10λ1 + λ2 = 0
3200 x3 + 400 x2 + 15λ1 + λ2 = 0
10 x1 + 10 x2 + 15 x3 − 12 = 0
x1 + x2 + x3 − 1 = 0
cuja solução é:
x1 = 0,5
x2 = 0,1
x3 = 0,4 ( )
com f x = 390
*

λ1 = −180
λ2 = 1380
λ1 e λ2 são os multiplicadores de Lagrange associados a cada uma das restrições do problema. Tais
multiplicadores podem ser utilizados para quantificar a variação que ocorreria na função objetivo caso o
limite da restrição fosse alterado. Por exemplo, para uma variação de +0,1 na primeira restrição, espera-se
uma alteração de 0,1×180=18 no valor ótimo da função objetivo (que passaria de 390 para 408). De fato,
quando se realiza a alteração deste limite, o novo problema de otimização a ser resolvido é
min 400 x12 + 800 x22 + 200 x1 x2 + 1600 x32 + 400 x2 x3 (risco)

s.a. 10 x1 + 10 x2 + 15 x3 = 12,1 (meta de ganho ALTERADA)

 x1 + x2 + x3 = 1 (capital investido)
Que origina o seguinte sistema de equações

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 5 de 29


Introdução à Otimização

800 x1 + 200 x2 + 10λ1 + λ2 = 0


1600 x2 + 200 x1 + 400 x3 + 10λ1 + λ2 = 0
3200 x3 + 400 x2 + 15λ1 + λ2 = 0
10 x1 + 10 x2 + 15 x3 − 12,1 = 0
x1 + x2 + x3 − 1 = 0
Cuja solução é
x1 = 0,49
x2 = 0,09
x3 = 0,42 ( )
com f x = 408,7
*

λ1 = −194
λ2 = 1530
Observa-se que o valor da função objetivo (408,7) é bastante próximo do valor estimado com o uso do
multiplicador de Lagrange (408).

Ainda para este problema, é possível estimar qual o acréscimo de capital é necessário para possibilitar obter
o mesmo lucro de 12, mas com um risco ainda menor, por exemplo, de 385. Neste caso, a variação na função
objetivo seria de –5 e se desejaria determinar a variação no limite da segunda restrição 5/1380≅0,0036. De
fato, quando se realiza a alteração deste limite, o novo problema de otimização a ser resolvido é dado por
min 400 x12 + 800 x22 + 200 x1 x2 + 1600 x32 + 400 x2 x3 (risco)

s.a. 10 x1 + 10 x2 + 15 x3 = 12 (meta de ganho )

 x1 + x2 + x3 = 1,0036 (capital investido ALTERADO)
Que origina o seguinte sistema de equações
800 x1 + 200 x2 + 10λ1 + λ2 = 0 800 x1 + 200 x2 + 10λ1 + λ2 = 0
1600 x2 + 200 x1 + 400 x3 + 10λ1 + λ2 = 0 200 x1 + 1600 x2 + 400 x3 + 10λ1 + λ2 = 0
3200 x3 + 400 x2 + 15λ1 + λ2 = 0 400 x2 + 3200 x3 + 15λ1 + λ2 = 0
10 x1 + 10 x2 + 15 x3 − 12 = 0 10 x1 + 10 x2 + 15 x3 = 12
x1 + x2 + x3 − 1,0036 = 0 x1 + x2 + x3 = 1,0036
Cuja solução é
x1 = 0,5061
x2 = 0,1047
x3 = 0,3928 ( )
Com f x ≈ 385,1
*

λ1 = −174,6
λ2 = 1320,2
Observa-se que o valor da função objetivo (385,1) é bastante próximo do valor estimado com o uso do
multiplicador de Lagrange (385).

III.2.2 Interpretação do multiplicador de Lagrange

O valor ótimo dos multiplicadores de Lagrange λ*i têm uma interpretação muito importante pois estes
descrevem o quanto o valor da função objetivo se altera quando o lado direito de uma restrição é modificado.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 6 de 29


Introdução à Otimização

Em problemas não lineares, os multiplicadores de Lagrange são associados com uma solução particular e
correspondem a custos incrementais ou marginais, ou seja, custos associados a pequenas variações nas
restrições. Em outras palavras, quando o lado direito da restrição i é incrementado de ∆, o valor ótimo da
função objetivo aumenta de aproximadamente − λ*i ∆ .

III.3 Condições de 2a ordem (restrições de igualdade)

III.3.1 Condições necessárias de 2a ordem

Suponha que x ∈ ℜ n é um mínimo local de f satisfazendo h x = 0 e x é um ponto regular destas


* *
( ) *

restrições. Então existe um λ ∈ ℜ m tal que

( ) ( )
∇f x + λ ∇ h x = 0
* T *
Dimensão: [1 × n ] + [1 × m][m × n ] = [1 × n]

Sendo M = {y : ∇ h(x )y = 0} o plano tangente, então a matriz


*

L (x ) = F (x ) + λ H (x )
* * T *
(Hessiana do Lagrangeano)

é semidefinida positiva em M = {y : ∇ h(x )y = 0}, isto é, ∀ y ≠ 0 ∈ M , y L (x )y > 0 .


* T *

III.3.2 Condições suficientes de 2a ordem

Suponha que exista um ponto x ∈ ℜ n satisfazendo h x = 0 e um λ ∈ ℜ m tal que


*
( ) *

( )
∇f x + λ ∇ h x = 0
* T
( )
*
Dimensão: [1 × n ] + [1 × m][m × n ] = [1 × n]

( ) ( )
suponha também que a matriz L x = F x + λ H x
*
( ) (Hessiana do Lagrangeano) é definida positiva no
* T *

M = {y : ∇ h(x )y = 0}, isto é, ∀ y ≠ 0 ∈ M , y L (x )y > 0 . Então x é um ponto de mínimo


* T * *
plano tangente
local estrito de f .

III.3.2.1 Dimensões dos vetores e matrizes

Com relação às dimensões dos vetores e matrizes envolvidos nos cálculos anteriores, considerar o mesmo
exemplo utilizado anteriormente no qual se tem três variáveis (n=3) e duas restrições de igualdade (m=2).
Neste caso, o problema de otimização é dado por:
min f (x )
s.a. h1 ( x ) = 0


 h2 ( x ) = 0
 x = [x1 x2 x3 ]

a função Lagrangeana associada é dada por:


 h ( x )
l (x, λ ) = l (x1 , x2 , x3 , λ1 , λ2 ) = f ( x ) + [λ1 λ2 ] 1 
h2 (x )
l (x, λ ) = f (x ) + λ1h1 (x ) + λ2 h2 (x )

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 7 de 29


Introdução à Otimização

sendo a matriz Hessiana, com relação à x , calculada como segue:


 ∂ 2 f (x ) ∂ 2 h1 (x ) ∂ 2 h2 ( x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2 h 2 (x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2 h 2 (x ) 
 + λ1 + λ2 + λ1 + λ2 + λ1 + λ2 
 ∂x1
2
∂x12 ∂x12 ∂x1 ∂x 2 ∂x1∂x 2 ∂x1∂x 2 ∂x1∂x 3 ∂x1∂x 3 ∂x1∂x 3 
 ∂ 2 f (x ) ∂ 2 h1 x( )+λ ∂ 2 h2(x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2 h 2 (x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2 h 2 (x ) 
L (x, λ ) =  + λ1 2 + λ1 + λ2 + λ1 + λ2 =
 ∂x 2 ∂x1 ∂x 2 ∂x1 ∂x 2 ∂x1 ∂x 22 ∂x 22 ∂x 22 ∂x 2 ∂x 3 ∂x 2 ∂x 3 ∂x 2 ∂x 3 
 ∂ 2 f (x ) ∂ 2 h1 (x ) ∂ 2 h2 ( x ) ∂ f (x )
2
()
∂ 2 h1 x∂ 2 h 2 (x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2 h 2 (x ) 
 + λ1 + λ2 + λ1 + λ2 + λ1 + λ2 
 ∂x 3 ∂x1 ∂x 3 ∂x1 ∂x 3 ∂x1 ∂x 3 ∂x 2 ∂x 3 ∂x 2 ∂x 3 ∂x 2 ∂x 32
∂x 32
∂x 32 

 ∂ 2 f (x ) ∂ 2 f (x ) ∂ 2 f (x )   ∂ 2 h1 ( x ) ∂ 2 h2 ( x ) ∂ 2 h1 ( x ) ∂ 2 h 2 (x ) ∂ 2 h1 ( x ) ∂ 2 h2 ( x ) 
  λ1 + λ2 λ1 + λ2 λ1 + λ2 
 ∂x1
2 ∂x1∂x 2 ∂x1∂x 3   ∂x12 ∂x12 ∂x1∂x 2 ∂x1∂x 2 ∂x1 ∂x 3 ∂x1∂x 3 
 ∂ 2 f (x ) ∂ 2 f (x ) ∂ f (x )  
2
∂ 2 h1 ( x ) ∂ 2 h2 ( x ) ∂ 2 h1 ( x ) ∂ 2 h 2 (x ) ∂ h1 ( x )
2
∂ h2 ( x ) 
2
=   + λ1 + λ2 λ1 + λ2 λ1 + λ2 
 ∂x 2 ∂x1 ∂x 22 ∂x 2 ∂x 3   ∂x 2 ∂x1 ∂x 2 ∂x1 ∂x 22 ∂x 22 ∂x 2 ∂x 3 ∂x 2 ∂x 3 
 ∂ 2 f (x ) ∂ f (x )
2
∂ f (x )  
2
∂ h1 ( x )
2
∂ h2 ( x )
2
( ) + λ ∂ h 2 (x )
∂ h1 x
2 2
∂ h1 ( x )
2
∂ h2 ( x ) 
2
  λ1 + λ2 λ1 λ1 + λ2 
 ∂x 3 ∂x1 ∂x 3 ∂x 2
2
∂x 32   ∂x 3 ∂x1 ∂x 3 ∂x1 ∂x 3 ∂x 2 ∂x 3 ∂x 2 ∂x 32
∂x 32 

 ∂ 2 h1 (x ) ∂ 2 h1 (x ) ∂ 2 h1 (x )   ∂ 2 h2 ( x ) ∂ 2 h2 ( x ) ∂ 2 h 2 (x ) 
   
 ∂x1
2 ∂x1 ∂x 2 ∂x1 ∂x3   ∂x1
2 ∂x1 ∂x 2 ∂x1 ∂x 3 
 ∂ 2 h (x ) ∂ h1 (x )
2
∂ h1 (x )
2   ∂ h2 ( x )
2
∂ 2 h2 ( x ) ∂ h 2 (x ) 
2
L(x, λ ) = F (x ) + λ1  1
 + λ2  
 ∂x 2 ∂x1 ∂x 22 ∂x 2 ∂x 3   ∂x 2 ∂x1 ∂x 22 ∂x 2 ∂x3 
 ∂ 2 h (x ) ∂ 2 h1 (x ) ∂ 2 h1 (x )   ∂ 2 h (x ) ∂ h2 ( x )
2
∂ 2 h 2 (x ) 
 1   2 
 ∂x3 ∂x1 ∂x3 ∂x 2 ∂x3 
2  ∂x 3 ∂x1 ∂x 3 ∂x 2 ∂x32 
= F (x ) + λ1 H 1 (x ) + λ 2 H 2 (x ) = F (x ) + [λ1 λ 2 ]H (x )

L ( x, λ ) = F ( x ) + λ T H ( x ) Dimensões: [n × n] = [n × n] + [n × n ]

Exemplo III.3: Considere o problema de otimização


min x1 x2 + x2 x3 + x1 x3

s.a. x1 + x2 + x3 = 3

Cuja forma padrão é


min x1 x2 + x2 x3 + x1 x3

s.a. x1 + x2 + x3 − 3 = 0

Conforme mostrado no Exemplo III.1, o Lagrangeano deste problema é dado por


l (x1 , x2 , x3 , λ ) = x1 x2 + x2 x3 + x1 x3 + λ (x1 + x2 + x3 − 3)
e a solução obtida aplicando-se as condições de primeira ordem foi x1 = 1, x2 = 1, x3 = 1, λ = −2 , com
f (x ) = 3 .

A partir do Lagrangeano, pode-se escrever a matriz L x ( ) *

 ∂ 2 l ( x1 , x2 , x3 , λ ) ∂ 2 l (x1 , x2 , x3 , λ ) ∂ 2 l (x1 , x2 , x3 , λ ) 
 
 ∂x12 ∂x1∂x2 ∂x1∂x3 
 ∂ 2 l ( x1 , x2 , x3 , λ ) ∂ l (x1 , x2 , x3 , λ ) ∂ 2 l (x1 , x2 , x3 , λ ) 
( )
2
L x =
*

 ∂x2 ∂x1 ∂x22 ∂x2 ∂x3 
 ∂ l ( x1 , x2 , x3 , λ )
2
∂ l (x1 , x2 , x3 , λ )
2
∂ 2 l (x1 , x2 , x3 , λ ) 
 ∂x3 ∂x1 ∂x3∂x2 
 ∂x32 

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 8 de 29


Introdução à Otimização

0 1 1
( )
L x = 1 0 1
*

1 1 0

Que não é nem positiva nem negativa definida, pois,


0 1 1  y1 
T
( )
y L x y = [ y1 y2 y3 ]1 0 1  y 2  = y1 ( y 2 + y3 ) + y2 ( y1 + y3 ) + y3 ( y1 + y2 )
*

1 1 0  y3 
= 2( y1 y 2 + y1 y3 + y 2 y3 )
que pode assumir qualquer valor positivo, negativo ou nulo, dependendo dos valores de y1 , y2 e y3 .

{ ( )
A expressão do plano tangente M = y : ∇ h x y = 0 é dada por:
*
}
 ∂h(x1 , x2 , x3 ) ∂h(x1 , x2 , x3 ) ∂h(x1 , x2 , x3 ) 
*
( )
∇h x = ∇h( x1 , x2 , x3 ) = 
∂x1 ∂x2 ∂x3
 = [1 1 1]
 

 y1 
( )
∇h x y = 0 ⇒
*
= [1 1 1] y 2  = 0 ⇒ y : y1 + y 2 + y3 = 0
 y3 
{
M = y : y1 + y 2 + y3 = 0 }
Aplicando as condições de 2ª ordem, tem-se:
0 1 1   y1 
T
( )
y L x y = [ y1
*
y2 y3 ]1 0 1   y 2  = y1 ( y 2 + y3 ) + y 2 ( y1 + y3 ) + y3 ( y1 + y 2 )
1 1 0  y3 

Substituindo a expressão do plano tangente, tem-se


y 2 + y3 = − y1
y1 + y3 = − y 2
y1 + y 2 = − y3
daí
( ) ( )
y L x y = y1 (− y1 ) + y 2 (− y2 ) + y3 (− y3 ) = − y12 + y 22 + y32
T *

Portanto, L (x ) é definida negativa no plano tangente e o ponto obtido pela aplicação das condições de 1
* a

ordem é um máximo local.

Neste caso, observar que o problema de otimização é ilimitado, pois a função objetivo pode assumir valores
negativos infinitamente pequenos. Por exemplo, considerar os seguintes casos particulares:
• Se x1 = x2 = 0 e x3 = 3 ⇒ f (x ) = 0

• Se x1 = −1, x2 = −1 e x3 = 5 ⇒ f (x ) = −9

• Se x1 = −α , x2 = −α e x3 = 3 + 2α , com α > 0 ⇒ f ( x ) = −3α 2 − 6α que pode ser tão


pequeno quanto desejado.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 9 de 29


Introdução à Otimização

III.4 Restrições de desigualdade

Considere o seguinte problema com restrições de igualdade e de desigualdade


min f (x )
s.a. h(x ) = 0


 g (x ) ≤ 0
 x ∈Ω

de modo que g é uma função p-dimensional e que f , h, g ∈ C 1 .

III.4.1 Condições necessárias de 1a ordem

( )
Definição (Ponto Regular): Seja x* um ponto que satisfaz as restrições h x * = 0 , g x ≤ 0 e seja J o ( )
*

( ( ) )
conjunto dos índices das restrições ativas g j x = 0, j ∈ J . Diz-se que x
* *
é um ponto regular das
restrições se os vetores gradiente ∇h (x ), ∇g (x ), 1 ≤ i ≤ m, j ∈ J são linearmente independentes (LI).
* *
i j

Teorema (Condições de Karush-Kuhn-Tucker, KKT): Seja x* um mínimo local para o problema

min f (x )

s.a. h(x ) = 0

 g (x ) ≤ 0

e suponha x é um ponto regular então existe um vetor λ ∈ ℜ m e um vetor µ ≥ 0 , µ ∈ ℜ p tal que


*

( )
* T
( )
∇f x + λ ∇ h x + µ ∇ g x = 0
* T
( )
*

µT g (x ) = 0
*

≤0
≥0  ≤0

( ) ( )

Observar que como µ ≥ 0 e g x ≤ 0 , a expressão µ g x = 0 implica em afirmar que o multiplicador µ j
* T *

( )
será diferente de zero somente quando a restrição estiver ativa, ou seja, quando g j x = 0 . Além disto, o
*

fato da soma dos termos µ j g j x ( ) ser nula obriga que cada um dos termos seja nulo pois todos os produtos
*

possuem o mesmo sinal, ou seja:


( )
µ j g j x* = 0 ∀j = 1, ⋯ , p

III.4.1.1 Dimensões dos vetores e matrizes

Com relação às dimensões dos vetores e matrizes envolvidos nos cálculos anteriores, considerar o exemplo
no qual se tem três variáveis (n=3), duas restrições de igualdade (m=2) e uma restrição de desigualdade
(p=1). Neste caso, o problema de otimização é dado por:

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 10 de 29


Introdução à Otimização

min f (x )

s.a. h1 (x ) = 0

 h2 (x ) = 0
 g (x ) ≤ 0

 x = [x1 x2 x3 ]

a função Lagrangeana associada é dada por:


 h1 (x )
( )
l x, λ , µ = l ( x1 , x2 , x3 , λ1 , λ2 , µ ) = f ( x ) + [λ1 λ2 ]  + [µ ][g ( x )]
h2 ( x )
( )
l x, λ , µ = f ( x ) + λ1h1 ( x ) + λ2 h2 ( x ) + µg ( x )

sendo o gradiente, com relação à x , calculado como segue:

( )
∇ x l x, λ , µ = ∇ x [ f ( x ) + λ1 h1 ( x ) + λ 2 h2 ( x ) + µg (x )]
 ∂f (x ) ∂h (x ) ∂h (x ) ∂g (x ) ∂f (x ) ∂h (x ) ∂h (x ) ∂g (x ) ∂f (x ) ∂h (x ) ∂h (x ) ∂g (x ) 
( )
∇ x l x, λ , µ =  + λ1 1 + λ 2 2 +µ + λ1 1 + λ 2 2 +µ + λ1 1 + λ 2 2 +µ =
 ∂x1 ∂x1 ∂x1 ∂x1 ∂x 2 ∂x 2 ∂x 2 ∂x 2 ∂x3 ∂x3 ∂x3 ∂x 3 

 ∂f (x ) ∂f ( x ) ∂f (x )   ∂h1 ( x ) ∂h (x ) ∂h1 (x ) ∂h (x ) ∂h1 (x ) ∂h (x ) 


=   + λ1 + λ2 2 λ1 + λ2 2 λ1 + λ2 2  +
 ∂x1 ∂x 2 ∂x 3   ∂x1 ∂x1 ∂x 2 ∂x 2 ∂x 3 ∂x 3 
 ∂g ( x ) ∂g (x ) ∂g (x ) 
+ µ µ µ =
 ∂x1 ∂x 2 ∂x3 

 ∂h1 ( x ) ∂h1 ( x ) ∂h1 (x ) 


 ∂x ∂x 3   ∂g (x ) ∂g ( x ) ∂g ( x ) 
( )
∇ x l x, λ , µ = ∇ x f (x ) + [λ1 λ 2 ] 1 ∂x 2
 + [µ ] =
 ∂h2 (x ) ∂h2 (x ) ∂h2 ( x )   ∂x1 ∂x 2 ∂x 3 
 ∂x1 ∂x 2 ∂x 3  

∇ ( )
 x 1 
[ ]
h x
= ∇ x f (x ) + [λ1 λ 2 ]  + [µ ] ∇ x g (x )
∇ x h2 (x )

( )
∇ x l x, λ , µ = ∇ x f (x ) + λ ∇ x h( x ) + µ ∇ x g (x ) Dimensões: [1 × n] = [1 × n] + [1 × m ][m × n] + [1 × p ][ p × n]
T T

Observar que a expressão em destaque corresponde ao termo igualado á zero nas condições de Karush-Kuhn-
Tucker.

Exemplo III.4: Considere o problema de otimização


min 2 x12 + 2 x1 x2 + x22 − 10 x1 − 10 x2

s.a. x1 + x2 ≤ 5
2 2

 3 x1 + x2 ≤ 6

Cuja forma padrão é
min 2 x12 + 2 x1 x2 + x22 − 10 x1 − 10 x2

s.a. x1 + x2 − 5 ≤ 0
2 2

 3 x1 + x2 − 6 ≤ 0

Aplicando-se as condições necessárias de 1a ordem

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 11 de 29


Introdução à Otimização

( ) ( ) ( )
Sem restrições de igualdade
∇f x + λ ∇ h x + µ ∇ g x = 0 ∇f ( x ) + µ ∇ g ( x ) = 0
* T * T * T

µT g (x ) = 0
*

µ≥0

 ∇ x g1 (x ) ∇ x2 g1 ( x )
∇f ( x ) + µ ∇ g ( x ) = 0
T
⇒ [∇ ]
f (x ) ∇ x2 f (x ) + [µ1 µ 2 ] 1  = [0 0]
∇ x1 g 2 ( x ) ∇ x2 g 2 (x )
x1

∇ x1 f ( x ) + µ1∇ x1 g1 (x ) + µ 2 ∇ x1 g 2 (x ) = 0 ⇒ 4 x1 + 2 x2 − 10 + 2 µ1 x1 + 3µ 2 = 0

∇ x 2 f ( x ) + µ1∇ x 2 g1 (x ) + µ 2∇ x 2 g 2 (x ) = 0 ⇒ 2 x1 + 2 x2 − 10 + 2 µ1 x2 + µ 2 = 0

µ T g (x ) = 0 [µ1
 x12 + x22 − 5 
µ 2 ]
( )
µ1 x12 + x22 − 5 = 0
⇒ =0 ⇒
3 x1 + x2 − 6 µ 2 (3 x1 + x2 − 6 ) = 0
Para obter-se a solução, é necessário definir as várias combinações de restrições ativas e testar o sinal dos
multiplicadores de Lagrange µ . Neste problema pode-se tentar fazer nenhuma, uma ou ambas restrições
ativas (4 possibilidades). Considerando ambas restrições relaxadas (inativas), tem-se µ1 = µ 2 = 0 , o que
implica nas seguintes equações
4 x1 + 2 x2 − 10 = 0
2 x1 + 2 x2 − 10 = 0
Cuja solução é
x1 = 0
x2 = 5

Isto implica em x12 + x22 − 5 = 0 2 + 5 2 − 5 = 20 ≤/ 0 , logo a primeira restrição NÃO está sendo respeitada,
como suposto inicialmente ( µ1 = 0 ). Assim, conclui-se que esta solução NÃO satisfaz as condições
necessárias de 1a ordem.
Por outro lado, considerando a primeira restrição ativa e a segunda inativa, tem-se µ1 > 0 e µ 2 = 0 ,
conduzindo às seguintes equações
4 x1 + 2 x2 − 10 + 2 µ1 x1 = 0
2 x1 + 2 x2 − 10 + 2 µ1 x2 = 0
x12 + x22 − 5 = 0
Cuja solução é
x1 = 1
x2 = 2
µ1 = 1
Isto implica em 3x1 + x2 − 6 = 3 × 1 + 2 − 6 = −1 < 0 , logo a segunda restrição está atendida com folga, como
suposto inicialmente. Assim, como µ1 = 1 > 0 , conclui-se que esta solução satisfaz as condições necessárias
de 1a ordem.
A análise do gráfico das curvas de nível da função objetivo e das restrições do problema, mostrado na Figura
III.2, indica que o ponto x1 = 1 e x2 = 2 corresponde ao mínimo da função pois encontra-se entre o limite da
restrição (circunferência vermelha) que tangencia uma das curvas de nível da função, estando a outra
restrição (reta verde) relaxada nesta condição. Observar que, neste caso, a visualização é possível; em

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 12 de 29


Introdução à Otimização

espaços com dimensões maiores não. Assim, a definição de um método analítico para comprovar a
otimalidade (condições suficientes) é indispensável, sendo desenvolvida a seguir.

1
x2

-1

-2

-3

-4

-5
-5 -4 -3 -2 -1 0 1 2 3 4 5
x1
Figura III.2 – Curvas de nível da função objetivo e restrições do Exemplo III.4.

III.4.2 Condições de 2a ordem

Sejam f , g , h ∈ C 2 . As condições suficientes para que um ponto regular x* seja um mínimo estrito para o
problema
min f (x )

s.a. h(x ) = 0

 g (x ) ≤ 0

são que existam λ ∈ ℜ m e µ ∈ ℜ p tal que

µ≥0

( )
µ T g x* = 0

∇f (x ) + λ ∇ h(x ) + µ ∇ g (x ) = 0 Dimensões: [1 × n] + [1 × m][m × n] + [1 × p ][ p × n] = [1 × n]


* T * T *

e a matriz Hessiana
( ) ( )
L x = F x +λ H x +µ G x
* * T
( ) * T
( )
*
Dimensões: [n × n] = [n × n] + [n × n] + [n × n]

seja definida positiva no subespaço (plano tangente às restrições ativas do problema)


{ ( ) ( )
M ′ = y : ∇ h x y = 0, ∇g j x y = 0, para todo j ∈ J
* *
}
onde
{ ( )
J = j : g j x = 0, µ j > 0
*
} (conjunto das restrições ativas)

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 13 de 29


Introdução à Otimização

III.4.2.1 Dimensões dos vetores e matrizes

Com relação às dimensões dos vetores e matrizes envolvidos nos cálculos anteriores, considerar o mesmo
exemplo utilizado anteriormente no qual se tem três variáveis (n=3), duas restrições de igualdade (m=2) e
uma restrição de desigualdade (p=1). Neste caso, o problema de otimização é dado por:
min f (x )

s.a. h1 (x ) = 0

 h2 (x ) = 0
 g (x ) ≤ 0

 x = [x1 x2 x3 ]

a função Lagrangeana associada é dada por:


 h1 (x )
( )
l x, λ , µ = l ( x1 , x2 , x3 , λ1 , λ2 , µ ) = f ( x ) + [λ1 λ2 ]  + [µ ][g ( x )]
h2 ( x )
( )
l x, λ , µ = f ( x ) + λ1h1 ( x ) + λ2 h2 ( x ) + µg ( x )

sendo a matriz Hessiana, com relação à x , calculada como segue:


 ∂ 2 f (x ) ∂ 2 h1 (x ) ∂ 2 h2 (x ) ∂ 2 g (x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2h2 ( x ) ∂ 2 g (x ) ∂ 2 f (x ) ∂ 2h1 ( x ) ∂ 2 h2 ( x ) ∂ 2 g (x ) 
 + λ1 + λ2 +µ + λ1 + λ2 +µ + λ1 + λ2 +µ 
 ∂x1
2
∂x1 2
∂x12
∂x12 ∂x1∂x2 ∂x1∂x2 ∂x1∂x2 ∂x1∂x2 ∂x1∂x3 ∂x1∂x3 ∂x1∂x3 ∂x1∂x3 
 ∂ 2 f (x ) ∂ 2 h1 (x ) ∂ 2 h2 (x ) ∂ 2 g (x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2h2 ( x ) ∂ 2 g (x ) ∂ 2 f (x ) ∂ 2h1 ( x ) ∂ 2 h2 ( x ) ∂ 2 g (x ) 
( )
L x, λ , µ =  + λ1 + λ2 +µ + λ + λ + µ + λ1 + λ2 +µ =
 ∂2x2∂x1 ∂x2∂x1 ∂x2∂x1 ∂x2∂x1 ∂x22 ∂x22 ∂x22 ∂x22 ∂x2∂x3 ∂x2∂x3 ∂x2∂x3 ∂x2∂x3 
1 2

 ∂ f (x ) ∂ h1 (x )
2
∂ h2 (x )
2
∂ 2 g (x ) ∂ 2 f (x ) ∂ 2 h1 ( x ) ∂ 2h2 ( x ) ∂ 2 g (x ) ∂ f (x )
2
∂ h1 ( x )
2
∂ h2 ( x )
2
∂ g (x ) 
2

 ∂x ∂x + λ + λ + µ + λ1 + λ2 +µ + λ1 + λ2 +µ
∂x3∂x1 ∂x3∂x1 ∂x3∂x1 ∂x3∂x2 ∂x3∂x2 ∂x3∂x2 ∂x3∂x2 ∂x32 ∂x32 ∂x32 ∂x32 
1 2
 3 1

 ∂ 2 f (x ) ∂ 2 f (x ) ∂ 2 f ( x )   ∂ 2 h1 ( x ) ∂ 2h2 ( x ) ∂ 2 h1 (x ) ∂ 2 h2 (x ) ∂ 2h1 ( x ) ∂ 2 h2 ( x )   ∂ 2 g ( x ) ∂ 2 g (x ) ∂ 2 g (x )
  λ1 + λ2 λ1 + λ2 λ1 + λ2  µ µ µ 
 ∂x1
2
∂x1∂x2 ∂x1∂x3   ∂x12 ∂x12 ∂x1∂x2 ∂x1∂x2 ∂x1∂x3 ∂x1∂x3   ∂x12 ∂x1∂x2 ∂x1∂x3 
 ∂ 2 f (x ) ∂ 2 f (x ) ∂ 2 f ( x )   ∂ 2 h1 ( x ) ∂ 2h2 ( x ) ∂ 2 h1 (x ) ∂ 2 h2 (x ) ∂ h1 ( x )
2
∂ h2 ( x )   ∂ 2 g ( x )
2
∂ 2 g (x ) ∂ g (x )
2
=   + λ1 + λ2 λ1 + λ2 λ1 + λ2  + µ µ µ 
 ∂2x2∂x1 ∂x22 ∂x2∂x3   ∂x2∂x1 ∂x2∂x1 ∂x22 ∂x22 ∂x2∂x3 ∂x2∂x3   ∂x2∂x1 ∂x22 ∂x2∂x3 
 ∂ f (x ) ∂ 2 f (x ) ∂ f ( x )   ∂ h1 ( x )
2 2
∂ 2h2 ( x ) ∂ h1 (x )
2
∂ 2 h2 (x ) ∂ h (x )
2
∂ h2 ( x )   ∂ 2 g ( x )
2
∂ 2 g (x ) ∂ 2 g (x )
 ∂x ∂x λ + λ λ1 + λ2 λ1 1 2 + λ2 µ µ µ
∂x3∂x2 ∂x32   ∂x3∂x1 ∂x3∂x1 ∂x3∂x2 ∂x3∂x2 ∂x3 ∂x32   ∂x3∂x1 ∂x3∂x2 ∂x32 
1 2
 3 1

 ∂ 2 h1 (x ) ∂ 2 h1 ( x ) ∂ 2 h1 ( x )   ∂ 2 h2 (x ) ∂ 2 h2 (x ) ∂ 2 h2 ( x )   ∂ 2 g (x ) ∂ 2 g (x ) ∂ 2 g (x ) 
     
 ∂x1
2
∂x1∂x 2 ∂x1 ∂x 3   ∂x1
2
∂x1∂x 2 ∂x1∂x 3   ∂x1
2
∂x1 ∂x 2 ∂x1 ∂x 3 
 ∂ 2 h1 (x ) ∂ h1 ( x ) ∂ h1 ( x )   ∂ h2 (x ) ∂ 2 h2 (x ) ∂ h2 ( x )   ∂ g (x ) ∂ 2 g (x ) ∂ 2 g (x ) 
( )
2 2 2 2 2
L x, λ , µ = F (x ) + λ1   + λ2   + µ 
 ∂x 2 ∂x1 ∂x 2 ∂x 2 ∂x 3   ∂x 2 ∂x1 ∂x 22 ∂x 2 ∂x 3   ∂x 2 ∂x1 ∂x 22 ∂x 2 ∂x 3 
2

 ∂ h1 (x )
2
∂ h1 ( x )
2
∂ h1 ( x ) 
2  ∂ h2 (x )
2
∂ h2 (x )
2
∂ 2 h2 ( x )   ∂ 2 g (x ) ∂ g (x )
2
∂ 2 g (x ) 
     
∂ ∂ ∂ ∂ ∂x 3  ∂ ∂ ∂x 3 ∂x 2 ∂x 32   ∂x 3 ∂x1 ∂x 3 ∂x 2 ∂x 32 
2
 3 1
x x x 3 x 2  3 1
x x
= F (x ) + λ1 H 1 ( x ) + λ 2 H 2 (x ) + µG ( x ) = F ( x ) + [λ1 λ 2 ]H ( x ) + [µ ]G (x )

( )
L x, λ , µ = F ( x ) + λ H ( x ) + µ G ( x )
T T
Dimensões: [n × n] = [n × n] + [n × n] + [n × n]

Exemplo III.5: Considere o problema de otimização


min 2 x12 + 2 x1 x2 + x22 − 10 x1 − 10 x2

s.a. x1 + x2 ≤ 5
2 2

 3x1 + x2 ≤ 6

Cuja forma padrão é

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 14 de 29


Introdução à Otimização

min 2 x12 + 2 x1 x2 + x22 − 10 x1 − 10 x2



s.a. x1 + x2 − 5 ≤ 0
2 2

 3x1 + x2 − 6 ≤ 0

No Exemplo III.4 foram aplicadas as condições necessárias de 1a ordem, obtendo-se o seguinte resultado:
x1 = 1
x2 = 2
µ1 = 1
Tem-se que
( )
l (x1 , x2 , µ1 , µ 2 ) = 2 x12 + 2 x1 x2 + x22 − 10 x1 − 10 x2 + µ1 x12 + x22 − 5 + µ 2 (3x1 + x2 − 6 )

resultando na seguinte matriz Hessiana L x ( )*

 ∂ 2 l (x1 , x2 , µ1 , µ 2 ) ∂ 2l (x1 , x2 , µ1 , µ 2 ) 
 
( )
Lx = 2
* ∂x12 ∂x1∂x2
 ∂ l (x1 , x2 , µ1 , µ 2 ) ∂ 2l (x1 , x2 , µ1 , µ 2 ) 

 ∂x2 ∂x1 
 ∂x22 

( )
 4 + 2 µ1
Lx =
* 2   6 2
=
2 + 2 µ1   2 4
 2

( )
y Lx y =
T *
[ y1 6 2  y1 
y 2 ]   =
 2 4  y 2 
= 6 y12 + 4 y 22 + 4 y1 y 2
Pela análise do polinômio não fica claro que a matriz seja positiva ou negativa definida. Entretanto, como
ambos os autovalores da matriz são positivos, a mesma é definida positiva.

{ ( ) ( )
A expressão do plano tangente M ′ = y : ∇ h x y = 0, ∇g j x y = 0, para todo j ∈ J é dada por:
* *
}
∇g j x( ) = ∇g ( x , x ) =
*
1 1 2
 ∂g (x , x ) ∂g1 ( x1 , x2 ) 
=  1 1 2  = [2 x1 2 x2 ] =
 ∂x1 ∂x2 
= [2 4]

( )
∇g j x y = 0
*
⇒ [2 4]
y1 
=0 ⇒ y : 2 y1 + 4 y2 = 0 ⇒ y : y1 + 2 y2 = 0
 y2 
− y1 
M =  y : y1 + 2 y 2 = 0 ⇒ y2 =
 2 

Aplicando as condições de 2ª ordem, tem-se:


T
( )
y L x y = 6 y12 + 4
*
( )
− y1 2
2 + 4 y1 ( )= 6y
− y1
2
2
1 + y12 − 2 y12 =
= 5 y12

( )*
Portanto, L x é definida positiva no plano tangente às restrições ativas e o ponto obtido pela aplicação das
condições de 1a ordem é um mínimo local.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 15 de 29


Introdução à Otimização

Exemplo III.6: Considere o problema de otimização


max x 3 − 3 x

s.a. x ≤ 2
Cuja forma padrão é
min − x 3 + 3 x

s.a. x − 2 ≤ 0
Tem-se que
l ( x, µ ) = − x 3 + 3 x + µ ( x − 2 )
Condições de 1a ordem

( ) ( ) ( )
Sem restrições de igualdade
∇f x + λ ∇ h x + µ ∇ g x = 0 ∇f (x ) + µ ∇ g (x ) = 0
* T * T * T

µT g (x ) = 0
*

µ≥0
∇f (x ) + µ ∇ g ( x ) = 0
T
⇒ [∇ x f (x )] + [µ ][∇ x g (x )] = [0]
∇ x f ( x ) + µ∇ x g ( x ) = 0 ⇒ − 3x 2 + 3 + µ = 0
x≤2
µ T g (x ) = 0 ⇒ [µ ][g (x )] = 0 ⇒ µ (x − 2) = 0
µ ≥0

Se µ = 0 ⇒ − 3x 2 + 3 + 0 = 0 ⇒ x2 = 1 ⇒ x = ±1 (ambos viáveis, x ≤ 2 )
f (− 1) = −(− 1) + 3(− 1) = −2
3

f (1) = −(1) + 3(1) = 2


3

Se x = 2 − 3(2 ) + 3 + µ = 0 ⇒ µ = 9 (viável pois µ ≥ 0 )


2

f (2) = −(2) + 3(2) = −2
3

Assim, tem-se duas soluções: x = −1 e x = 2 . O gráfico da função objetivo − x 3 + 3 x e da restrição,


mostrado na Figura III.3, a ser considerada ilustra o significado dos valores obtidos anteriormente para a
variável x: caso a restrição não esteja ativa ( µ = 0 ), são obtidos os pontos para os quais a função objetivo é
estacionária (derivada nula); quando a restrição está ativa, obtém-se um ponto no qual a função é decrescente
mas está limitada pela restrição.
20

15

10

5
Derivada nula
f(x)

Derivada nula Restrição ativa


-5

-10

-15

-20
-3 -2 -1 0 1 2 3
x
Figura III.3 – Função objetivo e restrição do Exemplo III.6.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 16 de 29


Introdução à Otimização

Para este problema, a matriz Hessiana do Lagrangeano, L x * , é dada por: ( )


 ∂ 2 l ( x, µ ) 
( )
Lx =
*

 ∂x
2

( )
L x = [− 6 x ]
*
L(x = −1, µ = 0 ) = [− 6(− 1)] = [6]

L(x = 1, µ = 0 ) = [− 6(1)] = [− 6]

L(x = 2, µ = 9 ) = [− 6(2 )] = [− 12]


T
( )
y L x y = [ y ][L11 ][ y ] =
*

= L11 y 2

x = −1, µ = 0
T
( )
y L x y = [ y ][6][ y ] = 6 y 2
*
(Definida positiva)

x = 1, µ = 0 L(x )y = [ y ][− 6][ y ] = −6 y 2


T *
y (Definida negativa)

x = 2, µ = 9 L (x )y = [ y ][− 12][ y ] = −12 y 2


T *
y (Definida negativa)

Desta forma, o ponto x = −1 é um mínimo local e o ponto x = 1 é um máximo local. A análise do ponto
x = 2 , requer a determinação do plano tangente às restrições ativas:

{ ( ) ( )
M ′ = y : ∇ h x y = 0, ∇g j x y = 0, para todo j ∈ J é dada por:
* *
}
∇g j x ( ) = ∇g (x ) =
*

 ∂g ( x ) 
=   = [1]
 ∂x 

( )
∇g j x y = 0
*
⇒ [1][ y ] = 0 ⇒ y: y =0
{
M = y: y =0 }
Aplicando as condições de 2ª ordem, tem-se:
T
( )
y L x y = − 12 y 2
*

= − 12 × 0 2 = 0

( ) *
Portanto, L x é semi-definida positiva no plano tangente às restrições ativas e o ponto obtido pela
aplicação das condições de 1a ordem é um mínimo local.

Exercício III.1: Utilizando as condições de 1a e 2a ordem, determinar a solução dos seguintes problemas de
otimização:
max x1 x2 + x2 x3 + x1 x3
 s.a. x + x + x ≤ 3 min (x1 − 2 )2 + 2(x2 − 1)2
 

1 2 3
 s.a. x1 + 4 x2 ≤ 3
 x1 ≥ 0  x1 ≥ x2
 x2 ≥ 1,2 

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 17 de 29


Introdução à Otimização

III.5 Métodos primais

III.5.1 Gradiente projetado

Neste método a direção de descida corresponde à direção oposta ao gradiente que é projetado para o interior
da região viável por intermédio de uma matriz de projeção P . Seja o seguinte problema de otimização com
restrições lineares
min f (x )

s.a. ai x ≤ b i i ∈ I1
T

 aiT x = b i i ∈ I2 Restrições ATIVAS



De forma simplificada, um passo do algoritmo segue os seguintes passos:

1. Fazer k = 0 e obter um x 0 factível (se necessário fazer uma Fase I).

2. Determinar o conjunto das restrições ativas e formar a matriz Aq (linhas das restrições ativas) e
W (x k ) (conjunto das restrições ativas).

3. Calcular (
Pk = I − AqT Aq AqT )
−1
Aq Matriz de projeção do gradiente

d k = − Pk ∇f (x k )
T

4. Se d k ≠ 0 , calcular

α1 = max{α : x k + α d k é factível}
α 2 = arg{min f (x k + α d k ), 0 ≤ α ≤ α1}
fazer x k +1 = x k + α 2 d k , k = k + 1 e retornar para o Passo 2.

5. (
Se d k = 0 , calcular λ = − Aq AqT )
−1
Aq ∇f ( x k )
T

a) Se λ j ≥ 0 para todo j correspondente as restrições ativas de desigualdade, parar: x k satisfaz as


condições de KKT;
b) Caso contrário, retirar a linha de Aq que corresponde à desigualdade com a componente mais
negativa de λ , retire o índice de W (x k ) e volte para o Passo 3.

Exemplo III.7: Considere o problema de otimização


min x12 + x22 + x32 + x42 − 2 x1 − 3 x4

s.a. 2 x1 + x2 + x3 + 4 x4 = 7

 x1 + x2 + 2 x3 + x4 = 6
 xi ≥ 0, i = 1,2,3,4

Dado um ponto factível x k = (2,2,1,0 ) , para o qual f ( x k ) = 2 2 + 2 2 + 12 + 0 2 − 2 × 2 − 3 × 0 = 5 , deseja-se


T

determinar a direção do gradiente projetado. No formato padrão, a matriz dos coeficientes deste problema
corresponde a

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 18 de 29


Introdução à Otimização

min x12 + x22 + x32 + x42 − 2 x1 − 3x4


 2 1 1 4
s.a. 2 x1 + x2 + x3 + 4 x4 = 7 1 1 2 1
 x1 + x2 + 2 x3 + x4 = 6  
  −1 0 0 0 
 − x1 ≤ 0 A= 
 − x2 ≤ 0  0 −1 0 0 
  0 0 −1 0 
 − x3 ≤ 0  
  0 0 0 −1
 − x4 ≤ 0

As restrições ativas são as duas restrições de igualdade e a desigualdade x4 ≥ 0 . Assim W ( x 0 ) = {1, 2,6}

2 1 1 4 
Aq =  1 1 2 1 
 0 0 0 −1

2 1 0
2 1 1 4    22 9 −4 
1 1 0  
Portanto Aq AqT = 1 1 2 1  ⋅  = 9 7 −1
1 2 0 
 0 0 0 −1    −4 −1 1 
4 1 −1 

Cuja inversa é dada por


 6 −5 19 
( )
−1
=  −5 6 −14 
1
Aq AqT
11
19 −14 73 

Finalmente
AT
( Aq
AqT )
I q −1
   Aq
1 0 0 0   2 1 0      
0 1 0 0   1 1 0   6 − 5 19   2 1 1 4 
( )
−1 1
P0 = I − AqT T
Aq Aq Aq =   −   ⋅ −5 6 −14  ⋅  1 1 2 1 
 
0 0 1 0   1 2 0  11 
    19 −14 73   0 0 0 −1
0 0 0 1   4 1 −1
 1 −3 1 0
 0 
1 −3 9 −3
P0 = 
11  1 −3 1 0
 
0 0 0 0

O gradiente da função objetivo no ponto x 0 = [ 2 2 1 0] é


T

∇f (x ) = [2 x1 − 2 2 x2 2 x3 2 x4 − 3]

∇f ( x 0 ) = [ 2 4 2 −3]

Logo, a direção do gradiente projetado é dada por


f ( x0 )
T
 P0
 ∇
 1 −3 1 0   2   8 
 −3 9 −3 0   4   
d 0 = − P0∇f ( x 0 )
T 1
= −    ⋅   = 1  −24 
 11   1 −3 1 0   2  11  8 
     
 0 0 0 0   −3  0 

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 19 de 29


Introdução à Otimização

Dividindo-se d 0 por 8/11, tem-se

1
 − 3
d0 =  
1
 
0
Observar que o movimento nesta direção não viola as restrições, para um α = 0,1 , tem-se:

2  1   2,1 0 
2  −3 1,7  0 
x1 = x 0 + α d 0 =   + 0,1   =   ≥  
1   1   1,1  0 
       
0  0   0  0 
g1 ( x1 ) = 2 x1 + x2 + x3 + 4 x4 = 2 × 2,1 + 1,7 + 1,1 + 4 × 0 = 7
g 2 ( x1 ) = x1 + x2 + 2 x3 + x4 = 2,1 + 1,7 + 2 × 1,1 = 6

Observar, também, que o valor da função objetivo é menor que o do ponto anterior:
f ( x1 ) = 2,12 + 1,7 2 + 1,12 + 02 − 2 × 2,1 − 3 × 0 = 4,31

A determinação do tamanho do passo para minimizar a função nesta direção envolve uma busca
unidimensional com o seguinte limite
α1 = max {α : x 0 + α d 0 é factível}

2
sendo α1 limitado pelo limite da variável x2 : α1 = ≈ 0,67
3
O valor do passo α 2 na direção de d 0 é determinado resolvendo a seguinte busca unidimensional

α 2 = arg {min f ( x 0 + α d 0 ) , 0 ≤ α ≤ α1}

onde
2  1   2 +α 
2  −3  2 − 3α 
x0 + α d 0 =   +α   =   α1 ≈ 0,6667 ⇒ 0 ≤ α ≤ 0,6667
1   1   1+α 
     
0  0  0 
Substituindo a expressão de x 0 + α d 0 na função objetivo tem-se,

f ( x 0 + α d 0 ) = ( 2 + α ) + ( 2 − 3α ) + (1 + α ) − 2 ( 2 + α ) = 11α 2 − 8α + 5
2 2 2

cujo valor de mínimo ocorre quando


22α − 8 = 0 ⇒ α = 8 / 22 ≈ 0,3636
que é menor que α1 . Assim, α 2 = 0,3636 e

 2  1   2,3636   0 
 2  −3  0,9091  0 
x1 = x 0 + α 2 d 0 =   + 0,3636   =  ≥ 
1   1   1,3636   0 
       
0  0   0  0

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 20 de 29


Introdução à Otimização

Observar, também, que o valor da função objetivo é menor que os obtidos anteriormente:
f ( x1 ) = 2,36362 + 0,90912 + 1,36362 + 02 − 2 × 2,3636 − 3 × 0 ≈ 3,5455

O processo de otimização segue para o Passo 2 do algoritmo, no qual não são observadas variações nas
restrições ativas do problema. Assim, o conjunto das restrições ativas é mantido, juntamente com a matriz de
projeção:
 1 −3 1 0
 0 
1 −3 9 −3
W ( x1 ) = W ( x 0 ) = {1, 2,6} P1 = P0 = 
11  1 −3 1 0
 
0 0 0 0

O gradiente da função objetivo no ponto x1 = [ 2,3636 0,9091 1,3636 0] é


T

∇f ( x1 ) = [ 2,7273 1,8182 2,7273 −3]

Logo, a direção do gradiente projetado é dada por


P1 ( 1) ∇f x
T
   
 1 −3 1 0   2,7273  0 
     
 1   −3 9 −3 0   1,8182   0 
d 1 = − P1∇f ( x1 ) = −  
T
⋅ ≈
 11   1 −3 1 0   2,7273  0 
     
 0 0 0 0   −3   0 
Assim, segue-se para o Passo 5, com a determinação dos multiplicadores de Lagrange das restrições ativas
∇f ( x )
T

( A A )
−1 1
T  
q q A q
   2,7273
 6 −5 19   2 1 1 4    −0,9091
1,8182  
( )
−1 1   
λ = − Aq AqT Aq ∇f ( x1 )  = −0,9091
T
= −  −5 6 −14  ⋅  1 1 2 1  ⋅
11  2,7273 
19 −14 73   0 0 0 −1    −7,5455
 −3 
Observa-se que existe um elemento negativo correspondente a uma restrição de desigualdade relacionada
com x4 ( x4 ≥ 0 ), indicando que a mesma pode ser relaxada. Após remover esta restrição do conjunto das
ativas, tem-se W ( x1 ) = {1, 2} e

2 1
 1  22 9 
 2 1 1 4 1
Aq AqT =   ⋅ =
1 1 2 1  1 2  9 7 
 
4 1

Cuja inversa é dada por

(A A )
q
T −1
q =
1  7 − 9
 
73  − 9 22 
Finalmente
I q AT
  
( Aq AqT )  
−1
1 0 0 0   2 1   
Aq

0 1 0 0 1 1  −
   4
( )
−1 1 7 9 2 1 1
P1 = I − AqT Aq AqT Aq =  − ⋅ ⋅
 0 0 1 0   1 2  73  −9 22   1 1 2 1 
 
   
0 0 0 1   4 1 

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 21 de 29


Introdução à Otimização

 59 −9 −13 −24 
 
1 −9 62 −24 −5 
P1 = 
73  −13 −24 14 9 
 
 −24 −5 9 11 

A nova direção do gradiente projetado (considerando ativas apenas as duas restrições de igualdade) é:
P1 ( 1) ∇f x
T
    
 59 −9 −13 −24   2,7273  −2, 4807 
     
1 −9 62 −24 −5  1,8182   −0,5168 
d 1 = − P1∇f ( x1 ) =− 
T
⋅ =
73  −13 −24 14 9   2,7273  0,9303 
     
 −24 −5 9 11   −3   1,1370 

Novamente, a determinação do tamanho do passo para minimizar a função nesta direção envolve uma busca
unidimensional com o seguinte limite
α1 = max {α : x1 + α d 1 é factível}
2,3636
sendo α1 limitado pelo limite da variável x1 : α1 = ≈ 0,9528
2, 4807
O valor do passo α 2 na direção de d 1 é determinado resolvendo a seguinte busca unidimensional

α 2 = arg {min f ( x1 + α d 1 ) , 0 ≤ α ≤ α1}

onde
 2,3636   −2, 4807   2,3636 − 2, 4807α 
 0,9091    
x1 + α d 1 =   + α  −0,5168  =  0,9091 − 0,5168α 
 1,3636   0,9303   1,3636 + 0,9303α 
     
 0   1,1370   1,1370 
2,3636
α1 = ≈ 0,9528 ⇒ 0 ≤ α ≤ 0,9528
2, 4807
Substituindo a expressão de x1 + α d 1 na função objetivo tem-se,

f ( x1 + α d 1 ) = ( 2,3636 − 2, 4807α )2 + ( 0,9091 − 0,5168α )2 + (1,3636 + 0,9303α )2 + (1,1370α )2


−2 ( 2,3636 − 2, 4807α ) − 3 × 1,1370α

f ( x1 + α d 1 ) = 8,5791α 2 − 8,5791α + 3,5455

cujo valor de mínimo ocorre quando


17,1582α − 8,5791 = 0 ⇒ α = 0,5
que é menor que α1 . Assim, α 2 = 0,5 e

 2,3636   −2, 4807   1,1233   0 


 0,9091  −0,5168   0, 6507   0 
x 2 = x1 + α 2 d 1 =   + 0,5  = ≥ 
 1,3636   0,9303   1,8288   0 
       
 0   1,1370   0,5685   0 
Observar, também, que o valor da função objetivo é menor que os obtidos anteriormente:
f ( x 2 ) = 1,12332 + 0,6507 2 + 1,82882 + 0,56852 − 2 × 1,1233 − 3 × 0,5685 ≈ 1, 4007

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 22 de 29


Introdução à Otimização

O processo de otimização segue para o Passo 2 do algoritmo, no qual não são observadas variações nas
restrições ativas do problema. Assim, o conjunto das restrições ativas é mantido, juntamente com a matriz de
projeção:
 59 −9 −13 −24 
 
1 −9 62 −24 −5 
W ( x 2 ) = W ( x1 ) = {1,2} P2 = P1 = 
73  −13 −24 14 9 
 
 −24 −5 9 11 

O gradiente da função objetivo no ponto x 2 = [1,1233 0,6507 1,8288 0,5685] é


T

∇f ( x 2 ) = [ 0, 2466 1,3014 3,6575 −1,8630]

Logo, a direção do gradiente projetado é dada por


P2 ( 2) ∇f x
T
    
 59 −9 −13 − 24   0,2466  0
 −9 62 −24 −5   1,3014   0 
1
d 2 = − P2 ∇f ( x 2 ) = −  ⋅ ≈ 
T

73  −13 −24 14 9   3,6575   0 


     
 −24 −5 9 11   −1,8630   0 
Como não existem restrições de desigualdade ativa, não é necessário determinar os multiplicadores de
Lagrange, pois não existem restrições que possam ser relaxadas e a solução obtida é ótima. Apenas para
informação, os multiplicadores de Lagrange das restrições ativas (de igualdade) são
( 2)
∇f x
T
 
( q q )
−1
T


A

A Aq
    0, 2466 
 
1  7 −9   2 1 1 4   1,3014   −1,0548
( )
−1
λ = − Aq AqT Aq ∇f ( x 2 )
T
=−  ⋅
   ⋅ = 
73  −9 22   1 1 2 1   3,6575   2,3562 
 
 −1,8630 
A solução deste problema de otimização pode ser obtida utilizando a descrição GAMS, mostrada na Figura
III.4.

Figura III.4 – Descrição GAMS para o Exemplo III.7.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 23 de 29


Introdução à Otimização

Caso a restrição de desigualdade na variável x4 ( x4 ≥ 0 ) não tivesse sido incluída na matriz Aq, no início do
processo (ou seja, a partir de x 0 = [ 2 2 1 0] ), a determinação do gradiente projetado seguiria os
T

seguintes passos:
2 1 1 4
Aq =  
1 1 2 1 
2 1
 1  22 9 
 2 1 1 4 1
Portanto Aq Aq = 
T
⋅ =
1 1 2 1  1 2  9 7 
 
4 1

Cuja inversa é dada por

(A A )
q
T −1
q =
1  7 − 9
 
73  − 9 22 
Finalmente
I q AT
  
( Aq AqT )  
−1
1 0 0 0   2 1   
Aq

 0 1 0 0  1 1  −
   4
( )
−1 1 7 9 2 1 1
P0 = I − AqT Aq AqT Aq =  − ⋅ ⋅
 0 0 1 0  1 2  73  −9 22   1 1 2 1 
 
   
0 0 0 1   4 1 
 59 −9 −13 −24 
 
1  −9 62 −24 −5 
P0 =
73  −13 −24 14 9 
 
 −24 −5 9 11 

O gradiente da função objetivo no ponto x 0 = [ 2 2 1 0] é


T

∇f (x ) = [2 x1 − 2 2 x2 2 x3 2 x4 − 3]

∇f ( x 0 ) = [ 2 4 2 −3]

f ( x0 )
T
 P0
  ∇
 59 −9 −13 −24   2   128 
 −9 62 −24 −5   4   
d 0 = − P0∇f ( x 0 )
T 1
=−   ⋅   = 1  197 
73  −13 −24 14 9   2  73  −121
     
 −24 −5 9 11   −3  −83 
Multiplicando-se d k por 73, tem-se

 128 
 197 
d0 =  
 −121
 
 −83 
Observar que o movimento nesta direção violará a restrição de desigualdade negligenciada, pois x4 = 0 e o
respectivo componente na direção de descida d 0 é negativo (–83).

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 24 de 29


Introdução à Otimização

III.5.1.1 Restrições não-lineares

Seja o problema do tipo


min f (x )

s.a. h(x ) = 0

 g (x ) ≤ 0

que envolve restrições não-lineares. O procedimento de solução através do método do gradiente projetado
torna-se significativamente mais complexo e requer uma série de interpolações e soluções de equações não-
lineares. Uma dificuldade está ilustrada na Figura III.4 a seguir.

− ∇f ( x k ) y
T

y

Gradiente projetado

xk x k +1
Superfície das restrições

Figura III.4 – Restrições não-lineares.


Após movimentar-se na direção contrária ao gradiente projetado do ponto x k para o ponto y , a tentativa de
retornar para um ponto que satisfaça as restrições anteriores implicaria na violação de restrições que
anteriormente estavam com folga. Nesta circunstância seria necessário obter uma interpolação que evitasse

tal violação (na Figura seria o ponto y ). A determinação deste ponto consiste de um processo complexo de
tentativa-e-erro. O processo de determinação do conjunto das restrições ativas consiste em um problema não-
linear que precisa ser resolvido através de métodos iterativos.
O cálculo da projeção é também mais difícil. Considerando agrupadas as restrições de desigualdade ativas
com as restrições de igualdade h(x ) = 0 , a matriz de projeção no ponto x k é dada por

(
Pk = I − ∇ h(x k ) ∇ h(x k )∇ h( x k )
T T −1
) ∇ h( x k )
que deve ser integralmente recalculada em cada passo.

III.5.2 Gradiente reduzido

Neste método as variáveis do problema são divididas em dois grupos: básicas e não-básicas (como na
programação linear). Do ponto de vista teórico, o método comporta-se de modo bastante similar ao gradiente
projetado. Seja o seguinte problema de otimização com restrições lineares
min f (x )

s.a. Ax = b
 x≥0

onde x ∈ ℜ n , b ∈ ℜ m , A é uma matriz m × n e f ∈ C 2 . Observar que as restrições de desigualdade são


representadas por igualdades, nas quais foram introduzidas variáveis de folga (por exemplo uma restrição
x1 − 5 x2 ≤ 4 seria substituída por x1 − 5 x2 − 4 + s = 0 , onde s ≥ 0 é a folga correspondente a esta restrição).

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 25 de 29


Introdução à Otimização

Particionando-se a matriz A = A I [ ]
A J levando em conta as colunas relativas as variáveis básicas x e
I

não-básicas x J o problema pode ser rescrito:

min f (x I , x J )

s.a. AI x I + A J x J = b (I , J ) tal que ∃ AI ( ) -1

 xI ≥ 0 xJ ≥ 0

Deste modo

( )
x I = h( x J ) = A I
−1
( )
b − AI
−1
AJ x J

Para uma variação incremental ∆ x I , tem-se


x
I 
( )1 −1
( ) −1 −1
( )
x I + ∆ x I = A I b − A I A J (x J + ∆ x J ) = A I b − A I A J x J − A I

( ) ( ) −1
AJ ∆ x J
∂ h(x J )
( )
∆ x I = − AI
−1
AJ ∆ x J ⇒
∂xJ
( )
= − AI
−1
AJ

A idéia por detrás do método do gradiente reduzido é encontrar a partição (I , J ) e olhar o problema original
J
restrito como um problema irrestrito onde aparecem apenas as variáveis independentes x juntamente com
as restrições de canalização, isto é
min f (x J )


s.a. x I ≥ 0 (I , J ) tal que ∃ A I -1 ( )

 ( ) ( )
x I = h(x J ) = A I b − A I A J x J ≥ 0
−1 −1

(x)
π
∂ h( x J )
  
∇f (x J ) = ∇f (h(x J ), x J ) = ∇ J f ( x ) + ∇ I f ( x )
⌢ ⌢
∂xJ
( )
= ∇ J f ( x ) − ∇ I f (x ) A I −1 J
A

De forma simplificada, um passo do algoritmo segue os seguintes passos:

1. Fazer k = 0 , obter um x 0 factível (se necessário fazer uma Fase I) e determinar uma partição (I , J )
inicial.
2. Calcular o gradiente da função f : ∇f ( x k ) .

3. Calcular o gradiente reduzido, isto é, o gradiente em relação às variáveis independentes x J :

∇f (x J ) = ∇ J f ( x ) − π (x ) A J

( )
π ( x ) = ∇ I f (x ) AI
−1

ou seja, calcula-se
( )
∂f (x )

∂f x j
ρj = = − π (x )A j , ∀j ∈ J
∂x j ∂x j

− ρ j se x j > 0 ou se x j = 0 e ρ j < 0
4. Fazer, ∀j ∈ J , ∆x j = 
0 se x j = 0 e ρ j ≥ 0

5. Se ∆ x J = 0 , parar a solução atual é ótima.

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 26 de 29


Introdução à Otimização

6. Calcular as variações unitárias das variáveis básicas

∆ x I = − AI ( ) −1
AJ ∆ x J

7. Calcular ∆ x k = [∆ x I ∆xJ ]

α1 = max{α : x I + α∆ x I ≥ 0 (é factível )}
α 2 = max{α : x J + α∆ x J ≥ 0 (é factível )}
α L = min{α1 , α 2 }
α 3 = arg{min f ( x k + α∆ x k ), 0 ≤ α ≤ α L }
fazer x k +1 = x k + α 3 ∆ x k , k = k + 1 .

8. Se α 3 < α1 então voltar para o Passo 2;


Caso contrário, se α 3 = α1 então alterar a base, isto é, refazer a partição (I , J )
9. Retornar para o Passo 2.

Exemplo III.8: Considere o problema de otimização


min x12 + x22 + x32 + x42 − 2 x1 − 3 x4

s.a. 2 x1 + x2 + x3 + 4 x4 = 7

 x1 + x2 + 2 x3 + x4 = 6
 xi ≥ 0, i = 1,2,3,4

Seja um ponto factível x k = (2,2,1,0) , para o qual f ( x k ) = 5 . Pode-se selecionar qualquer par de variáveis
positivas para serem variáveis básicas.
O gradiente da função objetivo é dado por
∇f (x ) = [2 x1 − 2 2 x2 2 x3 2 x4 − 3]

Suponha que x = {x1 , x2 } seja selecionado, então tem-se:


I

∇ I f ( x ) = [2 x1 − 2 2 x2 ] ∇ I f (x k ) = [2 4]

∇ J f (x ) = [2 x3 2 x4 − 3] ∇ J f (x k ) = [2 − 3]

 1 − 1
2 1
AI =   (A )
I −1
= 
1 1 − 1 2 
1 4 
AJ =  
2 1

( ) = [2 4] ⋅ −11
π (x ) = ∇ I f (x ) A I
−1 − 1
2 
= [− 2 6]

e o gradiente reduzido é dado por
1 4
∇f (x J ) = ∇ J f (x ) − π ( x )A J = [2 − 3] − [− 2 6] ⋅   = [− 8 − 1]

2 1 
ρ 3 = −8 ρ 4 = −1

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 27 de 29


Introdução à Otimização

Como x3 > 0 ⇒ ∆x 3 = − ρ 3 = 8

x4 > 0 ⇒ ∆x 4 = − ρ 4 = 1

Ou seja, x3 e x4 devem ser aumentados na proporção de 8 para 1. Quando uma variação nesta proporção é
realizada, as variáveis básicas variam da seguinte forma:

( )
∆ x I = − AI
−1  1 − 1 1 4 8  5 
AJ ∆ x J = − ⋅ ⋅ = 
− 1 2   2 1  1 − 22
Assim, a direção de descida que respeita a manutenção das restrições é tal que
∆ x k = [5 − 22 8 1]
Os limites da busca podem, então, ser determinados
α1 = max{α : x I + α∆ x I ≥ 0 (é factível )}
  2 + α 5 ≥ 0 ⇒ ∀α  
α1 = max α : 2 + α (− 22) ≥ 0 ⇒ α ≤ 2 ≈ 0,091  ≈ 0,091

  22  
α 2 = max{α : x J + α∆ x J ≥ 0 (é factível )}

 1 + α 8 ≥ 0 ⇒ ∀α  
α 2 = max α :   → ∞
 0 + α1 ≥ 0 ⇒ ∀α  
α L = min{α1 , α 2 } = min{0,091; ∞} = 0,091
Para um passo α = 0,01 , tem-se:
x k +1 = x k + α∆ x k = [2 2 1 0] + 0,01[5 − 22 8 1] = [2,05 1,78 1,08 0,01]

para o qual f (x k +1 ) ≈ 4,41 que é inferior ao valor anterior.


Para uma variação qualquer na direção ∆ x k , tem-se
f (x k + α∆ x k ) = (2 + 5α ) + (2 − 22α ) + (1 + 8α ) + (α ) − 2(2 + 5α ) − 3(α ) =
2 2 2 2

f ( x k + α∆ x k ) = 574α 2 − 65α + 5
cujo valor de mínimo ocorre quando
65
1148α − 65 = 0 ⇒ α = ≈ 0,056
1148
f ( x k + α∆ x k ) ≈ 3,16

III.6 Penalidades e barreiras

Estes métodos incorporam as restrições na função objetivo e permitem lidar com as restrições (inclusive não-
lineares) da forma mais simples, ou seja, operando como na otimização irrestrita.
Nos métodos de penalidades o problema de otimização da forma
min f (x )

s.a. h(x ) = 0
é resolvido por qualquer método de otimização irrestrita aplicado a um problema penalizado associado, dado
por

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 28 de 29


Introdução à Otimização

m
min f (x ) + µ ∑ [h (x)]
i =1
i
2

onde µ > 0 é o parâmetro de penalidade (quanto maior, maior a penalização do não atendimento das
restrições).
A consideração das restrições de desigualdade pode ser facilmente realizada por intermédio da seguinte
função de penalidade
min f ( x )
∑ [hi (x )]2 + µ ≤ ∑ [max(0, g j (x ))]2
p
 m
s.a. h( x ) = 0 ⇒ min f (x ) + µ =

 g (x ) ≤ 0 i =1 j =1

Observar que as restrições são consideradas apenas na função objetivo e, ao longo do processo de
otimização, podem ser visitados pontos infactíveis.
Os métodos de barreira são similares aos de penalização e se aplicam a problemas da forma
min f (x )
s.a.
 g (x ) ≤ 0

A diferença fundamental é que os métodos de barreira impedem que o processo da busca abandone a região
viável do problema. A função de barreira é contínua, positiva e deve tender a infinito quando x se aproxima
de qualquer fronteira da região viável. Deste modo, o método de barreira realiza sua busca apenas no interior
da região viável sendo denominado um método de pontos interiores.
Exemplos de problemas irrestritos oriundos da inclusão de funções de barreira são os seguintes
m m
f (x ) − µ f (x ) − µ ∑ ln[− g (x )]
1
min ∑ g (x )
i =1 i
e min
i =1
i

Otimização com Restrições – Sérgio Haffner Versão 1.0: 5/10/2009 Página 29 de 29


Introdução à Otimização

IV Programação Linear

IV.1 Introdução

Um problema de programação linear (PL) é um caso particular de problema de otimização no qual a função
objetivo e as restrições são lineares, sendo o problema geral dado por:
min f ( x )
s.a. h(x ) = 0
 Restrições de igualdade
 (IV.1)
 g (x ) ≤ 0 Restrições de desigualdade
 x∈Ω

min f (x ) = c ⋅ x
T


s.a. Ax ≤ b
 x≥0

Exemplo IV.1: Considere o problema de expansão da capacidade do sistema de transmissão de energia


elétrica no qual a rede de transmissão é representada pelo modelo de transportes e as variáveis de
investimento são representadas por números reais.
As variáveis do problema correspondem ao número de linhas de transmissão nij que necessitam ser
instaladas em cada faixa de passagem i − j

x ⇒ nij

Tais variáveis originalmente deveriam ser representadas por números inteiros. Para permitir a representação
do problema através de um PL, permite-se que sejam realizados investimentos fracionários.
A função objetivo corresponde à minimização do custo de ampliação do sistema:
c ⋅x
T
⇒ v= ∑
( )
i, j
c nij ij

sendo cij o custo de uma linha no corredor i − j . Freqüentemente, são incorporados geradores fictícios r em
todas as barras de carga do sistema para representar o custo α de cortar carga
c ⋅x
T
⇒ v= ∑
( )
i, j
c nij ij +α ∑r
k
k

As restrições se dividem em 5 grupos:


• Balanço de potência ativa em cada barra do sistema, dada por
S f +g+r=d

onde S é a matriz incidência ramo-nó, f é o vetor dos fluxos de potência f ij nos ramos, g é o vetor
das injeções de potência g k dos geradores, r é o vetor das injeções de potência os geradores fictícios
e d é o vetor das demandas.
• Limite de capacidade de transmissão das linhas e transformadores

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 1 de 11


Introdução à Otimização

( )
f ij ≤ nij0 + nij f ij

onde nij0 é o número de linhas existentes na configuração inicial no corredor i − j e f ij é o fluxo


máximo permitido em cada linha.
• Limite de capacidade de geração
0≤ g ≤ g

onde g é o vetor das capacidades máximas de geração.

• Limites de corte de carga


0≤r ≤d
Observar que a quantidade máxima de carga cortada em cada barra corresponde ao valor da demanda.
• Limites de ocupação do corredor
0 ≤ nij ≤ n ij

onde n ij é o número máximo de linhas/transformadores que podem ser instalados no corredor i − j .

Exercício IV.1: Equacionar o problema de otimização da expansão da capacidade do sistema Garver


utilizando o modelo de transportes e variáveis de investimento contínuas.

Com relação ao número e tipo de solução um PL pode:


• Apresentar solução ótima múltipla – Neste caso, escolhe-se aquela que melhor satisfaz algum
aspecto do problema não considerado no equacionamento.
• Ser infactível – Ou seja, algumas restrições são mutuamente contraditórias e precisam se re-
examinadas.
• Ser ilimitado – Neste caso, é possível melhorar de forma ilimitada a solução. Geralmente, tal situação
corresponde a um erro de formulação.
• Apresentar uma solução ótima – Neste caso é possível realizar uma análise de sensibilidade em
torno desta situação para verificar o que ocorreria se houvessem variações marginais nas restrições ou
nos coeficientes da função objetivo.

IV.2 Métodos de solução

O método simplex é mais tradicional método de solução de PL´s. A idéia do método simplex é transitar de
uma solução básica factível (um ponto extremo) do conjunto de restrições para outro, de modo que o valor da
função objetivo seja continuamente melhorado até a obtenção do ótimo. Na sua forma padrão, as
desigualdades são transformadas em igualdades através da introdução de variáveis de folga e o problema
assume a seguinte forma
min c T ⋅ x

s.a. A x = b
 x≥0

Definição (solução básica; variável básica): Dado um conjunto de m equações lineares simultâneas
em n variáveis e seja B uma submatriz m × m não singular contendo algumas colunas de A, então se os

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 2 de 11


Introdução à Otimização

n − m componentes de x não associados com as colunas de B são nulos, a solução do conjunto de equações
resultantes é denominada solução básica de A x = b com relação à base B. Os componentes de x associados
com as colunas de B são denominados variáveis básicas e notados por x B , ou seja, x = ( x B , 0 ) .

Assim, a tarefa de resolver um PL consiste em realizar uma busca entre as soluções básicas factíveis. Como
o problema tem n variáveis e m restrições existem
n n!
  =
 
m m! (n − m )!
soluções básicas (correspondendo às combinações possíveis de selecionar m colunas em um total de n
possibilidades), ou seja, um número finito de possibilidades. Obviamente, realizar uma busca completa é
terrivelmente ineficiente e o método simplex só percorre uma parcela das soluções básicas factíveis.
Outro método bastante difundido na atualidade é o método dos pontos interiores. Neste caso, como o nome
diz, o algoritmo percorre pontos internos ao espaço de soluções evitando soluções extremas. Qualquer que
seja o método empregado é necessário obter uma solução inicial factível e tal processo é denominado Fase I.

IV.3 Dualidade

A cada problema (primal) corresponde um outro (dual) formado a partir dos mesmos coeficientes de custo e
das restrições de modo que um problema é de minimização e outro de maximização e os valores ótimos, se
existem, são iguais. Por outro lado, se um dos problemas tem uma função objetivo ilimitada, o outro será
infactível.
Considerando o problema primal escrito na forma padrão, têm-se os seguintes pares duais:

Primal Dual

min f (x ) = c ⋅ x max φ (λ ) = λ T ⋅ b
T

 
Ax ≥ b s.a. λ A ≤ c
T T
s.a.
 x≥0  λ ≥0
 

max f (x ) = c ⋅ x min φ (λ ) = λ T ⋅ b
T

 
Ax ≤ b s.a. λ A ≥ c
T T
s.a.
 x≥0  λ ≥0
 

Exemplo IV.2 – Problema da produção (primal) × problema do açambarcador (dual): Seja PP o


problema da produção de 5 diferentes produtos ( xi , i = 1,2, L,5 representa a quantidade produzida de cada
item), sujeita a duas restrições de capacidade de matéria prima visando o máximo lucro. O problema de
otimização correspondente é dado por

max f (x ) = 25 x1 + 35 x2 + 50 x3 + 33 x4 + 36 x5 (maximizar lucro)


s.a. 3 x + 4 x + 5 x + 3 x + 6 x ≤ 42 (limite Recurso 1)
 1 2 3 4 5
(PP) 
 2 x1 + 3 x2 + 4 x3 + 3 x4 + 3 x5 ≤ 24 (limite Recurso 2)
 xi ≥ 0, i = 1,2,L,5

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 3 de 11


Introdução à Otimização

Na linguagem do GAMS, este problema é escrito da seguinte forma:

Representação no GAMS Resultado obtido


* Problema do Produtor - arquivo: produtor.gms
$offsymxref offsymlist offupper

free variable
lucro lucro do produtor;

parameters
r1 quantidade do recurso 1 /42/
r2 quantidade do recurso 2 /24/;
LOWER LEVEL UPPER MARGINAL
positive variable ---- EQU obj . . . -1.000
x1 produto 1 ---- EQU rest1 -INF 36.000 42.000 .
x2 produto 2 ---- EQU rest2 -INF 24.000 24.000 12.500
x3 produto 3
x4 produto 4 obj max lucro
x5 produto 5; rest1 restricao do recuso 1
rest2 restricao do recuso 2
equations LOWER LEVEL UPPER MARGINAL
obj max lucro
rest1 restricao do recuso 1 ---- VAR lucro -INF 300.000 +INF .
rest2 restricao do recuso 2; ---- VAR x1 . 12.000 +INF .
---- VAR x2 . . +INF -2.500
obj.. ---- VAR x3 . . +INF EPS
---- VAR x4 . . +INF -4.500
25*x1+35*x2+50*x3+33*x4+36*x5 =e= lucro; ---- VAR x5 . . +INF -1.500

rest1..
3*x1+4*x2+5*x3+3*x4+6*x5 =l=r1;

rest2..
2*x1+3*x2+4*x3+3*x4+3*x5 =l=r2;

model produtor /all/;


solve produtor using lp maximization lucro;

Por outro lado, o açambarcador se propõe comprar a matéria prima da fábrica, interrompendo sua produção.
O problema do açambarcador é determinar os valores mínimos de compra λ j , j = 1,2 de modo que seja
“interessante” para a fábrica.
Seria vantajoso para o produtor se os preços de venda das matérias primas λ j , j = 1,2 para o açambarcador
fossem tais que

3λ1 + 2λ2 ≥ 25 (lucro do Produto 1)


4λ1 + 3λ2 ≥ 35 (lucro do Produto 2)
5λ1 + 4λ2 ≥ 50 (lucro do Produto 3)
3λ1 + 3λ2 ≥ 33 (lucro do Produto 4)
6λ1 + 3λ2 ≥ 36 (lucro do Produto 5)

O desembolso que o açambarcador gostaria de minimizar depende do montante dos insumos, ou seja,
42λ1 + 24λ2
Assim, o problema dual PD é dado por

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 4 de 11


Introdução à Otimização

min φ (λ ) = 42λ1 + 24λ2 (minimizar desembolso)


 3λ1 + 2λ2 ≥ 25 (lucro do Produto 1)

 4λ1 + 3λ2 ≥ 35 (lucro do Produto 2)

(PD)  5λ1 + 4λ2 ≥ 50 (lucro do Produto 3)


3λ1 + 3λ2 ≥ 33 (lucro do Produto 4)
 6λ1 + 3λ2 ≥ 36 (lucro do Produto 5)
 λ j ≥ 0, j = 1,2

Na linguagem do GAMS, este problema é escrito da seguinte forma:
Representação no GAMS Resultado obtido
* Problema do Açambarcador - arquivo: acambarcador.gms
$offsymxref offsymlist offupper

free variable
custo desembolso do acambarcador;

parameters
c1 lucro produto 1 /25/
c2 lucro produto 2 /35/
c3 lucro produto 3 /50/
c4 lucro produto 4 /33/
c5 lucro produto 5 /36/; LOWER LEVEL UPPER MARGINAL

positive variable ---- EQU obj . . . -1.000


l1 preco do recurso 1 ---- EQU rest1 25.000 25.000 +INF .
l2 preco do recurso 2; ---- EQU rest2 35.000 37.500 +INF .
---- EQU rest3 50.000 50.000 +INF 6.000
---- EQU rest4 33.000 37.500 +INF .
equations ---- EQU rest5 36.000 37.500 +INF .
obj min custo,
rest1 restricao de lucro produto 1 obj min custo
rest2 restricao de lucro produto 2 rest1 restricao de lucro produto 1
rest3 restricao de lucro produto 3 rest2 restricao de lucro produto 2
rest4 restricao de lucro produto 4 rest3 restricao de lucro produto 3
rest5 restricao de lucro produto 5; rest4 restricao de lucro produto 4
rest5 restricao de lucro produto 5
obj.. LOWER LEVEL UPPER MARGINAL
42*l1+24*l2 =e= custo;
---- VAR custo -INF 300.000 +INF .
rest1.. ---- VAR l1 . . +INF 12.000
3*l1+2*l2 =g= c1; ---- VAR l2 . 12.500 +INF .
rest2..
4*l1+3*l2 =g= c2;
rest3..
5*l1+4*l2 =g= c3;
rest4..
3*l1+3*l2 =g= c4;
rest5..
6*l1+3*l2 =g= c5;

model acambacador /all/;


solve acambacador using lp minimization custo;

Observar que o vetor dos limites do problema primal (PP), b = [42 24] , passa a ser o vetor dos custos do
T

problema dual (PD); o vetor dos custos do problema primal (PP), c = [25 35 50 33 36] , passa a ser o
vetor dos limites do problema dual (PD). Deste modo, existe uma correspondência entre:
Associações Primal (PP) Dual (PD)

Variáveis Restrições
Produtos (5)
(quantidade) (valor)

Restrições Variáveis
Matéria prima (2)
(quantidade) (valor)

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 5 de 11


Introdução à Otimização

Exercício IV.2: Reescrever os problemas lineares do Exemplo IV.2 (produtor e açambarcador) incluindo as
variáveis de folga necessárias, determinar o número de soluções básicas factíveis e uma solução inicial.

Algumas propriedades da dualidade são as seguintes:


• O dual do dual é o primal.

k
Seja x um valor factível para o problema primal de maximização, ou seja,

Ax ≤ b
k

x ≥0
k

e seja λ um valor factível para o problema dual de minimização, ou seja,


m

(λ ) A ≥ c
m T

λm ≥ 0
ENTÃO
( ) ( )
f x ≤φ λ
k m

Observar que

6(4
λ ) A≥c
k T
74 8 A x ≤b
k

( ) ( ) ( )
6 78
f ( x ) = c ⋅ x ≤  λ A ⋅ x = λ (A ⋅ x) ≤ λ k ⋅ b = φ (λ )
T k T k T T

 
• Quando Problema Primal (PP) é um problema de maximização, o método simplex evolui sempre no
sentido de aumentar a função objetivo f ( x ) ; para o Problema Dual (PD), o método simplex evolui
sempre no sentido de reduzir a função objetivo φ (λ ) .

Valores da função objetivo

φ (λ m )
Problema DUAL

ótimo ( ) ( )
f x =φ λ
* *

Problema PRIMAL

f (x k )

Figura IV.1 – Valores da função objetivo de um problema e do problema dual associado.

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 6 de 11


Introdução à Otimização

• Em decorrência, se x e λ
k m
são factíveis em seus respectivos problemas e

( ) ( )
f x =φ λ
k m

ENTÃO x e λ
k m
são soluções ótimas de PP e PD.

IV.4 Sensibilidade

A obtenção da solução ótima de um PL é importante, mas não é a única informação disponível. Existe uma
grande quantidade de informações de sensibilidades, ou seja, informações sobre o que acontece quando os
valores dos dados são alterados. Embora tal análise seja também possível em programação não linear, os
resultados obtidos nos PLs são válidos para variações de qualquer tamanho (em função da linearidade da
função objetivo e das restrições).
Sejam os problemas do produtor e do açambarcador, anteriormente descritos:
max 25 x1 + 35 x2 + 50 x3 + 33x4 + 36 x5 (maximizar lucro)
s.a. 3 x1 + 4 x2 + 5 x3 + 3 x4 + 6 x5 ≤ 42 (limite Recurso 1)

(PP) 
 2 x1 + 3 x2 + 4 x3 + 3 x4 + 3 x5 ≤ 24 (limite Recurso 2)
 xi ≥ 0, i = 1,2,L,5

min 42λ1 + 24λ2 (minimizar desembolso)


 3λ1 + 2λ2 ≥ 25 (lucro do Produto 1)

 4λ1 + 3λ2 ≥ 35 (lucro do Produto 2)

(PD)  5λ1 + 4λ2 ≥ 50 (lucro do Produto 3)


3λ1 + 3λ2 ≥ 33 (lucro do Produto 4)
 6λ1 + 3λ2 ≥ 36 (lucro do Produto 5)
 λ j ≥ 0, j = 1,2

Na solução do problema primal (PP), ou seja, do problema de produção, tem-se as seguintes sensibilidades
que quantificam a variação na função objetivo provocada pela variação nos limites nos recursos

Tabela IV.1 – Valores marginais do problema do produtor (PP).

Restrição/Variável Mínimo Nível Máximo Marginal


Limite Recurso 1 — 36 42 —
Limite Recurso 2 — 24 24 12,5
Variável x1 — 12 — —
Variável x2 — — — –2,5
Variável x3 — — — EPS
Variável x4 — — — –4,5
Variável x5 — — — -1,5

Assim, um aumento no Recurso 2 provocaria um aumento no lucro de 12,5 por unidade. De fato, se o limite
de tal restrição for alterado de 24 para 25, o lucro passa de 300 para 312,5, conforme mostram os resultados
tabelados a seguir.

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 7 de 11


Introdução à Otimização

Representação no GAMS Resultado obtido


* Problema do Produtor - arquivo: produtor.gms
$offsymxref offsymlist offupper

free variable
lucro lucro do produtor;
parameters
LOWER LEVEL UPPER MARGINAL
r1 quantidade do recurso 1 /42/
r2 quantidade do recurso 2 /25/; ---- EQU obj . . . -1.000
positive variable ---- EQU rest1 -INF 37.500 42.000 .
x1 produto 1 ---- EQU rest2 -INF 25.000 25.000 12.500
x2 produto 2
x3 produto 3 obj max lucro
x4 produto 4 rest1 restricao do recuso 1
rest2 restricao do recuso 2
x5 produto 5;
equations LOWER LEVEL UPPER MARGINAL
obj max lucro
rest1 restricao do recuso 1 ---- VAR lucro -INF 312.500 +INF .
rest2 restricao do recuso 2; ---- VAR x1 . 12.500 +INF .
obj.. ---- VAR x2 . . +INF -2.500
25*x1+35*x2+50*x3+33*x4+36*x5 =e= lucro; ---- VAR x3 . . +INF EPS
---- VAR x4 . . +INF -4.500
rest1.. ---- VAR x5 . . +INF -1.500
3*x1+4*x2+5*x3+3*x4+6*x5 =l=r1;
rest2..
2*x1+3*x2+4*x3+3*x4+3*x5 =l=r2;

model produtor /all/;


solve produtor using lp maximization lucro;

Outra constatação interessante pode ser obtida analisando-se os valores marginais referentes as variáveis do
problema. O valor EPS para a variável x3 significa que um acréscimo nesta variável provocaria um aumento
infinitesimal (igual a épsilon) na função objetivo. Na verdade, este aumento não ocorre e isto implica na
existência de soluções múltiplas para o problema. Outra solução extrema para este problema envolveria a
variável x3 , cujo valor ótimo seria igual a 6, permanecendo ativa a mesma restrição do limite do Recurso 2.
Assim, qualquer combinação entre esta solução e a anterior apresenta o mesmo custo e serve como solução
alternativa, ou seja, qualquer solução que satisfaça a equação 2 x1 + 4 x3 = 24 ou x1 + 2 x3 = 12 .

Representação no GAMS Resultado obtido


* Problema do Produtor - arquivo: produtor.gms
$offsymxref offsymlist offupper

free variable
lucro lucro do produtor;
parameters
r1 quantidade do recurso 1 /42/
LOWER LEVEL UPPER MARGINAL
r2 quantidade do recurso 2 /24/;
positive variable ---- EQU obj . . . -1.000
x1 produto 1 ---- EQU rest1 -INF 30.000 42.000 .
x2 produto 2 ---- EQU rest2 -INF 24.000 24.000 12.500
x3 produto 3
x4 produto 4 obj max lucro
rest1 restricao do recuso 1
x5 produto 5;
rest2 restricao do recuso 2
equations
obj max lucro LOWER LEVEL UPPER MARGINAL
rest1 restricao do recuso 1
rest2 restricao do recuso 2; ---- VAR lucro -INF 300.000 +INF .
obj.. ---- VAR x1 . . . EPS
25*x1+35*x2+50*x3+33*x4+36*x5 =e= lucro; ---- VAR x2 . . +INF -2.500
---- VAR x3 . 6.000 +INF .
rest1..
---- VAR x4 . . +INF -4.500
3*x1+4*x2+5*x3+3*x4+6*x5 =l=r1; ---- VAR x5 . . +INF -1.500
rest2..
2*x1+3*x2+4*x3+3*x4+3*x5 =l=r2;

model produtor /all/;


x1.up=0;
solve produtor using lp maximization lucro;

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 8 de 11


Introdução à Otimização

O aumento de qualquer outra variável (x2 , x4 ou x5 ) provocaria redução na função objetivo, conforme mostra
a Tabela IV.1.

A análise conjunta dos problemas primal e dual origina uma série de observações. A Tabela IV.2 apresenta
as sensibilidades relativas ao problema dual.

Tabela IV.2 – Valores marginais do problema do açambarcador (PD).

Restrição/Variável Mínimo Nível Máximo Marginal

Lucro no Produto x1 25 25 — —

Lucro no Produto x2 35 37,5 — —

Lucro no Produto x3 50 50 — 6

Lucro no Produto x4 33 37,5 — —

Lucro no Produto x5 36 37,5 — —

Valor do Recurso 1 — — — 12
Valor do Recurso 2 — 12,5 — —

Conforme mostrado anteriormente, o aumento unitário na quantidade do Recurso 2 provoca um aumento de


12,5 no lucro do produtor. Não por acaso, este é o valor unitário pago pelo açambarcador pelo Recurso 2.
Observar que um aumento no Recurso 1 não implicaria na modificação do lucro do produtor, pois este
recurso é abundante, motivo pelo qual a restrição correspondente está folgada no problema primal. Deste
modo o valor de tal recurso é nulo no atual plano de produção.

Em um problema linear qualquer, a análise de sensibilidade é realizada após a obtenção da solução ótima e
compreende a avaliação da alteração que ocorreria na solução do problema, caso fossem realizadas
modificações no problema. Para um problema dado na forma padrão
min c T ⋅ x

s.a. A x = b
 x≥0

são possíveis as seguintes alterações

Alterações possíveis
Coeficientes de custos modificação em c
Limites das restrições modificação de b
Inclusão de uma nova restrição acréscimo de uma linha em A
Inclusão de uma nova variável acréscimo de uma variável em x
Coeficientes das restrições modificação de elemento(s) de A

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 9 de 11


Introdução à Otimização

IV.4.1 Alterações no custo

Alterações no vetor custo podem provocar perda de otimalidade, mas a solução ótima do problema original
(PO) permanece viável no problema modificado (PM). Seja o seguinte par de problemas
min c T ⋅ x

(PO) s.a. A x = b
O
x é ótimo
 x≥0

min d T ⋅ x

(PM) s.a. A x = b
O
x é viável
 x≥0

Exemplo IV.3: Se o lucro do produtor no Produto 5 passa de 36 para 37, não ocorre alteração na função
objetivo. Por outro lado, se o lucro do produtor no produto 5 passa de 36 para 37,5, surge mais uma
alternativa de produção incluindo o Produto 5 com o mesmo lucro de 300 (x1 = 6; x5 = 4 ) , conforme ilustra a
Figura IV.2.

x5

Direção Direção
de otimização de otimização
alterada original

8
7

Solução
Ótima alternativa

3 x1 + 6 x5 ≤ 42

2 x1 + 3 x5 ≤ 24 x1

Solução 12 14
Ótima original

Figura IV.2 – Ilustração gráfica da solução do problema do produtor.

IV.4.2 Alterações no limite das restrições

Alterações no vetor dos limites das restrições podem provocar a infactibilidade.

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 10 de 11


Introdução à Otimização

Exercício IV.3: Determinar as implicações das seguintes alterações no problema do produtor:

a) Alteração nos limites das restrições dos Recursos 1 e 2.


b) Acréscimo de uma nova restrição: Caso 1: 3x1 + 4 x2 + 4 x3 ≤ 36

Caso 2: 3x1 + 4 x2 + 4 x3 ≤ 30
c) Acrescentar uma nova variável. Definir um custo e um peso na definição dos recursos necessários.
d) Alterar dois elementos na matriz de restrições A de modo que a solução do problema seja alterada: um
referente à variável x1 ; outro referente à outra variável qualquer.

Programação Linear – Sérgio Haffner Versão 1.1: 12/9/2007 Página 11 de 11


Introdução à Otimização

V Programação Inteira e Inteira Mista

V.1 Introdução

Um problema de Programação Inteira (PI) é um caso particular de problema de otimização no qual as


variáveis só podem assumir valores inteiros (ou discretos); um problema de Programação Inteira Mista
(PIM) é outro caso particular no qual apenas uma parte das variáveis está restrita a valores inteiros. Um
subconjunto desta classe de problemas ocorre quando as variáveis do problema estão restritas a apenas dois
valores (zero e um, por exemplo), constituindo a programação binária ou zero-um.
Da mesma forma que os problemas de otimização com variáveis reais, os problemas de otimização com
variáveis inteiras podem ser lineares ou não lineares, dependendo das expressões da sua função objetivo e
das suas restrições, entretanto, os termos Programação Inteira e Programação Inteira Mista, geralmente, estão
associados a problemas com função objetivo e restrições lineares, constituindo um subconjunto da
Programação Linear no qual uma parte (PIM) ou a totalidade (PI) das variáveis esta restrita ao conjunto dos
números inteiros, discretos ou binários1.
Diferentemente da Programação Linear, na qual poucos algoritmos se mostraram eficazes para toda a gama
de problemas, a otimização inteira se destaca por apresentar um número expressivo de abordagens,
geralmente, especializadas em função da sua aplicação. Tais abordagens se dividem em duas famílias, com
características e resultados distintos:
• Otimização clássica – Nos problemas convexos, tem-se a garantia de que a solução obtida é ótima.
Como exemplo, tem-se: enumeração total (para problemas de pequenas dimensões), branch-and-bound
(PI e PIM) e enumeração implícita zero-um (para problemas binários).
• Otimização heurística – Permitem obter bons resultados (a otimalidade não é garantida) em problemas
nos quais os métodos da otimização clássica podem falhar (geralmente em função do elevado número
de variáveis inteiras ou da complexidade das restrições e da função objetivo). Como exemplo, tem-se:
algoritmos genéticos, busca tabu e simulated anneling.
Mesmo considerando-se apenas os problemas com função objetivo e restrições lineares, a programação
inteira e a programação inteira mista, apresentam importantes diferenças teóricas em comparação com a
programação linear:
• PL – Existem condições necessárias e suficientes de otimalidade teoricamente provadas que podem ser
utilizadas para testar eficientemente se uma dada solução viável é uma solução ótima ou não. Estas
condições de otimalidade têm sido utilizadas para desenvolver métodos algébricos tais como o método
simplex e outros métodos para resolver PLs.
• PI e PIM – Não existem condições de otimalidade conhecidas para testar se uma dada solução viável é
ótima a não ser através da comparação explícita ou implícita desta solução com cada uma das soluções
viáveis do problema. Este é o motivo pelo qual os problemas inteiros de otimização são resolvidos por
intermédio de métodos de enumeração que buscam a solução ótima no conjunto das soluções viáveis.

1
Observar que os problemas discretos podem ser convertidos em problemas inteiros, substituindo-se as variáveis discretas xi por
outras inteiras yi. Neste caso, xi = ki ⋅ yi , sendo ki o valor do passo da variável discreta i. De forma similar, os problemas inteiros
podem ser convertidos em problemas binários, substituindo-se as variáveis inteiras yi por outras binárias zi. Neste caso,
mi
yi = ∑2
p =0
p
⋅ zi , sendo mi determinado em função do maior valor admitido para a variável yi no problema original (número de bits

necessário para representar este valor).

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 1 de 8
Introdução à Otimização

V.2 Algoritmo branch-and-bound

O algoritmo branch-and-bound é um algoritmo enumerativo, cuja estrutura de resolução baseia-se na


construção de uma árvore onde os nós representam os problemas candidatos e os ramos representam as
novas restrições que devem ser consideradas. Por intermédio dessa árvore, todas as soluções inteiras da
região viável do problema são enumeradas de modo implícito ou explícito o que garante que todas as
soluções ótimas serão encontradas. A estrutura geral apresenta três elementos fundamentais, que serão
detalhados a seguir: separação, relaxação e sondagem. Na etapa de separação, o problema original (P) é
separado em q subproblemas (P1), (P2), ..., (Pq) sujeitos às seguintes condições:
• (S1) Toda a solução viável de (P) é uma solução de somente um dos subproblemas (Pi), i = 1, 2, ..., q.
• (S2) Uma solução viável de qualquer um dos subproblemas (Pi), i = 1, 2, ..., q é, também, uma
solução viável de (P).
Estas condições asseguram que o conjunto das soluções viáveis de cada um dos subproblemas (Pi), i = 1, 2,
..., q é uma partição do conjunto das soluções viáveis de (P). Os subproblemas (Pi), i = 1, 2, ..., q são
denominados descendentes de (P) e podem, sucessivamente, gerar seus próprios descendentes.
O interesse na separação (branching) é utilizar a estratégia de “dividir para conquistar” para resolver o
problema (P). Deixando de lado a questão de como se separa o problema de difícil solução, pode-se
descrever, sumariamente, esta estratégia do seguinte modo. Enquanto a solução de (P) não é possível, separa-
se (P) em dois ou mais subproblemas descendentes, gerando uma lista de problemas candidatos (PC). A
seguir, seleciona-se um dos candidatos dessa lista e tenta-se resolvê-lo. Se a solução não é possível o
problema é, novamente, separado e seus descendentes são adicionados à lista dos candidatos; caso contrário
o problema é resolvido e uma nova solução é obtida. O valor da função objetivo dessa nova solução é, então,
comparado com o valor da solução incumbente, que é a melhor solução viável conhecida até o momento.
Caso a nova solução seja melhor do que a solução incumbente, ela se torna a nova incumbente. A seguir,
retorna-se à lista e seleciona-se o próximo candidato. Isto é repetido até que a lista esteja vazia, quando se
pode afirmar que a solução do problema é dada pela solução incumbente final.
A forma usual de separação de um problema de programação inteira é através de restrições contraditórias em
uma única variável inteira (variável de separação ou de ramificação). Assim, a partir do problema original,
denominado nó zero, originam-se dois novos subproblemas2, representados pelos nós 1 e 2 que são
sucessivamente divididos formando uma árvore. A cada nó se associa um subproblema candidato e cada
ramo indica o acréscimo de uma restrição relacionada com a variável empregada na separação. Portanto, à
medida que se desce na árvore a região viável dos descendentes gerados vai ficando cada vez mais restrita.
A relaxação consiste em, temporariamente, ignorar algumas restrições do problema (P) visando torná-lo
mais fácil de resolver. A condição que deve ser satisfeita é que o conjunto de soluções viáveis do problema
original (P) esteja contido no conjunto de soluções viáveis do problema relaxado (PR). Isto implica que:
• (R1) Se (PR) não tem solução viável, então o mesmo é verdadeiro para (P).
• (R2) O valor mínimo de (P) não é menor que o valor máximo de (PR).
• (R3) Se uma solução ótima de (PR) é viável em (P), então ela é uma solução ótima de (P).
Dentre as formas possíveis de relaxação, destaca-se a eliminação das restrições de integralidade das
variáveis, o que transforma o problema inteiro misto em um problema linear (PL) padrão.
Na análise dos problemas candidatos, é necessário determinar quais são promissores e, portanto, devem ser
examinados, e quais podem ser sumariamente descartados. Isto é realizado na etapa de sondagem onde o
problema candidato (PC) é eliminado (descartado para análises futuras), juntamente com todos os seus
descendentes, se satisfizer à pelo menos um dos seguintes critérios:

2
Cada um dos subproblemas descendentes é mais fácil de resolver que o subproblema candidato de origem uma vez que foi
acrescentada uma restrição na variável de separação.

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 2 de 8
Introdução à Otimização

• (CS1) O problema candidato relaxado (PCR) não tem solução viável. Devido a (R1), isto significa que
o problema candidato (PC) também não tem solução viável.
• (CS2) A solução ótima do problema candidato relaxado (PCR) é pior (bounding) do que a melhor
solução atualmente conhecida para (P) (solução incumbente). Observar que a solução ótima do
problema candidato relaxado é sempre melhor ou igual à solução do problema candidato e de seus
descendentes.
• (CS3) Uma solução ótima do problema relaxado (PCR) é viável, também, em (PC). Neste caso, devido
a (R3), ela é ótima em (PC) e, devido a (S2) ela é também factível em (P). Caso seja melhor que a
incumbente atual, a solução deste problema candidato passa a ser a nova incumbente.

Exemplo V.1: No caso do subproblema de investimento do problema de planejamento da expansão da


capacidade dos sistemas elétricos o número de variáveis inteiras é igual ao produto do número de
investimentos candidatos pelo número de estágios considerados. Em um primeiro momento, através da
relaxação, supõe-se que é possível realizar investimentos fracionários e resolve-se o PL resultante. A solução
ótima assim obtida, geralmente, apresenta diversas variáveis de investimento com valores fracionários.
Dentre estas se deve selecionar uma para separação. Depois de realizada a separação é necessário que seja
escolhido, dentre os problemas candidatos armazenados, qual será o próximo a ser examinado e, se
necessário, sucessivamente separado até que algum dos critérios de sondagem seja satisfeito. Este
procedimento se repete até que a lista de candidatos esteja vazia e a solução incumbente possa ser declarada
solução ótima do problema (P).

No algoritmo branch-and-bound a escolha do problema candidato que será avaliado também é realizada de
acordo com algum critério. Neste caso, busca-se reduzir as necessidades de armazenamento ou o número de
nós a serem avaliados, conforme será detalhado a seguir.

V.2.1 Algoritmo geral

Para um problema de minimização, o algoritmo branch-and-bound compreende os seguintes passos:


1. Inicialização: Fazer i = 0, definir a incumbente inicial e inicializar a lista dos subproblemas
candidatos com o problema original (P).
2. Teste de convergência: Se a lista dos candidatos é vazia então o processo terminou e a solução
incumbente atual é a solução ótima do problema (P); caso contrário prossiga.
3. Seleção do candidato: Dentre os subproblemas candidatos ainda não sondados, escolher qual será
o próximo a ser examinado, usando uma das estratégias discutidas a seguir, e retirá-lo da lista.
( )
Resolver o PL relativo ao problema selecionado relaxado PC Rk e armazenar a solução ótima como
limitante inferior para todos os seus descendentes, k
vinf = (
v*PC k ).
R

4. Testes de sondagem: O subproblema candidato (PCk) pode ser sondado se satisfizer uma das
seguintes condições:
(a) ( )
Se PC Rk não tem solução viável.
(b) k
Se vinf > v* , onde v* é o valor da incumbente atual.
(c) ( )
Se a solução ótima de PC Rk é inteira, isto é, viável, também, em (PCk). Ainda, se o valor ótimo
obtido é menor do que a incumbente, então v* = vinf
k
e deve-se aplicar o teste 4(b) para todos os
subproblemas candidatos ainda não sondados.
Se o subproblema candidato (PCk) foi sondado, então retornar para o Passo 2.

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 3 de 8
Introdução à Otimização

5. Separação: A partir do subproblema (PCk), selecionar uma variável para separação, dentre aquelas
que são inteiras e ainda apresentam valor contínuo usando uma das estratégias descritas a seguir. Para
a variável escolhida n j , cujo valor atual é n*j , gerar dois novos subproblemas descendentes e
adicioná-los à lista de candidatos. Os problemas são gerados acrescentando-se à (PCk) as seguintes
restrições:
( )
PC i +1 : [ ]
n j ≤ n*j
(PC ): n ≥ [n ] + 1
i+2
j
*
j

onde [n ] é o maior inteiro de n .


*
j
*
j

Fazer i = i + 2 e retornar para o Passo 3.

Exemplo V.2: Considere o seguinte problema de otimização:


min v = 5n12 + 2n13 + 2n23 + β
s.a. 350n12 + 400n13 + β ≥ 400

 350n12 + 210n23 + β ≥ 200
(P )  (V.1)
 β ≥0
 nij ≥ 0 ∀ij

 n12 , n13 e n23 inteiros

A aplicação do algoritmo branch-and-bound pode ser representada pela árvore da Figura V.1, onde cada nó é
representado por um círculo com um número que indica a sua ordem de geração (índice i do algoritmo). Ao
lado de cada nó encontra-se a solução do problema relaxado e, caso esta seja inteira ou pior do que a
incumbente refere-se a um nó que foi sondado, sendo representado por um círculo colorido. As restrições
que são acrescentadas a cada separação estão dentro dos retângulos que cortam os respectivos ramos. Assim,
para um nó qualquer da árvore, o problema associado pode ser determinado percorrendo os ramos que o
levam até o nó de origem (nó 0) e acrescentando as restrições correspondentes. Por exemplo, o problema
candidato representado pelo Nó 7 é o problema original (P) acrescido das seguintes restrições:
n12 ≤ 0
n23 ≤ 0
A árvore inicia com o Nó 0 através da resolução do problema linear (PR), que é obtido a partir da relaxação
das restrições de integralidade da expressão (V.1):
min v = 5n12 + 2n13 + 2n23 + β
s.a. 350n12 + 400n13 + β ≥ 400


(PR )  350n12 + 210n23 + β ≥ 200 (V.2)
 β ≥0

 nij ≥ 0 ∀ij

A solução do problema linear (V.2) apresenta duas variáveis com valores fracionários: n12 = 4 7 e n13 = 0,5 .
Assim, nenhum critério de sondagem é atendido e o processo continua com a separação do problema (V.2) –
para tanto é escolhida a primeira variável não inteira ( n12 ) como variável de separação. Neste caso, os dois
nós descendentes são gerados por intermédio das restrições n12 ≤ 0 (para o Nó 1) e n12 ≥ 1 (para o Nó 2).
Neste ponto do processo existem dois candidatos que podem ser escolhidos para serem examinados,
representados pelos Nós 1 e 2. Supondo que seja escolhido o último nó gerado (Nó 2), a solução do problema
relaxado equivalente – problema (V.2) com a restrição n12 ≥ 1 – apresenta, ainda, uma variável com valor
fracionário ( n13 = 0,125 ). Então, o problema do Nó 2 deve ser separado e, neste caso, só existe uma variável

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 4 de 8
Introdução à Otimização

que pode ser empregada ( n13 ). Após gerados os descendentes do Nó 2 (Nós 3 e 4) e selecionado o último
para ser examinado obtém-se a primeira solução inteira para o problema (V.1), que passa a ser a incumbente
do processo ( v* = v 4 = vinf
4
= 7 ). Como o valor da incumbente foi alterado, os limitantes inferiores dos
candidatos remanescentes (Nós 1 e 3) são avaliados mas não é possível realizar nenhuma sondagem.
Novamente, seleciona-se o último candidato da lista (Nó 3) e efetua-se a sua separação em torno da variável
n12 . Ambos descendentes do Nó 3 (Nós 5 e 6) possuem soluções inteiras que são descartadas por serem
piores que a incumbente ( v 5 = vinf
5
= 55 e v 6 = vinf
6
= 10 ). Volta-se para a lista de candidatos e seleciona-se o
único disponível (Nó 1) que é separado em torno da variável n23 gerando os Nós 7 e 8. Tomando-se o último
deles, obtém-se uma solução inteira que é melhor do que a incumbente que é atualizada para
v* = v8 = vinf
8
= 4 . A seguir avalia-se o Nó 7 que pode ser descartado (juntamente com seus descendentes)
7
pois seu limite inferior é superior à incumbente ( vinf = 201 > v* ). Os Nós 9 e 10 são representados apenas
para completar a enumeração.

Figura V.1 – Árvore branch-and-bound do Exemplo V.2.

Do modo que o processo evoluiu, foi necessário resolver 9 problemas lineares para garantir a enumeração de
todas as alternativas possíveis, sendo a solução ótima do problema (V.1) obtida após o oitavo PL:
v* = 4
*
n12 =0
*
n13 =1
*
n23 =1
Uma questão importante no desempenho dos algoritmos de enumeração está relacionada com o
conhecimento de uma boa solução incumbente inicial. Isto aumenta, significativamente, a eficiência do teste
de sondagem 4(b) e, assim, reduz o número de subproblemas candidatos que precisam ser examinados. Para
o exemplo da árvore da Figura V.1, uma incumbente inicial de valor v* = 5 , seria suficiente para sondar,
imediatamente, o Nó 2 (e todos os seus descendentes) reduzindo, assim, o número total de PLs necessários.

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 5 de 8
Introdução à Otimização

Outra questão de fundamental importância na eficiência do algoritmo branch-and-bound está relacionada


com duas decisões que são realizadas no decorrer do processo:
• Seleção do subproblema candidato – no Passo 3, deve-se escolher, dentre uma lista de
subproblemas candidatos, qual será o próximo a ser examinado.
• Seleção da variável de separação – no Passo 5, deve-se escolher, dentre um grupo de variáveis
inteiras que possuem parte fracionária, qual será empregada para realizar a separação.
O modo pelo qual são realizadas estas escolhas influencia diretamente o número de nós que precisa ser
examinado e, portanto, determina o esforço computacional que será empregado para resolver o problema. A
seguir serão detalhados alguns métodos de seleção.

V.2.2 Seleção do subproblema candidato e da variável de separação

A importância de realizar a seleção do próximo subproblema candidato a ser examinado pode ser facilmente,
demonstrada através do seguinte exemplo. Analisando-se a árvore da Figura V.1, observa-se que a mesma
solução pode ser obtida, com um esforço computacional bem menor, quando é escolhido, por exemplo, o
caminho mostrado na Figura V.2.

Figura V.2 – Árvore branch-and-bound alternativa para o Exemplo V.2.

Para a árvore alternativa da Figura V.2, após a separação do Nó 0, inicia-se examinando o Nó 1 que é
separado nos seus descendentes 3 e 4. A seguir é escolhido o Nó 4 para exame e encontra-se a primeira
incumbente v* = v 4 = vinf
4
= 4 . Realizando o exame das candidatas da lista, verifica-se que é possível sondar
2
todos os nós remanescentes (Nós 2 e 3), pois seus limites inferiores são elevados ( vinf = 5,25 e vinf
3
= 201 ).
Deste modo, com apenas 5 PLs o problema (V.1) é resolvido sendo a solução ótima obtida após o terceiro PL
– anteriormente, foram necessários 9 PLs e a solução só foi obtida após o oitavo (vide Figura V.1).
Quando o número de variáveis e restrições é maior, o modo pelo qual são escolhidos os problemas
candidatos e as variáveis de separação pode afetar drasticamente o desempenho do algoritmo branch-and-
bound. Assim, o esforço gasto na especialização destas seleções é, via de regra, muito bem recompensado.

Exercício V.1: Equacionar o problema de otimização da expansão da capacidade do sistema Garver


utilizando o modelo de transportes e variáveis de investimento inteiras. Resolver o modelo equacionado e
comparar o resultado com a solução obtida com variáveis contínuas. Observar a possibilidade de existência
de soluções inteiras múltiplas.

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 6 de 8
Introdução à Otimização

Exercício V.2: Para o problema de expansão da capacidade do sistema de transmissão da rede de 5 barras
cujos dados encontram-se nas Tabelas V.1 e V.2, fazer o solicitado:

Tabela V.1 – Rede de 5 nós – dados dos ramos.


Extremos 0 f c
nij ij ij Tabela V.2 – Rede de 5 nós – dados dos nós.
de (i) para (j) [pu] [pu] Nó (i) g i [pu] d i [pu]
1 2 0 1,00 40
1 5,95 0,80
1 3 0 1,00 38
2 –– 2,40
1 4 1 0,80 60
3 1,65 0,40
1 5 1 1,00 20
4 –– 1,60
2 3 1 1,00 20
5 –– 2,40
2 4 0 1,00 40
2 5 0 1,00 31
3 4 0 0,82 59
3 5 1 1,00 20
4 5 0 0,75 63

d5 d1 g1

5 1

g3

d3
2

d2

d4

a) Equacionar o problema de otimização utilizando o modelo de transportes e variáveis de investimento


inteiras. Utilizar a seguinte forma padrão:
min ∑ cij nij
( i , j )∈Ω
s.a.
S⋅ f +g =d
( )
f ij ≤ nij + nij0 ⋅ f ij
0≤g≤g
0 ≤ nij ≤ n ij
nij inteiro, f ij ilimitado

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 7 de 8
Introdução à Otimização

onde cij é o custo da adição de um circuito ao caminho ij , nij é o número de circuitos adicionados, nij0
é o número de circuitos existentes na configuração básica, f ij é o fluxo de potência com limite f ij , v é
o custo total da adição dos circuitos, S é a matriz incidência nó-ramo, f é o vetor dos fluxos de
potência com componentes f ij , g é o número de gerações com limite com limite g , n ij é o número
máximo de circuitos que podem ser adicionados ao caminho ij e Ω é o conjunto de todos os caminhos
da rede.
b) Modelar e resolver o problema linear inteiro misto (PLIM) utilizando o GAMS.
c) Resolver o problema por intermédio de um processo manual baseado no algoritmo branch-and-bound,
determinando todas as soluções. Construir a árvore de busca, indicando as restrições nos ramos e as
soluções dos subproblemas candidatos relaxados (PLs) nos nós.
d) Comparar os resultados obtidos no processo manual com o GAMS.
Solução parcial:
a) Equacionamento do problema.
1. Função Objetivo
c12 n12 + c13n13 + c14 n14 + c15 n15 + c23n23 + c24 n24 + c25 n25 + c34 n34 + c35 n35 + c45 n45
2. Restrições
2.1. Equações dos nós
Nó 1: − f12 − f13 − f14 − f15 + g1 = d1 Nó 2: + f12 − f 23 − f 24 − f 25 = d 2

Nó 3: + f13 + f 23 − f 34 − f 35 + g 3 = d 3 Nó 4: f14 + f 24 + f 34 − f 45 = d 4

Nó 5: f15 + f 25 + f 35 + f 45 = d 5
2.2. Capacidade dos circuitos

f12 ≤ n12 f 12 f 24 ≤ n24 f 24


f13 ≤ n13 f 13 f 25 ≤ n25 f 25
f14 ≤ (n14 + 1) f 14 f 34 ≤ n34 f 34
f15 ≤ (n15 + 1) f 15 f 35 ≤ (n35 + 1) f 35
f 23 ≤ (n23 + 1) f 23 f 45 ≤ n45 f 45
3. Limites das variáveis
3.1. Variáveis de investimento
0 ≤ n12 ≤ 6 0 ≤ n24 ≤ 6
0 ≤ n13 ≤ 6 0 ≤ n25 ≤ 6
0 ≤ n14 ≤ 6 0 ≤ n34 ≤ 6
0 ≤ n15 ≤ 6 0 ≤ n35 ≤ 6
0 ≤ n23 ≤ 6 0 ≤ n45 ≤ 6
3.2. Variáveis de geração
0 ≤ g1 ≤ 5,95
0 ≤ g 3 ≤ 1,65

Programação Inteira e Inteira Mista – Sérgio Haffner Versão 1.0: 12/9/2007 Página 8 de 8

You might also like