• Nenhum resultado encontrado

3.2 Algoritmo gen´ etico canˆ onico

3.2.2 Operadores

O algoritmo gen´etico canˆonico submete a popula¸c˜ao inicial, descrita na etapa de prepara¸c˜ao, a um processo iterativo composto por trˆes operadores: Operador Sele¸c˜ao, Operador Cruzamento e Operador Muta¸c˜ao. O objetivo principal do algoritmo ge- n´etico canˆonico, j´a mencionado anteriormente, ´e evoluir os indiv´ıduos da popula¸c˜ao inicial, obtendo uma nova popula¸c˜ao de ´ındices de indiv´ıduos de maior valor pela f . De maneira um pouco mais espec´ıfica, o algoritmo gen´etico canˆonico destaca os indiv´ı- duos da amostra mais adaptados (segundo a fun¸c˜ao f ) e elimina os menos adaptados com o operador sele¸c˜ao, que se baseia no conceito de sele¸c˜ao natural, quando afirma que somente os seres mais bem adaptados sobrevivem. Por outro lado, o algoritmo ge- n´etico est´a sempre buscando por novos indiv´ıduos atrav´es dos operadores cruzamento e muta¸c˜ao, que modificam os cromossomos dos indiv´ıduos da popula¸c˜ao, gerando no- vos indiv´ıduos com novos ´ındices. Dessa forma, quanto maior o tamanho da amostra inicial, mais rapidamente o algoritmo encontrar´a o ponto ´otimo, por´em mais c´alculos ser˜ao feitos. Devemos lembrar que essa t´ecnica n˜ao far´a sentido se o numero de c´alculos da fun¸c˜ao f em pontos de Ω for maior que o n´umero total de pontos em Ω.

3.2 Algoritmo gen´etico canˆonico 23

Operador Sele¸c˜ao

O operador sele¸c˜ao se baseia no conceito biol´ogico de sele¸c˜ao natural e o objetivo, j´a mencionado anteriormente, ´e destacar os indiv´ıduos melhor adaptados, eliminando os menos adaptados. De maneira mais t´ecnica, o objetivo ´e aumentar o contingente de elementos com maior valor funcional e diminuir o contingente de elementos com menor valor funcional. Para isso, nessa opera¸c˜ao ´e feita uma reamostragem dentre os elementos da amostra (com reposi¸c˜ao e de tamanho n = n´umero de elementos da amostra), de maneira que a probabilidade de reamostragem de cada elemento ´e diretamente proporcional ao seu valor na fun¸c˜ao.

#ETAPA DE SELE¸C~AO Fun¸c~ao sel{

Entrada: AMO = "amostra de ´ındices" VAL = "amostra de pontos" n = "n´umero de elementos de AMO" Para i de 1 at´e n fa¸ca {

dist[i] = f(VAL[i]) / soma(f(VAL[1:n])) }

Sa´ıda: "amostra de tamanho n com reposi¸c~ao dentre os elementos de AMO, sendo a probabilidade de amostragem do i-´esimo elemento igual a dist[i]" }

Operador Cruzamento

O operador Cruzamento se baseia no fenˆomeno biol´ogico da reprodu¸c˜ao sexuada, no qual os gametas (haploides) unem-se, originando um zigoto (diploide). O objetivo desse operador ´e gerar novas configura¸c˜oes de cromossomos diferentes das que se encontram na amostra, mas que herdam caracter´ısticas de elementos da amostra. Para isso, ini- cialmente todos os elementos da amostra podem ou n˜ao ser alocados para cruzamento com certa probabilidade pr´e-determinada. Para cada dupla dentre os cromossomos alo- cados, este operador seleciona um gene aleatoriamente, em seguida, toda a sequˆencia de genes `a direita do gene selecionado (inclusive) ser´a trocada pela sequˆencia de genes equivalentes de seu parceiro. Vale salientar que se forem alocados uma quantidade ´ımpar de elementos para o cruzamento, o ´ultimo individuo alocado n˜ao ser´a alterado.

#ETAPA DE CRUZAMENTO Fun¸c~ao cru{

Entrada: AMO = "amostra de ´ındices"

PCRU= "probabilidade de cruzamento" NBTS = "n´umero de bits"

escolhidos = os elementos de AMO para os quais o resultado da sele¸c~ao aleat´oria de

um ponto em [0,1] foi menor que PCRU" n = "n´umero de elementos de escolhidos" n2 = "o maior inteiro menor que n/2" Se "n maior ou igual a que 2" fa¸ca{

Para i de 1 at´e n2 fa¸ca{

heranca = "a sequ^encia de bits `a direita de um bit selecionado aleatoriamente"

macho = "a representa¸c~ao bin´aria do [(2*i)-1]-´esimo elemento escolhidos"

femea = "a representa¸c~ao bin´aria do [2*i]-´esimo elemento escolhidos"

sacola = macho

macho[heranca] = femea[heranca] femea[heranca] = sacola[heranca]

AMO[escolhidos[2*i-1]] = "a representa¸c~ao decimal de macho"

AMO[escolhidos[2*i]] = "a representa¸c~ao decimal de femea"

} }

Sa´ıda: AMO }

Operador Muta¸c˜ao

O operador de muta¸c˜ao se baseia num fenˆomeno biol´ogico chamado de muta¸c˜ao gen´etica que ocorre como consequˆencia de um erro gen´etico durante a divis˜ao celular, modificando a sequˆencia dos nucleot´ıdeos e originando indiv´ıduos com novas caracte- r´ısticas imprevis´ıveis. O objetivo desse operador, assim como o operador cruzamento, ´e gerar novas configura¸c˜oes de cromossomos na amostra, fazendo com que o algoritmo gen´etico canˆonico atinja novos pontos de Ω. Para isso, cada gene pode ou n˜ao ter seu

3.2 Algoritmo gen´etico canˆonico 25

alelo (0 ou 1) alterado com certa probabilidade pr´e-determinada

#FUN¸C~AO DE TROCA DE BIT Fun¸c~ao troca{

Entrada: BIT = "0 ou 1" Se BIT = 0 ent~ao{

resposta = 1 } Sen~ao {

resposta = 0 }

Sa´ıda: resposta }

#ETAPA DE MUTA¸C~AO Fun¸c~ao mut{

Entrada: AMO = "amostra de ´ındices"

PMUT = "probabilidade de muta¸c~ao" NBITS = "n´umero de bits"

n = "n´umero de elementos de AMO" Para i de 1 at´e n fa¸ca{

sacola = "a representa¸c~ao bin´aria do i-´essimo elemento de AMO, com NBITS bits" Para j de 1 at´e NBITS fa¸ca{

Se "o resultado da sele¸c~ao aleat´oria de

um ponto em [0,1] for menor que PMUT" fa¸ca{ sacola[j] = troca(sacola[j])

} }

resposta[i] = "a representa¸c~ao decimal de sacola" }

Sa´ıda: resposta[1], resposta[2], ..., resposta[n] }

O algoritmo gen´etico canˆonico submete a amostra inicial com n indiv´ıduos a um processo iterativo com os operadores sele¸c˜ao, cruzamento e muta¸c˜ao nesta ordem, at´e que uma condi¸c˜ao de parada seja satisfeita.

#INICIO

Entrada: pop = "tamanho da amostra" N_bits = "n´umero de bits"

P_cru = "probabilidade de cruzamento" P_mut = "probabilidade de muta¸c~ao" intervalo = "discretiza¸c~ao do dom´ınio da fun¸c~ao

objetivo"

amostra = "amostra inicial" elite = maior(amostra) #ITERA¸C~OES

k=0

Enquanto "condi¸c~ao de parada n~ao satisfeita" fa¸ca { amostra = sel(amostra, P_cru, N_bits)

amostra=cru(amostra,P_cru,N_bits) amostra=mut(amostra,P_mut,N_bits) contador = contador + 1

}

Sa´ıda: contador, amostra, elite #FIM

Documentos relacionados