Você está na página 1de 32

CAPÍTULO 3 - OPTIMIZAÇÃO POR SIMULAÇÃO DIGITAL

3.1. Introdução
O domínio de aplicação da simulação digital à optimização define-se pela complexidade das funções
objectivas, cujo tratamento, pelos métodos analíticos, é impossível ou muito trabalhoso.
Frequentemente, usa-se, também a simulação digital em certas etapas da optimização por métodos
analiticos, como por exemplo, na programação dinâmica.

Como regra, a simulação digital aplica-se aos métodos de programação não linear que se baseiam em
métodos numéricos de optimização. Actualmente são conhecidos numerosos métodos de
programação não linear; no entanto, é difícil dizer qual deles o melhor. Trata-se de um caso especial
de optimização, em que quase cada problema a optimizar pode ser resolvido com eficiência por um
método apropriado e antes de o aplicar é impossível afirmar se é mais eficiente do que outro ou não.

3.2. Característica geral dos métodos de programação não - linear


A essência de quase todos os métodos de programação não linear consiste em encontrar, a partir
dum ponto inicial, o caminho da função objectiva. O deslocamento em direcção ao extremo
executa-se através da passagem de um ponto inicial com as coordenadas (X1(0), X2(0),..., Xn(0)), para
outro ponto com as coordenadas (X1(0) +  X (0)
1 ; X 2 +  X 2 ;..., X n +  X n ) com uma variação de
(0) (0) (0) (0)

coordenadas (  X (0)
1 ,  X 2 ;...,  X n ) a que se chama passo. É evidente, que no caso da procura do
(0) (0)

máximo de uma função objectiva, o passo realizado é racional se levar ao melhoramento da função
objectiva, i.e.
RX 10   X 10  ; ; X n0   X n0   RX 10  ; ; X n0  (3.1)
Caso contrário, a passagem não tem sentido. A figura 3.1 apresenta alguns caminhos de procura do
máximo duma função bidimensional. Como se vê, nem todos os caminhos são óptimos para
conseguir o extremo da função. Qual é então, o caminho óptimo? É o que, a partir do ponto inicial
leve ao extremo da função, no menor número de passos, pois, para cada um dos realizados, é
necessário calcular a função objectiva e verificar a condição (3.1). Isso poderia conseguir
seleccionando a direcção óptima e o tamanho óptimo do passo. Como se faz? Em geral, o tamanho
e a direcção do passo é função das coordenadas do ponto a partir da qual se faz a passagem; no
entanto, há vários modos de selecionar o passo, os quais se poderiam juntar em três grupos:
a. Técnicas de busca directa;
b. Técnicas de gradiente;
c. Técnicas de busca aleatória.

Figura 3.1: Representação esquemática duma função bidimensional e os caminhos possíveis para o
seu óptimo, Ro, a partir do ponto inicial A.

3.3. Técnicas de busca directa de funções com uma variável

As técnicas de busca directa baseiam-se na exploração de um certo domínio de variação das variáveis
do processo, através da realização de passos, cujo sentido, bem como a dimensão, são anteriormente
e arbitrariamente determinados e independentes do ponto em jogo, comparando os valores da
função objectiva segundo a condição (3.1). Em geral, a essência das técnicas deste grupo consiste
em:
- Elaborar o algoritmo de variação de sentidos dos passos .
- Escolher o tamanho dos passos. Não há recomendações gerais para a selecção do tamanho dos
passos, no entanto, ele não deve ser demasiado grande, pois pode passar extremos sem os detectar
ou localizá-los com erros consideráveis; por outro lado, um passo demasiado pequeno aumenta,
considerávelmente, o número total de passos para atingir o extremo, o que também não é desejável.
- Explorar todo o domínio, consoante o algoritmo elaborado de variação de sentido com os passos
determinados,
Iniciamos o nosso estudo pela procura de extremos de funções de uma só variável. É evidente que,
para funções deste tipo, não é necessário elaborar o algoritmo de variação de sentido dos passos,
dado que, a função, tem um só sentido. Por outro lado, todas as técnicas conhecidas permitem
localizar o extremo dentro de um certo intervalo [a,b] em que a função é unimodal. Se se esperarem
vários extremos dentro do intervalo em consideração faz-se a divisão do intervalo inicial em
subintervalos, de tal maneira que se assegure a detecção de todos os extremos e ao mesmo tempo se
opere com subintervalos unimodais. Sem fundamentar referem-se três técnicas de optimização duma
função objectiva com uma só variável.

3.3.1. Técnica de cinco pontos

A técnica de cinco pontos consiste em:


- Dividir em quatro partes iguais o intervalo inicial [a,b] dentro do qual se pretende encontrar o
extremo.
- Calcular, nos 5 pontos obtidos, incluindo os pontos fronteiros, a função objectiva, e, entre eles,
seleccionar o ponto com melhor valor da função objectiva.
- Determinar o novo intervalo [a,b] que inclui o ponto óptimo que se obteve que consta dos dois
subintervalos dispostos de ambos os lados do ponto óptimo.
- Repetir as três primeiras etapas até se conseguir a precisão desejada que está em função do número
de cálculos da função objectiva e se define pela fórmula:
 s 1

d  (b  a)2 2

ba
ln
s2 d 1
ln 2
s – nº de passos (calculado)
em que, d é o zero absoluto de localização do extremo, depois do cálculo da função objectiva S
vezes. Nos passos posteriores, a função objectiva calcula-se só em 2 pontos do passo anterior. O
cálculo da função objectiva é a parte mais trabalhosa dessa técnica.

Esta técnica de busca do extremo está ilustrada na fig. 3.2 a seguir


Figura 3.2: Localização do domínio duma função pela técnica de cinco pontos

3.3.2. Técnica da "secção dourada"

Consiste em:
- Dividir em 3 partes o intervalo inicial [a,b], dentro do qual se pretende encontrar o extremo, de tal
maneira que, os dois subintervalos, ligados com os pontos fronteiros a e b, sejam iguais a
Li  0.382(a  b)
- Calcular, nos 4 pontos obtidos, incluindo os pontos fronteiros, a função objectiva, e, entre eles,
seleccionar o ponto com o melhor valor da função objectiva.
- Determinar o novo intervalo [a,b] em torno do ponto óptimo obtido, que consta dos dois
subintervalos, dispostos de ambos os lados do ponto óptimo.
- Repetir as três primeiras etapas até se atingir a precisão desejada que está em função do número de
cálculos da função objectiva e se define pela fórmula
d
d  0.5(b  a)(0.618) s 3   (0.618) s 3
0.5(b  a)

3.3.3. Técnica de fibonacci

A técnica de Fibonacci consiste em:


- Calcular um número a partir do intervalo [a,b], dentro do qual se pretende localizar o extremo e da
precisão d, com a qual se deseja localizá-lo,
ba
N
d
Encontrar o número de Fibonacci (ver a tabela 3.1) que satisfaça a seguinte condição
Fs 1  N  Fs
em que FS e FS-1 são números de Fibonacci tirados da tabela 5.1. a qual foi construida com base na
sequência dos números de Fibonacci, de acordo com a fórmula
Fk  Fk 1  Fk  2 , F0  F1  1, k  1
Tabela: Números de Fibonacci

K 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Fk 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2589 4185

- Calcular o passo mínimo de procura do extremo mediante a fórmula:


ba

Fs
- Calcular a função objectiva no ponto inicial a, R(a)
- Calcular a função objectiva do ponto seguinte, definido pela fórmula, R(X1):
X 1  a  Fs  2
- Comparar os valores da função objectiva R(a) e R(X1). Se o passo teve êxito, i.e. R(X1)<R(a)
procurando o mínimo e R(X1) > R(a) procurando o máximo, executar o passo seguinte

X 2  X1  Fs 3
Se o passo não teve êxito, i.e. R(X1)<R(a), procurando o máximo

X 3  X 1  Fs  4
executar o passo seguinte
- Prosseguir o cálculo a partir do último ponto com a diminuição contínua do passo, de acordo com
a expressão genérica do passo i:
 i  Fs  2
Se o último passo i 1tiver êxito i.e. R(Xi+1) < R(Xi) procurando o mínimo, então o passo seguinte
que se faz a partir do ponto Xi+1
será
X i  2  X i 1   i 1
caso contrário será
X i  2  X i   i 1
Continuar o cálculo até a utilização de todos os números de Fibonacci de acordo com a sequência
Fs  2 i  0,1, , S  3
Esta técnica conduz a um erro absoluto
ba
d
Fs
Comparando as três técnicas tratadas conclui-se que, a técnica de Fibonacci é mais eficiente, pois, o
mesmo número de cálculos da função objectiva leva a um erro absoluto menor do que os dois
primeiros. Por exemplo: para o intervalo [a,b]=1 e calculando 21 vezes a função objectiva obtemos,
para a técnica de 5 pontos,
211
d 2 2
 2 11  0.000488

para a técnica da "secção dourada"


d = 0,5(0.618)s-3 = 0,5(0.618)18  0.000086
e para a técnica de Fibonacci
1 1
d   0.000056
Fs 17733
Procurando os óptimos com precisão elevada, i.e., com um elevado número de cálculos da função
objectiva, S, pelas técnicas de "secção dourada" e de Fibonacci, obtém-se os mesmos resultados.

Exemplo de cálculo 3.1


Seja dada uma função objectiva não sujeita a restrições.
y = 5 + 10x - 20x2
Não é dado o intervalo. Subentende-se que seja de 0 – 1.
Localizar o máximo com uma precisão absoluta de 0.001.
Resolva pelas três técnicas estudadas 5 pontos, Secção dourada e Fibonacci
Resolução
a. Técnica de 5 pontos
Logo a partida calcula-se s, ou seja, o número de iterações a fazer até encontrar o óptimo com uma
precisão de 0.001
ba (1  0)
ln ln
s2 d  1  2 0.001  1  21
ln 2 ln 2
O intervalo inicial divide-se em 4 pontos:
x Є [0,1]
Etapa 1
b  a 1 0
1    0.25
4 4
0 0.25 0.5 0.75 1
┴──────┴─────────┴────────┴───────┘
- Cálculo dos valores da função objectiva em cada ponto:

si 1 2 3 4 5

xi 0 0.25 0.50 0.75 1.0

yi 5 6.25 5 1.25 -5

Etapa 2
- Selecção do novo intervalo de pesquisa [0; 0.5]
0.5  0
2   0.125
4
- Cálculo dos valores da função objectiva em cada ponto

si 1 6 2 7 3

xi 0 0.125 0.250 0.375 0.5

yi 5 5.9375 6.2500 5.9375 5

Etapa 3
- Selecção do novo intervalo de pesquisa [0.125; 0.375]
0.375  0.125
3   0.0625
4
- Cálculo dos valores da função objectiva em cada ponto

si 6 8 2 9 7

xi 0.125 0.1875 0.250 0.3125 0.375

yi 5.9375 8.1718 6.25 6.1718 5.9375

Etapa 4
- Selecção do novo intervalo de pesquisa [0.1875;0.3125]
0.3125  0.1875
4   0.03125
4
- Cálculo dos valores da função objectiva em cada ponto

si 8 10 2 11 9

xi 0.1875 0.21875 0.250 0.28125 0.3125

yi 6.1718 6.230 6.25 6.230 6.1718

Etapa 5
- Selecção do novo intervalo de pesquisa [0.21875; 0.28125]
0.28125  0.21875
5   0.015625
4
- Cálculo dos valores da função objectiva em cada ponto

si 10 12 2 13 11

xi 0.21875 0.23438 0.25 0.26563 0.28125

yi 6.230 6.245 6.25 6.245 6.230

Etapa 6
- Selecção do novo intervalo de pesquisa [0.23438; 0.26563]
0.26563  0.23438
6   0.0078125
4
- Cálculo dos valores da função objectiva em cada ponto

si 12 14 2 15 13

xi 0.23438 0.24219 0.25 0.25781 0.26563

yi 6.245 6.24876 6.25 6.24878 6.245

Etapa 7
- Selecção do novo intervalo de pesquisa [0.24219; 0.25781]
0.25781  0.24219
7   0.003905
4
- Cálculo dos valores da função objectiva em cada ponto

si 14 16 2 17 15

xi 0.24219 0.24609 0.25 0.25391 0.25781

yi 6.24878 6.24969 6.25 6.24969 6.24878

Etapa 8
- Selecção do novo intervalo de pesquisa [0.24609; 0.25391]

0.25391  0.24609
8   0.001955
4
- Cálculo dos valores da função objectiva em cada ponto

si 16 18 2 19 17

xi 0.24609 0.24805 0.25 0.25196 0.25391

yi 6.24969 6.249924 6.25 6.249923 6.24969

O óptimo atinge-se depois de feitos 21 cálculos da função objectiva


211
Para S = 21  d  (1  0) * 2 2
< 0.001
Solução:
xopt = 0.25
yopt = 6.25

b. Técnica da secção dourada


x Є [0,1]
ε = 0.001
Resolução
Número de testes necessários para atingir o óptimo
d 0.001
ln ln
0.5(b  a) 0.5(1  0)
S 3  3  12.913  3  15.9  16
ln 0.618 ln 0.618
 d  0.5(1  0)(0.618)163  0.00096 < 0.001
Portanto, para a técnica da secção dourada será necessário realizar 16 testes de maneiras a encontrar
o óptimo.
Etapa 1
x Є [0;1]  L1 = 0.382(1-0) = 0.382
a P1 P2 b
┴───────┴──────┴──────┴
a=0
b=1
P1 = L1 + a = 0.382 + 0 =0.382
P2 = b – L1 = 1 – 0.382 = 0.618
0 0.382 0.618 1
┴───────┴──────┴──────┴

- Cálculo dos valores da função objectiva em cada ponto

si 1 2 3 4

xi 0 0.382 0.618 1
yi 5 5.902 3.541 -5

Etapa 2
- Selecção do novo intervalo de pesquisa [0; 0.618]  L2 = 0.382(0.618) = 0.236
P1 = L2 + a = 0.236 + 0 = 0.236
P2 = b – L2 = 0.618 – 0.236 = 0.382

a=0 P1=0.236 P2=0.382 b=0.618


┴───────┴──────┴──────┴
- Cálculo dos valores da função objectiva em cada ponto

si 1 5 2 3

xi 0 0.236 0.382 0.618

yi 5 6.246 5.902 3.541

Etapa 3
- Selecção do novo intervalo de pesquisa [0; 0.382]  L3 = 0.382(0.382-0) = 0.1459
- Cálculo dos valores da função objectiva em cada ponto

si 1 6 5 2

xi 0 0.1459 0.236 0.382

yi 5 6.033 6.246 5.902

Etapa 4
- Selecção do novo intervalo de pesquisa [0.1459; 0.382]  L4 = 0.382(0.382-0.1459) = 0.090
- Cálculo dos valores da função objectiva em cada ponto

si 6 5 7 2

xi 0.1459 0.236 0.292 0.382

yi 6.033 6.246 6.214 5.902


Etapa 5
- Selecção do novo intervalo de pesquisa [0.1459; 0.292]  L5 = 0.382(0.292-0.1459) = 0.0558
- Cálculo dos valores da função objectiva em cada ponto

si 6 8 5 7

xi 0.1459 0.2017 0.236 0.292

yi 6.033 6.203 6.246 6.214

Etapa 6
- Selecção do novo intervalo de pesquisa [0.2017; 0.292]  L6 = 0.382(0.292-0.2017) = 0.0344
- Cálculo dos valores da função objectiva em cada ponto

si 8 5 9 7

xi 0.2017 0.236 0.2576 0.292

yi 6.203 6.246 6.2488 6.214

Etapa 7
- Selecção do novo intervalo de pesquisa [0.236; 0.292]  L7 = 0.382(0.292-0.236) = 0.0213

- Cálculo dos valores da função objectiva em cada ponto

si 5 9 10 7

xi 0.236 0.2576 0.2707 0.292

yi 6.246 6.2488 6.241 6.214

Etapa 8
- Selecção do novo intervalo de pesquisa [0.236; 0.2707]  L8 = 0.382(0.2707-0.236) = 0.0132
- Cálculo dos valores da função objectiva em cada ponto
si 5 11 9 10

xi 0.236 0.2494 0.2576 0.2707

yi 6.246 6.2499 6.2488 6.241

Etapa 9
- Selecção do novo intervalo de pesquisa [0.236; 0.2576]  L9 = 0.382(0.2576-0.236) = 0.008136
- Cálculo dos valores da função objectiva em cada ponto

si 5 12 11 9

xi 0.236 0.2443 0.2494 0.2576

yi 6.246 6.2494 6.2499 6.2488

Etapa 10
- Selecção do novo intervalo de pesquisa [0.2443; 0.2576]  L10 = 0.382(0.2576-0.2443) = 0.00504
- Cálculo dos valores da função objectiva em cada ponto

si 12 11 13 9

xi 0.2443 0.2494 0.2525 0.2576

yi 6.2494 6.2499 6.2498 6.2488

Etapa 11
- Selecção do novo intervalo de pesquisa [0.2443; 0.2525]  L11 = 0.382(0.2525-0.2443) = 0.00313
- Cálculo dos valores da função objectiva em cada ponto

si 12 14 11 13

xi 0.2443 0.2474 0.2494 0.2525

yi 6.24940 6.24986 6.24999 6.24988

Etapa 12
- Selecção do novo intervalo de pesquisa [0.2474; 0.2525]  L12 = 0.382(0.2525-0.2474) = 0.00195
- Cálculo dos valores da função objectiva em cada ponto

si 14 11 15 13

xi 0.2474 0.2494 0.2506 0.2525

yi 6.24986 6.24999 6.24999 6.24988

Olhando para x(s=11) e x(s=15) vê-se que eles têm o mesmo valor de yi, quando assim acontece,
escolhe-se arbitrariamente um dos pontos.
Etapa 13
Escolhamos arbitrariamente o ponto x(s=15)
- Selecção do novo intervalo de pesquisa [0.2494; 0.2525]  L12 = 0.382(0.2525-0.2494) = 0.00118
- Cálculo dos valores da função objectiva em cada ponto

si 11 15 16 13

xi 0.2494 0.2506 0.2513 0.2525

yi 6.24999 6.24999 6.24997 6.24988

Avaliando os valores da função objectiva calculados vemos que o óptimo atinge-se para x(s=11) ou
x(s=15), onde o valor de y = 6.24999 ≈ 6.25.
Solução:
yopt = 6.25
xopt = 0.2494 ou xopt = 0.2506

b. Técnica de Fibonacci
x Є [0,1]
ε = 0.001
b  a 1 0
N   1000
d 0.001
Assim, para N = 1000 e da tabela dos valores de Fibonacci, o respectivo número de Fibonacci será:
Fs-1 < N < Fs
Fs-1 = 987 (s = 15)
Fs = 1597 (s = 16)
s = 16
ou seja: 987 < N < 1597
Portanto, para a técnica de Fibonacci será necessário realizar 16 teste para se alcançar o óptimo
requerido.
O passo mínimo de busca do extremo é
b  a 1 0
   0.000626
Fs 1597
Cálculo do valor da função objectiva no ponto “a”
(0). a = 0
y(a) = y(0) = 5
(1). X1 = a + ΔFs-2 = 0 + 0.000626*610 = 0.382
y(X1) = y(0.382) = 5.90
O valor da função melhorou, ou seja, demos um passo com êxito

(2). X2 = X1 + ΔFs-3 = 0.382 + 0.000626*377 = 0.618


y(X2) = 3.54
O valor da função piorou, ou seja, demos um passo sem êxito

(3). X3 = X1 - ΔFs-4 = 0.382 - 0.000626*233 = 0.236


y(X3) = 6.246
O valor da função melhorou, demos um passo com êxito

(4). X4 = X3 - ΔFs-5 = 0.236 - 0.000626*144 = 0.146


y(X4) = 6.03
O valor da função piorou

(5). X5 = X3 + ΔFs-6 = 0.236 + 0.000626*89 = 0.292


y(X5) = 6.215
O valor da função piorou

(6). X6 = X3 - ΔFs-7 = 0.236 - 0.000626*55= 0.202


y(X6) = 6.20
O valor da função piorou

(7). X7 = X3 + ΔFs-8 = 0.236 + 0.000626*34= 0.2573


y(X7) = 6.2489
O valor da função melhorou, demos um passo com êxito

(8). X8 = X7 + ΔFs-9 = 0.2573 + 0.000626*21= 0.2704


y(X8) = 6.2416
O valor da função piorou

(9). X9 = X7 - ΔFs-10 = 0.2573 – 0.000626*13 = 0.2492


y(X9) = 6.2499
O valor da função melhorou

(10). X10 = X9 - ΔFs-11 = 0.2492 - 0.000626*8 = 0.2442


y(X10) = 6.2493
Demos um passo sem êxito

(11). X11 = X9 + ΔFs-12 = 0.2492 + 0.000626*5 = 0.2523


y(X11) = 6.24989
Demos um passo sem êxito
(12). X12 = X9 - ΔFs-13 = 0.2492 - 0.000626*3 = 0.2473
y(X12) = 6.24985
Demos um passo sem êxito

(13). X13 = X9 + ΔFs-14 = 0.2492 + 0.000626*2 = 0.25045


y(X13) = 6.249996
Demos um passo com êxito

(14). X14 = X13 + ΔFs-15 = 0.25045 + 0.000626*1 = 0.2510


y(X14) = 6.24998
Demos um passo sem êxito

(15). X15 = X13 - ΔFs-16 = 0.25045 - 0.000626*1 = 0.2498


y(X13) = 6.2499992
Sendo um passo com êxito
Solução:
Xopt = x15 = 0.2498
Yopt = 6.2499992
Nota:
Em caso de empate (exemplo X12 e X13, o óptimo será o valor médio), assim:
X 12  X 13
X opt  .
2

3.4. Técnicas de busca directa de funções com mais de uma variável


3.4.1. Técnica de Gauss-Zeidel
A essência deste método consiste em fixar todas as variáveis excepto uma, para a qual se encontra o
ponto extremo. Após essa operação repete-se para outras variáveis até se atingir o extremo ao longo
dela. Continua-se até conseguir o óptimo. Nesta técnica, o sentido dos passos, escolhe-se
arbitrariamente, bem como a sua dimensão.
O algoritmo de optimização usando esta técnica é o seguinte:
a. Seleccionar uma das variáveis fixando as outras no ponto inicial R(a1, a2,..., X1... an)
b. Deslocar-se ao longo do intervalo de variação dessa variável Xi com um passo arbitràriamente
determinado i 2 e pela comparação dos valores da função objectiva localizar o óptimo ao longo dessa
1
variável. Uma localização mais precisa do extremo faz-se por diminuição do passo para metade i 3
2
começando a procura a partir do último ponto e no sentido contrário. Continuar da mesma maneira até
a precisão desejada e localizar o ponto do extremo, Xi,0. A localização do extremo ao longo duma
variável poderia ser feita através do emprego de uma das três técnicas consideradas anteriormente
para a função monovariável.
c. Seleccionar a nova variável fixando no ponto inicial, à excepção da variável recentemente
explorada que se fixa no ponto do seu extremo R(a1,..., Xj,... Xi,0,... an) e localizar o extremo ao longo
desta nova variável.
d. Seleccionar todas as variáveis de anteriormente definida e pesquisá-las da mesma maneira, fixando
as variáveis pesquisadas nos seus pontos extremos. Há casos em que, após a pesquisa de todas as
variáveis, será necessário começar de novo pela pesquisa da primeira variável até se localizar o
óptimo global.

Exemplo de cálculo 3.2.


Seja dada a função objectiva bidimensional
R = 5 + 10x1 – 20x12 + 5.8x2 – 15x22 + 5x1x2
não sujeita a restrições. Localizar o seu valor máximo com uma precisão absoluta de 0.001 e x 1 Є
[0;1] e x2 Є [0;1]
Resolução:
Comecemos pela técnica de Gauss-Zeidel
Seleccionemos x1 e fixemos x2  x2 = 0
Assim, a função objectiva bidimensional torna-se numa função objectiva unidimensional do tipo
R = 5 + 10x1 – 20x12
É possível agora encontrar o valor máximo ao longo da variável x1 aplicando uma das técnicas
estudadas anteriormente.

Vamos aplicar a técnica de Fibonacci, para encontrar o máximo da função R = 5 + 10x1 – 20x12
x Є [0,1]
ε = 0.001
b  a 1 0
N   1000
d 0.001
Assim, para N = 1000 e da tabela dos valores de Fibonacci, o respectivo número de Fibonacci será:
Fs-1 < N < Fs
Fs-1 = 987 (s = 15)
Fs = 1597 (s = 16)
s = 16
ou seja: 987 < N < 1597
Portanto, para a técnica de Fibonacci será necessário realizar 16 teste para se alcançar o óptimo
requerido.
O passo mínimo de busca do extremo é
b  a 1 0
   0.000626
Fs 1597
Cálculo do valor da função objectiva no ponto “a”
(0). a = X1,1 = 0
R(a) = R(X1,1) = y(0) = 5
(1). X1,2 = a + ΔFs-2 = 0 + 0.000626*610 = 0.382
R(X1,2) = y(0.382) = 5.90
O valor da função melhorou, ou seja, demos um passo com êxito

(2). X1,3 = X1,2 + ΔFs-3 = 0.382 + 0.000626*377 = 0.618


R(X1,3) = 3.54
O valor da função piorou, ou seja, demos um passo sem êxito

(3). X1,4 = X1,2 - ΔFs-4 = 0.382 - 0.000626*233 = 0.236


R(X1,4) = 6.246
O valor da função melhorou, demos um passo com êxito

(4). X1,5 = X1,4 - ΔFs-5 = 0.236 - 0.000626*144 = 0.146


R(X1,5) = 6.03
O valor da função piorou

(5). X1,6 = X1,4 + ΔFs-6 = 0.236 + 0.000626*89 = 0.292


R(X1,6) = 6.215
O valor da função piorou

(6). X1,7 = X1,4 - ΔFs-7 = 0.236 - 0.000626*55= 0.202


R(X1,7) = 6.20
O valor da função piorou

(7). X1,8 = X1,4 + ΔFs-8 = 0.236 + 0.000626*34= 0.2573


R(X1,8) = 6.2489
O valor da função melhorou, demos um passo com êxito
(8). X1.9 = X1,8 + ΔFs-9 = 0.2573 + 0.000626*21= 0.2704
R(X1,9) = 6.2416
O valor da função piorou

(9). X1,10 = X1,8 - ΔFs-10 = 0.2573 – 0.000626*13 = 0.2492


R(X1,10) = 6.2499
O valor da função melhorou

(10). X1,11 = X1,10 - ΔFs-11 = 0.2492 - 0.000626*8 = 0.2442


R(X1,11) = 6.2493
Demos um passo sem êxito

(11). X1,12 = X1,10 + ΔFs-12 = 0.2492 + 0.000626*5 = 0.2523


R(X1,12) = 6.24989
Demos um passo sem êxito
(12). X1,13 = X1,10 - ΔFs-13 = 0.2492 - 0.000626*3 = 0.2473
R(X1,13) = 6.24985
Demos um passo sem êxito

(13). X1,14 = X1,10 + ΔFs-14 = 0.2492 + 0.000626*2 = 0.25045


R(X1,14) = 6.249996
Demos um passo com êxito

(14). X1,15 = X1,14 + ΔFs-15 = 0.25045 + 0.000626*1 = 0.2510


R(X1,15) = 6.24998
Demos um passo sem êxito

(15). X16 = X1,14 - ΔFs-16 = 0.25045 - 0.000626*1 = 0.2498


R(X1,16) = 6.2499992
Sendo um passo com êxito
Solução:
Xopt = x1,16 = 0.2498 ≈ 0.25
Yopt = 6.2499992 ≈ 6.25

Colocando o valor de x1opt = 0.25 na função objectiva tem-se


R = 6.25 + 5.8x2 – 15x22 + 5 * 0.25*x2 = 6.25 + 7.05x2 – 15x22
(0). a = X2,1 = 0
R(a) = R(X2,1) = y(0) = 6.25
(1). X2,2 = a + ΔFs-2 = 0 + 0.000626*610 = 0.382
R(X2,2) = y(0.382) = 6.7542
O valor da função melhorou, ou seja, demos um passo com êxito

(2). X2,3 = X2,2 + ΔFs-3 = 0.382 + 0.000626*377 = 0.618


R(X2,3) = 4.8780
O valor da função piorou, ou seja, demos um passo sem êxito

(3). X2,4 = X2,2 - ΔFs-4 = 0.382 - 0.000626*233 = 0.236


R(X2,4) = 7.07836
O valor da função melhorou, demos um passo com êxito

(4). X2,5 = X2,4 - ΔFs-5 = 0.236 - 0.000626*144 = 0.146


R(X2,5) = 6.96
O valor da função piorou

(5). X2,6 = X2,4 + ΔFs-6 = 0.236 + 0.000626*89 = 0.292


R(X2,6) = 7.02
O valor da função piorou

(6). X2,7 = X2,4 - ΔFs-7 = 0.236 - 0.000626*55= 0.202


R(X2,7) = 7.062
O valor da função piorou

(7). X2,8 = X2,4 + ΔFs-8 = 0.236 + 0.000626*34= 0.2573


R(X2,8) = 7.071
O valor da função piorou, demos um passo com êxito

(8). X2.9 = X2,8 - ΔFs-9 = 0.236 - 0.000626*21= 0.223


R(X2,9) = 7.076
O valor da função piorou

(9). X2,10 = X2,4 + ΔFs-10 = 0.236 + 0.000626*13 = 0.2441


R(X2,10) = 7.0771
O valor da função piorou

(10). X2,11 = X2,4 - ΔFs-11 = 0.236 - 0.000626*8 = 0.231


R(X2,11) = 7.0781
Demos um passo sem êxito

(11). X2,12 = X2,4 + ΔFs-12 = 0.236 + 0.000626*5 = 0.239


R(X2,12) = 7.0781
Demos um passo sem êxito
(12). X2,13 = X2,4 - ΔFs-13 = 0.236 - 0.000626*3 = 0.234
R(X2,13) = 7.07836
Demos um passo com êxito (empatado com y(X2,4)

(13). X2,14 = X2,13 - ΔFs-14 = 0.234 - 0.000626*2 = 0.322


R(X2,14) = 6.965
Demos um passo sem êxito

(14). X2,15 = X2,13 + ΔFs-15 = 0.234 + 0.000626*1 = 0.235


R(X2,15) = 7.07838
Demos um passo com êxito

(15). X2,16 = X2,15 + ΔFs-16 = 0.235 + 0.000626*1 = 0.236


R(X2,16) = 7.07836
x2opt = 0.235
R(X2opt) = 7.07838

Solução final
X1opt ≈ 0.25
X2opt = 0.235
R(X1opt, X2opt) = 7.078

3.4.2. Técnicas de gradiente


As técnicas deste grupo baseiam-se na análise das derivadas da função objectiva e o sentido, bem
como o tamanho dos passos, definem-se pelas suas derivadas. Fazem parte deste grupo de técnicas
as seguintes técnicas: (a) Técnica de relaxação; (b) Técnica de gradiente; e (c) e a Técnica de
subida/descida mais inclinada.

3.4.2.1. Técnica de relaxação


Esta técnica é semelhante á técnica de Gauss-Zeidel com uma única diferença que consiste em
seleccionar a variável a ser explorada. Na técnica de Gauss-Zeidel, esta variável escolhe-se
arbitráriamente e a sequência das outras variáveis é também arbitrária; nesta técnica a variável a ser
explorada define-se pela sua derivada, de tal maneira que coincida com a direcção de maior variação
da função objectiva.

O algoritmo desta técnica é o seguinte:


1. Calcular no ponto inicial escolhido aleatóriamente todas as derivadas parciais e seleccionar a maior
derivada para variar a variável respectiva. É evidente, que a maior derivada para qualquer variável
corresponde à maior variação da função ao longo dessa direcção. Para uma derivada negativa a
função objectiva decresce na direcção do eixo e para uma derivada positiva ela decresce na direcção
oposta.
2. Usando a equação a seguir localizar o extremo da função ao longo da variação da variável
escolhida no ponto 1, por exemplo Xj, através do deslocamento por passos.
R
X j , k 1  X j , k  h (eq. a)(sinal positivo quando se procura um máximo e negativo quando se
X j , p

procura um mínimo). Continuar o deslocamento até se respeitar a condição RX j , k 1   RX j , k  no


caso em que se pretende localizar um mínimo ou RX j , k 1   RX j , k  para o caso em que se procura

um máximo. Na equação (a) Xj,k+1 é o valor da variável no passo (k+1) Xj,k é o mesmo mas no passo
R
anterior, h é o parâmetro do passo, e é a derivada da função objectiva em ordem à variação Xj
 X jp
no ponto de mudança de direcção, p, incluindo o seu sinal.
3. Precisar o extremo através da técnica dada no ponto 2, mas com o passo dividido por dois,
iniciando o deslocamento a partir do último ponto em que não se respeita qualquer uma das
condições anteriores anteriores, mudando o sentido do deslocamento. Continuar da mesma maneira
até se atingir a precisão desejada. Como se vê, a precisão do extremo faz-se do mesmo modo que na
técnica de Gauss-Zeidel.
4. No ponto do extremo ao longo da variável Xj calcular todas as derivadas, com excepção, da dada
em ordem a Xj e seleccionar a maior derivada. Repetir os pontos 2 e 3 até se atingir o extremo para
todas as variáveis e que se confirma mediante a satisfação da condição:
2
n R  2R 2R 2R
  X   d  X 2  X 2   2
 
 i ,0  1, 0 2, 0 2, 0

onde d é a precisão desejada.


Para os casos em que o parâmetro do passo h não é dado este pode ser calculado usando a seguinte
1
fórmula: hi 
2R
xi2
Exemplo de cálculo 3.3.
Determinar o máximo da funçaão:
R = 25 + x1 + 0.6x2 – 1.6x12 – 0.5x22
Usando a técnica de relaxação com uma precisão de d = 0.05, ponto inicial de busca (0,1) e h = 0.2,
xi Є [0;1]
Resolução
Ponto inicial: x1 = 0 e x2 = 1
Cálculo das derivadas parciais
R R R R
 1  3.2 x1  ( x1,1  0)  1  0.6  x2  ( x2,1  1)  0.4
x1 x1 x2 x2
R R
( x1,1  0) > ( x2,1  1)
x1 x2
Assim sendo, fixa-se x2 = 1 e varia-se x1
Localização do extremo da variável x1
R
x1, 2  x1,1  h ( x1,1 )  0  0.2 *1  0.2
x1
R(x1,1; x2,1) = R(0;1) = 25.10
R(x1,2; x2,2) = R(0.2; 1) = 25.236; O valor da FO melhorou
Nota: se no ponto 2 (1º ponto de pesquisa) o valor da FO tivesse piorado teriamos que dividir o
passo (h = 0.2) por 2. Repare que nessa altura variamos apenas x1, enquanto mantemos constante x2,
até que o sentido da FO se altere.
R
x1,3  x1, 2  h ( x1,1 )  0.2  0.2 *1  0.4
x1
R(x1,3; x2,3) = R(0.4; 1) = 25.244; O valor da FO melhorou
2
2  R 
1  X  = 0.2384 > d
 i ,0 
R
x1, 4  x1,3  h ( x1,1 )  0.4  0.2 *1  0.6
x1
R(x1,4; x2,4) = R(0.6; 1) = 25.124 ; O valor da FO piorou
No ponto 4 a FO piorou e no entanto, tem de se calcular as derivadas parciais no ponto
imedatamente antes (j = 3) do ponto onde a FO piorou (j = 4), que é para serem usadas no pnto
seguinte (j = 5). Nesse caso a partir do ponto 5 fixa-se x1 = 0.4 e varia-se x2, até que o sentido da FO
se altere.
R R
( x1,3 )  0.28 e ( x2,3 )  0.4
x1 x2
R R
( x1,9 ) < ( x2,9 ) ; (em termos absolutos)
x1 x2
R
x2,5  x2,3  h ( x2,3 )  1  0.2 * 0.4  0.92
x2
R(x1,5; x2,5) = R(0.4; 0.92) = 25.273; o valor da FO melhorou
R
x2,6  x2,5  h ( x2,3 )  0.92  0.2 * 0.4  0.84
x2
R(x1,6; x2,6) = R(0.4; 0.84) = 25.295; o valor da FO melhorou
R
x2,7  x2,6  h ( x2,3 )  0.84  0.2 * 0.4  0.76
x2
R(x1,7; x2,7) = R(0.4; 0.76) = 25.311; o valor da FO melhorou
R
x2,.8  x2,7  h ( x2,3 )  0.76  0.2 * 0.4  0.68
x2
R(x1,8; x2,8) = R(0.4; 0.68) = 25.321; o valor da FO melhorou
R
x2,9  x2,8  h ( x2,3 )  0.68  0.2 * 0.4  0.60
x2
R(x1,9; x2,9) = R(0.4; 0.6) = 25.324; o valor da FO melhorou
2
2  R 
1  x  = 0.0784 > d
 i ,0 
R
x2,10  x2,9  h ( x2,3 )  0.60  0.2 * 0.4  0.52
x2
R(x1,10; x2,10) = R(0.4; 0.52) = 25.321; o valor da FO piorou
No ponto i = 10 o valor da FO piorou, no entanto, temos que calcular as derivadas parciais no ponto i
= 9 para usá-las nos pontos seguintes.
Para i = 9 tem-se
R R
 1  3.2 x1  ( x1,9  0.4)  0.28
x1 x1
R R
 0.6  x2  ( x2,9  0.60)  0.0
x2 x2
R R
( x1,9 ) > ( x2,9 ) ; (em termos absolutos)
x1 x2
No entanto, fixa-se x2 = 0.60 e varia-se x1
2
 R  n
O processo continua até chegar-se ao ponto onde    d
 
1  xi , 0 

R
x1,11  x1,9  h ( x1,9 )  0.40  0.2 * 0.28  0.344
x1
R(x1,11; x2,11) = R(0.344; 0.6) = 25.3346 ; o valor da FO melhorou
R
x1,12  x1,11  h ( x1,9 )  0.344  0.2 * 0.28  0.288
X1
R(x1,12; x2,12) = R(0.288; 0.6) = 25.3353; o valor da FO melhorou
2
2  R 
1  x  = 0.0061 < d
 i ,0 
Tabela de resultados
2
R R 2  R 
i x1 x2
x1 x2
R(xi) 1  x 
 i ,0 
1 0 1 1 -0.4 25.100 1.1600 > d
2 0.2 1 - - 25.236 (m) -
3 0.4 1 -0.28 -0.4 25.244 (m) 0.2384 > d
4 0.6 1 - - 25.124 (p) -
5 0.4 0.92 - - 25.273 (m) -
6 0.4 0.84 - - 25.295 (m) -
7 0.4 0.76 - - 25.311 (m) -
8 0.4 0.68 - - 25.321 (m) -
9 0.4 0.60 -0.28 0.0 25.324 (m) 0.0784 > d
10 0.4 0.52 - - 25.321 (p) -
11 0.344 0.60 - - 25.3346(m) -
12 0.288 0.60 0.0784 0.0 25.3353(m) 0.0061 < d

Solução
x1opt = x1,12 = 0.288
x2opt = x2,12 = 0.60
R(x1opt, x2opt ) = 25.3353

3.4.2.2. Técnica de gradiente


A técnica de gradiente permite seguir pelo caminho óptimo para o extremo e o seu algorítmo é o
seguinte:
a. Calcular no ponto inicial escolhido, aleatóriamente, todas as derivadas parciais.
b. Deslocar-se, passo por passo em função do objectivo da optimização usando a equação seguinte:
R
X j , k 1  X j , k  h
X j , p
c. Em cada passo verificar a execução da condição do erro, cuja satisfação significa que o óptimo foi
atingido.
Esta técnica é semelhante a técnica de relaxação, a diferença resulta no facto de que na técnica de
gradiente não se fixa nenhuma variável, ou seja, em cada ponto calculam-se os valores das variáveis e
as respectivas variáveis e as respectivas derivadas parciais.
Exemplo de cálculo 3.4.
Seja dada a função
R = 5 + 10x1 – 20x12 + 5.8x2 – 15x22 + 5x1x2
Usando a técnica de gradiente, determinar o máximo desta com uma precisão de 0.1, ponto inicial de
busca x1 = x2 = 0.5, h = 0.04 e xi Є [0; 1].
Resolução
Cálculo das derivadas parciais no ponto inicial
R
( x1,1  0.5; x2,1  0.5)  10  40 x1  5 x2  7.5
x1
R
( x1,1  0.5; x2,1  0.5)  5.8  30 x2  5 x1  6.7
x2
R
x1,2 = x1,1 + h ( x1,1; x2,1 ) = 0.5 + 0.04*(-7.5) = 0.200
x1
R
x2,2 = x2,1 + h ( x1,1; x2,1 ) = 0.5 + 0.04*(-6.7) = 0.232
x2
R
( x1, 2 ; x2, 2 )  10  40 x1  5 x2  3.16
x1
R
( x1, 2 ; x2, 2 )  5.8  30 x2  5 x1  0.16
x2
2
2  R 
1  X  = 10.01 > d

 i ,0 
R
x1,3 = x1,2 + h ( x1, 2 ; x2, 2 ) = 0.2 + 0.04*3.16 = 0.326
x1
R
x2,3 = x2,2 + h ( x1, 2 ; x2, 2 ) = 0.232 + 0.04*(-0.16) = 0.226
x2
R
( x1,3 ; x2,3 )  10  40 x1  5 x2  1.91
x1
R
( x1,3 ; x2,3 )  5.8  30 x2  5 x1  0.65
x2
2
2  R 
1  x  = 4.097 > d
 i ,0 
R
x1,4 = x1,3 + h ( x1,3 ; x2,3 ) = 0.250
x1
R
x2,4 = x2,4 + h ( x1,3 ; x2,3 ) = 0.252
x2
Calculando sucessivamente valores de xi, suas derivadas parciais, o valor de R em cada ponto e o
respectivo erro, constrói-se a tabela que a seguir se mostra. O processo só termina quando quando
2
2  R 
1  x  < d
 i ,0 
2
R R 2  R 
i x1 x2
x1 x2
R(xi) 1  x 
 i ,0 
1 0.5 0.5 -7.5 -6.7 5.4 -
2 0.2 0.233 3.16 -0.16 6.97 10.01 > d
3 0.326 0.226 -1.91 0.67 7.05 4.097 > d
4 0.250 0.252 1.26 -0.51 7.07 1.848 > d
5 0.300 0.232 -0.84 0.34 7.086 0.821 > d
6 0.266 0.246 0.59 -0.25 7.091 0.411 > d
7 0.290 0.236 -0.42 0.17 7.094 0.205 > d
8 0.271 0.243 0.375 -0.135 7.0941 0.159 > d
9 0.286 0.238 -0.25 0.09 7.0952 0.071 < d

Solução
x1opt = x1,9 = 0.286
x2opt = x2,9 = 0.238
R(x1opt, x2opt ) = 7.095

3.4.2.3. Técnica de subida/descida mais inclinada


Esta técnica é uma combinação das duas primeiras técnicas deste grupo (Métodos de Gradiente). Ou
seja, aqui calculam-se as derivadas parciais no ponto inicial escolhido aleatoriamente e depois do
ponto inicial, as derivadas só são calculadas nos pontos imediatamente antes do ponto onde a FO
piora. Não há, entretanto a fixação das variáveis, ou seja, a variação das variáveis é feita
simultâneamente.
Exemplo de cálculo 3.5.
Seja dada a função
R = 5 + 10x1 – 20x12 + 5.8x2 – 15x22 + 5x1x2
Usando a técnica de subida/descida mais inclinada, determinar o máximo com uma precisão de 0.1,
ponto inicial de busca x1 = x2 = 0.5, h = 0.04 e xi Є [0; 1].
Resolução
Cálculo das derivadas parciais no ponto inicial
R
( x1,1  0.5; x2,1  0.5)  10  40 x1  5 x2  7.5
x1
R
( x1,1  0.5; x2,1  0.5)  5.8  30 x2  5 x1  6.7
x2
R(x1,1;x2,1) = 5.4
R
x1,2 = x1,1 + h ( x1,1; x2,1 ) = 0.5 + 0.04*(-7.5) = 0.200
x1
R
x2,2 = x2,1 + h ( x1,1; x2,1 ) = 0.5 + 0.04*(-6.7) = 0.232
x2
R(x1,2;x2,2) = 6.97 ; FO melhorou
R
x1,3 = x1,2 + h ( x1,1; x2,1 ) = 0.2 - 0.04*7.5 = -0.1
x1
R
x2,3 = x2,2 + h ( x1,1; x2,1 ) = 0.232 - 0.04*(6.7) = -0.036
x2
R(x1,3;x2,3) = 3.59 , FO piorou
Calculam-se então as derivadas parciais no ponto 2
R
( x1, 2 ; x2, 2 )  10  40 x1  5 x2  3.16
x1
R
( x1, 2 ; x2, 2 )  5.8  30 x2  5 x1  0.16
x2
R
x1,4 = x1,2 + h ( x1, 2 ; x2, 2 ) = 0.2 + 0.04*3.16 = 0.326
x1
R
x2,4 = x2,2 + h ( x1, 2 ; x2, 2 ) = 0.232 + 0.04*(-0.16) = 0.226
x2
R(x1,4;x2,4) = 7.047 , FO melhorou
R
x1,5 = x1,4 + h ( x1, 2 ; x2, 2 ) = 0.326+ 0.04*3.16 = 0.452
x1
R
x2,5 = x2,4 + h ( x1, 2 ; x2, 2 ) = 0.226 + 0.04*(-0.16) = 0.220
x2
R(x1,5;x2,5) = 6.481 , FO piorou
Calculam-se então as derivadas parciais no ponto 4.
Portanto, calculando sucessivamente valores de xi, suas derivadas parciais, o valor de R em cada ponto e
o respectivo erro, constrói-se a tabela que a seguir se mostra. O processo só termina quando quando
2
2  R 
1  x  < d
 i ,0 
R R 2  R 
2
i x1 x2
x1 x2 R(xi) 1  x 
 i ,0 
1 0.5 0.5 -7.5 -6.7 5.4 -
2 0.2 0.232 3.16 -0.16 6.97 (m) 10.011 > ε
3 -0.10 -0.036 - - 3.59 (p) -
4 0.326 0.226 -1.91 0.65 7.047 (m) 4.071 > ε
5 0.452 0.220 - - 6.481 (p) -
6 0.250 0.252 1.26 -0.51 7.074 (m) 1.848 > ε
7 0.174 0.278 - - 6.829 (p) -
8 0.300 0.232 -0.84 0.34 7.0862 (m) 0.821 > ε
9 0.350 0.212 - - 6.9760 (p) -
10 0.266 0.246 0.59 -0.25 7.0911 (m) 0.411 > ε
11 0.232 0.260 - - 7.0391 (p) -
12 0.239 0.236 -0.42 0.17 7.0936 (m) 0.205 > ε
13 0.314 0.226 - - 7.0676 (p) -
14 0.273 0.243 0.295 -0.125 7.0948 (m) 0.103 > ε
15 0.256 0.250 - - 7.0818 (p) -
16 0.285 0.238 -0.21 0.085 7.0954 (m) 0.051 < ε
17 0.297 0.233 - - 7.0889 (p) -

Solução
x1opt = x1,29 = 0.285
x2opt = x2,29 = 0.238
R(x1opt, x2opt) =7.0954

Você também pode gostar