Sie sind auf Seite 1von 25

Programação

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 ⎦

Procurar o máximo (ou mínimo) na direção de maior taxa de crescimento


(decrescimento) da Função Objetivo a partir de uma solução (ponto) inicial X(0).

X(i + 1) = X(i ) + t.∇f (X(i ))


maximização

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

3o iteração 19o iteração


x(2) = 3.72 x(18) = 7.4982
x(3) = 3.72 + 0.1(30 - 4(3.72)) = x(19) = 7.4982+0.1(30 – 4(7.4982)) =
5.232 7.4989
resíduo=1.512 resíduo=0.0007
Programação Não-Linear 8
O gráfico da esquerda mostra o “caminho de busca (trajetória)” da solução ótima
realizada pelo algoritmo para t = 0.1 e o da direita para t = 0.4.
Função Objetivo e Processo de Busca do Máximo Função Objetivo e Processo de Busca do Máximo
150 150
solução Solução
ótima ótima

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

trajetória é função do tamanho do passo ⇒ Deve existir um tamanho de passo ótimo ?!


A solução ótima será alcançada mais rapidamente quanto menos a Função Objetivo for
avaliada! Para isso, vamos fazer, sem perda de generalidade, algumas alterações no
Método do Gradiente substituindo x(i+1) por Z(t), ou seja, uma expressão que é função
do tamanho do passo t e x(i) por simplesmente x. O Método então fica:
Z( t ) = x + t .∇f ( x) = x + t .f ′( x)
Programação Não-Linear 9
Substituindo Z(t) em f(x), temos:
g (t ) = f (Z( t ) )
Igualando a derivada de g(t) (em relação a t) a zero (g'(t)=0) e então
resolvendo para t, encontra-se uma função que descreve os valores ótimos de
t para cada solução x.
No exemplo, Z(t) fica:
Z( t ) = x + t (30 − 4 x)

Substituindo Z(t) em f, fica:


g ( t ) = 30 x + 900 t − 240 xt − 2x2 + 16 x2 t + 480 xt 2 − 1800 t 2 − 32x2 t 2
g ′( t ) = 900 − 240 x + 16 x2 + 960 xt − 3600 t − 64 x2 t
Função Objetivo e Processo de Busca do Máximo

Resolvendo para t: 150

Solução

− 16x 2 + 240x − 900 ⎧0.25∀x ∈ ℜ ≠ 7.5


ótima

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

x(1) = -3 + 0.25(30 - 4(-3)) = 7.5 -100

-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 ⎥⎦

função objetivo representada por curvas de nível + vetores gradientes

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).

função objetivo representada por curvas de nível + vetores gradientes


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

-6.4286 -0.7143 0.1786 1


Fazendo
⎡ x (i + 1)⎤ g (t ) = f (z(t ))
-1.0714 1.0714 0.4167 2
z(t ) = ⎢ 1
e

⎣ x 2 (i + 1)⎦ -0.6888 -0.0765 0.1786 3

g (t ) = f (z(t )) = (1 − 2t ) x12 + 3(1 − 6t ) x22 -0.1148 0.1148 0.4167 4


2 2

g ′(t ) = 2(1 − 2t )x12 (− 2 ) + 6(1 − 6t )x 22 (− 6) = 0


-0.0738 -0.0082 0.1786 5

-0.0123 0.0123 0.4167 6


Resolvendo para t
-0.0079 -0.0009 0.1786 7
x + 9x
2 2
t= 1 2

2x + 54 x22
2
1
-0.0013 0.0013 0.4167 8

-0.0008 -0.0001 0.1786 9


resíduo = (x1 (i + 1) − x1 (i)) + (x 2 (i + 1) − x 2 (i))
2 2

-0.0001 0.0001 0.4167 10

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

Resolvendo este sistema, na região x1 , x 2 ≥ 0 , tem-se: x1 = 2 e x2 = 1.


Para confirmar que temos um ponto de mínimo, podemos substituí-lo, nas derivadas
parciais de 2o ordem:
∂ 2f 160
= = 20 que por sua vez, são positivos,
∂x12 x13 x 2 x = 2, x =1
1 2 confirmando portanto, que o ponto é de
∂ 2f 160 mínimo.
= = 80
∂x 22 x1x 32 x = 2, x =1
1 2 Programação Não-Linear 14
Resumo
f ′(X ) = 0 e f ′′(X ) > 0 ⇒ Mínimo local
f ′(X ) = 0 e f ′′(X ) < 0 ⇒ Máximo local Um grande problema desta abordagem está
em resolver sistemas de equações não-
segundo Strang lineares, os quais geralmente, são resolvidos
f xx > 0 e f xx f yy > f xy
2
⇒ Mínimo local através de métodos numéricos.

f xx < 0 e f xx f yy > f xy
2
⇒ Máximo local

Otimização com Restrições e Função-Objetivo Não-Linear


Min ou Max f (X ) X satisfaça as equações
⎧g1 (X ) = b1
⎪g (X ) = b
⎪ 2 2

⎪.
⎪⎩g m (X ) = b m
f (X ) e g i (X ) não − lineares
X = (x1 , x 2 ,..., x n )
Exemplo
m =1 e n = 2
Max f (x1 , x 2 ) = x12 + 2 x 2
sujeito a {g1 (x1 , x 2 ) = x12 + x 22 = 1 ⇒ circunferência (r = 1)

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

Estritamente Convexa Estritamente Concâva Não Convexa e Não 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

Uma matriz é Semi-Definida Positiva se qualquer uma das seguintes propriedades é


satisfeita.
1) x t Hx ≥ 0 ∀ vetor x
2) todo autovalor λ de H é ≥ 0 Hx = λx com x autovetores
3) todas submatrizes principais possuem det er min antes ≥ 0
4) todo pivô é ≥ 0

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

Das könnte Ihnen auch gefallen