• Nenhum resultado encontrado

4.2 MODELAGEM

4.2.4 Algoritmo Genético

Esta seção tem por objetivo descrever o funcionamento do AG do sistema implementado para solucionar o problema de geração da grade de horário do curso de Ciência da Computação do campus São José da Universidade do Vale do Itajaí.

O cromossomo do sistema conta com oito semestres, pois é a duração do curso de Ciência da Computação, e dois horários disponíveis, devido a distribuição das aulas do curso. Cada gene do cromossomo é composto por disciplina e professor.

Na Figura 11 é apresentada a estrutura do cromossomo modelado.

Figura 11. Representação do cromossomo e dos genes

Com o intuito de facilitar a compreensão da codificação da estrutura do AG, na sequencia do trabalho será descrito como foi feita a sua codificação.

Sendo o gene a menor parte do cromossomo, o cruzamento entre dia e horário forma o gene do cromossomo. Já o Alelo é o conteúdo do gene, que está representado na Figura 12, onde são apresentados os atributos da classe Alelo. Desta forma, percebe-se que cada gene contém a disciplina e o professor alocados nele.

Figura 12. Estrutura do alelo do cromossomo

A Figura 13, apresentada na sequência, ilustra a classe Dia. Onde o alelo_01 representa o primeiro horário do dia e o alelo_02 representa o segundo horário.

Figura 13. Estrutura do dia do cromossomo

Já a Figura 14, representa o período/semestre do cromossomo, podendo-se verificar na codificação que a classe Periodo é composta por um ArrayList da classe Dia.

Figura 14. Estrutura do período do cromossomo

A Figura 15, ilustra a classe Cromossomo, onde pode-se verificar que ela é composta por um ArrayList de Periodo, obtendo assim todos os semestres do curso. Também consta nesta classe o atributo penalidade, onde é armazenada a quantidade de penalidades do cromossomo e o atributo resultadoFuncaoAvaliacao, que contém a força do cromossomo calculada por meio da função de avaliação do AG.

Figura 15. Estrutura do cromossomo

População Inicial:

Para a geração da população inicial foi elaborada uma heurística capaz de atender a todas as restrições hard do problema. Somando-se também nesta heurística a RN 07, devido ao fato que seria mais complicado manipular o cromossomo posteriormente para atendê-la. São consideradas restrições hard as Regras de Negócio: RN 03, RN 04, RN 05, RN 06, RN 08, já que estas poderiam inviabilizar a grade de horário.

A heurística adotada para a geração da população inicial é a seguinte:

1 – Primeiro se busca por professores com baixa disponibilidade para alocá-los. Entende-se por baixa disponibilidade professores que tenham apenas um dia disponível;

2 – Na sequência são alocadas as disciplinas de seis créditos em dias não consecutivos;

3 – Após a alocação das disciplinas de seis créditos, executa-se novamente o método de busca e alocação dos professores de baixa disponibilidade;

4 – Na sequência, inicia-se o processo de alocação das disciplinas de quatro crédito de forma aleatória. Entendendo-se como aleatória, neste caso, que o sistema não varrerá a lista de disciplinas de forma sequencial. A quantidade de tentativas que o sistema executará o método de alocação aleatória é escolhido pelo usuário. Este número de tentativas não está associado ao fato que a alocação das disciplinas sorteadas obterá sucesso. A cada três tentativas de alocação de disciplina, executa-se o método de busca e alocação dos professores de baixa disponibilidade;

5 – Encerrando o procedimento anterior, o sistema executa novamente o método de busca e alocação dos professores de baixa disponibilidade;

6 – Após executar o passo anterior, o sistema varre a lista de disciplinas buscando as disciplinas de quatro créditos que ainda não foram alocadas. A cada três disciplinas de quatro créditos alocadas, executa-se o método de busca e alocação dos professores de baixa disponibilidade; e

7 – Terminada a alocação das disciplinas de quatro créditos, o sistema faz uma busca pelos horários vagos nos semestres, para então encaixar as disciplinas de dois créditos.

Avaliação de Aptidão:

A função de aptidão faz a avaliação dos cromossomos baseando-se nas penalidades encontradas. Já que todos os indivíduos gerados na população inicial são viáveis, a função de avaliação verifica se os cromossomos atendem as restrições soft do problema, ou seja, as regras de negócio RN 01, RN 02 e RN 07, buscando-se, desta forma, a solução ótima. Justifica-se a verificação da RN 07 na função de avaliação, porque embora ela seja atendida na geração da população inicial, um operador genético pode gerá-la.

A função de avaliação do AG que foi utilizada no sistema proposto é apresentada em (1) e baseia-se em Preis (2007).

G= 1

(Np+1) (1)

Onde G é o grau de aptidão do cromossomo e Np é o número de penalidades, ou seja, restrições soft encontradas.

Seleção:

O método de seleção escolhido para o AG foi o Método Elitista, pois foi o que melhor se adaptou ao problema. O Método da Roleta chegou a ser implementado, mas quanto maior sua população, menor se tornava sua eficácia, já que a margem que o indivíduo ocupava na roleta se tornava menor e o método, por consequência, aleatório.

O Método Elitista foi implementado da seguinte forma:

1 – Os cromossomos são ordenados de acordo com o valor resultante da função de avaliação;

2 – Após os cromossomos estarem ordenados, os melhores são automaticamente selecionados como um dos cromossomos do par que será utilizado no crossover. Entendendo-se como melhores, os 50% melhor posicionados.

3 – Terminado o passo anterior, são selecionados os outros cromossomos para formar o par.

O segundo cromossomo é selecionado de forma aleatória entre todos os indivíduos da população excetuando-se o indivíduo já selecionado.

Operadores Genéticos:

O operador de crossover aplicado ao AG tem dois pontos de corte, sendo ambos selecionados randomicamente. O primeiro ponto de corte é entre o segundo e quarto semestre, ou seja, entre as barras verdes da Figura 16, já o segundo ponto de corte é entre o sexto e o sétimo semestre, ou seja, entre as barras vermelhas da referida figura.

Figura 16. Pontos de corte do cromossomo

Optou-se por dois pontos de corte para que haja uma maior diversidade entre os cromossomos gerados nos cruzamentos.

A taxa de crossover a princípio seria selecionada pelo usuário, mas após alguns testes com os dados reais do curso, verificou-se que a taxa de aproveitamento dos filhos gerados ficou em aproximadamente 13%. Tal número ficou muito baixo pelo fato de muitos professores lecionarem diversas matérias no curso de Ciência da Computação, sendo a grande maioria em fases diferentes.

Devido a este fato, a taxa de crossover que inicialmente seria selecionada pelo usuário, passou a ser sempre 100%.

No processo de mutação, os semestres que serão mutados são selecionados randomicamente.

Ao contrário do crossover, a mutação ocorrerá sempre dentro do semestre, permutando os genes nos dias da semana, ou seja, trocando, por exemplo, as aulas de terça-feira com quinta-feira no terceiro semestre. Os dias da semana que são permutados também são selecionados de forma randômica, buscando desta forma a maior diversidade possível.

Sabendo-se da possibilidade dos operadores genéticos gerarem indivíduos infactíveis, após cada operação é realizada uma avaliação nos cromossomos gerados para verificar se houve sobreposição de professor ou se a disponibilidade dos professores continua de acordo com o cadastrado. Caso isto não ocorra os cromossomos são automaticamente desprezados pelo AG.

Deve-se ressaltar que a mutação além de passar pela supracitada avaliação, só é aceita caso não haja movimentos de piora, outro dado relevante é que a taxa de mutação será selecionada pelo usuário e que em testes preliminares a faixa de aproveitamento dos cromossomos mutados ficou em 35%.

Outra informação importante sobre a mutação é que embora o comum seja fazer a mutação apenas nos filhos gerados no crossover, em virtude do aproveitamento deste operador genético ser tão baixo, a mutação pode acontecer em qualquer indivíduos da população.

Critérios de Parada:

Os critérios de parada utilizados no AG são:

1 – O AG atingir a solução ótima, ou seja, G = 1, maximizando assim a solução;

2 – O número de iterações chegar ao limite pré estabelecido, sendo essa informação fornecida pelo usuário;

Remoção de Cromossomos da População:

Devido ao baixo aproveitamento do crossover, pensou-se inicialmente em não aplicar a remoção dos cromossomos. Entretanto, existindo a possibilidade da especificidade encontrada na instituição de muitos professores que lecionam várias disciplinas ser alterada, causando assim a inviabilidade do sistema, voltou-se atrás nesta proposta.

Buscando-se justificar a remoção desses cromossomos, a Tabela 1 apresenta os números gerados pelo AG em 21 iterações sem a exclusão dos indivíduos. Para este processo o tamanho da população inicial foi de 1000 indivíduos. Neste teste foram usados professores fictícios, permitindo que cada professor estivesse habilitado para no máximo três disciplinas, viabilizando assim a geração de uma grade de horário completa.

Diante do exposto evidencia-se que após cada crossover são excluídos os piores cromossomos da população, mantendo sempre o número de indivíduos de acordo com o parâmetro de entrada para este critério.

O tamanho da população inicial é selecionado pelo usuário do sistema, quando também escolherá a taxa de mutação e o número de iterações pretendidas.

Tabela 1. Resultados apresentados pelo AG

A Figura 17, apresentada na sequência, ilustra o gráfico de crescimento da população apresentada na Tabela 1. Pelo gráfico é possível perceber o crescimento exponencial da população, tornando, desta forma, o processamento computacional muito oneroso. Comprova-se, com isso, ser inviável para um computador de baixo custo processar esse AG sem que haja a remoção dos indivíduos.

Já a Figura 18, demonstra a redução da média de penalidades e o aumento da média da função de avaliação do cromossomo. Comprova-se assim, que mesmo com o aumento exponencial da população, os indivíduos estão evoluindo, ou seja, demonstra-se que o AG está melhorando a população de cromossomos.

Figura 17. Gráfico da população de cromossomos apresentada na Tabela 1

Figura 18. Gráfico das médias de penalidade e função de avaliação da Tabela 1 Na sequência do trabalho é apresentada a interface do sistema.

Documentos relacionados