2.4 Formula¸c˜ ao
2.4.2 Formula¸ c˜ ao do problema biobjetivo
Ao contr´ario da decis˜ao adotada para o problema mono-objetivo estudado nesta dis- serta¸c˜ao, no problema biobjetivo considera-se que o n´umero e tipo de sensores a instalar n˜ao ´e conhecido a priori. Neste caso, passa a existir uma restri¸c˜ao adicional que limita o n´umero de sensores a utilizar mediante a disponibilidade de cada recurso. Para al´em da existˆencia de um limite superior, pode existir um interesse adicional em instalar no m´ınimo um determinado n´umero de sensores com caracter´ısticas particulares. O n´umero de sensores a instalar deve respeitar, assim, os limites impostos consoante o respetivo tipo.
Para al´em da minimiza¸c˜ao do risco, a minimiza¸c˜ao do custo ´e tamb´em considerada, apresentando-se uma nova fun¸c˜ao objetivo que engloba estes dois crit´erios.
Dados:
A: ´Area de interesse
O: ´Area ocupada por obst´aculos
NC : No de diferentes tipos de sensores circulares existentes.
NSC: No de diferentes tipos de sensores setor circular existentes.
Ci−: No m´ınimo de sensores circulares do tipo i a instalar, i = 1, . . . , NC.
SCj−: No m´ınimo de sensores setor circular tipo j a instalar, j = 1, . . . , NSC.
Ci∗: No de sensores circulares dispon´ıveis do tipo i, i = 1, . . . , NC.
SCj∗: No de sensores setor circular dispon´ıveis do tipo j, j = 1, . . . , NSC.
Vari´aveis:
Ci: No de sensores circulares do tipo i a instalar, i = 1, . . . , NC.
SCj: No de sensores setor circular do tipo j a instalar, j = 1, . . . , NSC.
(xs, ys) : Coordenadas do centro do sensor s, s ∈ S
os: Orienta¸c˜ao do sensor setor circular s, s ∈ SC
S = C ∪ SC S = ( 1, ..., NC P i=1 Ci ) S ( NC P i=1 Ci+ 1, ..., NC P i=1 Ci+ NSC P j=1 SCj )
Minimizar {Risco(S), Custo(S)}
s.a: (xs, ys) ∈ A − O, ∀s ∈ S
os∈ [0, 2π], ∀s ∈ SC
Ci−≤ Ci ≤ Ci∗ ∀i = 1, . . . , NC
SCj−≤ SCj ≤ SCj∗ ∀j = 1, . . . , NSC
Ci, SCj ∈ N0 ∀i = 1, . . . , NC; ∀j = 1, . . . , NSC
Os problemas anteriormente formulados e que se pretendem estudar nesta disserta¸c˜ao s˜ao NP-dif´ıceis e, por esse motivo, aplicar algoritmos determin´ısticos para os resolver ´e computacionalmente ineficiente. A evolu¸c˜ao tecnol´ogica, permitindo o aumento da capaci- dade dos computadores, tornou as t´ecnicas heur´ısticas baseadas em popula¸c˜oes abordagens muito pr´aticas e comuns para lidar com este tipo de problemas, obtendo-se resultados de boa qualidade num espa¸co de tempo razo´avel. Neste sentido, o cap´ıtulo que se segue apresenta a metodologia de resolu¸c˜ao adotada para resolver o problema descrito.
Metodologia de resolu¸c˜ao
Tendo em conta as caracter´ısticas do problema apresentado no cap´ıtulo anterior, introduz- se, de seguida, uma metodologia de resolu¸c˜ao baseada em t´ecnicas heur´ısticas, mais preci- samente, trata-se de um algoritmo gen´etico onde a codifica¸c˜ao das solu¸c˜oes ´e feita atrav´es de chaves aleat´orias. `A semelhan¸ca de qualquer t´ecnica heur´ıstica, uma heur´ıstica baseada no conceito de popula¸c˜ao, como ´e o caso de um algoritmo gen´etico, procura determinar uma solu¸c˜ao admiss´ıvel para o problema, de preferˆencia com valor pr´oximo do valor da solu¸c˜ao ´otima.
3.1
Algoritmos gen´eticos e chaves aleat´orias
Os algoritmos gen´eticos foram introduzidos por Holland nos primeiros anos da d´ecada de 70, tendo como inspira¸c˜ao a teoria de Darwin. Essencialmente, um algoritmo gen´etico ´e um algoritmo de pesquisa que recorre aos princ´ıpios b´asicos da gen´etica e da hereditariedade e inspira-se na teoria darwinista da sele¸c˜ao natural na medida em que de uma gera¸c˜ao para a seguinte sobrevivem os indiv´ıduos mais aptos.
Num algoritmo gen´etico, a popula¸c˜ao consiste num conjunto de solu¸c˜oes ou indiv´ıduos que s˜ao representados pelos seus cromossomas. O processo de sele¸c˜ao e reprodu¸c˜ao ´e feito a partir do momento em que os indiv´ıduos mais aptos da gera¸c˜ao atual s˜ao selecionados e se cruzam para dar origem `a gera¸c˜ao seguinte. O processo de sele¸c˜ao seleciona um certo n´umero de solu¸c˜oes parentais, as quais, atrav´es do operador cruzamento, s˜ao utilizadas para gerar novas solu¸c˜oes (descendˆencia). Um outro operador utilizado ´e o operador muta¸c˜ao que tem como objetivo fazer modifica¸c˜oes aleat´orias nas solu¸c˜oes. A avalia¸c˜ao de cada indiv´ıduo (solu¸c˜ao) ´e feita recorrendo `a chamada fun¸c˜ao aptid˜ao que representa o seu m´erito relativo quando comparado com os restantes elementos da popula¸c˜ao em que se encontra inserido. A figura 3.1 sintetiza os principais aspetos do funcionamento de um algoritmo gen´etico, anteriormente mencionados.
Existem, essencialmente, dois aspetos fundamentais que ´e necess´ario definir quando se aplica um algoritmo gen´etico a um dado problema: o modo de funcionamento dos operado- res adotados e a forma como as solu¸c˜oes s˜ao codificadas. Para um mesmo problema podem
Figura 3.1: Funcionamento geral de um algoritmo gen´etico
existir v´arias formas de codificar as solu¸c˜oes e para cada uma delas, podem existir diversos operadores gen´eticos v´alidos. A codifica¸c˜ao de solu¸c˜oes atrav´es de chaves aleat´orias, con- forme se apresenta de seguida, ´e uma das formas poss´ıveis de codifica¸c˜ao e ser´a utilizada para representar solu¸c˜oes para o problema de localiza¸c˜ao de sensores num espa¸co cont´ınuo.
A abordagem dos algoritmos gen´eticos utilizando chaves aleat´orias (do inglˆes random- key genetic algorithms - RKGA) foi introduzida por Bean para problemas de sequen- ciamento [4]. Esta codifica¸c˜ao assume que os indiv´ıduos s˜ao vetores (1 × N ) e que cada elemento (gene) corresponde a um valor aleat´orio entre 0 e 1. Um algoritmo determin´ıstico que se ir´a referir, daqui em diante, como descodificador associa a cada cromossoma uma solu¸c˜ao do problema. O espa¸co de solu¸c˜oes ´e, assim, analisado indiretamente, uma vez que as solu¸c˜oes s˜ao percorridas no espa¸co das chaves aleat´orias recorrendo ao descodificador para avaliar a aptid˜ao da solu¸c˜ao correspondente `a respetiva chave (figura 3.2). Note-se que o descodificador ´e um algoritmo determin´ıstico, ou seja, para um dado vetor de chaves aleat´orias a respetiva solu¸c˜ao do problema ´e sempre a mesma. O descodificador tem um papel fundamental para o sucesso deste procedimento, como se ir´a referir mais `a frente.
O RKGA envolve uma popula¸c˜ao inicial de p indiv´ıduos que correspondem a p vetores de chaves aleat´orias que evoluem ao longo de v´arias gera¸c˜oes. Em cada gera¸c˜ao, as solu¸c˜oes s˜ao divididas em dois subconjuntos de acordo com o respetivo valor de aptid˜ao: um grupo mais pequeno de p×peindiv´ıduos constitui a elite, ou seja, os elementos da popula¸c˜ao com
melhor aptid˜ao, sendo pe a propor¸c˜ao de indiv´ıduos da elite e os p − (p × pe) indiv´ıduos
restantes constituem o segundo grupo. De uma gera¸c˜ao para a seguinte, as solu¸c˜oes de elite mantˆem-se, sendo as restantes geradas atrav´es de muta¸c˜ao e cruzamento, conforme ilustra a figura 3.3. De acordo com o procedimento sugerido por Bean, um indiv´ıduo gerado atrav´es de muta¸c˜ao consiste simplesmente num novo vetor de chaves aleat´orias que ´e introduzido na popula¸c˜ao. Em cada gera¸c˜ao s˜ao introduzidos p × pm indiv´ıduos
Figura 3.2: Descodificador de um algoritmo gen´etico com chaves aleat´orias.
Considere-se, como exemplo, o cromossoma (0.23, 0.14, 0.72, 0.51) para um problema de sequenci- amento. Este cromossoma codifica a sequˆencia 2-1-4-3 uma vez que 0.23 corresponde ao 2o menor elemento, 0.14 ao 1o menor elemento e assim sucessivamente.
Figura 3.3: Funcionamento do RKGA
mutados na popula¸c˜ao de acordo com a propor¸c˜ao de solu¸c˜oes originadas por muta¸c˜ao, pm, previamente estabelecida. De forma a manter o n´umero p de indiv´ıduos em cada
gera¸c˜ao, os restantes p − (p × pe)–(p × pm) indiv´ıduos s˜ao gerados por cruzamento. Bean
sugere que sejam selecionados aleatoriamente dois progenitores de toda a popula¸c˜ao e que, de acordo com uma probabilidade ρe, se determine se cada gene do descendente prov´em do
primeiro ou do segundo progenitor. Uma vez que se assume que qualquer vetor de chaves consegue ser descodificado dando origem a uma solu¸c˜ao, os descendentes resultantes de cruzamento s˜ao sempre v´alidos, podendo ser descodificados numa solu¸c˜ao do problema.
Salienta-se o facto de o operador muta¸c˜ao n˜ao ser utilizado sobre o operador cruza- mento. Assim, os descendentes gerados por cruzamento n˜ao sofrem muta¸c˜ao como ´e usual nos algoritmos gen´eticos mas o intuito deste operador continua a ser o mesmo: obter diversidade e evitar prematuramente a estagna¸c˜ao em ´otimos locais.