• Nenhum resultado encontrado

3 ALGORITMOS GENÉTICOS 42

3.3 O ALGORITMO GENÉTICO DE CHU-BEASLEY

3.3.2 A heurística AG de chu-beasley

3.3.2 A heurística AG de chu-beasley

O Algoritmo Genético de Chu-Beasley conta com a estrutura básica dos algoritmos genéticos, considerando cada cromossomo como um vetor n-dimensional. A codificação deste vetor baseia-se na representação dos m agentes e n tarefas, através dos conjuntos I = {1, 2, ..., m} e J = {1, 2, ..., n}, respectivamente, da seguinte forma: cada posição j (j J ) do cromossomo representa a tarefa que deve ser executada, e o valor i (i I) é atribuído a cada uma destas componentes, indicando qual agente i executará a tarefa j. Na Tabela 3.1 apresenta-se um exemplo de cromossomo codificado em que a tarefa 1 foi atribuída ao agente 2, a tarefa 2, ao agente 1, a tarefa 3, ao agente 3, e assim, sucessivamente.

Tabela 3.1 - Cromossomo codificado da Heurística AG

Fonte: Adaptado de Chu e Beasleu (1997) [21].

O Algoritmo AG de Chu-Beasley, portanto, possui cromossomos com n genes inteiros, que é igual ao número de tarefas, e o qual é dividido em 5 etapas, segundo a descrição do trabalho [21], adaptado como a seguir:

70 das soluções iniciais é gerada de acordo com uma atribuição randômica de um agente a cada tarefa. Como as soluções iniciais podem violar as restrições de capacidade em (3.5), soluções iniciais podem ser infactíveis. Seja skj um índice que representa o agente atribuído à tarefa j (j = 1, ..., n) na solução k (k = 1, ..., N ).

2. Decodificar a solução codiftcada para obter o valor fitness associado. O valor fitness

é calculado para cada proposta de solução conhecida. Como as soluções podem violar as restrições de capacidade (3.5), soluções iniciais podem ser infactíveis. Logo, deve-se levar em consideração não apenas os custos de uma solução, mas também o seu grau de infactibilidade. Ao contrário de outras propostas existentes na literatura sobre algoritmos genéticos, a proposta de Chu-Beasley armazena a informação de infactibilidade em um vetor independente chamado de unfitness. Os autores utilizaram a heurística proposta por eles, no trabalho anterior [89], para a decodificação dos cromossomos. A fitness fk da solução k é igual ao valor da função objetivo e que é calculada observando-se apenas o somatórios dos custos:

A unfitness uk é uma medida de infactibilidade e é calculada por:

Note que uk= 0 se e somente se k é factível.

3. Selecionar duas soluções pais para a reprodução. Os autores utilizaram o método binário de seleção por torneio, em que dois indivíduos são escolhidos aleatoriamente da população. O indivíduo que possui melhor fitness (o menor valor para a função objetivo), dentre os dois escolhidos, será o pai selecionado para a Recombinação. Para gerar um descendente, dois torneios binários são realizados. Cada um deles produz um dos pais. Note que o critério de seleção não envolve o valor unfitness do pai.

4. Gerar uma solução ftlho aplicando primeiramente um operador Recombinação para os pais selecionados. Foi considerado o operador Recombinação simples de

um-ponto, no qual um ponto da recombinação p J (uma tarefa, uma componente do vetor

71

genes do primeiro pai, e os genes n p genes remanescentes, do segundo pai, ou vice-versa, com iguais probabilidades. O procedimento de Recombinação tem na sequência um procedimento de

Mutação. Esse procedimento de Mutação consiste em modificar elementos em dois genes

aleatoriamente selecionados (i.e., modificando a atribuição de agentes a duas tarefas selecionadas randomicamente). A experiência computacional dos autores, que é descrita no decorrer do artigo, mostrou que a Heurística AG é eficiente na geração de soluções de boa qualidade, ao considerar apenas os operadores de Recombinação e de Mutação. Mas o algoritmo pôde ser ainda melhorado utilizando-se um novo operador, que os autores chamaram de Heurística de Problema-Específico, e que envolve a melhoria local através de dois passos, como descritos abaixo.

(a) Seja Tj o agente atribuído à tarefa j na solução filho. Para cada agente i I, se a capacidade de recurso do agente i é excedida, ou seja, se:

então uma simples tarefa q selecionada randomicamente e com Tq= i é reatribuída do agente i para o próximo agente (na seguinte ordem: i + 1, ..., m, 1, 2, ..., i − 1) que tem recurso suficiente para executá-la (não extrapola sua capacidade máxima de recurso), se ele puder ser encontrado.

(b)Para cada tarefa j J , procurar pelo menor custo de recursos de se executar cada tarefa

j, mini,iIcij, considerando-se todos os agentes i I, que satisfaçam ambas as condições: cij < cTj j e:

se i puder ser determinado, e então reatribuir a tarefa j do agente Tjpara o agente i. A heurística (a) é uma tentativa de melhoramento da factibilidade dos descendentes, ao reatribuir tarefas de agentes que tem sua capacidade máxima violada, para agentes que ainda possuem a disponibilidade de a ela serem designadas tarefas. A heurística (b) tenta ainda reduzir os custos dos filhos gerados, ao designar tarefas a agentes que possuem menores custos.

5. Substituir um indivíduo da população por uma solução ftlho. Na heurística GA de Chu-Beasley, a evolução da população anterior para a próxima geração consiste na

72 substituição do indivíduo da população com o maior valor unfitness (i.e., a solução mais infactível) pelo descendente gerado. Se a população possui apenas soluções factíveis (uk = 0, k), então, substitui-se pelo filho, a solução com maior fitness. Este esquema de substituição de soluções na evolução entre populações promove a eliminação de soluções infactíveis. Além disso, descendentes em duplicidade são impedidos de entrar na população atual, para evitar que uma população seja constituída apenas de soluções idênticas, por exemplo, e limitando a capacidade do algoritmo de gerar novas soluções.

6. Repetir os passos 3-5 até que M ftlhos não duplicados sejam gerados sem que haja o melhoramento da melhor solução até então encontrada.