Академический Документы
Профессиональный Документы
Культура Документы
discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/261026533
READS
686
1 AUTHOR:
Leandro Luque
Centro Paula Souza
23 PUBLICATIONS 1 CITATION
SEE PROFILE
Subrea
Inspirao
Na anlise de risco de crdito, a subrea da IA conhecida como Redes Neurais Artificiais geralmente
empregada algumas vezes em conjunto com Algoritmos Genticos. Alm de tcnicas de IA, existem
outras que podem ser empregadas com este mesmo fim, tais como: regresso linear mltipla,
programao linear, rvore de deciso, entre outras.
Algoritmos Genticos
Inspirao Biolgica
A seleo natural pode ser utilizada para explicar o porqu de tal mudana2.
As mariposas desta espcie tm o hbito de pousar sobre troncos de rvores
que, em locais no poludos, so cobertos por liquens, que do aos troncos
uma colorao clara. Nesses locais, ao pousar sobre troncos cobertos por
liquens, as mariposas claras no so to visveis, enquanto as mariposas
escuras se tornam presas fceis de seus predadores os pssaros. Para este
ambiente, a cor da mariposa clara lhe conferia um diferencial competitivo.
Na Figura Q2, lado esquerdo, difcil perceber a presena de uma mariposa
clara, destacada no lado direito.
Apesar de existirem alguns autores contrrios ideia de que a seleo natural seja o processo regente
no melanismo industrial, h um nmero muito maior de autores e trabalhos que corroboram o papel da
seleo natural.
Com o tempo, nos dois casos, os indivduos que apresentavam colorao que
os camuflava apresentavam maior chance de sobrevivncia e, portanto, de
transmitir tal caracterstica aos descendentes. O resultado foi a mudana
gradual na frequncia de indivduos de cada uma das cores.
Aplicao da Teoria da Evoluo na Soluo de Problemas
Mais adiante, no artigo, ser abordada a implementao deste exemplo utilizando a biblioteca JGAP.
Substituindo os produtos por pacotes de rede e os clientes por roteadores, o mesmo problema poderia
ser estendido para um cenrio de otimizao na transmisso de pacotes de redes.
4
Uma primeira ideia para encontrar a melhor rota seria listar todas as rotas possveis e
compar-las umas com as outras, o que conhecido como mtodo da fora bruta ou
busca exaustiva. No entanto, pode no ser vivel resolver este problema dessa forma, j
que para apenas 20 clientes, por exemplo, o nmero de rotas possveis superior a dois
quintilhes calculado atravs do fatorial de 20 , o que exigiria muito tempo e
capacidade de processamento. Neste caso, os AGs podem ser utilizados5.
Para simplificar a estrutura das solues do problema, ser suposto que so apenas 10
os clientes da distribuidora, embora o mesmo raciocnio seja extensvel para um nmero
qualquer de clientes.
Conforme citado anteriormente, no incio de um algoritmo gentico, deve ser criada
uma populao de solues rotas que podem ser seguidas para o problema. Uma
ideia de estrutura para essas solues seria determinar, em ordem, os clientes que sero
visitados.
Desta forma, estas estruturas cromossomos so compostas por uma sequncia de
dez genes, cada um podendo assumir um valor que vai de C 1 a C10. Estes valores que
um gene pode assumir so conhecidos como alelos.
Na Figura 2, so apresentados dois exemplos de solues, cada uma representando
uma rota de viagem para a distribuio dos produtos. A primeira soluo, por exemplo,
determina que, aps sair da distribuidora, o cliente 1 visitado. Em seguida, o cliente 7,
e assim por diante.
Diversos mtodos e heursticas o algoritmo de Dijkstra, vizinho mais prximo, cobertura mnima,
entre outros podem ser empregados na soluo desse tipo de problema. Trata-se de um exemplo simples
para o entendimento dos algoritmos genticos.
5
1PX). Para que isso seja feito, definido um ponto de corte que quebra as duas solues
em duas partes e estas partes so combinadas para a produo de novas solues.
Supondo um corte no meio das solues, as novas solues geradas ficariam conforme
representao da Figura 3.
Para o exemplo apresentado, a avaliao de cada soluo pode ser feita a partir da
distncia percorrida pelo entregador. A soluo que apresentar a menor distncia
aquela que apresenta a maior qualidade. Para tanto, pode-se utilizar uma tabela de
distncias, como a apresentada na Tabela 2, para a realizao dos clculos.
C1
C2
C3
C5
C6
C7
C8
C9
C10
Distribuidora
10
C1
10
10
10
C2
10
C3
C4
10
10
C5
10
C6
C7
10
C8
10
10
C9
C10
10
Origem
C4
Distribuidora
Destino
Seguindo o mesmo processo, o valor para cada uma das solues da populao est
representado na Figura 6.
A prxima etapa envolve a seleo das solues que devero seguir para a prxima
gerao. Isto pode ser feito de vrias formas (veja o quadro Seleo). Uma delas
seria selecionar apenas os dois indivduos melhores, que, no exemplo apresentado,
corresponderiam s solues C e D aquelas que possuem a maior qualidade (menor
distncia).
Em seguida, deve-se verificar se as etapas do algoritmo devem ser repetidas,
definindo-se, por exemplo, um nmero mximo de execues do algoritmo ou mesmo
um critrio de encontro de uma soluo aceitvel por exemplo, uma soluo com
percurso inferior a 60 aceitvel. Caso o algoritmo deva continuar, as etapas, a partir da
reproduo, so repetidas, at que o critrio de parada seja atendido.
O algoritmo apresentado, embora no possa garantir que a melhor soluo seja
encontrada, tem trazido excelentes resultados em diferentes reas de aplicao.
A seguir, ser visto como este problema poderia ser implementado em Java com a
biblioteca JGAP.
Reproduo
O processo de reproduo pode ser simulado atravs da criao de cpias
simples ou da combinao de solues atravs de operadores genticos de
cruzamento/recombinao. A escolha do operador gentico que ser
empregado em um AG geralmente baseada em dados obtidos empiricamente
em trabalhos anteriores ou em testes com diferentes operadores e na anlise
dos resultados.
Operadores Genticos de Cruzamento
Pai 2
0 1 0
x.
1 1 1
Pai 1
1 0
1o filho
1
1 1 1
Pai 2
2o filho
Pai 1
1 0 1
0 1
Pai 2
Figura Q1. Exemplo de reproduo com um ponto de corte utilizada para gerar dois filhos.
0
x.
1 0
P1
1o filho
P1
1
P1
2ofilho
P2
P2
P2
Pai 2
0 1 1 1 1
(P2)
Figura Q2. Exemplo de reproduo com dois pontos de corte utilizada para gerar dois filhos.
1 0
1
1ofilho
x.
Parente
2 (P2)
0 1
P
1
1
1
P
2
P
1
1
P
1
0
1
P
2
2ofilho
0
P
2
1
P
2
P
1
1
1
P
2
1
P
2
Figura Q3. Exemplo de reproduo uniforme utilizada para gerar dois filhos.
Mutao
O processo de mutao pode ser simulado atravs da realizao de pequenas
alteraes na estrutura de solues existentes. Este processo fundamental
para um AG, pois ele que garante a diversidade gentica na populao de
solues.
Operadores Genticos de Mutao
Seleo
Operadores Genticos de Seleo Natural
(Java API for Genetic Algorithms), GAJIT (Genetic Algorithm Java Implementation
Toolkit), Jenetics, JGAL, jmona, entra outras.
Destas bibliotecas, a JGAP apresenta a vantagem de continuar sendo atualizada e
possuir um frum e comunidade ativos atravs do qual possvel tirar dvidas. A
biblioteca jmona tambm tem sido constantemente atualizada, mas nova e, portanto,
no atingiu a maturidade da JGAP. Por esse motivo, os exemplos apresentados neste
trabalho utilizaro a biblioteca JGAP.
JGAP
Para utilizar a biblioteca JGAP, deve-se copiar uma de suas distribuies do site
http://jgap.sourceforge.net/. At a publicao deste artigo, a verso mais recente da
biblioteca era a 3.4.4. Para copiar essa verso, no site do projeto, selecione a opo
Download para obter o arquivo jgap_3.4.4_full.zip.
Neste arquivo, esto disponveis o cdigo-fonte, a documentao e o arquivo da
biblioteca j compilada jgap.jar , que deve ser importado em projetos que utilizam a
biblioteca.
cromossomo com o maior ou o menor valor ou algum outro critrio , calculado pela
funo de avaliao, tem maior qualidade.
Para isso, necessrio definir um avaliador, atravs da interface FitnessEvaluator. O
avaliador padro, DefaultFitnessEvaluator, considera o indivduo com o maior valor de
avaliao como tendo maior qualidade. Esta interface define dois mtodos isFitter(), um
que recebe como parmetros dois cromossomos e outro que recebe os valores de
avaliao desses cromossomos. Estes mtodos verificam se o primeiro parmetro do
mtodo mais adequado que o segundo para a soluo do problema.
possvel adicionar configurao de um algoritmo vrios operadores de seleo
(addNaturalSelector()), de reproduo e mutao (addGeneticOperator()). Os operadores
genticos so representados na biblioteca por classes que implementam a interface
GeneticOperator. Esta interface possui apenas um mtodo, operate(), que recebe uma
populao de cromossomos nos quais ser aplicado o operador e uma lista dos
cromossomos onde devero ser adicionados os cromossomos resultantes da operao.
Entre os operadores de mutao implementados na biblioteca, esto os operadores de
troca de genes SwappingMutationOperator e RangedSwappingMutationOperator.
Entre os operadores de reproduo, est o CrossoverOperator, que implementa o
operador 1PX. A classe GreedyCrossover, por sua vez, implementa um operador que
pode ser aplicado para problemas nos quais o que altera no cromossomo apenas a
ordem dos genes, ou seja, no h repetio nos valores de genes como o cromossomo
do problema de distribuio, no qual o mesmo cliente no aparece duas vezes.
Este operador foi implementado de forma a realizar n/2 crossovers, onde n
corresponde ao nmero de solues na populao, e pode ser melhor explicado a partir
do exemplo do problema de distribuio. Para cada crossover, aps sortear dois
cromossomos aleatoriamente, o operador seleciona o valor de um gene um cliente
de um dos pais e verifica qual dos dois pais possui o trecho de viagem mais curto com
origem nesse cliente, e o adiciona sequncia. Se o cliente j tiver sido adicionado
sequncia, ele adiciona o presente no outro pai, mesmo que no resulte no caminho mais
curto. Se este tambm j tiver sido adicionado, ele seleciona um dos clientes ainda no
selecionados aleatoriamente.
Para adicionar operadores de seleo natural, subclasses da classe abstrata
NaturalSelector podem ser utilizadas. Estas subclasses compreendem a seleo dos
melhores cromossomos (BestChromosomesSelector), roleta (WeightedRouletteSelector),
porcentagem superior (ThresholdSelector), entre outros.
Finalmente, para executar o algoritmo, o mtodo evolve(), da classe Genotype (Figura
9) pode ser executado. Esse mtodo pode receber por parmetro o nmero de geraes
ou pode ser executado passo-a-passo. Aps a execuo do algoritmo, o melhor
cromossomo pode ser recuperado atravs do mtodo getFittestChromosome().
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 }
14
15
16
17
18
19
20
21
22
23
24
25
26
27
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 }
Para que a execuo do algoritmo possa ser acompanhada passo-a-passo, foi criada
uma interface grfica com um JFrame e um JPanel que exibem a rea e a melhor
soluo, a cada etapa (Figura 12). Nesta figura, a marca preta representa a distribuidora
e as marcas azuis representam os clientes.
Concluso
Embora no garantam que a melhor soluo para um problema seja encontrada,
Algoritmos Genticos constituem uma importante ferramenta para a soluo de
problemas complexos e tm sido aplicados com sucesso em diferentes reas. Apesar de
tratar-se de uma rea de conhecimento ampla, os conceitos da AGs e as funcionalidades
da biblioteca JGAP apresentados neste artigo j possibilitam o emprego dessa famlia de
algoritmos a uma ampla gama de aplicaes.
Referncias
http://www.scielo.br/scielo.php?pid=S0104-530X2009000300007&script=sci_arttext
Artigo sobre algumas tcnicas que podem ser empregadas na anlise de risco de crdito.
http://www.algoritmosgeneticos.com.br
Site com materiais sobre o livro Algoritmos Genticos, de Ricardo Linden.
http://www.obitko.com/tutorials/genetic-algorithms/portuguese/
Material sobre Algoritmos Genticos definio de conceitos e exemplos.
http://www.ridelust.com/evolve-a-car-with-a-genetic-algorithm/
Exemplo de algoritmo gentico que evolui um carro, procurando a estrutura melhor adaptada a diferentes
tipos de terreno.
http://math.hws.edu/xJava/GA/
Exemplo de algoritmo gentico para a evoluo de uma populao virtual.
http://www.sambee.co.th/MazeSolver/mazega.htm
Exemplo de algoritmo gentico para encontrar a sada de labirintos.
http://brainz.org/15-real-world-applications-genetic-algorithms/
Site com 15 exemplos de aplicaes de Algoritmos Genticos.
Leandro Luque (leandro.luque@gmail.com) professor da Faculdade de Tecnologia de Mogi das Cruzes (FATEC)
e da Universidade de Mogi das Cruzes (UMC). Tem formao em Cincia da Computao e mestrado em
Computao Aplicada pelo Instituto Nacional de Pesquisas Espaciais (INPE). Trabalha com Java h 10 anos, tendo
atuado no desenvolvimento de aplicaes de grande porte tanto no segmento empresarial quanto governamental.
Rodrigo Rocha Silva (rrochas@gmail.com) Formado em Cincia da Computao pela Universidade de Mogi das
Cruzes (UMC), mestre em Computao Aplicada pelo INPE e Doutorando pelo ITA. Trabalha com Java h mais de
6 anos, atuando como desenvolvedor, analista e arquiteto em empresas de pequeno e grande porte, nos segmentos
de gesto empresarial, sade e governo. Atua tambm como professor na UMC e na Veris Faculdades. Possui
certificao SCJP 1.4.