Você está na página 1de 75

Machine Translated by Google

Inspirado na Natureza

Algoritmos Metaheurísticos

Segunda edição

Xin-She Yang

Universidade de Cambridge, Reino Unido

M e t ahe emreu
pseed steu
Ac
nEUe
-
rt
eu
og
ri
Luniver Press
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
o
)10
0
nd on (2
E d t
eu eu
Machine Translated by Google

Publicado em 2010 pela Luniver Press


Frome, BA11 6TT, Reino Unido
www.luniver.com

Copyright c Luniver Press 2010


Copyright c Xin-She Yang 2010

Todos os direitos reservados. Este livro, ou partes dele, não pode ser reproduzido de
nenhuma forma ou por qualquer meio, eletrônico ou mecânico, incluindo fotocópia,
gravação ou por qualquer sistema de armazenamento e recuperação de informações,
sem permissão por escrito do detentor dos direitos autorais.

Dados de Catalogação na Publicação da Biblioteca Britânica


Um registro de catálogo para este livro está disponível na
Biblioteca Britânica

ISBN-13: 978-1-905986-28-6
ISBN-10: 1-905986-28-9

Embora sejam feitos todos os esforços para garantir que as informações nesta
publicação estejam corretas, nenhuma responsabilidade pode ser aceita pelos autores
ou editores por perdas, danos ou ferimentos causados por erros ou omissões nas
informações fornecidas.

M e t ahe emreu
pseed steu
Ac
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
o
)10
0
nd on (2
E d t
eu eu
Machine Translated by Google

CONTEÚDO

Prefácio à segunda edição em

Prefácio à primeira edição nós

1 Introdução 1

1.1 Otimização 1.2 Busca 1

pela Otimidade 1.3 Metaheurísticas 2

Inspiradas na Natureza 1.4 Uma Breve História 4

das Metaheurísticas 5

2 Random Walks e L´evy Flights 11


ed
M e t ahe emreu
pse steu
Ac 2.1 Variáveis Aleatórias 11
nEUe euog
-
rt ri
em
Xin-She Yang h
t 2.2 Passeios Aleatórios 12
a m
NS c Luniver Press
s
2.3 14
ce
on 0
)10 Distribuição L´evy e Voos L´evy
d E on
(2 2.4 Otimização como Cadeias de Markov 17
d t
eu eu

eu
Machine Translated by Google

ii CONTEÚDO

3 Recozimento Simulado 21

3.1 Recozimento e Distribuição de Boltzmann 3.2 21


Parâmetros 22

3.3 Algoritmo SA 3.4 23

Otimização irrestrita 3.5 Tunelamento 24

estocástico 26

4 Como lidar com restrições 29

4.1 Método dos Multiplicadores de Lagrange 29

4.2 Método da Penalidade 32


4.3 Tamanho do Passo em 33

Caminhadas Aleatórias 4.4 Projeto 34

de Viga Soldada 4.5 Implementação SA 35

5 Algoritmos Genéticos 41

5.1 Introdução 41

5.2 Algoritmos Genéticos 5.3 42


Escolha de Parâmetros 43

6 Evolução Diferencial 47

6.1 Introdução 47
6.2 Evolução Diferencial 47
6.3 variantes 50

6.4 Implementação 50

7 Algoritmos de formiga e abelha 53

7.1 Algoritmos Ant 53


7.1.1 Comportamento de 53

formigas 7.1.2 Otimização de colônias 54

de formigas 7.1.3 Problema de ponte 56

dupla 7.1.4 Algoritmo de formiga 57


7.2 virtual Algoritmos inspirados 57

em abelhas 7.2.1 Comportamento de 57


M e t ahe emreu
eed
ps steu
Ac 58
nEU eu og
abelhas 7.2.2 Algoritmos de
e-
59
rt ri
em
Xin-She Yang
m h
t
abelhas 7.2.3 Algoritmo de abelhas
a
60
N c Luniver Press
s
S
e )1 0 7.2.4 Algoritmo de abelhas virtuais
c
on
(2
0 7.2.5 Otimização da Colônia Artificial de Abelhas 61
d E d t
eu
on
eu
Machine Translated by Google

CONTEÚDO iii

8 Otimização de enxame 63

8.1 Swarm Intelligence 8.2 63


Algoritmos PSO 8.3 PSO 64
acelerado 65
8.4 Implementação 8.5 66
Análise de Convergência 69

9 Busca de Harmonia 73

9.1 Harmônicos e Frequências 9.2 73


Busca de Harmonia 9.3 74
Implementação 76

10 Algoritmo do Vaga-lume 81

10.1 Comportamento dos vaga- 81


lumes 10.2 Algoritmo do 82
vaga-lume 10.3 Intensidade e atratividade da 83
luz 10.4 Escalas e assimptóticas 10.5 84
Implementação 10.6 86
Variantes FA 89
10.7 Projeto da Mola 89

11 Algoritmo do Morcego 97

11.1 Ecolocalização de morcegos 97


11.1.1 Comportamento de micromorcegos 97
11.1.2 Acústica de Ecolocalização 98
11.2 Algoritmo do 98
Morcego 11.2.1 Movimento dos Morcegos Virtuais 99
11.2.2 Loudness e Emissão de Pulso 100
11.3 Validação e Discussões 101
11.4 Implementação 11.5 102
Outros Tópicos 103

12 Busca do Cuco 105


M e t ahe emreu
pseed steu
Ac
nEUe eu
og 12.1 Comportamento reprodutivo do 105
-
rt ri
em
Xin-She Yang h
t
cuco 12.2 Vôos de L 106
a m
NS c Luniver Press s
´evy 12.3 Pesquisa do cuco 106
ce
on
)10
0
d E d t
eu
on
eu
(2 12.4 Escolha dos Parâmetros 108
Machine Translated by Google

4 CONTEÚDO

12.5 Implementação 108

13 ANNs e Máquina de Vetor de Suporte 117

13.1 Redes Neurais Artificiais 117


13.1.1 Neurônio Artificial 117
13.1.2 Redes Neurais 118

13.1.3 Algoritmo de retropropagação 13.2 119

Máquina de vetores de suporte 121


13.2.1 Classificações 121

13.2.2 Teoria do aprendizado estatístico 121

13.2.3 Máquina de vetores de suporte linear 122


13.2.4 Funções de kernel e SVM não linear 125

14 Metaheurísticas – Uma Abordagem Unificada 127

14.1 Intensificação e Diversificação 127

14.2 Formas de Intensificação e Diversificação 14.3 128

Generalized Evolutionary Walk Algorithm (GEWA) 130

14.4 Estratégia Eagle 133

14.5 Outros Algoritmos Metaheurísticos 135


14.5.1 Pesquisa Tabu 135

14.5.2 Algoritmo Fotossintético e Enzimático 14.5.3 135

Sistema Imunológico Artificial e Outros 14.6 Pesquisas 136


Futuras 137
14.6.1 Problemas em aberto 137

14.6.2 Inspirar-se ou não inspirar-se 137

Referências 141

Índice 147

M e t ahe emreu
pseed steu
Ac
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

c
e
o
nd
)10
0
E d t
eu
on
eu
(2
Machine Translated by Google

em

Prefácio à segunda edição

Desde a publicação da primeira edição deste livro em 2008, desenvolvimentos


significativos foram feitos em metaheurísticas, e novos algoritmos metaheurísticos
inspirados na natureza surgiram, incluindo busca de cuco e algoritmos de morcego.
Muitos leitores reservaram um tempo para me escrever pessoalmente, fornecendo
feedback valioso, solicitando mais detalhes sobre a implementação do algoritmo ou
simplesmente expressando interesse em aplicar esses novos algoritmos em seus
aplicativos.
Nesta edição revisada, nos esforçamos para revisar os desenvolvimentos mais
recentes em algoritmos metaheurísticos, para incorporar as sugestões dos leitores
e para fornecer uma descrição mais detalhada dos algoritmos. Em primeiro lugar,
adicionamos descrições detalhadas de como incorporar restrições na implementação
real. Em segundo lugar, adicionamos três capítulos sobre evolução diferencial,
busca de cuco e algoritmos de morcego, enquanto alguns capítulos existentes, como
algoritmos de formigas e algoritmos de abelhas, foram combinados em um devido à
sua similaridade. Em terceiro lugar, também explicamos redes neurais artificiais e
máquinas de vetores de suporte na estrutura de otimização e metaheurística.
Finalmente, tentamos neste livro fornecer uma abordagem consistente e unificada
para algoritmos metaheurísticos, desde um breve histórico no primeiro capítulo até a
abordagem unificada no último capítulo.
Além disso, fornecemos mais programas Matlab. Ao mesmo tempo, também
omitimos algumas das implementações, como algoritmos genéticos, pois sabemos
que existem muitos bons pacotes de software (comerciais e de curso aberto). Isso
nos permite focar mais na implementação de novos algoritmos. Alguns dos programas
também possuem uma versão para otimização restrita, e os leitores podem modificá-
los para seus próprios aplicativos.
Mesmo com a boa intenção de cobrir os algoritmos metaheurísticos mais
populares, a escolha dos algoritmos é uma tarefa difícil, pois não temos espaço para
cobrir todos os algoritmos. A omissão de um algoritmo não significa que ele não seja
popular. Na verdade, alguns algoritmos são muito poderosos e usados rotineiramente
em muitas aplicações. Bons exemplos são a busca tabu e os algoritmos combinatórios,
e os leitores interessados podem consultar as referências fornecidas no final do
livro. O esforço em escrever este pequeno livro vale a pena se este livro puder de
alguma forma estimular o interesse dos leitores por metaheurísticas.

Xin-She Yang

M e t ahe emreu agosto de 2010


pseed steu
Ac
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
o
)10
0
nd on (2
E d t
eu eu
Machine Translated by Google

Capítulo 1

INTRODUÇÃO

Não é exagero dizer que a otimização está em toda parte, do projeto de engenharia
ao planejamento de negócios e do roteamento da Internet ao planejamento de
férias. Em quase todas essas atividades, procuramos atingir determinados
objetivos ou otimizar algo como lucro, qualidade e tempo.
Como recursos, tempo e dinheiro são sempre limitados em aplicações do mundo
real, temos que encontrar soluções para otimizar o uso desses valiosos recursos
sob várias restrições. A otimização ou programação matemática é o estudo de tais
problemas de planejamento e projeto usando ferramentas matemáticas.
Atualmente, as simulações computacionais tornam-se uma ferramenta indispensável
para resolver tais problemas de otimização com vários algoritmos de busca eficientes.

1.1 OTIMIZAÇÃO

Matematicamente falando, é possível escrever a maioria dos problemas de


otimização na forma genérica

minimizar
xÿn consertar), (i = 1, 2, ..., M), (1.1)

sujeito a hj (x) = 0, (j = 1, 2, ..., J), (1.2)

gk(x) ÿ 0, (k = 1, 2, ..., K), (1.3)

onde fi(x), hj (x) e gk(x) são funções do vetor de design


T .
x = (x1, x2, ..., xn) (1.4)

Aqui os componentes xi de x são chamados de variáveis de projeto ou de decisão,


e podem ser contínuas reais, discretas ou uma mistura dessas duas.
As funções fi(x) onde i = 1, 2, ..., M são chamadas de funções objetivo ou
M e t ahe emreu
pseed simplesmente
steu Ac funções de custo, e no caso de M = 1, há apenas um único objetivo.
eu
nEUe
- O espaço gerado pelas variáveis de decisão é chamado de
og
ri
rt
em
Xin-She Yang
espaço de design ou espaço de busca n, enquanto o espaço formado pelos valores
t
h
a m
N c Luniver Press s
S
c
e da função objetivo é chamado de espaço de solução ou espaço de resposta. As
)1 0
o
nd 0
E d t
eu
on
eu
(2
igualdades para hj e as desigualdades para gk são chamadas de restrições. vale a pena apontar

Algoritmos Metaheurísticos Inspirados na Natureza, 2ª Edição por Xin-She Yang 1


Copyright c 2010 Luniver Press
Machine Translated by Google

2 CAPÍTULO 1. INTRODUÇÃO

Observe que também podemos escrever as desigualdades de outra forma ÿ 0, e


também podemos formular os objetivos como um problema de maximização.
Em um caso raro, mas extremo, em que não há objetivo algum, existem
apenas restrições. Tal problema é chamado de problema de viabilidade porque
qualquer solução viável é uma solução ótima.
Se tentarmos classificar os problemas de otimização de acordo com o número
de objetivos, haverá duas categorias: objetivo único M = 1 e multiobjetivo M > 1.
A otimização multiobjetivo também é chamada de otimização multicritério ou
mesmo otimização multiatributos na literatura. Em problemas do mundo real, a
maioria das tarefas de otimização é multiobjetivo. Embora os algoritmos que
discutiremos neste livro sejam igualmente aplicáveis à otimização multiobjetivo
com algumas modificações, daremos ênfase principalmente aos problemas de
otimização de objetivo único.
Da mesma forma, também podemos classificar a otimização em termos do
número de restrições J + K. Se não houver nenhuma restrição J = K = 0, então
ele é chamado de problema de otimização irrestrita. Se K = 0 e J ÿ 1, é chamado
de problema com restrição de igualdade, enquanto J = 0 e K ÿ 1 torna-se um
problema com restrição de desigualdade. Vale ressaltar que em algumas
formulações na literatura de otimização, as igualdades não são explicitamente
incluídas, e apenas as desigualdades são incluídas. Isso ocorre porque uma
igualdade pode ser escrita como duas desigualdades. Por exemplo, h(x) = 0 é
equivalente a h(x) ÿ 0 e h(x) ÿ 0.
Também podemos usar os formulários de função reais para classificação. As
funções objetivo podem ser lineares ou não lineares. Se as restrições hj e gk
forem todas lineares, torna-se um problema linearmente restrito. Se as restrições
e as funções objetivo forem todas lineares, torna-se um problema de programação
linear. Aqui 'programação' não tem nada a ver com programação de
computadores, significa planejamento e/ou otimização. No entanto, de modo
geral, todos os fi , hj e gk são não lineares, temos que lidar com um problema de
otimização não linear.

1.2 BUSCA DA OTIMIDADE

Depois que um problema de otimização é formulado corretamente, a principal


tarefa é encontrar as soluções ótimas por meio de algum procedimento de
solução usando as técnicas matemáticas corretas.
Falando figurativamente, buscar a solução ideal é como uma caça ao tesouro.
Imagine que estamos tentando caçar um tesouro escondido em uma paisagem
montanhosa dentro de um limite de tempo. Em um extremo, suponha que
e
M t ah r e em
steuestamos cegos sem qualquer orientação, o processo de busca é essencialmente
eu
pseed Ac
eu
nEUe
- uma busca aleatória pura, que geralmente não é eficiente como podemos esperar.
og
ri
rt
em
Xin-She Yang
Em outro extremo, se nos disserem que o tesouro está colocado no pico mais
t
h
a m
NS c Luniver Press
s

ce
alto de uma região conhecida, subiremos diretamente até o penhasco mais
)1 0
o
nd 20íngreme e tentaremos alcançar o pico mais alto, e esse cenário corresponde à clássica escalad
E d t on (
eu eu
Machine Translated by Google

1.2 BUSCA DA OTIMIDADE 3

técnicas. Na maioria dos casos, nossa busca está entre esses extremos. Não estamos
vendados e não sabemos onde procurar. É uma ideia tola vasculhar cada centímetro
quadrado de uma região montanhosa extremamente grande para encontrar o tesouro.

O cenário mais provável é que faremos um passeio aleatório, enquanto procuramos


algumas dicas; olhamos para algum lugar quase aleatoriamente, depois passamos
para outro lugar plausível, depois outro e assim por diante. Essa caminhada aleatória
é uma característica principal dos algoritmos de busca modernos. Obviamente,
podemos fazer a caça ao tesouro sozinhos, então todo o caminho é uma busca
baseada em trajetória, e o recozimento simulado é desse tipo. Alternativamente,
podemos pedir a um grupo de pessoas para fazer a caça e compartilhar as informações
(e qualquer tesouro encontrado), e este cenário usa a chamada inteligência de
enxame e corresponde à otimização de enxame de partículas, como discutiremos mais adiante em deta
Se o tesouro for realmente importante e se a área for extremamente grande, o
processo de busca levará muito tempo. Se não houver limite de tempo e se qualquer
região for acessível (por exemplo, nenhuma ilha em um lago), é teoricamente possível
encontrar o tesouro final (a solução ótima global).
Obviamente, podemos refinar um pouco mais nossa estratégia de busca. Alguns
caçadores são melhores que outros. Só podemos manter os melhores caçadores e
recrutar novos, isso é algo semelhante aos algoritmos genéticos ou algoritmos
evolutivos onde os agentes de busca estão melhorando. De fato, como veremos em
quase todos os algoritmos metaheurísticos modernos, tentamos usar as melhores
soluções ou agentes, e randomizar (ou substituir) os não tão bons, enquanto
avaliamos a competência (fitness) de cada indivíduo em combinação com o histórico
do sistema (uso da memória). Com tal equilíbrio, pretende-se projetar algoritmos de
otimização melhores e mais eficientes.
A classificação do algoritmo de otimização pode ser realizada de várias maneiras.
Uma maneira simples é observar a natureza do algoritmo, e isso divide os algoritmos
em duas categorias: algoritmos determinísticos e algoritmos estocásticos. Algoritmos
determinísticos seguem um procedimento rigoroso, e seu caminho e valores tanto
das variáveis de projeto quanto das funções são repetíveis.
Por exemplo, a escalada é um algoritmo determinístico e, para o mesmo ponto de
partida, eles seguirão o mesmo caminho, independentemente de você executar o
programa hoje ou amanhã. Por outro lado, algoritmos estocásticos sempre possuem
alguma aleatoriedade. Os algoritmos genéticos são um bom exemplo, as strings ou
soluções na população serão diferentes cada vez que você executar um programa,
pois os algoritmos usam alguns números pseudo-aleatórios, embora os resultados
finais possam não ser uma grande diferença, mas os caminhos de cada indivíduo são
não exatamente repetível.
M e t ahe emreu Além disso, existe um terceiro tipo de algoritmo que é uma mistura, ou um híbrido,
pseed st
Ac
de eualgoritmos determinísticos e estocásticos. Por exemplo, subir uma colina com
nEUe eu og
uma reinicialização aleatória é um bom exemplo. A ideia básica é
-
rt ri
em
Xin-She Yang h
t
m
a
NS c Luniver Press use o algoritmo determinístico, mas comece com pontos iniciais diferentes. Isso tem
s

ce
on
)1
certas
0
0vantagens sobre uma simples técnica de escalada, que pode ser
d E on
(2
d t
eu eu
Machine Translated by Google

4 CAPÍTULO 1. INTRODUÇÃO

preso em um pico local. No entanto, como há um componente aleatório nesse algoritmo


híbrido, geralmente o classificamos como um tipo de algoritmo estocástico na literatura
de otimização.

1.3 METAHEURÍSTICA INSPIRADA NA NATUREZA

A maioria dos algoritmos convencionais ou clássicos são determinísticos. Por exemplo,


o método simplex na programação linear é determinístico. Alguns algoritmos de
otimização determinísticos utilizam a informação de gradiente, são chamados de
algoritmos baseados em gradiente. Por exemplo, o conhecido algoritmo de Newton-
Raphson é baseado em gradiente, pois usa os valores da função e suas derivadas e
funciona extremamente bem para problemas unimodais suaves. Porém, se houver
alguma descontinuidade na função objetivo, ela não funciona bem. Neste caso, um
algoritmo não gradiente é o preferido. Algoritmos não baseados em gradiente ou livres
de gradiente não usam nenhuma derivada, mas apenas os valores da função. A busca
padrão de Hooke-Jeeves e o simplex descendente de Nelder-Mead são exemplos de
algoritmos livres de gradiente.
Para algoritmos estocásticos, em geral temos dois tipos: heurísticos e
metaheurísticos, embora a diferença entre eles seja pequena. Falando vagamente,
heurística significa 'encontrar' ou 'descobrir por tentativa e erro'. Soluções de qualidade
para um problema de otimização difícil podem ser encontradas em um período de
tempo razoável, mas não há garantia de que soluções ótimas sejam alcançadas. Ele
espera que esses algoritmos funcionem na maior parte do tempo, mas não o tempo
todo. Isso é bom quando não queremos necessariamente as melhores soluções, mas
boas soluções que são facilmente alcançáveis.
Um desenvolvimento adicional sobre os algoritmos heurísticos são os chamados
algoritmos meta heurísticos. Aqui meta- significa 'além' ou 'nível superior', e eles
geralmente funcionam melhor do que heurísticas simples. Além disso, todos os
algoritmos meta-heurísticos usam certos tradeoffs de randomização e busca local.
Vale ressaltar que não existem definições consensuais de heurísticas e meta-
heurísticas na literatura; alguns usam 'heurística' e 'metaheurística' indistintamente.
No entanto, a tendência recente tende a nomear todos os algoritmos estocásticos com
randomização e busca local como metaheurística. Aqui também usaremos essa
convenção. A randomização fornece uma boa maneira de passar da pesquisa local
para a pesquisa em escala global. Portanto, quase todos os algoritmos metaheurísticos
pretendem ser adequados para otimização global.
Heurística é uma forma de tentativa e erro para produzir soluções aceitáveis para
um problema complexo em um tempo razoavelmente prático. A complexidade do
problema de interesse torna impossível buscar todas as soluções ou combinações
M e t ahe emreu
eed
ps possíveis,
steu
Ac o objetivo é encontrar uma boa solução viável em uma escala de tempo
nEU eu
og
e- aceitável. Não há garantia de que as melhores soluções possam ser encontradas e nem
ri
rt
em
Xin-She Yang t

a mesmo sabemos se um algoritmo funcionará e por que, se funcionar. A ideia é ter um


m
s
h

NS c Luniver Press
)1
ce
algoritmo eficiente, mas prático, que funcione na maior parte do tempo e seja capaz de
0
on 0
(2 produzir
d E d t
eu
on
eu
soluções de boa qualidade. Entre
Machine Translated by Google

1.4 BREVE HISTÓRIA DA METAHEURÍSTICA 5

das soluções de qualidade encontradas, espera-se que algumas delas sejam quase
ótimas, embora não haja garantia de tal otimalidade.
Dois componentes principais de qualquer algoritmo metaheurístico são: intensificação
e diversificação, ou exploração e exploração. Diversificação significa gerar diversas
soluções de forma a explorar o espaço de busca em escala global, enquanto intensificação
significa focar na busca em uma região local explorando a informação de que uma boa
solução atual é encontrada nessa região. Isto está em combinação com a seleção das
melhores soluções. A seleção do melhor garante que as soluções convergirão para a
otimalidade, enquanto a diversificação via randomização evita que as soluções fiquem
presas em ótimos locais e, ao mesmo tempo, aumenta a diversidade das soluções. A boa
combinação desses dois componentes principais geralmente garantirá que a otimização
global seja alcançável.

Algoritmos metaheurísticos podem ser classificados de várias maneiras. Uma maneira


é classificá-los como: baseados na população e baseados na trajetória. Por exemplo, os
algoritmos genéticos são baseados em população, pois usam um conjunto de strings,
assim como a otimização de enxame de partículas (PSO), que usa vários agentes ou
partículas.
Por outro lado, o recozimento simulado usa um único agente ou solução que se move
através do espaço de design ou espaço de busca em um estilo por partes.
Um movimento ou solução melhor é sempre aceito, enquanto um movimento não tão bom
pode ser aceito com certa probabilidade. Os passos ou movimentos traçam uma trajetória
no espaço de busca, com probabilidade não nula de que essa trajetória alcance o ótimo
global.
Antes de introduzirmos todos os algoritmos meteheurísticos populares em detalhes, vamos
vamos olhar para a sua história brevemente.

1.4 BREVE HISTÓRICO DA METAHEURÍSTICA

Ao longo da história, especialmente nos primeiros períodos da história humana, nós,


humanos, abordamos a solução de problemas sempre como heurística ou meta-heurística
– por tentativa e erro. Muitas descobertas importantes foram feitas por 'pensar fora da
caixa' e muitas vezes por acidente; isso é heurística.
O momento Eureka de Arquimedes foi um triunfo heurístico. Na verdade, nossa experiência
diária de aprendizagem (pelo menos quando criança) é predominantemente heurística.
Apesar de sua natureza onipresente, a metaheurística como método científico para
resolução de problemas é de fato um fenômeno moderno, embora seja difícil identificar
quando o método metaheurístico foi usado pela primeira vez. Alan Turing foi provavelmente
o primeiro a usar algoritmos heurísticos durante a Segunda Guerra Mundial, quando
M e t ahe emreu
eed
ps estava
steu
Ac quebrando as cifras Enigma alemãs em Bletchley Park. Turing chamou seu método
nEU eu
og
e- de pesquisa de pesquisa heurística, pois era de se esperar que funcionasse
ri
rt
em
Xin-She Yang t

a na maioria das vezes, mas não havia garantia de encontrar a solução correta, mas foi um
m
s
h

NS c Luniver Press
)1
ce
tremendo sucesso. Em 1945, Turing foi recrutado para o Laboratório Nacional de Física
0
on 0
(2
d E d t
eu
on
eu
(NPL), Reino Unido, onde estabeleceu seu projeto para
Machine Translated by Google

6 CAPÍTULO 1. INTRODUÇÃO

o Mecanismo de Computação Automática (ACE). Em um relatório da NPL sobre


máquinas inteligentes em 1948, ele delineou suas ideias inovadoras de inteligência
e aprendizado de máquinas, redes neurais e algoritmos evolutivos.
As décadas de 1960 e 1970 foram as duas décadas importantes para o
desenvolvimento de algoritmos evolutivos. Primeiro, John Holland e seus
colaboradores da Universidade de Michigan desenvolveram os algoritmos genéticos
nas décadas de 1960 e 1970. Já em 1962, Holland estudou o sistema adaptativo e foi
o primeiro a usar manipulações de cruzamento e recombinação para modelar tal
sistema. Seu livro seminal resumindo o desenvolvimento de algoritmos genéticos foi
publicado em 1975. No mesmo ano, De Jong concluiu sua importante dissertação
mostrando o potencial e o poder dos algoritmos genéticos para uma ampla gama de
funções objetivas, ruidosas, multimodais ou mesmo descontínuas.

Em essência, um algoritmo genético (AG) é um método de busca baseado na


abstração da evolução darwiniana e seleção natural de sistemas biológicos e sua
representação nos operadores matemáticos: cruzamento ou recombinação, mutação,
aptidão e seleção do mais apto. Desde então, os algoritmos genéticos tornaram-se
tão bem-sucedidos na solução de uma ampla gama de problemas de otimização que
vários milhares de artigos de pesquisa e centenas de livros foram escritos. Algumas
estatísticas mostram que a grande maioria das empresas da Fortune 500 agora os
está usando rotineiramente para resolver problemas difíceis de otimização
combinatória, como planejamento, ajuste de dados e programação.
Durante o mesmo período, Ingo Rechenberg e Hans-Paul Schwefel, ambos então
na Universidade Técnica de Berlim, desenvolveram uma técnica de busca para
resolver problemas de otimização em engenharia aeroespacial, chamada estratégia
evolutiva, em 1963. Mais tarde, Peter Bienert juntou-se a eles e começou a construir
um experimentador automático usando regras simples de mutação e seleção.
Não houve cruzamento nesta técnica, apenas mutação foi usada para produzir uma
descendência e uma solução melhorada foi mantida a cada geração.
Este era essencialmente um algoritmo simples de subida de encosta no estilo de
trajetória com randomização. Já em 1960, Lawrence J. Fogel pretendia usar a
evolução simulada como um processo de aprendizado como uma ferramenta para estudar a intelig
Então, em 1966, LJ Fogel, juntamente com AJ Owen e MJ Walsh, desenvolveram a
técnica de programação evolutiva, representando soluções como máquinas de
estado finito e mutando aleatoriamente uma dessas máquinas. As ideias e métodos
inovadores acima evoluíram para uma disciplina muito mais ampla, chamada
algoritmos evolutivos e/ou computação evolutiva.
Embora nosso foco neste livro sejam algoritmos metaheurísticos, outros
algoritmos podem ser pensados como uma técnica de otimização heurística. Isso
M e t ahe emreu inclui redes neurais artificiais, máquinas vetoriais de suporte e muitas outras técnicas
eed
ps steu
de aprendizado de máquina. De fato, todos eles pretendem minimizar seus erros de
Ac
nEU eu
og
e-
rt
em
Xin-She Yang
aprendizado e erros de previsão (capacidade) por meio de tentativas iterativas e
ri
t
h
a m
erros. c
NS Luniver Press s

ce
on
)10
0
d E on
(2
d t
eu eu
Machine Translated by Google

1.4 BREVE HISTÓRICO DA METAHEURÍSTICA 7

As redes neurais artificiais agora são usadas rotineiramente em muitas aplicações.


Em 1943, W. McCulloch e W. Pitts propuseram os neurônios artificiais como unidades
simples de processamento de informações. O conceito de uma rede neural
provavelmente foi proposto pela primeira vez por Alan Turing em seu relatório NPL
de 1948 sobre 'maquinaria inteligente'. Desenvolvimentos significativos foram
realizados a partir das décadas de 1940 e 1950 até a década de 1990 com mais de 60 anos de história.
A máquina de vetores de suporte como uma técnica de classificação pode
remontar ao trabalho anterior de V. Vapnik em 1963 em classificadores lineares, e a
classificação não linear com técnicas de kernel foi desenvolvida por V. Vapnik e seus
colaboradores na década de 1990. Um resumo sistemático no livro de Vapnik sobre
a Natureza da Teoria da Aprendizagem Estatística foi publicado em 1995.
As duas décadas de 1980 e 1990 foram os momentos mais emocionantes para
algoritmos metaheurísticos. O próximo grande passo é o desenvolvimento do
recozimento simulado (SA) em 1983, uma técnica de otimização, iniciada por S.
Kirkpatrick, CD Gellat e MP Vecchi, inspirados no processo de recozimento de
metais. É um algoritmo de busca baseado em trajetória começando com uma solução
inicial de estimativa em alta temperatura e gradualmente resfriando o sistema. Uma
mudança ou nova solução é aceita se for melhor; caso contrário, é aceito com uma
probabilidade, o que possibilita ao sistema escapar de qualquer ótimo local. Espera-
se então que, se o sistema for resfriado lentamente, a solução ótima global pode ser
alcançada.
O primeiro uso real de memória em metaheurísticas modernas provavelmente se
deve à busca Tabu de Fred Glover em 1986, embora seu livro seminal sobre busca
Tabu tenha sido publicado mais tarde em 1997.
Em 1992, Marco Dorigo concluiu sua tese de doutorado sobre otimização e
algoritmos naturais, na qual descreveu seu trabalho inovador sobre otimização de
colônias de formigas (ACO). Esta técnica de busca foi inspirada no enxame de
inteligência de formigas sociais usando feromônio como mensageiro químico. Então,
em 1992, John R. Koza, da Universidade de Stanford, publicou um tratado sobre
programação genética que lançou as bases de toda uma nova área de aprendizado
de máquina, revolucionando a programação de computadores. Já em 1988, Koza
aplicou sua primeira patente sobre programação genética. A idéia básica é usar o
princípio genético para criar programas de computador de forma a produzir
gradualmente os melhores programas para um determinado tipo de problema.
Um pouco mais tarde, em 1995, outro progresso significativo é o desenvolvimento
da otimização de enxame de partículas (PSO) pelo psicólogo social americano James
Kennedy e pelo engenheiro Russell C. Eberhart. Falando vagamente, o PSO é um
algoritmo de otimização inspirado na inteligência de enxame de peixes e pássaros e
até mesmo no comportamento humano. Os múltiplos agentes, chamados de
M e t ahepartículas,
em
reu
enxameiam pelo espaço de busca a partir de algum palpite inicial aleatório.
pseed st
Ac
eu
O enxame comunica o melhor atual e compartilha o melhor global para focar nas
nEUe eu og
soluções de qualidade. Desde o seu desenvolvimento, houve cerca de
-
rt ri
em
Xin-She Yang h
t

20 variantes diferentes de técnicas de otimização de enxame de partículas e foram


a m
NS c Luniver Press s

ce
on
)1
aplicadas
0
0 a quase todas as áreas de problemas difíceis de otimização. Há
d E on
(2
d t
eu eu
Machine Translated by Google

8 CAPÍTULO 1. INTRODUÇÃO

alguma forte evidência de que o PSO é melhor do que os algoritmos de busca


tradicionais e ainda melhor do que os algoritmos genéticos para muitos tipos de
problemas, embora isso esteja longe de ser conclusivo.
Por volta de 1996 e posteriormente em 1997, R. Storn e K. Price desenvolveram
seu algoritmo evolucionário baseado em vetores, chamado evolução diferencial (DE),
e esse algoritmo se mostra mais eficiente do que os algoritmos genéticos em muitas
aplicações.
Em 1997, a publicação dos 'teoremas do almoço grátis para otimização' por DH
Wolpert e WG Macready chocou a comunidade de otimização. Os pesquisadores
têm sempre tentado encontrar algoritmos melhores, ou mesmo algoritmos
universalmente robustos, para otimização, especialmente para problemas difíceis
de otimização NP-difícil. No entanto, esses teoremas afirmam que, se o algoritmo A
tiver um desempenho melhor do que o algoritmo B para algumas funções de
otimização, o desempenho de B será melhor do que o de A para outras funções. Ou
seja, se for calculada a média de todo o espaço funcional possível, ambos os
algoritmos A e B terão um desempenho médio igualmente bom. Alternativamente,
não existem algoritmos universalmente melhores. Isso é decepcionante, certo?
Então, as pessoas perceberam que não precisamos da média sobre todas as funções
possíveis para um determinado problema de otimização. O que queremos é encontrar
as melhores soluções, o que não tem nada a ver com a média de todo o espaço
funcional possível. Além disso, podemos aceitar o fato de que não existe uma
ferramenta universal ou mágica, mas sabemos por nossa experiência que alguns
algoritmos de fato superam outros em determinados tipos de problemas de
otimização. Portanto, a pesquisa agora se concentra em encontrar os melhores e
mais eficientes algoritmos para um determinado problema. O objetivo é projetar
algoritmos melhores para a maioria dos tipos de problemas, não para todos os problemas. Portant
Na virada do século 21, as coisas se tornaram ainda mais emocionantes. Primeiro,
Zong Woo Geem et al. em 2001 desenvolveu o algoritmo de busca de harmonia (HS),
que tem sido amplamente aplicado na solução de vários problemas de otimização,
como distribuição de água, modelagem de transporte e agendamento. Em 2004, S.
Nakrani e C. Tovey propuseram o algoritmo de abelhas e sua aplicação para otimizar
centros de hospedagem na Internet, seguido pelo desenvolvimento de um novo
algoritmo de abelhas por DT Pham et al. em 2005 e a colônia artificial de abelhas
(ABC) por D. Karaboga em 2005. Em 2008, o autor deste livro desenvolveu o algoritmo
do vaga-lume (FA)1 . Seguiram-se alguns artigos de pesquisa sobre o algoritmo do
vaga-lume, e esse algoritmo atraiu uma ampla gama de interesses. Em 2009, Xin-She
Yang, da Universidade de Cambridge, Reino Unido, e Suash Deb, do Raman College
of Engineering, Índia, introduziram um algoritmo eficiente de pesquisa de cuco (CS),
e foi demonstrado que o CS é muito mais eficaz do que a maioria dos algoritmos
M e t ahe emreu metaheurísticos existentes.
pseed steu
Ac
nEUe eu
og
-

1X. S. Yang, Algoritmos Meteheurísticos Inspirados na Natureza, Luniver Press, (2008)


rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press s

c
e
on
)10
0
d E on
(2
d t
eu eu
Machine Translated by Google

1.4 BREVE HISTÓRICO DA METAHEURÍSTICA 9

incluindo otimização de enxame de partículas2 . Em 2010, o autor deste livro


desenvolveu um algoritmo inspirado em morcegos para otimização contínua, cuja
eficiência é bastante promissora.
Como podemos ver, mais e mais algoritmos metaheurísticos estão sendo
desenvolvidos. Uma gama tão diversificada de algoritmos exige um resumo sistemático
de vários algoritmos metaheurísticos, e este livro é uma tentativa de apresentar todas
as metaheurísticas inspiradas na natureza mais recentes com diversas aplicações.

Discutiremos todos os principais algoritmos metaheurísticos modernos no restante


deste livro, incluindo recozimento simulado (SA), algoritmos genéticos (GA), otimização
de colônia de formigas (ACO), algoritmos de abelhas (BA), evolução diferencial (DE),
otimização de enxame de partículas (PSO), busca de harmonia (HS), algoritmo do vaga-
lume (FA), busca do cuco (CS) e algoritmo inspirado no morcego (BA), entre outros.

REFERÊNCIAS

1. CM Bishop, Redes Neurais para Reconhecimento de Padrões, Universidade de Oxford


Press, Oxford, 1995.
2. BJ Copeland, The Essential Turing, Oxford University Press, 2004.
3. BJ Copeland, Automatic Computing Engine de Alan Turing, Oxford Uni
Verity Press, 2005.
4. K. De Jong, Análise do Comportamento de uma Classe de Sistemas Adaptativos Genéticos
tems, tese de doutorado, Universidade de Michigan, Ann Anbor, 1975.
5. M. Dorigo, Otimização, Aprendizado e Algoritmos Naturais, tese de doutorado, Po
escola técnica de Milão, Itália, 1992.
6. LJ Fogel, AJ Owens e MJ Walsh, Artificial Intelligence Through Simulated Evolution,
Wiley, 1966.
7. ZW Geem, JH Kim e GV Loganathan, Uma nova otimização heurística: busca Harmony,
Simulação, 76(2), 60-68 (2001).
8. F. Glover e M. Laguna, Tabu Search, Kluwer Academic Publishers, Boston,
1997.

9. J. Holland, Adaptação em sistemas naturais e artificiais, Universidade de Michi


Gan Press, Ann Anbor, 1975.
10. P. Judea, Heuristics, Addison-Wesley, 1984.
11. D. Karaboga, Uma ideia baseada em enxame de abelhas para otimização numérica,
Relatório Técnico, Universidade Erciyes, 2005.
M e t ahe emreu
pseed 12.
steu J. Kennedy e R. Eberhart, otimização de enxame de partículas, em: Proc. do IEEE Int.
Ac
nEUe eu
og
- conf. em Redes Neurais, Piscataway, NJ, pp. 1942-1948 (1995).
ri
rt
em
Xin-She Yang h
t

a m
NS c Luniver Press s

c
e
on
)1
2Novel pesquisa cuco 'bate' otimização de enxame de partículas, Science Daily, artigo de notícias
0
0
d E on
(2 de maio de 2010), www.sciencedaily.com
(28
d t
eu eu
Machine Translated by Google

10 CAPÍTULO 1. INTRODUÇÃO

13. S. Kirkpatrick, CD Gellat e MP Vecchi, Otimização por simulação


recozimento, Science, 220, 671-680 (1983).
14. JR Koza, Programação Genética: Uma Programação de Computadores por
Meios de Seleção Natural, MIT Press, 1992.
15. S. Nakrani e C. Tovey, Sobre abelhas e alocação dinâmica de servidores em centros
de hospedagem na Internet, Adaptive Behavior, 12, 223-240 (2004).
16. DT Pham, A. Ghanbarzadeh, E. Koc, S. Otri, S. Rahim e M. Zaidi, O algoritmo das
abelhas, Nota Técnica, Centro de Engenharia de Manufatura, Cardiff University,
2005.
17. A. Schrijver, Sobre a história da otimização combinatória (até 1960), em: Handbook
of Discrete Optimization (Eds K. Aardal, GL Nemhauser, R.
Weismantel), Elsevier, Amsterdam, pp.1-68 (2005).
18. HT Siegelmann e ED Sontag, Turing computabilidade com redes neurais, Appl.
Matemática. Lett., 4, 77-80 (1991).
19. R. Storn e K. Price, evolução diferencial - uma heurística simples e eficiente para
otimização global em espaços contínuos, Journal of Global Optimization, 11,
341-359 (1997).
20. AM Turing, Intelligent Machinery, National Physical Laboratory, técnico
relatório, 1948.
21. V. Vapnik, The Nature of Statistical Learning Theory, Springer-Verlag, New
Iorque, 1995.
22. V. Vapnik, S. Golowich, A. Smola, Método de vetor de suporte para aproximação
de função, estimativa de regressão e processamento de sinal, em: Advances in
Neural Information Processing System 9 (Eds. M. Mozer, M. Jordan e T . Petsche),
MIT Press, Cambridge MA, 1997.
23. DH Wolpert e WG Macready, Nenhum teorema de almoço grátis para otimização,
IEEE Transaction on Evolutionary Computation, 1, 67-82 (1997).
24. XS Yang, Algoritmos Metaheurísticos Inspirados na Natureza, Luniver Press, (2008).
25. XS Yang, algoritmos Firefly para otimização multimodal, Proc. 5º Simpósio de
Algoritmos Estocásticos, Fundamentos e Aplicações, SAGA 2009, Eds. O.
Watanabe e T. Zeugmann, Lecture Notes in Computer Science, 5792, 169-178 (2009).

26. XS Yang e S. Deb, pesquisa de cuco via vôos de L´evy, em: Proc. do Congresso
Mundial sobre Natureza e Computação de inspiração biológica (NaBic 2009), IEEE
Publications, EUA, pp. 210-214 (2009).
27. XS Yang e S. Deb, otimização de engenharia por pesquisa de cuco, Int. j.
Matemática. Modelagem & Num. Otimização, 1, 330-343 (2010).
28. XS Yang, um novo algoritmo metaheurístico inspirado em morcegos, em: Estratégias
M e t ahe emreu
pseed steu
Ac cooperativas inspiradas na natureza para otimização (NICSO 2010) (Eds. JR
eu
nEUe
-
og Gonzalez et al.), Springer, SCI 284, 65-74 (2010 ) .
rt ri
em
Xin-She Yang t

29. História da otimização, http://hse-econ.fi/kitti/opthist.html


h
a m
NS c Luniver Press
s

ce
o
nd
)10
30. Turing Archive for the History of Computing, www.alanturing.net/
0
E d t
eu
on
eu
(2
Machine Translated by Google

Capítulo 2

´
PASSEIOS ALEATÓRIOS E IMPOSTOS VOOS

Da breve análise das principais características dos algoritmos metaheurísticos no


primeiro capítulo, sabemos que a aleatoriedade desempenha um papel importante
tanto na exploração e aproveitamento, quanto na diversificação e intensificação. A
essência de tal randomização é o passeio aleatório. Neste capítulo, revisaremos
brevemente os fundamentos de caminhadas aleatórias, voos de L´evy e cadeias de
Markov. Esses conceitos podem fornecer algumas dicas e insights sobre como e por
que os algoritmos metaheurísticos se comportam.

2.1 VARIÁVEIS ALEATÓRIAS

Grosso modo, uma variável aleatória pode ser considerada como uma expressão cujo
valor é a realização ou resultado de eventos associados a um processo aleatório,
como o nível de ruído na rua. Os valores das variáveis aleatórias são reais, embora
para algumas variáveis, como o número de carros em uma estrada, só possam assumir
valores discretos, e essas variáveis aleatórias são chamadas de variáveis aleatórias
discretas. Se uma variável aleatória, como o ruído em um determinado local, pode
assumir qualquer valor real em um intervalo, ela é chamada de contínua. Se uma
variável aleatória pode ter valores contínuos e discretos, ela é chamada de tipo misto.
Matematicamente falando, uma variável aleatória é uma função que mapeia eventos
para números reais. O domínio desse mapeamento é chamado de espaço amostral.

Para cada variável aleatória, uma função de densidade de probabilidade pode ser
usada para expressar sua distribuição de probabilidade. Por exemplo, o número de
chamadas telefônicas por minuto e o número de usuários de um servidor da Web por
dia obedecem à distribuição de Poisson

ÿ e -eu
p(n; ÿ) = , (n = 0, 1, 2, ...), (2.1)
n!
t ahe em
dM
e
r
eu
ee
ps onde
steu ÿ > 0 é um parâmetro que é a média ou expectativa da ocorrência do evento
Ac
nEU eu og
e- durante um intervalo unitário.
ri
rt
Variáveis aleatórias diferentes terão distribuições diferentes. gaussiano
em
Xin-She Yang h
t

a m
s
NS c Luniver Press
)1
ce
distribuição ou distribuição normal é de longe as distribuições mais populares, porque
0
on
(2
0
d E d o muitas variáveis físicas, incluindo intensidade de luz e er
t neu eu

Algoritmos Metaheurísticos Inspirados na Natureza, 2ª Edição por Xin-She Yang 11


Copyright c 2010 Luniver Press
Machine Translated by Google
´
12 CAPÍTULO 2. PASSEIOS ALEATÓRIOS E VOOS LEVY

erros/incertezas nas medições e muitos outros processos obedecem à


distribuição normal

1 2
2 (x ÿ µ) )
p(x; µ, p = exp[ÿ ÿ ÿ 2ÿ 2ÿ ], ÿÿ < x < ÿ, (2.2)
2

onde µ é a média e ÿ > 0 é o desvio padrão. Essa distribuição normal é muitas


2
vezes denotada por N(µ, ÿ e ÿ = 1, é ). No caso especial quando µ = 0
chamada de distribuição normal padrão, denotada por N(0, 1).
No contexto das metaheurísticas, outra distribuição importante é a chamada
distribuição de L´evy, que é uma distribuição da soma de N variáveis aleatórias
de distribuição idêntica e independente cuja transformada de Fourier assume a
seguinte forma

ÿ FN (k) = exp[ÿN|k| ]. (2.3)

O inverso para obter a distribuição real L(s) não é direto, pois a integral

ÿ
1 b
L(s) = cos(ÿs)e ÿÿ ÿ dÿ, (0 < ÿ ÿ 2), (2.4)
pi
0

não possui formas analíticas, exceto em alguns casos especiais. Aqui L(s) é
chamada de distribuição L´evy com um índice ÿ. Para a maioria das aplicações,
podemos definir ÿ = 1 para simplificar. Dois casos especiais são ÿ = 1 e ÿ = 2.
Quando ÿ = 1, a integral acima torna-se a distribuição de Cauchy. Quando ÿ = 2,
torna-se a distribuição normal. Neste caso, os voos de L´evy tornam-se o
movimento browniano padrão.
Matematicamente falando, podemos expressar a integral (2.4) como uma
série assintótica, e sua aproximação de ordem líder para o comprimento do voo
resulta em uma distribuição de lei de potência
ÿ1ÿb
L(s) ÿ |s| , (2.5)

que é de cauda pesada. A variância dessa distribuição de lei de potência é


infinita para 0 < ÿ < 2. Os momentos divergem (ou são infinitos) para 0 < ÿ < 2, o
que é um obstáculo para a análise matemática.

2.2 PASSEIOS ALEATÓRIOS

Um passeio aleatório é um processo aleatório que consiste em realizar uma


d M e t ahe emreu
e
ps e steusérie de passos aleatórios consecutivos. Matematicamente falando, seja SN
Ac
, então SN faz
denotando a soma de cada passo aleatório consecutivo Xi um passeio aleatório
nEU eu
og
e- ri
rt
em
Xin-She Yang h
t

a m
s
N
NS c Luniver Press

ce
o
nd E
)10
0 SN = Xi = X1 + ... + XN , (2.6)
d t
eu
o
eu
n (2 i=1
Machine Translated by Google

2.2 PASSEIOS ALEATÓRIOS 13

onde Xi é um passo aleatório extraído de uma distribuição aleatória. Essa


relação também pode ser escrita como uma fórmula recursiva

N-1
SN = +XN = SN-1 + XN , (2.7)
i=1

o que significa que o próximo estado SN dependerá apenas do atual estado


existente SN-1 e do movimento ou transição XN do estado existente para o
próximo estado. Esta é tipicamente a principal propriedade de uma cadeia de
Markov a ser introduzida posteriormente.
Aqui, o tamanho ou comprimento do passo em uma caminhada aleatória pode ser fixo ou variável.
Passeios aleatórios têm muitas aplicações em física, economia, estatística,
ciências da computação, ciências ambientais e engenharia.
Considere um cenário, um bêbado anda em uma rua, a cada passo, ele pode
ir para frente ou para trás aleatoriamente, isso forma uma caminhada aleatória
em uma dimensão. Se esse bêbado andar em um campo de futebol, ele pode
andar em qualquer direção aleatoriamente, isso se torna um passeio aleatório
2D. Matematicamente falando, um passeio aleatório é dado pela seguinte equação

St+1 = St + peso, (2.8)

onde St é a localização atual ou estado em t, e wt é uma etapa ou variável


aleatória com uma distribuição conhecida.
Se cada passo ou salto for realizado no espaço n-dimensional, o passeio
aleatório discutido anteriormente

N
SN = XI , (2.9)
i=1

torna-se um passeio aleatório em dimensões superiores. Além disso, não há


razão para que cada comprimento de passo seja fixo. De fato, o tamanho do
passo também pode variar de acordo com uma distribuição conhecida. Se o
comprimento do passo obedecer à distribuição gaussiana, o passeio aleatório
torna-se o movimento browniano (ver Fig. 2.1).
Em teoria, à medida que o número de passos N aumenta, o teorema do limite
central implica que o passeio aleatório (2.9) deve se aproximar de uma
distribuição gaussiana. Como a média das localizações das partículas mostradas
na Fig. 2.1 é obviamente zero, sua variância aumentará linearmente com t. Em
geral, no espaço d-dimensional, a variância dos passeios aleatórios brownianos pode ser escrita
M e t ahe emreu 22t
pseed steu
Ac 2p (t) = |v0| + (2dD)t, (2.10)
nEUe eu
og
-
rt ri
em
Xin-She Yang t

a onde v0 é a velocidade de deriva do sistema. Aqui D = s 2/(2ÿ ) é o coeficiente


m h
N c Luniver Press
s
S
ce
de difusão efetivo que está relacionado ao comprimento do passo s em um curto
)10
on 0
d Ed eu
intervalo
on
t eu
(2 de tempo ÿ durante cada salto.
Machine Translated by Google

´
14 CAPÍTULO 2. PASSEIOS ALEATÓRIOS E VOOS LEVY

Figura 2.1: Movimento browniano em 2D: passeio aleatório com uma


distribuição gaussiana de tamanho de passo e o caminho de 50
passos começando na origem (0, 0) (marcado com •).

Portanto, o movimento browniano B(t) obedece essencialmente a uma distribuição


gaussiana com média zero e variância dependente do tempo. Ou seja, B(t) ÿ
2
N(0, ÿ (t)) onde ÿ significa que a variável aleatória obedece à distribuição do lado direito;
ou seja, as amostras devem ser retiradas da distribuição.
Um processo de difusão pode ser visto como uma série de movimentos brownianos, e o
movimento obedece à distribuição gaussiana. Por esta razão, a difusão padrão é
freqüentemente chamada de difusão gaussiana. Se o movimento em cada etapa não for
Gaussiano, então a difusão é chamada de difusão não Gaussiana.
Se o comprimento do passo obedecer a outra distribuição, teremos que lidar com um
passeio aleatório mais generalizado. Um caso muito especial é quando o comprimento do
passo obedece à distribuição de L´evy, tal caminhada aleatória é chamada de voo de L´evy
ou caminhada de L´evy.

´ ´
2.3 DISTRIBUIÇÃODE COBRANÇA E VOOS DE COBRANÇA

De um modo geral, os voos de L´evy são um passeio aleatório cujo comprimento do passo
é extraído da distribuição de L´evy, geralmente em termos de uma fórmula simples de lei
de potência L(s) ÿ |s| ÿ1ÿÿ onde 0 < ÿ ÿ 2 é um índice. Matematicamente falando, uma
versão simples da distribuição de L´evy pode ser definida como

c
ÿ 1 exp[ÿ 2(sÿµ)
ÿ] 0<µ<s<ÿ
2p (sÿµ) 3/2 ,
L(s, ÿ, µ) = (2.11)
ÿ
ÿ0 de outra forma,

onde µ > 0 é um passo mínimo e ÿ é um parâmetro de escala. Claramente, como s ÿ ÿ,


M e t ahe emreu
pseed steutemos
Ac
nEUe eu
og
-
rt ri c 1
Xin-She Yang
L(s, ÿ, µ) ÿ (2.12)
em t
h
a
N c Luniver Press
m
s s 3/2 . 2p
S
ce
on
)10
0
d E on
(2 Este é um caso especial da distribuição generalizada de L´evy.
d t
eu eu
Machine Translated by Google
´ ´
2.3 DISTRIBUIÇÃO E IMPOSTO VOOS 15

Figura 2.2: Vôos de L´evy em 50 passos consecutivos


começando na origem (0, 0) (marcado com •).

Em geral, a distribuição de L´evy deve ser definida em termos da transformada


de Fourier
b
F(k) = exp[ÿÿ|k| ], 0 < ÿ ÿ 2, (2.13)

onde ÿ é um parâmetro de escala. A inversa dessa integral não é fácil, pois não
possui forma analítica, exceto em alguns casos especiais.
Para o caso de ÿ = 2, temos

2
F(k) = exp[ÿÿk ], (2.14)

cuja transformada inversa de Fourier corresponde a uma distribuição gaussiana.


Outro caso especial é ÿ = 1, e temos

F(k) = exp[ÿÿ|k|], (2.15)

que corresponde a uma distribuição de Cauchy

1
p(x, ÿ, µ) = 2, (2.16)
pi 2c ÿ + (x ÿ µ)

onde µ é o parâmetro de localização, enquanto ÿ controla a escala desta


distribuição.
Para o caso geral, a integral inversa

1 ÿ

b
L(s) = cos(ks) exp[ÿÿ|k| ]dk, (2.17)
pi
ed
M e t ahe emreu 0
e
ps steu
Ac
nEU eu
og
e-
rt
em
pode ser estimado somente quando s é grande. Nós temos
ri
Xin-She Yang h
t

a m
s
N c Luniver Press
a b ÿ(ÿ)sin(ÿÿ/2)
S
ce
on
)1
(2
0
0 L(s) ÿ ÿ| , s ÿ ÿ. (2.18)
d Ed eu t euo n s| 1+b
Machine Translated by Google
´
16 CAPÍTULO 2. PASSEIOS ALEATÓRIOS E VOOS LEVY

Aqui ÿ(z) é a função Gama


ÿ
zÿ1 ÿt
ÿ(z) = te dt. (2.19)
0

No caso em que z = n é um inteiro, temos ÿ(n) = (n ÿ 1)!.


Os vôos de L'evy são mais eficientes do que os passeios aleatórios brownianos
na exploração do espaço de busca desconhecido em grande escala. Existem
muitas razões para explicar esta eficiência, e uma delas se deve ao fato de que a
variância dos vôos de L´evy
2p (t) ÿ t 3ÿb , 1 ÿ ÿ ÿ 2, (2.20)
2
aumenta muito mais rápido do que a relação linear (isto é, (t) ÿ t) de Sobrancelha
caminhadas aleatórias ÿ nianas.
A Fig. 2.2 mostra o caminho dos lances de L´evy de 50 passos começando de
(0, 0) com ÿ = 1. Vale ressaltar que uma distribuição de lei de potência está
frequentemente ligada a algumas características livres de escala, e L´ Os vôos evy
podem, portanto, mostrar auto-semelhança e comportamento fractal nos padrões de vôo.
Do ponto de vista da implementação, a geração de números aleatórios com
voos de L´evy consiste em duas etapas: a escolha de uma direção aleatória e a
geração de etapas que obedecem à distribuição de L´evy escolhida. A geração de
uma direção deve ser desenhada a partir de uma distribuição uniforme, enquanto
a geração de passos é bastante complicada. Existem algumas maneiras de
conseguir isso, mas uma das maneiras mais eficientes e diretas é usar o chamado
algoritmo de Mantegna para uma distribuição estável de L´evy simétrica.
Aqui, 'simétrico' significa que as etapas podem ser positivas e negativas.
Uma variável aleatória U e sua distribuição de probabilidade podem ser
chamadas de estáveis se uma combinação linear de suas duas cópias idênticas
(ou U1 e U2) obedecer à mesma distribuição. Ou seja, aU1 + bU2 tem a mesma
distribuição que cU + d onde a, b > 0 ec, d ÿ . Se d = 0, diz-se estritamente estável.
As distribuições Gaussiana, Cauchy e L´evy são todas distribuições estáveis.
No algoritmo de Mantegna, o comprimento do passo s pode ser calculado por
em
s= (2.21)
|v| 1/b ,

onde u e v são extraídos de distribuições normais. Aquilo é

2 2
u ÿ N(0, p em
), v ÿ N(0, p em
), (2.22)

onde
M e t ahe emreu ÿ(1 + ÿ)sin(ÿÿ/2) ÿ[(1 1/b
ed ÿu = ÿv = 1. (2.23)
pse steu
Ac ,
nEUe euog + ÿ)/2] ÿ 2 (ÿÿ1)/2
-
rt ri
em
Xin-She Yang t

a Esta distribuição (para s) obedece à distribuição L´evy esperada para |s| ÿ |s0| onde
m h
NS c Luniver Press
s

ce
on
)1
0
s0 é o menor passo. Em princípio, |s0| 0, mas na realidade s0 pode ser considerado
0
d Ed on
(2 um valor sensível, como s0 = 0,1 a 1.
eu t eu
Machine Translated by Google

2.4 OTIMIZAÇÃO COMO CADEIAS DE MARKOV 17

Estudos mostram que os voos de L´evy podem maximizar a eficiência das


buscas de recursos em ambientes incertos. De fato, vôos de L'evy foram
observados entre padrões de forrageamento de albatrozes e moscas-das-frutas e macacos-aranha.
Mesmo os humanos, como os caçadores-coletores Ju/'hoansi, podem traçar
caminhos de padrões de vôo de Lévy. Além disso, os voos L´evy têm muitas aplicações.
Muitos fenômenos físicos, como a difusão de moléculas fluorescentes,
comportamento de resfriamento e ruído, podem mostrar características de vôo de
L´evy sob as condições certas.

2.4 OTIMIZAÇÃO COMO CADEIAS DE MARKOV

Em todos os aspectos, um passeio aleatório simples que discutimos anteriormente


pode ser considerado como uma cadeia de Markov. Resumidamente, uma variável
aleatória ÿ é um processo de Markov se a probabilidade de transição, do estado ÿt
= Si no tempo t para outro estado ÿt+1 = Sj , depende apenas do estado atual ÿi . Aquilo é

P(i, j) ÿ P(ÿt+1 = Sj |ÿ0 = Sp, ..., ÿt = Si)

= P(ÿt+1 = Sj |ÿt = Si), (2.24)

que é independente dos estados antes de t. Além disso, a sequência de variáveis


aleatórias (ÿ0, ÿ1, ..., ÿn) geradas por um processo de Markov é subseqüentemente
chamada de cadeia de Markov. A probabilidade de transição P(i, j) ÿ P(i ÿ j) = Pij
também é chamada de núcleo de transição da cadeia de Markov.
Se reescrevermos a relação de passeio aleatório (2.7) com um movimento aleatório
governado por wt que depende da probabilidade de transição P, temos

St+1 = St + peso, (2.25)

que de fato tem as propriedades de uma cadeia de Markov. Portanto, um passeio


aleatório é uma cadeia de Markov.
Para resolver um problema de otimização, podemos procurar a solução
realizando um passeio aleatório a partir de uma boa solução inicial, mas aleatória.
No entanto, caminhadas aleatórias simples ou cegas não são eficientes. Para
sermos computacionalmente eficientes e efetivos na busca de novas soluções,
temos que manter as melhores soluções encontradas até o momento, e aumentar
a mobilidade do passeio aleatório de forma a explorar o espaço de busca de forma
mais efetiva. Mais importante ainda, temos que encontrar uma maneira de controlar
a caminhada de forma que ela possa se mover em direção às soluções ótimas
mais rapidamente, em vez de se afastar das possíveis melhores soluções. Esses
M t ah reu
e e em

eed
ps sãosteu os desafios para a maioria dos algoritmos metaheurísticos.
Ac
eu
nEU
e- Mais pesquisas ao longo da rota das cadeias de Markov é que o desenvolvimento
og
ri
rt
em
Xin-She Yang t

a do método Monte Carlo (MCMC) da cadeia de Markov, que é uma classe de métodos
m h

N c Luniver Press
s
S
c
e de geração de amostras. Ele tenta extrair amostras diretamente de alguma
)1
0
on 0
d E d t eu
distribuição
on
eu
(2 multidimensional altamente complexa usando um Markov
Machine Translated by Google
´
18 CAPÍTULO 2. PASSEIOS ALEATÓRIOS E VOOS LEVY

cadeia com probabilidade de transição conhecida. Desde a década de 1990, a cadeia de


Markov Monte Carlo tornou-se uma ferramenta poderosa para análise estatística bayesiana,
simulações de Monte Carlo e otimização potencialmente com alta não linearidade.

Uma ligação importante entre MCMC e otimização é que alguns algoritmos de busca
heurística e metaheurística, como o recozimento simulado a ser introduzido posteriormente,
usam uma abordagem baseada em trajetória. Eles começam com algum estado inicial
(aleatório) e propõem um novo estado (solução) aleatoriamente. Então, o movimento é aceito
ou não, dependendo de alguma probabilidade. Não é fortemente semelhante a uma cadeia de
Markov. Na verdade, o padrão simulado de um alinhamento é um passeio aleatório.

Matematicamente falando, um grande salto na compreensão dos algoritmos metaheurísticos


é ver uma cadeia de Markov Monte Carlo como um procedimento de otimização. Se quisermos
encontrar o mínimo de uma função objetivo f(ÿ) em ÿ = ÿÿ de modo que fÿ = f(ÿÿ) ÿ f(ÿ),
podemos convertê-lo em uma distribuição alvo para uma cadeia de Markov

ÿÿf(ÿ)
ÿ(ÿ) = e , (2.26)

onde ÿ > 0 é um parâmetro que atua como um fator normalizado. O valor de ÿ deve ser
escolhido de forma que a probabilidade seja próxima de 1 quando ÿ ÿ ÿÿ. Em ÿ = ÿÿ, ÿ(ÿ) deve
atingir um máximo ÿÿ = ÿ(ÿÿ) ÿ ÿ(ÿ). Isso requer que a formulação de L(ÿ) seja não negativa, o
que significa que algumas funções objetivas podem ser deslocadas por uma grande constante
A > 0, como f ÿ f + A, se necessário.

Ao construir uma cadeia de Markov Monte Carlo, podemos formular uma estrutura genérica
conforme descrito por Ghate e Smith em 2008, conforme mostrado na Figura 2.3.
Nesta estrutura, o recozimento simulado e suas muitas variantes são simplesmente um caso
especial com

ÿf
ÿ exp[ÿ Tt ] se pés+1 > pés
Pt = ,
ÿ
ÿ1 se pés+1 ÿ pés

Neste caso, apenas a diferença ÿf entre os valores da função é importante.

Algoritmos como o recozimento simulado, a ser discutido no próximo capítulo, usam uma
única cadeia de Markov, que pode não ser muito eficiente. Na prática, geralmente é vantajoso
usar várias cadeias de Markov em paralelo para aumentar a eficiência geral. Na verdade, os
algoritmos, como otimização de enxame de partículas, podem ser vistos como múltiplas
cadeias de Markov interagindo, embora tal análise teórica permaneça quase intratável. A
teoria das cadeias de Markov interativas é complicada e ainda está em desenvolvimento, no
M e t ahe emreu
eed
ps steuentanto,
Ac qualquer progresso nessas áreas desempenhará um papel central na compreensão
nEU eu
og
e- de como os algoritmos metaheurísticos baseados em população e trajetória funcionam sob
ri
rt
em
Xin-She Yang t
várias condições. No entanto, embora não entendamos completamente por que os algoritmos
h
a m
s
NS c Luniver Press
)1
c
e metaheurísticos funcionam, isso não nos impede de
0
on
(2
0
d E d t on
eu
eu
Machine Translated by Google

2.4 OTIMIZAÇÃO COMO CADEIAS DE MARKOV 19

Algoritmo de Cadeia de Markov para Otimização

Comece com ÿ0 ÿ S, em t = 0
while (critério)
Proponha uma nova solução Yt+1;
Gere um número aleatório 0 ÿ Pt ÿ 1;

Yt+1 com probabilidade


ÿt+1 = (2.27)
Pt ÿt com probabilidade 1 ÿ Pt

fim

Figura 2.3: Otimização como cadeia de Markov.

usar esses algoritmos de forma eficiente. Pelo contrário, tais mistérios podem nos
conduzir e motivar a buscar mais pesquisas e desenvolvimento em metaheurísticas.

REFERÊNCIAS

1. WJ Bell, Pesquisando Comportamento: A Ecologia Comportamental de Encontrar Re


fontes, Chapman & Hall, Londres, (1991).
2. C. Blum e A. Roli, Metaheurísticas em otimização combinatória: Visão geral e
comparação conceitual, ACM Comput. Surv., 35, 268-308 (2003).
3. GS Fishman, Monte Carlo: Conceitos, Algoritmos e Aplicações, Springer, Nova
York, (1995).
4. D. Gamerman, Markov Chain Monte Carlo, Chapman & Hall/CRC, (1997).
5. L. Gerencser, SD Hill, Z. Vago e Z. Vincze, otimização discreta, SPSA e métodos
Monte Carlo da cadeia de Markov, Proc. 2004 am. Contr.
Conf., 3814-3819 (2004).
6. CJ Geyer, Practical Markov Chain Monte Carlo, Statistical Science, 7,
473-511 (1992).
7. A. Ghate e R. Smith, Pesquisa adaptativa com probabilidades de aceitação
estocástica para otimização global, Operations Research Lett., 36, 285-290 (2008).
8. WR Gilks, S. Richardson e DJ Spiegelhalter, Markov Chain Monte Carlo in
Practice, Chapman & Hall/CRC, (1996).
9. M. Gutowski, voos de L´evy como um mecanismo subjacente para algoritmos
M e t ahe emreu
pse ed steu de otimização global, ArXiv Mathematical Physics e-Prints, junho, (2001).
Ac
eu
nEUe
- 10. WK Hastings, métodos de amostragem de Monte Carlo usando cadeias de
og
ri
rt Xin-She Yang
Markov e suas aplicações, Biometrika, 57, 97-109 (1970).
em t
h
a m
NS c Luniver Press s

c
e
on
)1
11. S. Kirkpatrick, CD Gellat e MP Vecchi, Otimização por simulação
0
0
(2 recozimento, Science, 220, 670-680 (1983).
d E d t on
eu
eu
Machine Translated by Google
´
20 CAPÍTULO 2. PASSEIOS ALEATÓRIOS E VOOS LEVY

12. RN Mantegna, algoritmo rápido e preciso para simulação numérica de processos


estocásticos estáveis de Levy, Physical Review E, 49, 4677-4683 (1994).
13. E. Marinari e G. Parisi, Têmpera simulada: um novo esquema de Monte Carlo,
Europhysics Lett., 19, 451-458 (1992).
14. JP Nolan, distribuições estáveis: modelos para dados de cauda pesada, americano
Universidade, (2009).
15. N. Metropolis e S. Ulam, The Monte Carlo method, J. Amer. Estado.
Assoc., 44, 335-341 (1949).
16. N. Metropolis, AW Rosenbluth, MN Rosenbluth, AH Teller e E.
Teller, Equação de cálculos de estado por máquinas de computação rápida, J. Chem.
Phys., 21, 1087-1092 (1953).
17. I. Pavlyukevich, vôos de L´evy, busca não local e recozimento simulado, J.
Física Computacional, 226, 1830-1844 (2007).
18. G. Ramos-Fernandez, J. L. Mateos, O. Miramontes, G. Cocho, H. Larralde, B. Ayala-
Orozco, Padrões de caminhada de Levy nos movimentos de forrageamento de
macacos-aranha (Ateles geoffroyi), Behav. Eco. Sociobiol., 55, 223–230 (2004).
19. AM Reynolds e MA Frye, Rastreamento de odor de vôo livre em Drosophila é
consistente com uma pesquisa sem escala intermitente ideal, PLoS One, 2, e354
(2007).
20. AM Reynolds e CJ Rhodes, O paradigma de voo de L´evy: padrões e mecanismos
de busca aleatórios, Ecology, 90, 877-887 (2009).
21. IM Sobol, A Primer for the Monte Carlo Method, CRC Press, (1994).
22. ME Tipping ME, Bayesian inference: An Introduction to Principles and Practice in
Machine Learning, em: Advanced Lectures on Machine Learning, O. Bousquet, U.
von Luxburg e G. Ratsch (Eds), pp.41-62 (2004).
23. GM Viswanathan, SV Buldyrev, S. Havlin, MGE da Luz, EP Ra poso, e HE Stanley,
padrões de busca de voos de L'evy de albatrozes errantes, Nature, 381 , 413-415
(1996).
24. E. Weisstein, http://mathworld.wolfram.com

M e t ahe emreu
pseed steu
Ac
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
o
)10
0
nd on (2
E d t
eu eu
Machine Translated by Google

Capítulo 3

RECOZIMENTO SIMULADO

Um dos algoritmos metaheurísticos mais antigos e ainda mais populares é o


simu lated annealing (SA), que é uma técnica de busca aleatória baseada em
trajetória para otimização global. Ele imita o processo de recozimento no
processamento de materiais quando um metal esfria e congela em um estado
cristalino com energia mínima e tamanho de cristal maior, de modo a reduzir
os defeitos nas estruturas metálicas. O processo de recozimento envolve o
controle cuidadoso da temperatura e sua taxa de resfriamento, muitas vezes chamado de crono

3.1 RECOZIMENTO E DISTRIBUIÇÃO DE BOLTZMANN

Desde o primeiro desenvolvimento do recozimento simulado por Kirkpatrick,


Gelatt e Vecchi em 1983, o SA tem sido aplicado em quase todas as áreas de
otimização. Ao contrário dos métodos baseados em gradiente e outros métodos
de busca determinísticos que têm a desvantagem de ficarem presos em
mínimos locais, a principal vantagem do recozimento simulado é sua
capacidade de evitar ficar preso em mínimos locais. De fato, foi provado que
um tratamento simulado convergirá para sua otimização global se for usada
aleatoriedade suficiente em combinação com um resfriamento muito lento.
Essencialmente, o recozimento simulado é um algoritmo de busca por meio de
uma cadeia de Markov, que converge sob condições apropriadas.
Falando metaforicamente, isso equivale a deixar cair algumas bolas
quicando sobre uma paisagem e, à medida que as bolas quicam e perdem
energia, elas se estabilizam em alguns mínimos locais. Se as bolas quicarem
várias vezes e perderem energia lentamente, algumas das bolas acabarão
caindo nos locais mais baixos globalmente, portanto, o mínimo global será atingido.
A ideia básica do algoritmo de recozimento simulado é usar a busca
aleatória em termos de uma cadeia de Markov, que não apenas aceita mudanças
e
M t ah r e em

eed
ps que
steu melhoram a função objetivo, mas também mantém algumas mudanças que
eu
Ac
eu
nEU
e- não são ideais. Em um problema de minimização, por exemplo, qualquer melhor movimento ou
og
ri
rt
em
Xin-She Yang
que diminuir o valor da função objetivo f será aceito; entretanto, algumas
t
h
a m
N c Luniver Press s
S
c
e mudanças que aumentam f também serão aceitas com probabilidade p. Essa
)1 0
o
nd 20
probabilidade p, também chamada de probabilidade de transição, é determinada
E d t on (
eu eu

Algoritmos Metaheurísticos Inspirados na Natureza, 2ª Edição por Xin-She Yang 21


Copyright c 2010 Luniver Press
Machine Translated by Google

22 CAPÍTULO 3. RECOZIMENTO SIMULADO

por
ÿE
ÿ

p=e TCC , (3.1)

onde kB é a constante de Boltzmann e, para simplificar, podemos usar k para


denotar kB porque k = 1 é frequentemente usado. T é a temperatura para
controlar o processo de recozimento. ÿE é a variação do nível de energia. Essa
probabilidade de transição é baseada na distribuição de Boltzmann em mecânica estatística.

A maneira mais simples de vincular ÿE com a mudança da função objetivo ÿf


é usar
ÿE = ÿÿf, (3.2)

onde ÿ é uma constante real. Para simplificar sem perder a generalidade,


podemos usar kB = 1 e ÿ = 1. Assim, a probabilidade p simplesmente se torna

ÿÿf/T .
p(ÿf, T) = e (3.3)

Quer aceitemos ou não uma mudança, geralmente usamos um número aleatório


r como limite. Assim, se p > r, ou

ÿf
p=e
ÿ

T > r, (3.4)

o movimento é aceito.

3.2 PARÂMETROS

Aqui, a escolha da temperatura inicial correta é de importância crucial. Para


uma dada mudança ÿf, se T for muito alto (T ÿ ÿ), então p ÿ 1, o que significa
que quase todas as mudanças serão aceitas. Se T for muito baixo (T ÿ 0), então
qualquer ÿf > 0 (pior solução) raramente será aceito como p ÿ 0 e, portanto, a
diversidade da solução é limitada, mas qualquer melhoria ÿf quase sempre será
aceita. De fato, o caso especial T ÿ 0 corresponde ao método baseado em
gradiente porque apenas soluções melhores são aceitas e o sistema é
essencialmente subindo ou descendo ao longo de uma colina. Portanto, se T
for muito alto, o sistema está em um estado de alta energia na paisagem
topológica e os mínimos não são facilmente alcançados. Se T for muito baixo,
o sistema pode ficar preso em um mínimo local (não necessariamente o mínimo
global), e não há energia suficiente para o sistema saltar do mínimo local para
explorar outros mínimos, incluindo o mínimo global. Portanto, uma temperatura
e
M t ah r e em
eu
pseed steuinicial adequada deve ser calculada.
Ac
eu
nEUe
- Outra questão importante é como controlar o processo de recozimento ou
og
ri
rt
em
Xin-She Yang t

a resfriamento para que o sistema esfrie gradualmente de uma temperatura mais


mh
N c Luniver Press
s
alta para finalmente congelar a um estado mínimo global. Existem muitas
S
ce
o
nd 0
)1 0
E d t on
eu eu
(2 maneiras de controlar a taxa de resfriamento ou a diminuição da temperatura.
Machine Translated by Google

3.3 SA ALGORITMO 23

Duas programações de recozimento comumente usadas (ou programações de resfriamento) são: lin
orelha e geométrica. Para um esquema de resfriamento linear, temos

T = T0 ÿ ÿt, (3.5)

ou T ÿ T ÿ ÿT, onde T0 é a temperatura inicial e t é o pseudo tempo para iterações.


ÿ é a taxa de resfriamento e deve ser escolhida de forma que T ÿ 0 quando t ÿ tf (ou
o número máximo N de iterações), isso geralmente dá ÿ = (T0 ÿ Tf )/tf .

Por outro lado, um esquema de resfriamento geométrico essencialmente diminui


a temperatura por um fator de resfriamento 0 < ÿ < 1, de modo que T é substituído por ÿT
ou
t
T(t) = T0ÿ , t = 1, 2, ...,tf . (3.6)
A vantagem do segundo método é que T ÿ 0 quando t ÿ ÿ e, portanto, não há
necessidade de especificar o número máximo de iterações. Por esse motivo,
usaremos esse esquema de resfriamento geométrico. O processo de resfriamento
deve ser lento o suficiente para permitir que o sistema se estabilize facilmente. Na
prática, ÿ = 0,7 ÿ 0,99 é comumente usado.
Além disso, para uma dada temperatura, são necessárias múltiplas avaliações
da função objetivo. Se houver poucas avaliações, existe o perigo de que o sistema
não se estabilize e, consequentemente, não converja para sua otimização global.
Se houver muitas avaliações, é demorado e o sistema geralmente convergirá muito
lentamente, pois o número de iterações para alcançar a estabilidade pode ser
exponencial ao tamanho do problema.
Portanto, há um bom equilíbrio entre o número de avaliações e a qualidade da
solução. Podemos fazer muitas avaliações em poucos níveis de temperatura ou
fazer poucas avaliações em muitos níveis de temperatura. Existem duas maneiras
principais de definir o número de iterações: fixo ou variado. O primeiro utiliza um
número fixo de iterações em cada temperatura, enquanto o segundo pretende
aumentar o número de iterações em temperaturas mais baixas para que os mínimos
locais possam ser totalmente explorados.

3.3 SA ALGORITMO

O algoritmo de recozimento simulado pode ser resumido como o pseudocódigo


mostrado na Fig. 3.1.
Para encontrar uma temperatura inicial adequada T0, podemos usar qualquer
informação sobre a função objetivo. Se conhecermos a variação máxima max(ÿf)
da função objetivo, podemos usá-la para estimar uma temperatura inicial T0 para
M e t aheuma
em
reu
dada probabilidade p0. Isso é máximo(ÿf)
pseed steu
Ac
nEUe eu
og
-
rt ri T0 ÿ ÿ ln .
em
Xin-She Yang
m h
t
p0
a
NS c Luniver Press s

c
e
on
)1
Se não soubermos a variação máxima possível da função objetivo, podemos usar
0
0
d E on
(2
uma abordagem heurística. Podemos começar as avaliações de um ponto de vista muito
d t
eu eu
Machine Translated by Google

24 CAPÍTULO 3. RECOZIMENTO SIMULADO

Algoritmo de Recozimento Simulado


T
Função objetivo f(x), x = (x1, ..., xp) (0)
Inicializar temperatura inicial T0 e estimativa inicial x
Definir temperatura final Tf e número máximo de iterações N
Definir cronograma de resfriamento T ÿ ÿT, (0 < ÿ <
1) while ( T > Tf e n < N )
Mova-se aleatoriamente para novos locais: xn+1 = xn + (caminhada aleatória)
Calcule ÿf = fn+1(xn+1) ÿ fn(xn)
Aceite a nova solução se for melhor
se não for melhorada
Gerar um número aleatório r
Aceite se p = exp[ÿÿf/T] > r end se

Atualize o melhor xÿ e fÿ n =
n + 1 end
while

Figura 3.1: Algoritmo de recozimento simulado.

alta temperatura (para que quase todas as alterações sejam aceitas) e reduza a
temperatura rapidamente até que cerca de 50% ou 60% dos movimentos piores
sejam aceitos e, em seguida, use essa temperatura como a nova temperatura inicial
T0 para um resfriamento adequado e relativamente lento .
Para a temperatura final, ela deveria ser zero em teoria para que nenhum
movimento pior pudesse ser aceito. No entanto, se Tf ÿ 0, mais avaliações
desnecessárias são necessárias. Na prática, simplesmente escolhemos um valor
muito pequeno,digamos, Tf = 10ÿ10 ÿ 10ÿ5 , dependendo da qualidade exigida das
soluções e das restrições de tempo.

3.4 OTIMIZAÇÃO IRRESTRITA

Com base nas diretrizes de escolha dos parâmetros importantes, como taxa de
resfriamento, temperaturas inicial e final e o número equilibrado de iterações,
podemos implementar o recozimento simulado usando o Matlab e o Octave.

Para a função banana de Rosenbrock

M e t ahe emreu 2 2 2
eed
ps steu
Ac f(x, y) = (1 ÿ x) + 100(y ÿ x ) ,
nEU eu og
e- ri
rt
em
Xin-She Yang t

a sabemos que seu mínimo global fÿ = 0 ocorre em (1, 1) (ver Fig. 3.2). Esta é uma
m
s
h

N c Luniver Press
S
c
e )1função de teste padrão e bastante difícil para a maioria dos algoritmos. No entanto,
0
on 0
(2 modificando o programa fornecido mais adiante no próximo capítulo, podemos encontrar este
d E d t
eu
on
eu
Machine Translated by Google

3.4 OTIMIZAÇÃO IRRESTRITA 25

-1

-2
-2 -1 0 1 2

Figura 3.2: Função de Rosenbrock com mínimo global fÿ = 0 em (1, 1).

Figura 3.3: 500 avaliações durante as iterações de recozimento. O melhor global


final é marcado com •.

mínimo global facilmente e as últimas 500 avaliações durante o recozimento são


mostradas na Fig. 3.3.
M e t ahe emreu
pseed steuEssa
Ac função de banana ainda é relativamente simples, pois possui um vale
nEUe eu
og
-
rt estreito e curvo. Devemos validar o SA em uma ampla gama de funções de teste,
ri
em
Xin-She Yang h
t

a
N c Luniver Press
especialmente aqueles que são fortemente multimodais e altamente não lineares. É
m
s
S
ce
on
)1
fácil estender o programa acima para lidar com funções multimodais altamente não
0
0
d E on
(2
lineares.
d t
eu eu
Machine Translated by Google

26 CAPÍTULO 3. RECOZIMENTO SIMULADO

f(x)

g(x)

Figura 3.4: A ideia básica do tunelamento estocástico transformando f(x)


em g(x), suprimindo alguns modos e preservando as localizações dos
mínimos.

3.5 TÚNEL ESTOCÁSTICO

Para garantir a convergência global do recozimento simulado, um


cronograma de resfriamento adequado deve ser usado. No caso em que a
paisagem funcional é complexa, o recozimento simulado pode se tornar
cada vez mais difícil de escapar dos mínimos locais se a temperatura for
muito baixa. Aumentar a temperatura, como na chamada têmpera simulada,
pode resolver o problema, mas a convergência é tipicamente lenta e o tempo de comput
O tunelamento estocástico usa a ideia de tunelamento para transformar
o cenário da função objetivo em um diferente, mas mais conveniente (por
exemplo, Wenzel e Hamacher, 1999). A essência é construir uma
transformação não linear de modo que alguns modos de f(x) sejam
suprimidos e outros sejam amplificados, preservando os lugares dos mínimos de f(x).
A forma padrão de tal transformação de tunelamento é

g(x) = 1 ÿ exp[ÿÿ(f(x) ÿ f0)], (3.7)

onde f0 é o menor valor atual de f(x) encontrado até o momento. ÿ > 0 é um


parâmetro de escala e g é a nova paisagem transformada. A partir dessa
transformação simples, podemos ver que g ÿ 0 quando f ÿ f0 ÿ 0, ou seja,
quando f0 está se aproximando do verdadeiro mínimo global. Por outro
lado, se f f0, então g ÿ 1, o que significa que todos os modos bem acima do
mínimo atual f0 são suprimidos. Para uma função unidimensional simples,
é fácil ver que tais propriedades de fato preservam os lugares geométricos da função (ve
Como os lugares dos mínimos são preservados, todos os modos acima
do valor mais baixo atual f0 são suprimidos em algum grau, enquanto os
modos abaixo de f0 são expandidos ou amplificados, o que torna mais fácil
e
M t ah r e em

eed
ps para o sistema escapar dos modos locais. Simulações e estudos sugerem
steu
eu
Ac
eu
nEU
e- que ele pode melhorar significativamente a convergência para funções com paisagens e
og
ri
rt
em
Xin-She Yang
Até agora não fornecemos um programa detalhado para mostrar como o
t
h
a m
s
N c Luniver Press
algoritmo SA pode ser implementado na prática. No entanto, antes que
S
ce
o
)1 0
20possamos realmente fazer isso, precisamos encontrar uma maneira prática de lidar com
nd
E d t on (
eu eu
Machine Translated by Google

3.5 TÚNEL ESTOCÁSTICO 27

restrições, já que a maioria dos problemas de otimização do mundo real são restritos.
No próximo capítulo, discutiremos em detalhes as formas de incorporar restrições não
lineares.

REFERÊNCIAS

1. Cerny V., Uma abordagem termodinâmica para o problema do caixeiro viajante:


um algoritmo de simulação eficiente, Journal of Optimization Theory and
Applications, 45, 41-51 (1985).
2. Hamacher K. e Wenzel W., O comportamento de dimensionamento de algoritmos
estocásticos de minimização em uma paisagem de funil perfeito, Phys. rev. E.,
59, 938-941 (1999).
3. Kirkpatrick S., Gelatt CD e Vecchi MP, Otimização por simulação
recozimento, Science, 220, No. 4598, 671-680 (1983).
4. Metropolis N., Rosenbluth AW, Rosenbluth MN, Teller AH e Teller E., Equações
de cálculos de estado por máquinas de computação rápida, Journal of Chemical
Physics, 21, 1087-1092 (1953).
5. Wenzel W. e Hamacher K., Uma abordagem de tunelamento estocástico para global
otimização, fis. Rev. Lett., 82, 3003-3007 (1999).
6. Yang XS, algoritmos derivados da biologia na otimização de engenharia (Capítulo
32), no Handbook of Bioinspired Algorithms, editado por Olariu S. e Zomaya A.,
Chapman & Hall / CRC, (2005).

M e t ahe emreu
eed
ps steu
Ac
nEU eu
og
e- ri
rt
em
Xin-She Yang h
t

a m
NS c Luniver Press s

ce
on
)1
(2
0
0
d E d t on
eu
eu
Machine Translated by Google

M e t ahe emreu
eed
ps steu
Ac
nEU eu
og
e- ri
rt
em
Xin-She Yang h
t

a m
s
NS c Luniver Press
)1
e 0
c
on
(2
0
d E d t on
eu
eu
Machine Translated by Google

Capítulo 4

COMO LIDAR COM AS RESTRIÇÕES

A otimização que discutimos até agora é irrestrita, pois não consideramos


nenhuma restrição. Uma questão natural e importante é como incorporar as
restrições (tanto as restrições de desigualdade quanto as de igualdade).
Existem basicamente três maneiras de lidar com restrições: abordagem direta,
multiplicadores de Lagrange e método de penalidade.
A abordagem direta pretende encontrar as regiões viáveis delimitadas
pelas restrições. Isso geralmente é difícil, exceto em alguns casos especiais.
Numericamente, podemos gerar uma solução potencial e verificar se todas as
restrições são satisfeitas. Se todas as restrições forem atendidas, então é uma
solução viável e a avaliação da função objetivo pode ser realizada. Se uma ou
mais restrições não forem satisfeitas, essa solução potencial é descartada e
uma nova solução deve ser gerada. Em seguida, procedemos de maneira
semelhante. Como podemos esperar, esse processo é lento e ineficiente. Uma
abordagem melhor é incorporar as restrições de modo a formular o problema
como irrestrito. O método do multiplicador de Lagrange tem base matemática
rigorosa, enquanto o método da penalidade é simples de implementar na
prática.

4.1 MÉTODO DE MULTIPLICADORES DE LAGRANGE

O método dos multiplicadores de Lagrange converte um problema restrito em


um irrestrito. Por exemplo, se quisermos minimizar uma função
minimizar T n
xÿn f(x), x = (x1, ..., xn) ÿ , (4.1)

sujeito a várias restrições de igualdade não linear

gj (x) = 0, j = 1, 2, ..., M. (4.2)


M e t ahePodemos
em
reu usar M multiplicadores de Lagrange ÿj (j = 1, ..., M) para reformular o
pseed steu
Ac
nEUe
-
problema acima como a minimização da seguinte função
eu
og
rt ri
em
Xin-She Yang h
t

a m M
NS c Luniver Press
s

c
e
o
)1
0
0 L(x, ÿj ) = f(x) + ÿjgj (x). (4.3)
nd on (2
E d t
eu eu j=1

Algoritmos Metaheurísticos Inspirados na Natureza, 2ª Edição por Xin-She Yang 29


Copyright c 2010 Luniver Press
Machine Translated by Google

30 CAPÍTULO 4. COMO LIDAR COM RESTRIÇÕES

A otimização requer que as seguintes condições estacionárias sejam mantidas

M
ÿL ÿf ÿgj
= + (4.4)
ÿj , (i = 1, ..., n), ÿxi
ÿxi ÿxi
j=1

e
ÿL
= gj = 0, (j = 1, ..., M). ÿÿj (4.5)

Essas equações M + n determinarão os n componentes dos multiplicadores x e M


ÿL
Lagrange. Como = ÿj , podemos considerar ÿj como a taxa de variação da quantidade
ÿgj
L(x, ÿj ) como um funcional de gj .
Agora vamos ver um exemplo simples

maximizar 2/3 1/3


você, você
f = uv ,

sujeito a
3u + v = 9.

Primeiro, escrevemos como um problema irrestrito usando um multiplicador de


Lagrange ÿ e temos
L = você2/3 em 1/3 + ÿ(3u + v ÿ 9).

As condições para atingir a otimalidade são

ÿL 2 ÿL 1
= ÿ1/3 1/3 = 2/3 ÿ2/3
em em
+ 3ÿ = 0, em em
+ ÿ = 0,
ÿu 3 ÿv 3

e
ÿL
= 3u + v ÿ 9 = 0. ÿÿ

As duas primeiras condições dão 2v = 3u, cuja combinação com a terceira condição
leva a
u = 2, v = 3.

Assim, o máximo de fÿ é ÿ3 12.


Aqui discutimos apenas as restrições de igualdade. Para restrições de
desigualdade, as coisas se tornam mais complicadas. Precisamos das chamadas
condições de Karush Kuhn-Tucker.
Consideremos o seguinte problema genérico de otimização não linear

M e t ahe emreu minimizar


pseed steu
Ac xÿn f(x),
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a
NS c Luniver Press
m
s sujeito a ÿi(x) = 0, (i = 1, ..., M),
ce
on
)1
(2
0
0
d E d t
eu
on
eu
ÿj (x) ÿ 0, (j = 1, ..., N). (4.6)
Machine Translated by Google

4.1 MÉTODO DE MULTIPLICADORES DE LAGRANGE 31

Se todas as funções são continuamente diferenciáveis, em um mínimo local


xÿ, existem constantes ÿ1, ..., ÿM e µ0, µ1, ..., µN tais que as seguintes
condições de otimização KKT são válidas

M N

µ0ÿf(xÿ) + ÿiÿÿi(xÿ) + µjÿÿj (xÿ) = 0, (4.7)


i=1 j=1

e
ÿj (xÿ) ÿ 0, µjÿj (xÿ) = 0, (j = 1, 2, ..., N), (4.8)
onde
µj ÿ 0, (j = 0, 1, ..., N). (4.9)

As últimas condições de não negatividade valem para todo µj , embora não


haja restrição no sinal de ÿi .
As constantes satisfazem a seguinte condição

N M

µj + |ÿi | 0. (4.10)
j=0 i=1

Este é essencialmente um método generalizado de multiplicadores de


Lagrange. No entanto, existe a possibilidade de degeneração quando µ0 = 0 sob certas condiçõ
ÿ
Existem duas possibilidades: 1) existem vetores ÿ = (ÿ ÿ e ÿ 1 , ...,ÿM ) T
ÿ ÿT
= (µ ÿ 1 , .., µ N) de modo que as equações acima sejam válidas, ou 2)
todos os vetores µ ÿÿ1(xÿ), ÿÿ2(xÿ), ..., ÿÿ1(xÿ), ..., ÿÿN (xÿ) são linearmente
ÿL
independentes e, neste caso, as condiçõesÿxiestacionárias não são
necessariamente válidas. Como o segundo caso é um caso especial, não discutiremos mais sob
A condição µjÿj (xÿ) = 0 em (4.8) é freqüentemente chamada de condição
de complementaridade ou condição de slackness complementar. Ou
significa µj = 0 ou ÿj (xÿ) = 0. O último caso ÿj (xÿ) = 0 para qualquer j
particular significa que a igualdade se torna rígida e, portanto, torna-se uma
igualdade. Para o primeiro caso µj = 0, a desigualdade para um j particular
é válida e não é rígida; no entanto, µj = 0 significa que essa desigualdade
correspondente pode ser ignorada. Portanto, as desigualdades que não
são apertadas são ignoradas, enquanto as desigualdades que são apertadas
tornam-se igualdades; conseqüentemente, o problema restrito com
restrições de igualdade e desigualdade agora se torna essencialmente um
problema restrito modificado com restrições de igualdade selecionadas.
Esta é a beleza das condições KKT. A questão principal continua sendo
M t ah r
e e em
pseed identificar
steu
eu
qual desigualdade se torna apertada, e isso depende do problema de otimização
Ac
eu
nEUe
- As condições KKT formam a base para a análise matemática de
og
ri
rt
em
Xin-She Yang
problemas de otimização não linear, mas a implementação numérica dessas
t
h
a m
N c Luniver Press s
condições não é fácil e muitas vezes ineficiente. Do ponto de vista numérico,
S
ce
on 0
)1 0
d E d t oo
eu
n método da penalidade é mais simples de implementar.
eu
(2
Machine Translated by Google

32 CAPÍTULO 4. COMO LIDAR COM RESTRIÇÕES

4.2 MÉTODO DE PENALIDADE

Para um problema de otimização não linear com restrições de igualdade e


desigualdade, um método comum de incorporar restrições é o método de
penalidade. Para o problema de otimização

minimizar T n
f(x), x = (x1, ..., xn) xÿn ÿ ,

sujeito a ÿi(x) = 0, (i = 1, ..., M),

ÿj (x) ÿ 0, (j = 1, ..., N), (4.11)

a ideia é definir uma função de penalidade para que o problema restrito seja
transformado em um problema irrestrito. Agora nós definimos

M N
2 2
ÿ(x, µi , ÿj ) = f(x) + se eu
(x) + njps j (x), (4.12)
i=1 j=1

onde µi 1 e ÿj ÿ 0 que devem ser grandes o suficiente, dependendo da qualidade


da solução necessária.
Como podemos ver, quando uma restrição de igualdade é atendida, seu efeito
ou contribuição para ÿ é zero. No entanto, quando violado, é fortemente penalizado,
pois aumenta ÿ significativamente. Da mesma forma, é verdade quando as
restrições de desigualdade se tornam rígidas ou exatas. Para facilitar a
implementação numérica, devemos usar as funções de índice H para reescrever a função de pe

M N
2 2
ÿ = f(x) + µiHi [ÿi(x)]ÿ eu
(x) + ÿjHj [ÿj (x)]ÿ j
(x), (4.13)
i=1 j=1

Aqui Hi [ÿi(x)] e Hj [ÿj (x)] são funções de índice.


Mais especificamente, Hi [ÿi(x)] = 1 se ÿi(x) = 0, e Hi = 0 se ÿi(x) = 0.
Da mesma forma, Hj [ÿj (x)] = 0 se ÿj (x) ÿ 0 for verdadeiro, enquanto Hj = 1 se ÿj (x) > 0.
Em princípio, a precisão numérica depende dos valores de µi e ÿj que devem ser
razoavelmente grandes. Mas quão grande é grande o suficiente? Como a maioria
computadores ÿ 2,2 × 10ÿ16 tem uma precisão de ÿ52 dos de = 2 , µi e ÿj devem
máquina
ser próximos da ordem de 1015 . Obviamente, isso pode causar problemas
numéricos se forem muito grandes.
Além disso, para simplificar a implementação, podemos usar µ = µi para todos
i e ÿ = ÿj para todo j. Ou seja, podemos usar uma simplificação

M N
M e t ahe emreu
pseed steu
Ac ÿ(x, µ, ÿ) = f(x) + µ Olá [ÿi(x)]ÿ
2
(x) + n Hj [ÿj (x)]ÿ
2
(x).
nEUe eu
og
eu
j
-
rt ri i=1 j=1
em
Xin-She Yang h
t

a m
N c Luniver Press s
S
c
e )1Em geral, para a maioria das aplicações, µ e ÿ podem ser considerados como 1010
0
on 0
(2 a
d E d t
eu
on
eu
1015 . Usaremos esses valores em nossa implementação.
Machine Translated by Google

4.3 TAMANHO DO PASSO EM CAMINHADAS ALEATÓRIAS 33

Às vezes, pode ser mais fácil alterar uma restrição de igualdade para duas restrições
de desigualdade, de modo que só tenhamos que lidar com desigualdades na
implementação. Isso ocorre porque g(x) = 0 é sempre equivalente a g(x) ÿ 0 eg(x) ÿ 0 (ou
ÿg(x) ÿ 0).

4.3 TAMANHO DO PASSO EM PASSEIOS ALEATÓRIOS

Como passeios aleatórios são amplamente utilizados para randomização e busca local,
um tamanho de passo adequado é muito importante. Na equação genérica

t+1 t x = x
+ s t, (4.14)

t é extraído de uma distribuição normal padrão com média zero e desvio padrão
unitário. Aqui, o tamanho do passo s determina até onde um caminhante aleatório (por
exemplo, um agente ou partícula em metaheurística) pode ir para um número fixo de
iterações.
Se s for muito grande, então a nova solução x t+1 gerada estará muito longe da
solução antiga (ou, mais frequentemente, da melhor solução atual). Então, é improvável
que tal movimento seja aceito. Se s for muito pequeno, a mudança é muito pequena
para ser significativa e, consequentemente, essa busca não é eficiente. Portanto, um
tamanho de passo adequado é importante para manter a busca o mais eficiente possível.
Da teoria dos passeios aleatórios isotrópicos simples, sabemos que o
a distância média r percorrida no espaço de dimensão d é

2r = 2dDt, (4.15)

onde D = s 2/2ÿ é o coeficiente de difusão efetivo. Aqui s é o tamanho do passo ou


distância percorrida em cada salto, e ÿ é o tempo gasto para cada salto. A equação
acima implica que

2 m²
2

segundos
= . (4.16)
td

Para uma escala de comprimento L típica de uma dimensão de interesse, a busca local
é tipicamente limitada a uma região de L/10. Ou seja, r = L/10. Como as iterações são
discretas, podemos tomar ÿ = 1. Normalmente em metaheurísticas, podemos esperar
que o número de gerações seja geralmente t = 100 a 1000, o que significa que

r
sÿ = L/10 . (4.17)
ÿ td ÿ td
M e t ahe emreu
eed
ps Para
steu d = 1 e t = 100, temos s = 0,01L, enquanto s = 0,001L para d = 10 e t = 1000. Como
Ac
nEU eu
og
e- os tamanhos dos passos podem diferir de variável para variável, um passo
ri
rt
em
Xin-She Yang t

a relação de tamanho s/L é mais genérica. Portanto, podemos usar s/L = 0,001 a 0,01
h
a m
s
NS c Luniver Press
)1
c
e para a maioria dos problemas. Usaremos esse fator de tamanho de etapa em nossa
0
on 0
(2
d E d t
eu
on
eu
implementação, que será discutido posteriormente na última seção deste capítulo.
Machine Translated by Google

34 CAPÍTULO 4. COMO LIDAR COM RESTRIÇÕES

Para demonstrar a maneira como incorporamos as restrições e a maneira de


fazer o passeio aleatório, é fácil ilustrar usando um exemplo de design do mundo
real em aplicações de engenharia. Agora vamos olhar para o conhecido projeto
de viga soldada.

4.4 PROJETO DE VIGA SOLDADA

O problema de projeto de vigas soldadas é um problema de teste padrão para


otimização de projeto restrito, que foi descrito em detalhes na literatura (Rags
dell e Phillips 1976, Cagnina et al 2008). O problema tem quatro variáveis de
projeto: a largura w e o comprimento L da área soldada, a profundidade d e a
espessura h da viga. O objetivo é minimizar o custo total de fabricação, sob as
restrições apropriadas de tensão de cisalhamento ÿ , tensão de flexão ÿ, carga de
flambagem P e deflexão final ÿ.
O problema pode ser escrito como

minimizar f(x) = 1,10471w 2L + 0,04811dh(14,0 + L), (4.18)

sujeito a

g1(x) = ÿ (x) ÿ 13, 600 ÿ 0


g2(x) = ÿ(x) ÿ 30, 000 ÿ 0 g3(x)
=wÿhÿ0
g4(x) = 0,10471w 2 + 0,04811hd(14 + L) ÿ 5,0 ÿ 0 (4.19)
g5(x) = 0,125 ÿ w ÿ 0
g6(x) = ÿ(x) ÿ 0,25 ÿ 0 g7(x)
= 6000 ÿ P(x) ÿ 0,

onde

504.000 65, 856 eu


s(x) = , , Q = 6000(14 + ), ÿ = 30,
hd2 000hd3 2

1 eu2 (p + d) 2
D= L2 + (w + d) 2, J = ÿ 2 wL[ + QD ], ÿ = ,
2 6 2 J
6000 ÿÿL
um = , ÿ (x) = ÿ2 + + ÿ 2,
ÿ 2wL D

dh3 d 30/48 P =
0,61423 × 106 (1 ÿ ). 28 (4.20)
6

M e t ahe emreu
Os limites simples ou limites são 0,1 ÿ L, d ÿ 10 e 0,1 ÿ w, h ÿ 2,0.
pseed steu
Ac Se usarmos o algoritmo de recozimento simulado para resolver este problema
nEUe eu og
(consulte a próxima seção), podemos obter a solução ótima que é aproximadamente a mesma
-
rt ri
em
Xin-She Yang h
t

a
NS c Luniver Press
solução obtida por Cagnina et al (2008)
m
s

ce
on
)1
0
0
d E d t o n (2
eu eu
fÿ = 1,724852 em (0,205730, 3,470489, 9,036624, 0,205729). (4.21)
Machine Translated by Google

4.5 SOBRE A IMPLEMENTAÇÃO 35

Vale ressaltar que você deve executar os programas algumas vezes usando
valores como ÿ = 0,95 (padrão) e ÿ = 0,99 para ver como os resultados variam.
Além disso, como o SA é um algoritmo de otimização estocástico, não podemos
esperar que os resultados sejam os mesmos. Na verdade, eles serão um pouco
diferentes, toda vez que executarmos o programa. Portanto, devemos entender e
interpretar os resultados usando medidas estatísticas como média e desvio padrão.

4.5 DA IMPLEMENTAÇÃO

Acabamos de formular o problema de projeto de vigas soldadas usando diferentes


notações de alguma literatura. Aqui tentamos ilustrar um ponto.
Como a entrada para uma função é um vetor (vetor coluna ou, menos
frequentemente, vetor linha), temos que escrever

x = w L dh = [x(1) x(2) x(3) x(4)]. (4.22)

Com este vetor, o objetivo se torna

minimizar f(x) = 1,10471 ÿ x(1)2 ÿ x(2) + 0,04811 ÿ x(3) ÿ x(4)(14,0 + x(2)),

que pode ser facilmente convertido em uma fórmula no Matlab. Da mesma forma, a
terceira restrição de desigualdade pode ser reescrita como

g3 = g(3) = x(1) ÿ x(4) ÿ 0. (4.23)

Outras restrições podem ser reescritas de maneira semelhante.


Usando o pseudocódigo para recozimento simulado e combinando com o
método de penalidade, podemos resolver o problema de projeto de vigas soldadas
acima usando recozimento simulado no Matlab da seguinte forma:

% Simulated Annealing para otimização restrita % por Xin-She Yang @


Cambridge University @2008 % Uso: sa_mincon(0,99) ou
sa_mincon;

function [ bestsol , fval , N ] = sa_mincon ( alpha )


% Fator de resfriamento padrão
se nargin<1,
alfa=0,95;
fim

M e t ahe emreu
pseed %stExibir
Ac
eu uso
nEUe eu
- disp('sa_mincon or [Best,fmin,N]=sa_mincon(0.9)');
og
ri
rt
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
on
)1
% Otimização do projeto de vigas soldadas
0
0
d E d t
eu
on
eu
Lb=[0,1
(2 0,1 0,1 0,1];
Machine Translated by Google

36 CAPÍTULO 4. COMO LIDAR COM RESTRIÇÕES

Ub=[2,0 10,0 10,0 2,0];


u0=(Lb+Ub)/2;

se comprimento(Lb) ~=comprimento(Ub),
disp('Limites/limites simples são impróprios!'); retornar

fim

%% Início do programa principal ------------------------- d=length(Lb);


% Dimensão do problema

% Inicializando parâmetros e configurações T_init =


1.0; % Temperatura inicial T_min = 1e-10; % Temperatura
de parada final F_min = -1e+100; % Valor mínimo da função %
Número máximo de rejeições max_rej=500; % Número máximo
máximo de de execuções max_run=150; % Número
aceitar max_accept = 50; pesquisa_inicial=500;
% Período de
busca inicial k = 1; Enorm=1e-5;

% Constante de Boltzmann
% Norma energética (por exemplo, Enorm=1e-8)

% Inicializando os contadores i,j etc i= 0; j = 0;


aceitar = 0; valor total = 0;
% Inicializando vários valores
T = T_init;
E_init = Fun(u0);
E_old = E_init; E_novo=E_velho;
melhor=u0; % valores inicialmente adivinhados
% Iniciando o recozimento simulado while ((T
> T_min) & (j <= max_rej) & E_new>F_min) i = i+1;

% Verifique se os números máximos de executar/aceitar são


atendidos if (i >= max_run) | (aceitar >= max_accept)
% zera os contadores i = 1;
aceitar = 1;
% Resfriamento de acordo com uma programação de resfriamento
T = resfriamento(alfa,T);
fim
M e t ahe emreu
pseed steu
Ac % Avaliações de funções em novos locais if
nEUe eu
og
-
rt
em
ri totaleval<initial_search, init_flag=1;
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
on
)10
0 ns=newsolution(u0,Lb,Ub,init_flag);
d E on
(2
d t
eu eu
Machine Translated by Google

4.5 SOBRE A IMPLEMENTAÇÃO 37

outro
init_flag=0;
ns=newsolution(best,Lb,Ub,init_flag);
fim
valor total=valor total+1;
E_novo = Divertido(ns);
% Decide aceitar a nova solução
DeltaE=E_novo-E_velho;
% Aceita se melhorou se
(DeltaE <0)
melhor = ns; E_velho = E_novo;
aceitar=aceitar+1; j = 0;
fim
% Aceite com probabilidade se não melhorar if (DeltaE>=0
& exp(-DeltaE/(k*T))>rand ); melhor = ns; E_velho =
E_novo; aceitar=aceitar+1; outro

j=j+1;
fim
% Atualize a solução ótima estimada f_opt=E_old;

fim

bestsol=melhor;
fval=f_opt;
N=total;

%% Nova função de
soluções s=newsolution(u0,Lb,Ub,init_flag)
% Procure se length(Lb)>0 &
init_flag==1, s=Lb+(Ub-Lb).*rand(size(u0));
else % Ou pesquisa local por caminhada

aleatória stepsize=0.01; s=u0+stepsize*(Ub-


Lb).*randn(size(u0));
fim

M e t ahe s=limites(s,Lb,Ub);
em
reu
eed
ps steu
Ac
nEU eu og
e-
rt
em
%% Arrefecimento
ri
Xin-She Yang h
t
m
a
NS c Luniver Press função T=resfriamento(alfa,T)
s

ce
on
)1
T=alfa*T;
0
0
d E on
(2
d t
eu eu
Machine Translated by Google

38 CAPÍTULO 4. COMO LIDAR COM RESTRIÇÕES

função ns=limites(ns,Lb,Ub) se
comprimento(Lb)>0,
% Aplicar o limite inferior
ns_tmp=ns;
I=ns_tmp<Lb;
ns_tmp(I)=Lb(I);
% Aplicar os limites superiores
J=ns_tmp>Ub;
ns_tmp(J)=Ub(J);
% Atualize este novo movimento
ns=ns_tmp;
outro
ns=ns;
fim

função objetiva % d-dimensional função z=Fun(u)

% Objetivo
z=fobj(u);

% Aplicar restrições não lineares pelo método de penalidade


% Z=f+sum_k=1^N lam_k g_k^2 *H(g_k)
z=z+getnonlinear(u);

função Z=getnonlinear(u)
Z=0;
% Constante de
penalidade lam=10^15;
coxoq=10^15; [g,geq]=restrições(u);

% Restrições de desigualdade
para k=1:comprimento(g),
Z=Z+ lam*g(k)^2*getH(g(k));
fim

% Restrições de igualdade (quando geq=[], comprimento->0) para


k=1:length(geq),
M e t ahe em Z=Z+lameq*geq(k)^2*geteqH(geq(k));
reu
eed
ps steufim
Ac
nEU eu og
e- ri
rt
em
Xin-She Yang h
t

% Teste se as desigualdades mantêm


a m
NS c Luniver Press s

c
e
o
nd
)1
0
a função H=getH(g)
0
E d t
eu
on
eu
(2
Machine Translated by Google

4.5 SOBRE A IMPLEMENTAÇÃO 39

se g <= 0,
H=0;
outro
H=1;
fim

% Teste se as igualdades mantêm


a função H=geteqH(g) se
g==0,
H=0;
outro
H=1;
fim

% Funções objetivas função


z=fobj(u)
% Otimização do projeto de vigas soldadas
z=1,10471*u(1)^2*u(2)+0,04811*u(3)*u(4)*(14,0+u(2));

% Todas as restrições
funcionam [g,geq]=constraints(x)
% Restrições de desigualdade
Q=6000*(14+x(2)/2);
D=sqrt(x(2)^2/4+(x(1)+x(3))^2/4);
J=2*(x(1)*x(2)*sqrt(2)*(x(2)^2/12+(x(1)+x(3))^2/4)); alfa=6000/
(quadrado(2)*x(1)*x(2)); beta=Q*D/J;

tau=sqrt(alpha^2+2*alpha*beta*x(2)/(2*D)+beta^2); sigma=504000/
(x(4)*x(3)^2); delta=65856000/
(30*10^6*x(4)*x(3)^3); tmpf=4,013*(30*10^6)/196;
P=tmpf*sqrt(x(3)^2*x(4)^6/36)*(1-
x(3)*sqrt(30/48)/28);

g(1)=tau-13600;
g(2)=sigma-30000;
g(3)=x(1)-x(4);
g(4)=0,10471*x(1)^2+0,04811*x(3)*x(4)*(14+x(2))-5,0; g(5)=0,125-x(1);
g(6)=delta-0,25;
g(7)=6000-P;
M e t ahe emreu
pseed steu
Ac
nEUe eu og
-
rt
em
Xin-She Yang
% Restrições de igualdade
ri
h
t
m
a
NS c Luniver Press geq=[];
s

ce
on
)1
%%0
Fim do programa --------------------------------
0
d E on
(2
d t
eu eu
Machine Translated by Google

40 CAPÍTULO 4. COMO LIDAR COM RESTRIÇÕES

Como obter os arquivos

Para obter os arquivos de todos os programas Matlab fornecidos neste livro, os leitores
podem enviar um e-mail (com o assunto 'Nature-Inspired Algorithms: Files') para
Metaheuristic.Algorithms@gmail.com – Um arquivo zip será fornecido (via e-mail ) do autor.

REFERÊNCIAS

1. Cagnina LC, Esquivel SC e Coello CA, Resolvendo problemas de otimização


de engenharia com o otimizador simples de enxame de partículas restritas,
Informatica, 32, 319-326 (2008)
2. Cerny V., Uma abordagem termodinâmica para o problema do caixeiro viajante:
um algoritmo de simulação eficiente, Journal of Optimization Theory and
Applications, 45, 41-51 (1985).
3. Deb K., Otimização para Projeto de Engenharia: Algoritmos e Exemplos,
Prentice-Hall, Nova Deli, (1995).
4. Gill PE, Murray W. e Wright MH, Practical optimization, Academic Press Inc,
(1981).
5. Hamacher K., Wenzel W., O comportamento de escala de algoritmos de
minimização estocástica em uma paisagem de funil perfeito, Phys. Rev. E., 59, 938-941 (1999
6. Kirkpatrick S., Gelatt CD e Vecchi MP, Optimization by simulad annealing,
Science, 220, No. 4598, 671-680 (1983).
7. Metropolis N., Rosenbluth AW, Rosenbluth MN, Teller AH e Teller E., Equações
de cálculos de estado por máquinas de computação rápida, Journal of
Chemical Physics, 21, 1087-1092 (1953).
8. Ragsdell K. e Phillips D., Projeto ideal de uma classe de estruturas soldadas
usando programação geométrica, J. Eng. Ind., 98, 1021-1025 (1976).
9. Wenzel W. e Hamacher K., Uma abordagem de tunelamento estocástico para global
otimização, fis. Rev. Lett., 82, 3003-3007 (1999).
10. Yang XS, algoritmos derivados da biologia na otimização de engenharia
(Capítulo 32), no Handbook of Bioinspired Algorithms, editado por Olariu S. e
Zomaya A., Chapman & Hall / CRC, (2005).
11. EG Talbi, Metaheuristics: From Design to Implementation, Wiley, (2009).

M e t ahe emreu
pseed steu
Ac
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press s

ce
on
)10
0
d E on
(2
d t
eu eu
Machine Translated by Google

capítulo 5

ALGORÍTMOS GENÉTICOS

Algoritmos genéticos são provavelmente os algoritmos evolutivos mais


populares em termos de diversidade de suas aplicações. A grande maioria
dos problemas de otimização conhecidos foi tentada por algoritmos
genéticos. Além disso, os algoritmos genéticos são baseados em população
e muitos algoritmos evolutivos modernos são baseados diretamente em
algoritmos genéticos ou têm algumas semelhanças fortes.

5.1 INTRODUÇÃO

O algoritmo genético (AG), desenvolvido por John Holland e seus


colaboradores nas décadas de 1960 e 1970, é um modelo ou abstração da
evolução biológica baseado na teoria da seleção natural de Charles Darwin.
Holland foi o primeiro a usar o cruzamento e recombinação, mutação e
seleção no estudo de sistemas adaptativos e artificiais. Esses operadores
genéticos formam a parte essencial do algoritmo genético como uma
estratégia de solução de problemas. Desde então, muitas variantes de
algoritmos genéticos foram desenvolvidas e aplicadas a uma ampla gama
de problemas de otimização, desde a coloração de gráficos até o
reconhecimento de padrões, desde sistemas discretos (como o problema
do caixeiro viajante) até sistemas contínuos (por exemplo, o projeto eficiente
de folha de ar em engenharia aeroespacial), e do mercado financeiro para otimização de eng
Existem muitas vantagens dos algoritmos genéticos sobre os algoritmos
de otimização tradicionais, e duas vantagens mais notáveis são: a capacidade
de lidar com problemas complexos e o paralelismo. Algoritmos genéticos
podem lidar com vários tipos de otimização, seja a função objetivo (aptidão)
estacionária ou não estacionária (mudança com o tempo), linear ou não
linear, contínua ou descontínua ou com ruído aleatório. Como múltiplos
e
M t ah r e em
eu
pseed descendentes
steu Ac em uma população agem como agentes independentes, a
eu
nEUe
-
rt população (ou qualquer subgrupo) pode explorar o espaço de busca em várias direções sim
og
ri
em
Xin-She Yang
Esse recurso o torna ideal para paralelizar os algoritmos para implementação.
t
h
a m
N c Luniver Press s
S
c
e Diferentes parâmetros e até mesmo diferentes grupos de strings codificadas
)1 0
o
nd 20
podem ser manipulados ao mesmo tempo.
E d t on (
eu eu

Algoritmos Metaheurísticos Inspirados na Natureza, 2ª Edição por Xin-She Yang 41


Copyright c 2010 Luniver Press
Machine Translated by Google

Capítulo 10

ALGORITMO FIREFLY

10.1 COMPORTAMENTO DOS VAGA-LUMIS

A luz intermitente dos vaga-lumes é uma visão incrível no céu de verão nas regiões
tropicais e temperadas. Existem cerca de duas mil espécies de vaga-lumes, e a
maioria produz flashes curtos e rítmicos. O padrão de flashes é muitas vezes único
para uma espécie em particular. A luz intermitente é produzida por um processo de
bioluminescência, e as verdadeiras funções de tais sistemas de sinalização ainda
estão sendo debatidas. No entanto, duas funções fundamentais desses flashes são
atrair parceiros de acasalamento (comunicação) e atrair presas em potencial. Além
disso, piscar também pode servir como um mecanismo de alerta de proteção para
lembrar predadores em potencial do sabor amargo dos vaga-lumes.

O flash rítmico, a velocidade do flash e a quantidade de tempo fazem parte do


sistema de sinais que aproxima os dois sexos. As fêmeas respondem ao padrão
único de piscar de um macho na mesma espécie, enquanto em algumas espécies,
como Photuris, os vaga-lumes fêmeas podem escutar os sinais de corte
bioluminescentes e até mesmo imitar o padrão de acasalamento de outras espécies
para atrair e comer o macho. vaga-lumes que podem confundir os flashes com um
parceiro adequado em potencial. Alguns vaga-lumes tropicais podem até sincronizar
seus flashes, formando assim um comportamento biológico auto-organizado emergente.
Sabemos que a intensidade da luz a uma determinada distância r da fonte de luz
obedece à lei do inverso do quadrado. Ou seja, a intensidade da luz I diminui à
medida que a distância r aumenta em termos de I ÿ 1/r2 . Além disso, o ar absorve a
luz que se torna cada vez mais fraca à medida que a distância aumenta. Esses dois
fatores combinados tornam a maioria dos vaga-lumes visuais a uma distância limite,
geralmente várias centenas de metros à noite, o que é bom o suficiente para os vaga-
lumes se comunicarem.
A luz intermitente pode ser formulada de forma a ser associada à função objetivo
ed
M e t ahea
em ser otimizada, o que possibilita a formulação de novos algoritmos de otimização.
reu
e
ps steu
Ac
nEU No restante deste capítulo, vamos primeiro delinear a formulação básica do Algoritmo
eu
og
e- ri
rt
em
Xin-She Yang Firefly (FA) e depois
h
t

a m
NS c Luniver Press discutir a implementação em detalhes.
s

c
e
on
)1
(2
0
0
d E d t on
eu
eu

Algoritmos Metaheurísticos Inspirados na Natureza, 2ª Edição por Xin-She Yang 81


Copyright c 2010 Luniver Press
Machine Translated by Google

82 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

Algoritmo do Vaga-lume

T
Função objetivo f(x), x = (x1, ..., xd)
Gerar população inicial de vaga-lumes xi (i = 1, 2, ..., n)
A intensidade da luz Ii em xi é determinada por f(xi)
Defina o coeficiente de absorção de luz ÿ
while (t <MaxGeneration) para i
= 1 : n todos os n vaga-lumes
para j = 1 : n todos os n vaga-lumes (loop
interno) se (Ii < Ij ), mova o vaga-lume i em direção a j ; fim se
Varie a atratividade com a distância r via exp[ÿÿr]
Avalie novas soluções e atualize a intensidade da luz end
for j end for
i
Classifique os vaga-lumes e encontre o melhor gÿ final global
atual enquanto
Resultados e visualização pós-processamento

Figura 10.1: Pseudocódigo do algoritmo firefly (FA).

10.2 ALGORITMO FIREFLY

Agora podemos idealizar algumas das características dos vaga-lumes para desenvolver
algoritmos inspirados em vaga-lumes. Para simplificar a descrição do nosso novo Firefly
Algorithm (FA), que foi desenvolvido por Xin-She Yang na Cam Bridge University em
2007, agora usamos as três regras idealizadas a seguir:

• Todos os vaga-lumes são unissex para que um vaga-lume seja atraído por outros
vaga-lumes independentemente do sexo;

• A atratividade é proporcional ao seu brilho, portanto, para quaisquer dois


pirilampos piscando, o menos brilhante se moverá em direção ao mais brilhante.
A atratividade é proporcional ao brilho e ambos diminuem à medida que a
distância aumenta. Se não houver nenhum mais brilhante do que um vaga-lume
em particular, ele se moverá aleatoriamente;

• O brilho de um vaga-lume é afetado ou determinado pela paisagem


da função objetivo.

M e t ahe emreu
pseed steu
Ac Para um problema de maximização, o brilho pode ser simplesmente proporcional ao
nEUe eu
og
- valor da função objetivo. Outras formas de brilho podem ser definidas de maneira
ri
rt
em
Xin-She Yang t

a semelhante à função de aptidão em algoritmos genéticos.


m h
NS c Luniver Press s

ce
on
)10
0
(2 pode
Com base nessas três regras, os passos básicos do algoritmo firefly (FA)
d E d t
eu
on
eu
ser resumido como o pseudocódigo mostrado na Figura 11.1.
Machine Translated by Google

10.3 INTENSIDADE DA LUZ E ATRATIVIDADE 83

10.3 INTENSIDADE DA LUZ E ATRATIVIDADE

No algoritmo do vaga-lume, há duas questões importantes: a variação da


intensidade da luz e a formulação da atratividade. Para simplificar, podemos
sempre supor que a atratividade de um vaga-lume é determinada por seu brilho,
que por sua vez está associado à função objetivo codificada.
No caso mais simples para problemas de otimização máxima, o brilho I de um
vaga-lume em um determinado local x pode ser escolhido como I(x) ÿ f(x).
Porém, a atratividade ÿ é relativa, deve ser vista aos olhos de quem vê ou julgada
pelos outros vagalumes. Assim, variará com a distância rij entre o vaga-lume i e o
vaga-lume j. Além disso, a intensidade da luz diminui com a distância de sua fonte,
e a luz também é absorvida na mídia, portanto devemos permitir que a atratividade
varie com o grau de absorção.

Na forma mais simples, a intensidade da luz I(r) varia de acordo com a


lei do inverso quadrado
É
I(r) = 2, (10.1)
r

onde Is é a intensidade na fonte. Para um dado meio com um coeficiente fixo de


absorção de luz ÿ, a intensidade da luz I varia com a distância r. Aquilo é

ÿÿr
I = I0e (10.2) ,onde I0 é a intensidade original da

luz. Para evitar a singularidade em r = 0 na expressão Is/r2 , o efeito combinado da


lei do inverso do quadrado e da absorção pode ser aproximado como a seguinte
forma gaussiana

I(r) = I0e 2 ÿÿr . (10.3)


Como a atratividade de um vaga-lume é proporcional à intensidade da luz vista por
vaga-lumes adjacentes, podemos agora definir a atratividade ÿ de um vaga-lume por
2 ÿÿr
ÿ = ÿ0e , (10.4)

onde ÿ0 é a atratividade em r = 0. Como geralmente é mais rápido calcular 1/(1 + r


2
pode ser ) do que uma função exponencial, a função acima, se necessário,
convenientemente aproximado como

ÿ0 . (10.5)
ÿ = 1 + ÿr 2

Ambos (10.4) e (10.5) definem uma distância característica ÿ = 1/ ÿÿ sobre a qual a


ÿ1
atratividade muda significativamente de ÿ0 para ÿ0e para a equação (10.4) ou ÿ0/2
M e t ahe emreu
eed
ps para
steu a equação (10.5).
Ac
nEU eu
e- Na implementação real, a função de atratividade ÿ(r) pode ser qualquer função
og
ri
rt
em
Xin-She Yang
monotonicamente decrescente, como a seguinte forma generalizada
t
h
a m
s
NS c Luniver Press
)1
ce 0
on
(2
0 ÿÿrm
d Ed eu t euo n
ÿ(r) = ÿ0e , (m ÿ 1). (10.6)
Machine Translated by Google

84 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

Para um ÿ fixo, o comprimento característico torna-se


ÿ1/m
ÿ = ÿ ÿ 1, m ÿ ÿ. (10.7)

Por outro lado, para uma dada escala de comprimento ÿ em um problema de


otimização, o parâmetro ÿ pode ser usado como um valor inicial típico. Aquilo é
1
ÿ= . (10.8)
ÿm

A distância entre quaisquer dois vaga-lumes i e j em xi e xj , respectivamente,


é a distância cartesiana

linha = xi ÿ xj = (xi,k ÿ xj,k) 2, (10.9)


k=1

onde xi,k é a k-ésima componente da coordenada espacial xi do i-ésimo vaga-lume.


No caso 2-D, temos

2
linha = (xi ÿ xj ) + (yi ÿ yj ) 2. (10.10)

O movimento de um vaga-lume é atraído por outro mais atraente


(mais brilhante) vaga-lume j é determinado por

2 ÿÿr
xi = xi + ÿ0e ij (xj ÿ xi) + ÿ i , (10.11)

onde o segundo termo é devido à atração. O terceiro termo é a randomização com


ÿ sendo o parâmetro de randomização e números aleatórios é um vetor de eu

extraídos de uma distribuição gaussiana ou distribuição uniforme. Por exemplo, a


forma mais simples é i pode ser substituído por rand ÿ 1/2 onde rand é um gerador
de números aleatórios uniformemente distribuído em [0, 1].
Para a maioria das nossas implementações, podemos tomar ÿ0 = 1 e ÿ ÿ [0, 1].
Vale ressaltar que (10.11) é um passeio aleatório com tendência para os vaga-
lumes mais brilhantes. Se ÿ0 = 0, torna-se um passeio aleatório simples. Além disso,
o termo de aleatorização pode ser facilmente estendido para outras distribuições,
como voos de L´evy.
O parâmetro ÿ agora caracteriza a variação da atratividade, e seu valor é
crucialmente importante para determinar a velocidade da convergência e como o
algoritmo FA se comporta. Em teoria, ÿ ÿ [0,ÿ), mas na prática, ÿ = O(1) é determinado
pelo comprimento característico ÿ do sistema a ser otimizado. Assim, para a maioria
das aplicações, normalmente varia de 0,1 a 10.

M e t ahe emreu
eed
ps steu
Ac
nEU eu 10.4 ESCALAÇÕES E ASSINTÓTICAS
og
e- ri
rt
em
Xin-She Yang h
t

a m
s
NS c Luniver Press
)1
c
e Vale ressaltar que a distância r definida acima não se limita à distância euclidiana.
0
on 0Podemos definir outra distância r na dimensão n
d E d t o n (2
eu eu
Machine Translated by Google

10.4 ESCALAÇÕES E ASSINTÓTICAS 85

hiperespaço, dependendo do tipo de problema de nosso interesse. Por exemplo,


para problemas de agendamento de tarefas, r pode ser definido como o intervalo de
tempo ou intervalo de tempo. Para redes complicadas como a Internet e redes
sociais, a distância r pode ser definida como a combinação do grau de agrupamento
local e a proximidade média dos vértices. De fato, qualquer medida que possa
efetivamente caracterizar as quantidades de interesse no problema de otimização
pode ser usada como a 'distância' r.
A escala típica ÿ deve ser associada à escala em questão em nosso problema de
otimização. Se ÿ é a escala típica para um dado problema de otimização, para um
número muito grande de vaga-lumes nk onde k é o número de ótimos locais, então
as localizações iniciais desses n vaga-lumes devem ser distribuídas de maneira
relativamente uniforme por todo o espaço de busca. À medida que as iterações
avançam, os vaga-lumes convergirão para todos os ótimos locais (incluindo os
globais). Comparando as melhores soluções entre todos esses ótimos, o ótimo
global pode ser facilmente alcançado. Nossa pesquisa recente sugere que é possível
provar que o algoritmo firefly se aproximará do ótimo global quando n ÿ ÿ et 1. Na
realidade, ele converge muito rapidamente e isso será demonstrado mais adiante
neste capítulo.
Existem dois casos limitantes ou assintóticos importantes quando ÿ ÿ 0 e ÿ ÿ ÿ.
Para ÿ ÿ 0, a atratividade é constante ÿ = ÿ0 e ÿ ÿ ÿ, isso equivale a dizer que a
intensidade da luz não diminui em um céu idealizado. Assim, um vaga-lume piscando
pode ser visto em qualquer lugar do domínio.
Assim, um ótimo único (geralmente global) pode ser facilmente alcançado. Se
removermos o loop interno para j na Figura 11.1 e substituirmos xj pelo melhor gÿ
global atual , então o Algoritmo Firefly torna-se o caso especial de otimização
acelerada por enxame de partículas (PSO) discutido anteriormente. Posteriormente,
a eficiência deste caso especial é a mesma do PSO.
Por outro lado, o caso limite ÿ ÿ ÿ leva a ÿ ÿ 0 e ÿ(r) ÿ ÿ(r) que é a função delta de
Dirac, o que significa que a atratividade é quase zero na visão de outros vaga-lumes.
Isso é equivalente ao caso em que os vaga-lumes vagam aleatoriamente em uma
região nebulosa muito densa. Nenhum outro vaga-lume pode ser visto, e cada vaga-
lume vagueia de forma completamente aleatória.
Portanto, isso corresponde ao método de pesquisa completamente aleatório.
Como o algoritmo firefly geralmente está no caso entre esses dois extremos, é
possível ajustar o parâmetro ÿ e ÿ para que ele possa superar tanto a busca aleatória
quanto o PSO. De fato, FA pode encontrar os ótimos globais, bem como os ótimos
locais simultaneamente e efetivamente. Essa vantagem será demonstrada em
detalhes posteriormente na implementação.
Uma vantagem adicional do FA é que diferentes fireflies funcionarão quase
M e t aheindependentemente,
em
reu
portanto, é particularmente adequado para implementação
eed
ps st
Ac
eu
paralela. É ainda melhor do que algoritmos genéticos e PSO porque os vaga-lumes
nEU eu
og
e-
rt
em
Xin-She Yang
se agregam mais próximos de cada ótimo. Pode-se esperar que as interações
ri
t
h
m
a
NS c Luniver Press entre diferentes sub-regiões são mínimas na implementação paralela.
s

ce
on
)1
(2
0
0
d E d t on
eu
eu
Machine Translated by Google

86 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

1
5

0
0 ÿ5
0
5 ÿ5

Figura 10.2: Paisagem de uma função com dois máximos globais iguais.

10.5 IMPLEMENTAÇÃO

Para demonstrar como o algoritmo firefly funciona, nós o implementamos no


Matlab/Octave a ser fornecido posteriormente.
Para mostrar que tanto o ótimo global quanto o ótimo local podem ser
encontrados simultaneamente, agora usamos a seguinte função de quatro picos

ÿ(xÿ4)2ÿ(yÿ4)2 ÿ(x+4)2ÿ(yÿ4)2 f(x, y)


=e+e + 2[e ÿx 2ÿy 2 + e ÿx 2ÿ(y+4)2 ],

onde (x, y) ÿ [ÿ5, 5] × [ÿ5, 5]. Esta função tem quatro picos. Dois picos locais com f
= 1 em (ÿ4, 4) e (4, 4) e dois picos globais com fmax = 2 em (0, 0) e (0, ÿ4), conforme
mostrado na Figura 10.2. Podemos ver que todos esses quatro ótimos podem ser
encontrados usando 25 vaga-lumes em cerca de 20 gerações (ver Fig.
10.3). Portanto, o número total de avaliações de funções é de cerca de 500. Isso é
muito mais eficiente do que a maioria dos algoritmos metaheurísticos existentes.

% Algoritmo Firefly por XS Yang (Universidade de Cambridge)


% Uso: ffa_demo([number_of_fireflies,MaxGeneration]) % ex: ffa_demo([12,50]);
função [melhor]=firefly_simple(instr) %
n=número de vaga-lumes

% MaxGeneration=número de pseudo passos de tempo se


nargin<1, instr=[12 50]; n=instr(1); fim
MaxGeneration=instr(2); rand('estado',0); % Redefinir
o gerador aleatório
M e t ahe emreu % ------ Quatro funções de pico --------------------- str1='exp(-(x-4)^2-(y-4)
eed
ps steu
Ac^2)+exp(-(x+4)^2-(y-4)^2)'; str2='+2*exp(-x^2-(y+4)^2)+2*exp(-x^2-y^2)';
nEU eu
og
e- ri
rt
em
Xin-She Yang h
t

a funstr=strcat(str1,str2);
m
s
NS c Luniver Press
)1
ce 0% Convertendo para uma função inline
on 0
(2 f=vectorize(inline(funstr));
d E d t on
eu
eu
Machine Translated by Google

10.5 IMPLEMENTAÇÃO 87

% intervalo=[xmin xmax ymin ymax];


intervalo=[-5 5 -5 5];

% ------------------------------------------------ alfa =0,2; gama=1,0; %


% de aleatoriedade 0--1 (altamente aleatório)
% Coeficiente de absorção
------------------------------------------------ % Os valores da grade são usados
apenas para exibição Ngrid=100; dx=(intervalo(2)-
intervalo(1))/
Ngrid; dy=(intervalo(4)-intervalo(3))/Ngrid;
[x,y]=malha(intervalo(1):dx:intervalo(2),...
intervalo(3):dy:intervalo(4));

z=f(x,y);
% Exibe a forma da figura da função objetivo (1); surfc(x,y,z);

% ------------------------------------------------ % gerando as localizações iniciais


de n vaga-lumes [xn,yn,Lightn]=init_ffa(n,range);

% Exibir os caminhos dos vaga-lumes em uma figura com % contornos


da função a ser otimizada figura(2);

% Iterações ou pseudo tempo de marcha para


i=1:MaxGeneration, %%%%% inicia iterações
% Mostrar os contornos da função
contorno(x,y,z,15); aguentar;
% Avaliar novas soluções
zn=f(xn,yn);

% Classificando os vaga-lumes por sua intensidade de luz


[Lightn,Index]=sort(zn);
xn=xn(Índice); in=in(Índice);
xo = xn; yo = em; Lighto=Luzn; %
Rastrear os caminhos de todos os vagalumes
plot(xn,yn,'.','markersize',10,'markerfacecolor','g'); % Mova todos os vaga-lumes
para os melhores locais [xn,yn]=ffa_move(xn,yn,Lightn,xo,yo,...

Lighto,alpha,gamma,range);
desenhado;
% Use "esperar" para mostrar os caminhos dos vaga-lumes
espera; end
%%%%% end of iterations best(:,1)=xo';
M e t ahebest(:,2)=yo';
em
reu best(:,3)=Claro';
pseed st Ac eu
nEUe eu og
-

% ----- Todas as subfunções estão listadas aqui ---------


rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press % As localizações iniciais da função n vaga-lumes
s

ce
on
)1
[xn,yn,Lightn]=init_ffa(n,range)
0
0
d E on
(2
d t
eu eu
Machine Translated by Google

88 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

5 5

0 0

ÿ5 ÿ5
ÿ5 0 5 ÿ5 0 5

Figura 10.3: As localizações iniciais de 25 vaga-lumes (à esquerda) e suas localizações finais


após 20 iterações (à direita).

xintervalo=intervalo(2)-intervalo(1);
yrange=intervalo(4)-intervalo(3);
xn=rand(1,n)*xintervalo+intervalo(1);
yn=rand(1,n)*yrange+range(3);
Lightn=zeros(tamanho(yn));

% Mova todos os vaga-lumes para a função mais brilhante


[xn,yn]=ffa_move(xn,yn,Lightn,xo,yo,...
Lighto,alpha,gamma,range)
ni=size(yn,2); nj=tamanho(yo,2); for i=1:ni,
% O parâmetro
de atratividade beta=exp(-gamma*r) for j=1:nj, r=sqrt((xn(i)-xo(j))^2+(yn(i)
-yo(j))^2); if
Lightn(i)<Lighto(j), % Mais brilhante e atraente
beta=beta0*exp(-gamma*r.^2); beta0=1; xn(i)=xn(i).*(1-beta)
beta) +xo(j).*beta+alfa.*(rand-0,5); yn(i)=yn(i).*(1-
+yo(j).*beta+alfa.*(rand-0,5); fim

fim % fim para j fim %


fim para i
[xn,yn]=findrange(xn,yn,range);

% Certifique-se de que os vagalumes estão dentro da função de


alcance [xn,yn]=findrange(xn,yn,range) for i=1:length(yn),
M e t ahe emreu
pseed steu
Ac se xn(i)<=intervalo(1), xn(i)=intervalo(1); fim se
nEUe eu
og
xn(i)>=intervalo(2), xn(i)=intervalo(2); fim se
-
rt ri
em
Xin-She Yang h
t

a
N m
s yn(i)<=intervalo(3), yn(i)=intervalo(3); fim se
S c Luniver Press

c
e
on
)10
0
(2 fim
yn(i)>=intervalo(4), yn(i)=intervalo(4); fim
d E d t on
eu
eu
Machine Translated by Google

10.6 VARIANTES FA 89

Na implementação, os valores dos parâmetros são ÿ = 0,2, ÿ = 1 e ÿ0 = 1.


Obviamente, esses parâmetros podem ser ajustados para resolver vários
problemas com diferentes escalas.

10.6 VARIANTES FA

O algoritmo básico do firefly é muito eficiente, mas podemos ver que as soluções
ainda estão mudando à medida que os ótimos se aproximam. É possível melhorar a
qualidade da solução reduzindo a aleatoriedade.
Uma melhoria adicional na convergência do algoritmo é variar o parâmetro
de randomização ÿ para que ele diminua gradualmente à medida que os ótimos
se aproximam. Por exemplo, podemos usar
ÿt
ÿ = ÿÿ + (ÿ0 ÿ ÿÿ)e , (10.12)

onde t ÿ [0,tmax] é o pseudo tempo para simulações e tmax é o número


máximo de gerações. ÿ0 é o parâmetro de randomização inicial enquanto ÿÿ é
o valor final. Também podemos usar uma função semelhante ao esquema de
recozimento geométrico. Aquilo é
t
ÿ = ÿ0ÿ , (10.13)

onde ÿ ÿ (0, 1] é a constante de redução de aleatoriedade.


Além disso, na versão atual do algoritmo FA, não usamos explicitamente o
melhor gÿ global atual , embora o usemos apenas para decodificar as melhores
soluções finais. Nossos estudos recentes mostram que a eficiência pode
melhorar significativamente se adicionarmos um termo extra ÿi(xi ÿ gÿ ) à
fórmula de atualização (10.11). Aqui ÿ é um parâmetro semelhante a ÿ e ÿ e é eu

um vetor de números aleatórios. Estes poderiam formar tópicos importantes


para pesquisas futuras.

10.7 PROJETO DA MOLA

O projeto de uma mola de tração e compressão é um conhecido problema de


otimização de benchmark. O principal objetivo é minimizar o peso sujeito a
restrições de deflexão, tensão, frequência de surto e geometria. Envolve três
variáveis de projeto: o diâmetro do fio x1, o diâmetro da bobina x2 e o número/
comprimento da bobina x3. Este problema pode ser resumido como
2
M e t ahe emreu minimizar f(x) = x 1x2(2 + x3), (10.14)
eed
ps steu
Ac
nEU eu
og
e-
rt
em
sujeito às seguintes restrições
ri
Xin-She Yang h
t

a m
N c Luniver Press
s
S
)1 3 x2x3
ce
g1(x) = 1 ÿ 4 71785x 1 ÿ 0,
0
on
(2
0
d E d t on
eu
eu
Machine Translated by Google

90 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

2 4x ÿ x1x2 2 1
g2(x) = 3 4 2 ÿ 1 ÿ 0,
12566(x 1x2 ÿ x 1 + ) 5108x 1

140,45x1
g3(x) = 1 ÿ ÿ 0,
2 x2x3

x1 + x2
g4(x) = ÿ 1 ÿ 0. 1,5 (10.15)

Os limites simples nas variáveis de projeto são

0,05 ÿ x1 ÿ 2,0, 0,25 ÿ x2 ÿ 1,3, 2,0 ÿ x3 ÿ 15,0. (10.16)

A melhor solução encontrada na literatura (por exemplo, Cagnina et al. 2008) é

xÿ = (0,051690, 0,356750, 11,287126), (10.17)

com o objetivo
f(xÿ) = 0,012665. (10.18)

Agora fornecemos a implementação em Matlab de nosso algoritmo firefly junto com


o método de penalidade para incorporar restrições. Você pode precisar de uma versão
mais recente do Matlab para lidar com manipuladores de funções. Se você executar o
programa algumas vezes, poderá obter as soluções ideais acima. É até possível produzir
melhores resultados se você experimentar o programa por um tempo.

% -------------------------------------------------- ------%
% Algoritmo Firefly para otimização restrita % % por Xin-She Yang (Cambridge
University) Copyright @2009 % % ----------------------- ---------------------------% função
fa_mincon_demo

% parâmetros [n N_iteração alfa betamin gama] para=[40 150 0,5 0,2 1];

% Esta demonstração usa o algoritmo Firefly para resolver o % [Spring


Design Problem, conforme descrito por Cagnina et al., % Informatica, vol. 32,
319-326 (2008). ]

% Limites/limites simples
disp('Resolva o problema de projeto de mola simples ...'); Lb=[0,05 0,25 2,0];
Ub=[2,0 1,3 15,0];

M e t ahe emreu
pseed steu
Ac
nEUe % Suposição aleatória inicial
eu
og
-
rt u0=(Lb+Ub)/2;
ri
em
Xin-She Yang h
t

a m
NS c Luniver Press s

c
e
on
)10
[u,fval,NumEval]=ffa_mincon(@cost,@constraint,u0,Lb,Ub,para);
0
d E on
(2
d t
eu eu
Machine Translated by Google

10.7 PROJETO DA MOLA 91

% Mostrar resultados
melhor solução=u

bestojb=fval
total_number_of_function_evaluations=NumEval

%%% Coloque sua própria função de custo/objetivo aqui --------%%%


%% Função de custo ou objetivo z=custo(x)
z=(2+x(3))*x(1)^2*x(2);

% Otimização restrita usando métodos de penalidade % alterando f para


F=f+ \sum lam_j*g^2_j*H_j(g_j) % onde H(g)=0 se g<=0 (verdadeiro), =1
se g for falso

%%% Coloque suas próprias restrições aqui -------------------- %%% function


[g,geq]=constraint(x)
% Todas as restrições de desigualdade não lineares devem estar aqui % Se não
houver nenhuma restrição de desigualdade, use g=[]; g(1)=1-x(2)^3*x(3)/
(7178*x(1)^4); tmpf=(4*x(2)^2-x(1)*x(2))/
(12566*(x(2)*x(1)^3-x(1)^4)); g(2)=tmpf+1/(5108*x(1)^2)-1; g(3)=1-140,45*x(1)/
(x(2)^2*x(3)); g(4)=x(1)+x(2)-1,5;

% todas as restrições de igualdade não lineares devem estar aqui


% Se não houver nenhuma restrição de igualdade, coloque geq=[] como segue geq=[];

%%% Fim da peça a ser modificada -------------------%%%

%%% ------------------------------------------------------ ---%%%


%%% Não modifique os seguintes códigos, a menos que você queira que %%% %%%
melhore seu desempenho, etc. %%% % ----------------------- --------------------------------

% ===Início da Implementação do Algoritmo Firefly ======


% Entradas: fhandle => @cost (sua própria função de custo, % pode ser um
arquivo externo) % % %
nonhandle => @constraint, todas as restrições não lineares podem ser um
arquivo externo ou uma função
Lb = limites/limites inferiores %
Ub = limites superiores/limites %
para == opcional (para controlar o algoritmo Firefly)
% Saídas: nbest = a melhor solução encontrada até agora % %
M e t ahe emreu
eed
ps steuAc fbest = o melhor valor objetivo
nEU eu
og NumEval = número de avaliações: n*MaxGeneration
e- ri
rt
em
Xin-She Yang % Opcional:
h
t

a m
s
NS c Luniver Press % O alfa pode ser reduzido (para reduzir a aleatoriedade) % ------------------------------------
c
e
o
nd 20
)10
---------------------
E d t
eu
on (
eu
Machine Translated by Google

92 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

% Iniciar
função FA [nbest,fbest,NumEval]...
=ffa_mincon(fhandle,nonhandle,u0, Lb, Ub, para)
% Verifique os parâmetros de entrada (caso contrário, defina como valores padrão) se
nargin<6, para=[20 50 0,25 0,20 1]; fim se nargin<5, Ub=[]; fim
se nargin<4, Lb=[]; end if nargin<3,
disp('Uso: FA_mincon(@cost,

@constraint,u0,Lb,Ub,para)'); fim

% n=número de vaga-lumes %
MaxGeneration=número de pseudo passos de tempo %
----------------------------------- ------------- % alfa=0,25; % Aleatoriedade 0--1
(altamente aleatória) % betamn=0,20; % valor mínimo de beta % gama=1; %
Coeficiente de absorção % ----------------------------------------------
-- n=para(1); MaxGeneration=para(2); alfa=para(3);
betamina=para(4); gama=para(5);

% Número total de avaliações de função


NumEval=n*MaxGeneration;

% Verifique se o limite superior e o limite inferior são do mesmo tamanho se length(Lb)


~=length(Ub),
disp('Limites/limites simples são impróprios!');
retornar
fim

% Calcular dimensão
d=comprimento(u0);

% Valores iniciais de uma matriz


zn=ones(n,1)*10^100; %
------------------------------------------------ % gerando as localizações iniciais de
n vaga-lumes [ns,Lightn]=init_ffa(n,d,Lb,Ub,u0);

% Iterações ou pseudo marcha de tempo %%%%%


k=1:MaxGeneration, iniciam iterações para

M e t ahe emreu % Esta linha de redução alfa é opcional


pseed st
Ac
eu
nEUe
-
eu
og alpha=alpha_new(alpha,MaxGeneration);
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press % Avaliar novas soluções (para todos os n vaga-lumes)
s

c
e
on
)1
(2
para i=1:n,
0
0
d E d t on
eu
eu
Machine Translated by Google

10.7 PROJETO DA MOLA 93

zn(i)=Fun(fhandle,nonhandle,ns(i,:));
Lightn(i)=zn(i); fim

% Classificando vaga-lumes por sua intensidade de luz/objetivos


[Lightn,Index]=sort(zn); ns_tmp=ns;
para i=1:n,

ns(i,:)=ns_tmp(Index(i),:); fim

%% Encontre o melhor nso=ns


atual; Lighto=Luzn;
nmelhor=ns(1,:); Lightbest=Lightn(1);

% Somente para saída


fbest=Lightbest;

% Mova todos os vaga-lumes para os melhores locais


[ns]=ffa_move(n,d,ns,Lightn,nso,Lighto,nbest,...
Lightbest, alfa, betamin, gama, Lb, Ub);

fim %%%%% fim das iterações

% -------------------------------------------------- ------
% ----- Todas as subfunções estão listadas aqui ------------
% As localizações iniciais da função n vaga-lumes
[ns,Lightn]=init_ffa(n,d,Lb,Ub,u0)
% se houver fronteiras/limites, se
length(Lb)>0, for i=1:n,
ns(i,:)=Lb+
(Ub-Lb).*rand(1,d); fim

outro
% gera soluções em torno da estimativa aleatória para i=1:n,

ns(i,:)=u0+randn(1,d); fim

fim

% valor inicial antes das avaliações de função


Lightn=uns(n,1)*10^100;

M e t ahe emreu
eed
ps %stMover
eu
todos os vaga-lumes para a função mais brilhante
Ac
eu
nEU
e-
[ns]=ffa_move(n,d,ns,Lightn,nso,Lighto,...
og
rt ri
em
Xin-She Yang
mh nbest,Lightbest,alpha,betamin,gamma,Lb,Ub)
t

a
c Luniver Press s
NS % Escala do sistema scale=abs(Ub-
)1
e 0
c
on Lb);
0
d E on
(2
d t
eu eu
Machine Translated by Google

94 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

% Atualizando vaga-lumes
para i=1:n, %
O parâmetro de atratividade beta=exp(-gamma*r) para j=1:n,

r=sqrt(sum((ns(i,:)-ns(j,:) ).^2)); % Atualizar movimentos


se Lightn(i)>Lighto(j),
% Mais brilhante e atraente
beta0=1; beta=(beta0-betamina)*exp(-gama*r.^2)+betamina;
tmf=alpha.*(rand(1,d)-0.5).*escala; ns(i,:)=ns(i,:).*(1-
beta)+também(j,:).*beta+tmpf;
fim
fim % fim para j

fim % fim para i

% Verifique se as soluções/localizações atualizadas estão dentro dos limites


[ns]=findlimits(n,ns,Lb,Ub);

% Esta função é opcional, pois não está no FA original % A ideia para reduzir a
aleatoriedade é aumentar a convergência, % no entanto, se você reduzir a aleatoriedade muito
rapidamente, % pode ocorrer convergência prematura. Portanto, use com cuidado. função
alpha=alpha_new(alpha,NGen) % alpha_n=alpha_0(1-
delta)^NGen=0,005 % alpha_0=0,9 delta=1-
(0,005/0,9)^(1/NGen); alfa=(1-delta)*alfa;

% Certifique-se de que os vagalumes estão dentro da função de limites/limites


[ns]=findlimits(n,ns,Lb,Ub) para i=1:n,

% Aplicar o limite inferior


ns_tmp=ns(i,:);
I=ns_tmp<Lb;
ns_tmp(I)=Lb(I);

% Aplicar os limites superiores


J=ns_tmp>Ub;
ns_tmp(J)=Ub(J);
% Atualize este novo movimento
ns(i,:)=ns_tmp;
fim
M e t ahe emreu
pseed steu
Ac
nEUe % ----------------------------------------- % função objetivo d-dimensional
eu
og
-
rt ri
em
Xin-She Yang função z =Divertido(fhandle,nonhandle,u)
h
t

a m
NS c Luniver Press
s

ce
on
)10
0% Objetivo
d E on
(2
d t
eu eu
Machine Translated by Google

10.7 PROJETO DA MOLA 95

z=fhandle(u);

% Aplicar restrições não lineares pelo método de penalidade


% Z=f+sum_k=1^N lam_k g_k^2 *H(g_k) onde lam_k >> 1
z=z+getnonlinear(nonhandle,u);

função Z=getnonlinear(nonhandle,u)
Z=0;
% Constante de penalidade >>
1 lam=10^15; coxoq=10^15;
% Obter restrições não lineares
[g,geq]=nonhandle(u);

% Aplicar restrições de desigualdade como uma função de penalidade


para k=1:comprimento(g),
Z=Z+ lam*g(k)^2*getH(g(k));
fim
% Aplicar restrições de igualdade (quando geq=[], comprimento->0) para
k=1:length(geq),
Z=Z+lameq*geq(k)^2*geteqH(geq(k));
fim

% Teste se as desigualdades são válidas


% H(g) que é algo como uma função de índice H=getH(g) se g<=0,

H=0; de

outra forma

H=1;
fim

% Teste se as igualdades mantêm


a função H=geteqH(g) se
g==0,
H=0; de

outra forma

H=1;
fim
%% ==== Fim da implementação do Algoritmo Firefly ======

REFERÊNCIAS
ed
M e t ahe emreu
e
ps steu
Ac
1. J. Arora, Introdução ao Design Ideal, McGraw-Hill, (1989).
nEU euog
e- ri
rt
em
Xin-She Yang h
t

a
N 2. LC Cagnina, SC Esquivel, CA Coello, resolvendo problemas de otimização de
m
s
S c Luniver Press

ce
on 0
)1
engenharia com o otimizador de enxame de partículas constrangido simples,
0
d E on
(2 Informatica, 32, 319-326 (2008).
d t
eu eu
Machine Translated by Google

96 CAPÍTULO 10. ALGORITMO DO VAGA-LUME

3. S. Lukasik e S. Zak, algoritmo Firefly para tarefas contínuas de otimização


restrita, ICCCI 2009, Lecture Notes in Artificial Intelligence (Eds. NT
Ngugen et al.), 5796, 97-106 (2009).
4. SM Lewis e CK Cratsley, evolução do sinal Flash, escolha de companheiro e
predação em vaga-lumes, Revisão Anual de Entomologia, 53, 293-321 (2008).
5. C. O'Toole, Firefly Encyclopedia of Insects and Spiders, Firefly Books Ltd,
2002.

6. AM Reynolds e CJ Rhodes, The L´evy flight paradigm: random search


padrões e mecanismos, Ecology, 90, 877-87 (2009).
7. EG Talbi, Metaheuristics: From Design to Implementation, Wiley, (2009).
8. XS Yang, Algoritmos Metaheurísticos Inspirados na Natureza, Luniver Press, (2008).
9. XS Yang, algoritmos Firefly para otimização multimodal, em: Stochastic
Algorithms: Foundations and Applications, SAGA 2009, Lecture Notes in
Computer Science, 5792, 169-178 (2009).
10. XS Yang, algoritmo Firefly, voos L´evy e otimização global, em: Pesquisa e
Desenvolvimento em Sistemas Inteligentes XXVI, (Eds M. Bramer et al.),
Springer, Londres, pp. 209-218 (2010).

M e t ahe emreu
pseed steu
Ac
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
on
)10
0
d E on
(2
d t
eu eu
Machine Translated by Google

Capítulo 12

BUSCA DE CUCO

O Cuckoo search (CS) é um dos mais recentes algoritmos metaheurísticos inspirados na


natureza, desenvolvido em 2009 por Xin-She Yang, da Universidade de Cambridge, e Seush Deb,
do CV Raman College of Engineering. A CS baseia-se no parasitismo de crias de algumas
espécies de cuco. Além disso, esse algoritmo é aprimorado pelos chamados voos de L´evy, em
vez de simples passeios aleatórios isotrópicos. Estudos recentes mostram que o CS é
potencialmente muito mais eficiente do que o PSO e os algoritmos genéticos.

12.1 COMPORTAMENTO CRIADOR DO CUCO

Os cucos são aves fascinantes, não só pelos belos sons que emitem, mas também pela sua
agressiva estratégia de reprodução. Algumas espécies, como os cucos ani e Guira, depositam
seus ovos em ninhos comunitários, embora possam remover os ovos de outras pessoas para
aumentar a probabilidade de eclosão de seus próprios ovos.
Um grande número de espécies contrai o parasitismo obrigatório da ninhada, colocando seus
ovos nos ninhos de outras aves hospedeiras (muitas vezes outras espécies).
Existem três tipos básicos de parasitismo de ninhada: parasitismo de ninhada intraespecífico,
reprodução cooperativa e aquisição de ninho. Algumas aves hospedeiras podem entrar em
conflito direto com os cucos invasores. Se um pássaro hospedeiro descobrir que os ovos não
são seus, ele se livrará desses ovos estranhos ou simplesmente abandonará seu ninho e
construirá um novo ninho em outro lugar. Algumas espécies de cuco, como o parasita Tapera
do Novo Mundo, evoluíram de tal maneira que os cucos parasitas fêmeas são frequentemente
muito especializados na imitação de cores e padrões dos ovos de algumas espécies hospedeiras
escolhidas. Isso reduz a probabilidade de seus ovos serem abandonados e, assim, aumenta sua
reprodutividade.
Além disso, o tempo de postura de algumas espécies também é surpreendente. Os cucos
M e t aheparasitas
em
reu
geralmente escolhem um ninho onde o pássaro hospedeiro acabou de colocar seus
eed
ps st
Ac
eu
próprios ovos. Em geral, os ovos de cuco eclodem um pouco antes dos ovos hospedeiros. Uma
nEU eu
og
e-
rt
em
vez que o primeiro filhote de cuco é chocado, a primeira ação instintiva que ele tomará é expulsar os ovos hospedei
ri
Xin-She Yang h
t

a impulsionando cegamente os ovos para fora do ninho, o que aumenta a porção de alimento do
m
s
NS c Luniver Press
)1
ce filhote de cuco fornecida por seu pássaro hospedeiro. Estudos também mostram que um filhote
0
on 0
(2 cuco também pode imitar o chamado dos filhotes hospedeiros para ter acesso a mais oportunidades de alimenta
d E d t on
eu
de
eu

Algoritmos Metaheurísticos Inspirados na Natureza, 2ª Edição por Xin-She Yang 105


Copyright c 2010 Luniver Press
Machine Translated by Google

106 CAPÍTULO 12. A BUSCA DO CUCO

´
12.2 VOOS LEVY

Por outro lado, vários estudos mostraram que o comportamento de vôo de muitos animais e insetos
demonstrou as características típicas dos vôos de L'evy. Um estudo recente de Reynolds e Frye
mostra que as moscas-das-frutas ou Drosophila melanogaster exploram sua paisagem usando uma
série de trajetórias de voo retas pontuadas por uma curva repentina de 90o , levando a um padrão
de busca livre de escala intermitente estilo L´evy-flight.
Estudos sobre o comportamento humano, como os padrões de forrageamento dos caçadores-
coletores Ju/'hoansi, também mostram a característica típica dos voos de L'evy. Até mesmo a luz
pode ser relacionada aos vôos de L´evy. Posteriormente, tal comportamento foi aplicado à otimização
e busca ótima, e resultados preliminares mostram sua capacidade promissora.

12.3 BUSCA DE CUCO

Para simplificar a descrição do nosso novo Cuckoo Search, agora usamos as três regras idealizadas
a seguir:

• Cada cuco põe um ovo de cada vez e despeja seu ovo aleatoriamente
ninho escolhido;

• Os melhores ninhos com ovos de alta qualidade serão levados para o próximo
gerações;

• O número de ninhos hospedeiros disponíveis é fixo, e o ovo posto por um cuco é descoberto
pelo pássaro hospedeiro com uma probabilidade pa ÿ [0, 1]. Nesse caso, o pássaro
hospedeiro pode se livrar do ovo ou simplesmente abandonar o ninho e construir um ninho
completamente novo.

Como uma aproximação adicional, esta última suposição pode ser aproximada por uma fração
pa dos n ninhos de hospedeiros substituídos por novos ninhos (com novas soluções aleatórias).

Para um problema de maximização, a qualidade ou adequação de uma solução pode ser


simplesmente proporcional ao valor da função objetivo. Outras formas de aptidão podem ser
definidas de maneira semelhante à função de aptidão em algoritmos genéticos.
Para o ponto de vista da implementação, podemos usar as seguintes representações simples
de que cada ovo em um ninho representa uma solução e cada cuco pode botar apenas um ovo
(representando assim uma solução), o objetivo é usar o novo e potencialmente melhor soluções
(cucos) para substituir uma solução não tão boa nos ninhos. Obviamente, este algoritmo pode ser
estendido para o caso mais complicado onde cada ninho tem múltiplos ovos representando um
conjunto de soluções. Para este trabalho, usaremos a abordagem mais simples onde cada ninho tem
apenas um único ovo.
Neste caso, não há distinção entre ovo, ninho ou cuco, pois cada ninho corresponde a um ovo que
também representa um cuco.
Com base nessas três regras, as etapas básicas do Cuckoo Search (CS) podem ser
resumido como o pseudocódigo mostrado na Fig. 12.1. (t+1)
M e t ahe emreu
pseed steu
Ac Ao gerar novas soluções x para, digamos, um cuco i, um voo L´evy é realizado
nEUe eu
og
-
rt
em
Xin-She Yang
ri
x
(t+1) = x eu(t) + ÿ ÿ L´evy(ÿ), (12.1)
t
h eu
a m
NS c Luniver Press s

c
e
o
)1onde ÿ > 0 é o tamanho do passo que deve ser relacionado com as escalas do problema de interesses.
0
0
nd on (2 Na maioria dos casos, podemos usar ÿ = O(L/10) onde L é a característica
E d t
eu eu
Machine Translated by Google

12.3 BUSCA DO CUCO 107

Pesquisa Cuco via L´evy Flights


T
Função objetivo f(x), x = (x1, ..., xd)
Gerar população inicial de n ninhos de host xi while
(t <MaxGeneration) ou (critério de parada)
Obter um cuco aleatoriamente/gerar uma solução por vôos de L´evy
e então avaliar sua qualidade/fitness Fi
Escolha um ninho entre n (digamos, j)
aleatoriamente se (Fi > Fj ),
Substitua j pelo novo final da
solução
Uma fração (pa) dos ninhos piores é abandonada
e novos/soluções são construídos/gerados
Manter as melhores soluções (ou aninhar-se com soluções de qualidade)
Classifique as soluções e encontre o melhor final
atual enquanto
Resultados e visualização pós-processamento

Figura 12.1: Pseudocódigo do Cuckoo Search (CS).

escala do problema de interesse. A equação acima é essencialmente a equação estocástica


para um passeio aleatório. Em geral, um passeio aleatório é uma cadeia de Markov cujo próximo
status/localização depende apenas da localização atual (o primeiro termo na equação acima) e
da probabilidade de transição (o segundo termo). O produto ÿ significa multiplicações entre
entradas. Este produto entrywise é similar ao utilizado no PSO, porém aqui o passeio aleatório
via voo de L´evy é mais eficiente na exploração do espaço de busca, pois seu passo é muito
maior no longo prazo.
O vôo de L´evy fornece essencialmente um passeio aleatório cujo comprimento de passo aleatório
é extraído de uma distribuição de L´evy

-eu
L´evy ÿ u = t , (1 < ÿ ÿ 3), (12.2)

que tem uma variância infinita com uma média infinita. Aqui, as etapas formam essencialmente
um processo de passeio aleatório com uma distribuição de comprimento de etapa de lei de
potência com uma cauda pesada. Algumas das novas soluções devem ser geradas por L´evy
andando em torno da melhor solução obtida até o momento, o que agilizará a busca local. No
entanto, uma fração substancial das novas soluções deve ser gerada por randomização de
campo distante e cujas localizações devem estar longe o suficiente da melhor solução atual,
isso garantirá que o sistema não fique preso em um ótimo local.
De uma olhada rápida, parece que há alguma semelhança entre CS e escalada em
M e t ahecombinação
em
reu
com alguma randomização em grande escala. Mas existem algumas diferenças
eed
ps st
Ac
eu
significativas. Em primeiro lugar, CS é um algoritmo baseado em população, de forma
nEU eu
og
e-
rt
em
semelhante ao GA e PSO, mas usa algum tipo de elitismo e/ou seleção
ri
Xin-She Yang h
t

a semelhante ao usado na busca de harmonia. Em segundo lugar, a randomização em CS é mais


m
s
NS c Luniver Press
)1
ce eficiente, pois o comprimento do passo é de cauda pesada e qualquer passo grande é possível.
0
o
nd 0
E d t
eu
on
eu
(2 terceiro lugar, o número de parâmetros em CS a serem ajustados é menor que GA e PSO,
Em
Machine Translated by Google

108 CAPÍTULO 12. A BUSCA DO CUCO

e, portanto, é potencialmente mais genérico para se adaptar a uma classe mais ampla de
problemas de otimização. Além disso, cada ninho pode representar um conjunto de soluções, o
CS pode assim ser estendido ao tipo de algoritmos de metapopulação.

12.4 ESCOLHA DOS PARÂMETROS

Após a implementação, temos que validar o algoritmo usando funções de teste com soluções
analíticas ou conhecidas. Por exemplo, uma das muitas funções de teste que usamos é a função
bivariada de Michalewicz
2
2x 2 anos

f(x, y) = ÿ sin(x) sin2m( ) ÿ sin(e) sin2m( ), (12.3)


pi pi

onde m = 10 e (x, y) ÿ [0, 5] × [0, 5]. Esta função tem um mínimo global fÿ ÿ ÿ1,8013 em (2,20319,
1,57049). Este ótimo global pode ser facilmente encontrado usando Cuckoo Search, e os
resultados são mostrados na Fig. 12.2 onde as localizações finais dos ninhos também são
marcadas com na figura. Aqui usamos n = 15 ninhos, ÿ = 1 e pa = 0,25. Na maioria de nossas
simulações, usamos n = 15 a 50.

A partir da figura, podemos ver que, à medida que o ótimo se aproxima, a maioria dos ninhos
se agrega em direção ao ótimo global. Também notamos que os ninhos também são distribuídos
em ótimos (locais) diferentes no caso de funções multimodais. Isso significa que o CS pode
encontrar todos os ótimos simultaneamente se o número de ninhos for muito maior que o
número de ótimos locais. Esta vantagem pode se tornar mais significativa ao lidar com problemas
de otimização multimodais e multiobjetivos.

Também tentamos variar o número de ninhos de hospedeiros (ou o tamanho da população n)


e a probabilidade pa. Usamos n = 5, 10, 15, 20, 30, 40, 50, 100, 150, 250, 500 e pa = 0 , 0,01, 0,05,
0,1, 0,15, 0,2, 0,25, 0,3, 0,4, 0,5. A partir de nossas simulações, descobrimos que n = 15 a 40 e pa
= 0,25 são suficientes para a maioria dos problemas de otimização. Os resultados e análises
também implicam que a taxa de convergência, até certo ponto, não é sensível aos parâmetros
utilizados. Isso significa que o ajuste fino não é necessário para quaisquer problemas.

12.5 IMPLEMENTAÇÃO

% -------------------------------------------------- ------
% Algoritmo cuco por Xin-She Yang e Suasg Deb %
% Programado por Xin-She Yang na Universidade de Cambridge % %
-------------------------------------- ----------------- function [bestsol,fval]=cuckoo_search(Ngen)

M e t ahe emreu % Aqui Ngen é o número máximo de avaliações de função se nargin<1,


eed
ps steu
Ac
nEU euNgen=1500; fim
og
e- ri
rt
em
Xin-She Yang h
t

a m
% d-dimensions (qualquer dimensão)
s
NS c Luniver Press
)1
ce d=2;
0
on 0
(2 % Número de ninhos (ou soluções diferentes)
d E d t on
eu
eu
Machine Translated by Google

12.5 IMPLEMENTAÇÃO 109

3.5

2.5

1,5

0,5

0
0 1 2 3 4

Figura 12.2: Caminhos de busca de ninhos usando Cuckoo Search. As localizações finais
dos ninhos são marcadas com na figura.

n=25;

% Taxa de descoberta de ovos estranhos/soluções


pa=0,25;

% Soluções iniciais aleatórias


nest=randn(n,d);
fbest=ones(n,1)*10^(100); % de problemas de minimização
Kmelhor=1;

para j=1: Nenhum,


% Encontre o melhor atual
Kbest=get_best_nest(fbest);
% Escolha um ninho aleatório (evite o melhor atual)
k=choose_a_nest(n,Kbest); melhor
ninho=ninho(Kmelhor,:)
% Gera uma nova solução (mas mantém a melhor atual)
s=get_a_cuckoo(nest(k,:),bestnest);

% Avalie esta solução fnew=fobj(s);


se fnew<=fbest(k),
M e t ahe emreu fbest(k)=fnew; ninho(k,:)=s;
pseed steu
Ac
nEUe euog
-
rt ri
em
Xin-She Yang t

a m h
fim
NS c Luniver Press
s

c
e
on
)10
0 % descoberta e randomização se rand<pa,
d E on
(2
d t
eu eu
Machine Translated by Google

110 CAPÍTULO 12. BUSCA DO CUCO

k=get_max_nest(fbest);
s=vazio(ninho(k,:)); ninho(k,:)=s;
fbest(k)=fobj(s);
fim

fim

%% Processamento pós-otimização
%% Encontre o melhor e exiba
[fval,I]=min(fbest)
bestsol=nest(I,:)

%% Exibir todos os ninhos


ninho

%% --------- Todas as subfunções estão listadas abaixo -----------


%% Escolha uma função de ninho
aleatoriamente k=choose_a_nest(n,Kbest)
k=floor(rand*n)+1;
% Evite o melhor
se k==Kbest,
k=mod(k+1,n)+1;
fim

%% Obtenha um cuco e gere novas soluções pela função de caminhada aleatória


s=get_a_cuckoo(s,star)
% Este é um passeio aleatório, que é menos eficiente % do que os voos
de Levy. Além disso, o tamanho do passo % deve ser um vetor para
problemas com escalas diferentes.
% Aqui está a implementação simplificada apenas para demonstração! tamanho
do passo=0,05;
s=estrela+tamanho do passo*randn(tamanho(s));

%% Encontre a pior função de


aninhamento k=get_max_nest(fbest)
[fmax,k]=max(fbest);

%% Encontre a melhor função de


aninhamento atual k=get_best_nest(fbest)
[fmin,k]=min(fbest);

%% Substitua alguns (dos piores ninhos) %%


construindo novas soluções/funções de ninhos s=emptyit(s)
M e t ahe emreu
pseed steu
Ac
nEUe
-
% Novamente, o tamanho do passo deve ser variado %
eu
og
rt ri
em
Xin-She Yang Aqui está uma abordagem simplificada
h
t

a m
NS c Luniver Press s=s+0.05*randn(size(s));
s

c
e
on
)10
0
d E on
(2
d t
eu eu
Machine Translated by Google

12.5 IMPLEMENTAÇÃO 111

% função objetivo d-dimensional z=fobj(u)

% Função de Rosenbrock (em 2D)


% Tem uma solução ótima em (1.000,1.000) z=(1-u(1))^2+100*(u(2)-
u(1)^2)^2;

Se executarmos este programa usando algumas funções de teste padrão, podemos


observar que CS supera muitos algoritmos existentes, como GA e PSO. As principais razões
são: 1) um bom equilíbrio entre randomização e intensificação e 2) menor número de
parâmetros de controle. Assim como para qualquer algoritmo metaheurístico, um bom
equilíbrio entre busca local intensiva e uma exploração eficiente de todo o espaço de busca
normalmente levará a um algoritmo mais eficiente. Por outro lado, existem apenas dois
parâmetros neste algoritmo, o tamanho da população n e pa. Uma vez que n é fixado, pa
essencialmente controla o elitismo e o balanço de randomização e busca local. Poucos
parâmetros tornam um algoritmo menos complexo e, portanto, potencialmente mais genérico.
Tais observações merecem uma pesquisa mais sistemática e uma elaboração mais
aprofundada no trabalho futuro.
Vale ressaltar que existem três formas de realizar a randomização: randomização
uniforme, passeios aleatórios e passeios de cauda pesada. A maneira mais simples é usar
uma distribuição uniforme para que novas soluções sejam limitadas entre limites superiores
e inferiores. Passeios aleatórios podem ser usados para randomização global ou randomização
local, dependendo do tamanho do passo usado na implementação. Os vôos de L´evy são de
cauda pesada, o que é mais adequado para a randomização em escala global.

Como um exemplo para resolver a otimização restrita, agora resolvemos o problema de


projeto de mola discutido no capítulo sobre o algoritmo do vaga-lume. O código Matlab é
dado abaixo

% Cuckoo Search para otimização restrita não linear


% Programado por Xin-She Yang @ Cambridge University 2009 função
[bestsol,fval]=cuckoo_spring(N_iter) formato longo; % número de
iterações

se nargin<1, N_iter=15000; end % Número


de ninhos n=25;

disp('Pesquisar ... pode levar um minuto ou mais ...'); % d variáveis e


limites simples % Limites inferior e superior
Lb=[0,05 0,25 2,0]; Ub=[2,0 1,3
15,0]; % Número de
variáveis d=comprimento(Lb);

M e t ahe emreu
pseed st
Ac
eu
% Taxa de descoberta
nEUe eu
og
pa=0,25;
-
rt ri
em
Xin-She Yang t

% Soluções iniciais aleatórias


h
a m
NS c Luniver Press
s

c
e
o
nd
)1
nest=init_cuckoo(n,d,Lb,Ub);
0
0
E d t
eu
on
eu
(2
fbest=ones(n,1)*10^(10); % de problemas de minimização
Machine Translated by Google

112 CAPÍTULO 12. BUSCA DO CUCO

Kmelhor=1;

% Início da busca do cuco por j=1:N_iter,

% Encontre o melhor ninho


[fmin,Kbest]=get_best_nest(fbest);
% Escolha um ninho aleatoriamente
k=choose_a_nest(n,Kbest); melhor
ninho=ninho(Kmelhor,:) ;
% Obtenha um cuco com uma nova solução
s=get_a_cuckoo(nest(k,:),bestnest,Lb,Ub);

% Atualizar se a solução melhorar fnew=fobj(s); se


fnew<=fbest(k),
fbest(k)=fnew; ninho(k,:)=s;

fim

% Descoberta e randomização if rand<pa,

k=get_max_nest(fbest);
s=emptyit(ninho(k,:),Lb,Ub); ninho(k,:)=s;
fbest(k)=fobj(s);

fim
fim

%% Encontre o melhor
[fmin,I]=min(fbest)
bestsol=nest(I,:);

% Mostrar todos os ninhos


ninho
% Mostra a melhor solução bestsol, fmin

% Localizações iniciais de todas as funções n cucos


[palpite]=init_cuckoo(n,d,Lb,Ub) for i=1:n,

guess(i,1:d)=Lb+rand(1,d).*(Ub -Libra);
fim

M e t ahe emreu
pseed steu%% Escolha uma função de ninho
Ac
nEUe
-
aleatoriamente k=choose_a_nest(n,Kbest)
eu
og
rt ri
em
Xin-She Yang k=floor(rand*n)+1;
h
t

a m
NS c Luniver Press % Evite o melhor
s

c
e
o
nd
)10
0se k==Kmelhor,
E d t
eu
on
eu
(2
Machine Translated by Google

12.5 IMPLEMENTAÇÃO 113

k=mod(k+1,n)+1;
fim

%% Obtenha um cuco com uma nova solução por meio de uma caminhada
aleatória %% Nota: Voos Levy não foram implementados nesta função de
demonstração s=get_a_cuckoo(s,star,Lb,Ub)
s=star+0.01*(Ub-Lb). *randn(tamanho(s));
s=limites(s,Lb,Ub);

%% Encontre a pior função de


aninhamento k=get_max_nest(fbest)
[fmax,k]=max(fbest);

%% Encontre a melhor função


de aninhamento [fmin,k]=get_best_nest(fbest)
[fmin,k]=min(fbest);

%% Substituir um ninho abandonado construindo uma nova função de ninho


s=emptyit(s,Lb,Ub) s=s+0.01*(Ub-
Lb).*randn(size(s)); s=limites(s,Lb,Ub);

% Verifica se os limites foram


atendidos function ns=bounds(ns,Lb,Ub)
% Aplicar o limite inferior
ns_tmp=ns;
I=ns_tmp<Lb;
ns_tmp(I)=Lb(I);
% Aplicar os limites superiores
J=ns_tmp>Ub;
ns_tmp(J)=Ub(J);
% Atualize este novo movimento
ns=ns_tmp;

% função objetivo d-dimensional z=fobj(u)

% O conhecido problema de projeto de mola


z=(2+u(3))*u(1)^2*u(2);
z=z+getnonlinear(u);

função Z=getnonlinear(u)
Z=0;
% Constante de
ed
M e t ahepenalidade
em
reu lam=10^15;
pse st Ac eu
nEUe eu og
-
rt ri
em
Xin-She Yang % de restrições de desigualdade
h
t

a m
NS c Luniver Press g(1)=1-u(2)^3*u(3)/(71785*u(1)^4); gtmp=(4*u(2)^2-
s

ce
o
)1 0
u(1)*u(2))/(12566*(u(2)*u(1)^3-u(1)^4));
0
nd on (2
E d t
eu eu
Machine Translated by Google

114 CAPÍTULO 12. BUSCA DO CUCO

g(2)=gtmp+1/(5108*u(1)^2)-1;
g(3)=1-140,45*u(1)/(u(2)^2*u(3)); g(4)=(u(1)+u(2))/
1.5-1;

% Sem restrição de igualdade neste problema, portanto, vazio; geq=[];

% Aplicar restrições de desigualdade para


k=1:length(g),
Z=Z+ lam*g(k)^2*getH(g(k));
fim
% Aplicar restrições de igualdade para
k=1:length(geq),
Z=Z+lam*geq(k)^2*getHeq(geq(k)); fim

% Teste se as desigualdades são válidas


% Função de índice H(g) para função de desigualdades
H=getH(g) se g<=0,

H=0;
outro
H=1;
fim
% Função de índice para função de igualdade
H=getHeq(geq) se geq==0,

H=0; de

outra forma

H=1;
fim
% ----------------- fim ------------------------------

Este algoritmo de otimização potencialmente poderoso pode ser facilmente estendido para
estudar aplicações de otimização multiobjetivo com várias restrições, até mesmo para problemas
NP-difíceis. Estudos futuros podem focar nos estudos de sensibilidade e parâmetros e suas
possíveis relações com a taxa de convergência do algoritmo. A hibridização com outros
algoritmos populares, como PSO e evolução diferencial, também será potencialmente frutífera.

M e t ahe emreu
eed
ps steu
Ac
nEU eu
og
e-
rt REFERÊNCIAS
ri
em
Xin-She Yang h
t

a m
NS c Luniver Press s

c
e
o
)10
0 1. Barthelemy P., Bertolotti J., Wiersma DS, AL´evy flight for light, Nature,
nd on (2 453, 495-498 (2008).
E d t
eu eu
Machine Translated by Google

12.5 IMPLEMENTAÇÃO 115

2. Bradley D., Novel 'algoritmo de busca de cuco' supera a otimização de enxame de


partículas em projeto de engenharia (artigo de notícias), Science Daily, 29 de maio,
(2010). Também em Computação Científica (revista), 1 de junho de 2010.
3. Brown C., Liebovitch LS, Glendon R., voos L´evy em Dobe Ju/'hoansi
padrões de forrageamento, Human Ecol., 35, 129-138 (2007).
4. Chattopadhyay R., Um estudo de funções de teste para algoritmos de otimização, J.
Optar. Theory Appl., 8, 231-236 (1971).
5. Passino KM, Biomimicry of Bacterial Foraging for Distributed Optimiza
ção, University Press, Princeton, New Jersey (2001).
6. Payne RB, Sorenson MD e Klitz K., The Cuckoos, Oxford University
Imprensa, (2005).

7. Pavlyukevich I., Vôos de L´evy, busca não local e recozimento simulado, J.


Física Computacional, 226, 1830-1844 (2007).
8. Pavlyukevich I., Resfriando os voos de L´evy, J. Phys. R: Matemática. Teor., 40,
12299-12313 (2007).
9. Reynolds AM e Frye MA, Rastreamento de odor de voo livre em Drosophila é
consistente com uma pesquisa sem escala intermitente ótima, PLoS One, 2, e354
(2007).
10. AM Reynolds e CJ Rhodes, The L´evy flight paradigm: random search
padrões e mecanismos, Ecology, 90, 877-87 (2009).
11. Schoen F., Uma ampla classe de funções de teste para otimização global, J.
Otimização Global, 3, 133-137, (1993).
12. Shlesinger MF, Search research, Nature, 443, 281-282 (2006).
13. Yang XS e Deb S., pesquisa de cuco via vôos de L´evy, em: Proc. do Congresso
Mundial sobre Natureza e Computação de inspiração biológica (NaBic 2009), IEEE
Publications, EUA, pp. 210-214 (2009).
14. Yang XS e Deb S,, Otimização de engenharia por pesquisa de cuco, Int. j.
Matemática. Modelagem e Otimização Numérica, 1, 330-343 (2010).

M e t ahe emreu
pseed steu
Ac
nEUe eu
og
-
rt ri
em
Xin-She Yang h
t

a m
NS c Luniver Press
s

ce
on
)10
0
d E on
(2
d t
eu eu

Você também pode gostar