Documente Academic
Documente Profesional
Documente Cultură
Não Linear
Programação Não-Linear 1
Os modelos empregados em Programação Linear são, como o próprio nome diz,
lineares (tanto a função-objetivo quanto as restrições). Este fato é, sem dúvida, “a maior
das restrições” impostas sobre um modelo de Programação.
Em grande parte das aplicações, modelos lineares refletem apenas aproximações dos
modelos reais. Fenômenos físicos ou econômicos são geralmente melhor representados
por modelos não-lineares.
A maioria das não-linearidades englobadas em um modelo de programação está dentro
de 2 principais categorias:
1)Relações observadas empiricamente, tais como variações não-proporcionais em
custos, resultados de processos e características de qualidade.
2)Relações deduzidas estruturalmente, que englobam fenômenos físicos, deduzidos
matematicamente e regras administrativas.
Em geral, os modelos empregados em Programação Não-Linear são do tipo:
Max (ou Min ) f (X )
sujeito a
⎧g i (X ) ≤ b i para i = 1,2,..., m
⎨
⎩X ≥ 0
com
X = (x1 , x 2 ,..., x n )
f (.) e g i (.) funções não − lineares
Programação Não-Linear 2
Os métodos para resolução de problemas de Programação Não-Linear podem ser
divididos em 2 grupos: 1) Modelos sem restrições e 2) Modelos com restrições
O principal conceito envolvido em Programação Não-Linear é o de taxa de variação
⇒ derivadas e gradientes.
O grande problema que dificulta a obtenção da solução ótima nos problemas de
Programação Não-Linear são os mínimos e máximos (extremos) locais da função-
objetivo.
f(x)
a b c
Programação Não-Linear 3
Métodos de Otimização Sem Restrições
Método de Minimização de funções muito simples
Consiste nos seguintes passos:
f(x)
1)“chutar” 3 pontos (a,b,c).
2)Escolher um ponto x entre a e b ou entre b e c.
f(b) f(c)f(a)
supondo que escolhemos entre b e c:
3)Se f(b) < f(x) ⇒ 3 novos pontos são (a,b,x).
4)Senão ⇒ 3 novos pontos são (b,x,c). a b c
x
5)Repetir processo até precisão desejada.
Problema deste Método:
Extremamente dependente da inicialização (problema comum aos Métodos
determinísticos).
Função precisa ser avaliada em muitos pontos ⇒ alto custo computacional.
Informação da derivada da função permite alcançar o extremo com menor número de
avaliações da função ⇒ melhor eficiência computacional.
Programação Não-Linear 4
Método do Gradiente (ou Método de Cauchy ou Método do Passo Mais
Descendente (Steepest Descent Method)).
Derivada fornece a informação da taxa de variação da função (1-D).
Para o caso n-D, o vetor gradiente fornece a direção da maior taxa de variação da
função.Vetor Gradiente ⎡ ∂f ∂f ∂f ∂f ⎤
∇f = ⎢ , , ,..., ⎥
Método consiste em: ∂
⎣ 1x ∂x 2 ∂x 3 ∂x n ⎦
minimização
X(i + 1) = X(i ) − t.∇f (X(i ))
t é o “tamanho do passo”
i é o número da iteração
X = (x1 , x 2 ,..., x n )
Programação Não-Linear 5
Exemplo
De uma longa folha de metal de 30 cm de largura deve-se fazer uma calha dobrando as
bordas perpendicularmente à folha. Quantos centímetros devem ser dobrados de cada
lado de modo que a calha tenha capacidade máxima ?
30 cm x 30 - 2x x
x
x
Quanto deve medir x para que a
calha tenha capacidade máxima ?
30 - 2x
Programação Não-Linear 6
A capacidade de escoamento de água da calha é, formalmente, a vazão!
Q(A, v ) = A.v Q(A,v) é a vazão (cm3/s);
A é a área da seção (cm2); e
v é a velocidade do fluído (cm/s).
Supondo v constante, a vazão torna-se diretamente proporcional à área da seção!
Portanto, maximizando A implica em maximizar Q(A,v).
Área da 30- 2x
x
seção
x
30 - 2x 120
ár e a m áx im a
100
80
f ( x ) = x.(30 − 2 x ) = 30 x − 2x 2
60
40
20
0
0 2 .5 5 7 .5 10 1 2 .5 15
Programação Não-Linear 7
Área da
7.5cm
seção
7.5cm
Por inspeção do gráfico anterior verifica-se que a
função alcança o máximo (ótimo) em x = 7.5
30 - 2x
Solução do problema da calha pelo Método do Gradiente
f ( x ) = x.(30 − 2 x ) = 30 x − 2 x 2 ∇f (x ) = f ′( x ) = 30 − 4 x x (i + 1) = x (i ) + t (30 − 4x (i ))
resíduo = |x(i+1)-x(i)| ⇒ Processo iterativo cessa quando resíduo é menor que
“precisão desejada” ⇒ critério de parada. Para t=0.1.
1o iteração 2o iteração
x(0) = -3 x(1) = 1.2
x(1) = -3 + 0.1(30 - 4(-3)) = 1.2 x(2) = 1.2 + 0.1(30 - 4(1.2)) = 3.72
resíduo=4.2 resíduo=2.52
100 100
50 Função
50
Objetivo
Função
Objetivo
área
área
0
Caminho
de Busca
-50
-50
Caminho
de Busca
-100
-100
solução
inicial
-150
-3 -1.5 0 1.5 3 4.5 6 7.5 9
-150
solução -3 -1.5 0 1.5 3 4.5 6 7.5 9 10.5 12 13.5 15
solução
Solução
t= =
100
1o iteração ⎨
960x − 3600 − 64x 2 ⎩∉ t para x = 7.5
Função
Objetivo
50
área
x(0) = -3 0
Caminho
de Busca
-50
-150
-3 -1.5 0 1.5 3 4.5 6 7.5 9 10.5 12 13.5 15
solução
Programação Não-Linear 10
Outro exemplo (caso 2-D) ⎡ ∂f ⎤
⎢ ∂x ⎥ ⎡ 2x1 ⎤
Min f (X ) = x12 + 3x 22 ∇f (X) = ⎢ 1 ⎥ ∇f (X) = ⎢ ⎥
⎢ ∂f ⎥ ⎣ 2⎦
6 x
⎢⎣ ∂x2 ⎥⎦
8 350
7
300
6
250
5
4
200
x2
3
150
2
100
1
0
50
-1
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1
x1
Programação Não-Linear 11
A próxima figura mostra o "caminho de busca" no plano x1x2 dada a solução inicial em
(-10,10).
8 350
6
300
250
2
x2
0 200
-2
150
-4
100
-6
-8 50
-10
-10 -8 -6 -4 -2 0 2 4 6 8 10
x1
Programação Não-Linear 12
O tamanho do passo ótimo t é calculado como:
⎡ x1 (i + 1)⎤ ⎡ x1 (i )⎤ ⎡ 2 x1 (i )⎤ x1 x2 tamanho iteração
⎢ x (i + 1)⎥ = ⎢ x (i )⎥ − t.⎢6 x (i )⎥ passo
⎣ 2 ⎦ ⎣ 2 ⎦ ⎣ 2 ⎦ -10.0000 10.0000 - 0
2x + 54 x22
2
1
-0.0013 0.0013 0.4167 8
Programação Não-Linear 13
Uma outra maneira de encontrar extremos de uma função não-linear é simplesmente
igualar as derivadas parciais a zero e resolver o sistema de equações não-lineares.
Exemplo
Min f (x1 , x 2 ) =
80
+ 20 x 2 + 10 x1x 2 + 10 x1
x1x 2
O sistema não-linear fica:
⎧ ∂f 80
⎪ ∂x = − 2
+ 10 x 2 + 10 = 0
⎪ 1 x1 x 2
⎨
⎪ ∂f = − 80 + 10 x + 20 = 0
⎪⎩ ∂x 2 x1x 22
1
f xx < 0 e f xx f yy > f xy
2
⇒ Máximo local
Programação Não-Linear 15
Método dos Multiplicadores de Lagrange
Função Lagrangiana
h (X, λ ) = f (X ) − ∑ λ i [g i (X ) − b i ]
m
i =1
onde: λ = (λ1, λ2,..., λm) são os multiplicadores de Lagrange.
Nota-se que para valores viáveis de X: g i (X ) − b i = 0, ∀i
assim: h (X, λ ) = f (X )
Portanto, se (X, λ) = (X*, λ*) é um extremo local ou global para a função sem
restrição h(X, λ), então X* é um extremo para o problema original.
Assim, h(X, λ) é analisado normalmente como um modelo sem restrições. Com isso,
n + m derivadas devem ser igualadas a zero.
⎧ ∂h ∂f m ∂g i Este sistema deverá fornecer os extremos
⎪ ∂x = − ∑ λ i = 0 , j = 1, 2,..., n
⎪ j ∂x j i =1 ∂x j locais (ou globais). No entanto, para
⎨ problemas reais, tais sistemas tornam-se
⎪ ∂
= −g i (X ) + b i = 0 , i = 1,2,..., m
h
⎪⎩ ∂λ i praticamente impossíveis de soluciona-los.
Programação Não-Linear 16
Exemplo
(1) Se x1 = 0
f (x1 , x 2 ) = x12 + 2 x 2 x 1 − λ1 x 1 = 0 (3)
g(x1 , x 2 ) = x12 + x 22 = 1 ⎧x1 = 0 − x12 − x 22 + 1 = 0
⎪
x1 (1 − λ1 ) = 0 ⇒ ⎨ou
( )
h (x1 , x 2 , λ1 ) = x12 + 2 x 2 − λ1 x12 + x 22 − 1 ⎪λ = 1 x 22 = 1 ⇒ x 2 = ±1
então
⎩ 1 ∴ (x1 , x 2 ) = (0,1)
(2) e
⎧ ∂h
⎪(1)
λ1 = 1
= 2 x1 − 2λx1 = 0 (x1 , x 2 ) = (0,−1)
⎪ ∂x1 2 − 2 x 2 = 0 (÷ 2 )
⎪⎪ ∂h 1− x2 = 0 ⇒ x2 = 1
⎨ (2 ) = 2 − 2λ x 2 = 0
⎪ ∂x 2 (3)
⎪ ∂h
⎪(3)
⎪⎩ ∂λ1
( )
= − x12 + x 22 − 1 = 0
− x12 − 1 + 1 = 0
x1 = 0
Estes pontos são máximo e mínimo locais. Neste caso, estes pontos são máximo e
mínimo globais. Como estamos querendo maximizar, a solução ótima é (x1,x2)=(0,1).
f(0,1)=02+2.1=2.
Programação Não-Linear 17
No exemplo anterior, os extremos locais são também globais. Porém, este fato foi
observado apenas por inspeção dos resultados. Uma maneira mais elegante de verificar
isto consiste em analisar a questão de convexidade de uma função, uma vez que esta
propriedade pode garantir a existência de mínimos ou máximos globais.
Funções Convexas e Côncavas Unidimensionais
Uma função de uma única variável f(x) é uma função convexa se, para cada par de
valores de x, por exemplo, x´ e x´´ com x´<x´´ tem-se:
f [λ x´´+ (1 − λ )x´] ≤ λ f (x´´) + (1 − λ )f (x´) ∀λ 0 < λ <1
Se ≤ pode ser recolocado por <, f é uma função estritamente convexa.
Se ≤ pode ser recolocado por por ≥ , f é uma função côncova.
Se ≤ pode ser recolocado por por >, f é uma função estritamente côncova.
A interpretação geométrica destas propriedades é a seguinte: se para cada par de pontos
sobre o gráfico de f(x), um segmento de reta conectando estes 2 pontos estiver
inteiramente acima ou sobre o gráfico de f(x), f(x) é dita convexa.
Programação Não-Linear 18
Convexa Concâva Convexa e Côncava
Programação Não-Linear 19
O raciocínio é análogo para funções côncavas.
De maneira mais formal, o teste de convexidade (ou concavidade) pode ser realizado
através da derivada segunda.f(x) é:
d 2 f (x )
-Convexa se e somente se 2
≥ 0 ∀x
d2f (x)
dx
-Estritamente convexa se e somente se 2
> 0 ∀x
d2f(x) dx
-Côncava se e somente se ≤0 ∀x
dx2
d 2 f (x )
-Estritamente côncava se e somente se > 0 ∀x
dx 2
Esta propriedade pode ser generalizada para o caso de 2 variáveis. A seguinte tabela
resume as condições.
Programação Não-Linear 20
As propriedades acima originam da análise da matriz Hessiana. De modo formal, uma
função com n variáveis é dita convexa se a sua respectiva matriz Hessiana é Semi-
Definida Positiva. Com isso, o conceito de convexidade pode ser generalizado para n
dimensões.
Apenas como recordação, a matriz Hessiana de uma função f de n variáveis é:
∂ 2 f (x1 , x 2 ,..., x n )
H[i][ j] = i, j = 1,2,..., n
∂x i ∂x j
Programação Não-Linear 21
Condições para Otimização com Restrições de Karush-Kuhn-Tucker (KKT)
Se f(X), g1(X), g2(X),..., gm(X) são diferenciáveis, então:
X* = (x1*, x2*, ..., xn*) pode ser uma solução ótima para um problema de Programação
Não-Linear somente se existe m números λ1, λ2, ..., λm tais que todas as condições KKT
são satisfeitas: ∂f m ∂g i ⎫
1. − ∑ λi ≤0 ⎪
∂x j i =1 ∂x j
⎪
⎬em X = X e j = 1,2,..., n
*
⎛
* ⎜ ∂f ∂g i ⎞⎟
= 0⎪
m
2. x j − ∑ λi
⎜ ∂x j i =1 ∂x j ⎟ ⎪
⎝ ⎠ ⎭
( )
3. g i X * − b i ≤ 0 ⎫⎪
i = 1,2,..., n
λ [g (X ) − b ] = 0⎪⎭
*
⎬para
4. i i i
5. X *j ≥ 0 j = 1,2,..., n
6. λ i ≥ 0 i = 1,2,..., n
Nas condições 2 e 4 existem o produto de 2 quantidades, portanto, no mínimo umas
dessas 2 quantidades deve ser zero para satisfazer a igualdade.
Programação Não-Linear 22
Assim, as condições 3 e 4 podem ser combinadas para uma forma equivalente:
( )
⎧⎪g i X * − b i = 0 se λ i ≠ 0
( )
3,4. ⎨
⎪⎩g i X * − b i ≤ 0 se λ i = 0
Da mesma maneira, pode-se combinar as condições 1e 2:
⎧ ∂f m ∂g i
⎪ ∂x − ∑ λi = 0 se x *j ≠ 0
⎪ j i =1 ∂x j
1,2.⎨
⎪ ∂f − ∑ λ
m ∂g i
≤ 0 se x *j = 0
⎪ ∂x j i =1 i ∂x j
⎩
Os multiplicadores de Lagrange λi correspondem para “variáveis duais”.
As condições KKT não garantem solução ótima ainda, faz-se necessário verificar as
condições de convexidade-concavidade.
Se f(X) é côncava e g1(X), g2(X), ...., gm(X) são convexas (Programação Não-Linear
Convexa) e condições KKT satisfeitas, X* = (x1*, x2*, ..., xn*) é ótima.
Programação Não-Linear 23
Exemplo KKT condição3
Max f (X ) = ln(x1 + 1) + x 2 condição1
( )
g1 X * − b1 ≤ 0
∂f ∂g 2x1 + x 2 − 3 ≤ 0
⎧2 x 1 + x 2 ≤ 3 − λ1 1 ≤ 0
⎪ ∂x j ∂x j
sujeito a ⎨x1 ≥ 0 condição4
⎪x ≥ 0
⎩ 2
j =1
1
[ ( ) ]
λ1 g1 X * − b1 = 0
m =1 − 2λ 1 ≤ 0 λ1 [2 x1 + x 2 − 3] = 0
x1 + 1
g1 (X ) = 2x1 + x 2 ⇒ convexa, pois : j=2 condição5
∂ 2g1 (X ) ∂ 2g1 (X ) ∂ 2g1 (X ) 1 − λ1 ≤ 0 x *j ≥ 0
=0 =0 =0
∂x1 2
∂x 22
∂x1∂x 2 condição2 x1 ≥ 0, x 2 ≥ 0
∂ 2g1 (X ) ∂ 2g1 (X ) ⎡ ∂ 2g1 (X )⎤ ⎛ ⎛ ∂f ⎞
x *j ⎜ ⎜
⎞
⎟ − λ1 ∂g1 ⎟ = 0
condição6
∴ . −⎢ ⎥ =0 ⎜ ∂x j ⎟
⎜ ∂x j ⎟
∂x1 2
∂x 22
⎣ ∂x1∂x 2 ⎦ ⎝⎝ ⎠ ⎠ λ*i ≥ 0
f (X ) = ln (x1 + 1) + x 2 ⇒ côn cov a , pois : j =1 λ1 ≥ 0
⎛ 1 ⎞
∂ 2f (X ) 1 ∂ 2f (X ) ∂ 2f (X ) x1 ⎜⎜ − 2λ1 ⎟⎟ = 0
=− <0 =0 =0 ⎝ x1 + 1 ⎠
∂x1 2
(x1 + 1)2
∂x 22
∂x1∂x 2
j=2
∂ 2f (X ) ∂ 2f (X ) ⎡ ∂ 2f (X )⎤ x 2 (1 − λ1 ) = 0
∴ . −⎢ ⎥=0
∂x12 ∂x 22 ∂
⎣ 1 2⎦
x ∂ x
∴ qualquer solução que atenda KKT é ótima
Programação Não-Linear 24
Re solução
1) λ1 ≥ 1 ⇒ condição 1 ( j = 2 ) Outros tipos de problemas de
x 1 ≥ 0 ⇒ condição 5 Programação Não-Linear:
1
2) ∴ − 2λ1 < 0 -Programação Separável
x1 + 1
3) ∴ x 1 = 0 ⇒ condição 2 ( j = 1) -Programação Quadrática
4 ) λ1 ≠ 0 ⇒ 2 x 1 + x 2 − 3 = 0 ⇒ condição 4 -Programação Geométrica
5) 2 x 1 + x 2 − 3 = 0 -Programação Fracional
x2 = 3
-Programação Não-Convexa
6) x 2 ≠ 0 ⇒ λ1 = 1 ⇒ condição 2 ( j = 2 )
7 ) nenhuma condição violada por :
x 1 = 0, x 2 = 3, λ1 = 1
∴ ∃λ1 = 1 x 1 = 0, x 2 = 3, λ1 = 1 satisfazen do condições KKT
∴ X * = (0,3) é ótima
Programação Não-Linear 25