Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE DO VALE DO ITAJAÍCENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
AUTOMATIZAÇÃO DA ELABORAÇÃO DO QUADRO DEHORÁRIOS ACADÊMICO
Acadêmico: Vinicius Carneiro do Nascimento
Orientador: Edson T. Bez, Doutor
São José, Junho / 2013
UNIVERSIDADE DO VALE DO ITAJAÍCENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
AUTOMATIZAÇÃO DA ELABORAÇÃO DO QUADRO DEHORÁRIOS ACADÊMICO
Vinicius Carneiro do Nascimento
São José, Junho / 2013
Orientador: Edson T. Bez, Doutor
Área de Concentração: Pesquisa Operacional
Linha de Pesquisa: Pesquisa Operacional
Palavras-chave: Algoritmos Genéticos, Heurísticas, Programação de Horários.
Número de páginas: 69
RESUMO
O problema de programação de horários ou timetabling, consiste na alocação de recursos,sujeita a um conjunto de restrições. Este tipo de problema tem motivado uma série de pesquisas por setratar de um problema de Otimização Combinatória, ou seja, tem o intuito de encontrar o melhorresultado para um problema, da forma mais eficiente e com menor custo operacional possível. Opresente estudo tem como foco a elaboração de uma grade de horário para o curso de Ciência daComputação da UNIVALI. Tendo em vista que, atualmente, esta grade de horários é uma tarefa árduae executada manualmente, desenvolveu-se um sistema automatizado capaz de executar esta tarefa demodo a atender as restrições impostas, tal como, não alocar um mesmo professor para duas disciplinasdistintas em um mesmo horário. A ferramenta desenvolvida foi baseada no Algoritmo Genético, sendoque a população inicial foi gerada apenas com indivíduos factíveis, ou seja, soluções viáveis. Nodecorrer das iterações do Algoritmo Genético buscou-se atender não somente a condição defactibilidade mas também de otimalidade, buscando entre as soluções factíveis, a melhor possível. Aferramenta proposta foi testada com os dados reais do curso contemplado e chegou a resultadossignificativos.
ABSTRACT
The problem of scheduling and timetabling consists in allocating resources, subject to a set ofrestrictions. This type of problem has motivated a lot of research because it is a problem ofCombinatorial Optimization. The present study focuses on the development of a timming schedule forthe Computer Science course UNIVALI. Given that, currently, this timming schedule is a hardmanually performed task, we developed an automatic system capable of performing this task. To solvethis problem and to meet the imposed restrictions, such as allocating the same teacher for two differentdisciplines in the same time, it is proposed using a genetic algorithm. This is intended to serve not onlythe condition of factibility but also the condition of optimality, searching among the achievablesolutions, the best one possible.
LISTA DE TABELAS
Tabela 1. Resultados apresentados pelo AG......................................................................................49
Tabela 2. Resultados apresentados pelo AG com dados fictícios......................................................59
Tabela 3. Tabela de comparação dos resultados apresentados pelas baterias de testes.....................60
LISTA DE FIGURAS
Figura 1. Fluxo do Algoritmo Genético Básico.................................................................................19
Figura 2. Representação da proporção de cada indivíduo na roleta...................................................22
Figura 3. Cromossomo binário com 10 genes....................................................................................23
Figura 4. Cruzamento com um único ponto de corte.........................................................................24
Figura 5. Cruzamento com dois pontos de corte................................................................................24
Figura 6. Mutação do cromossomo....................................................................................................25
Figura 7. Algoritmo de Busca Dispersa Implementado por Spindler................................................29
Figura 8. Caso de Uso do sistema modelado......................................................................................39
Figura 9. Diagrama de sequência da geração da grade de horário.....................................................41
Figura 10. Modelo de Relacionamento do sistema modelado............................................................42
Figura 11. Representação do cromossomo e dos genes.....................................................................43
Figura 12. Estrutura do alelo do cromossomo....................................................................................44
Figura 13. Estrutura do dia do cromossomo.......................................................................................44
Figura 14. Estrutura do período do cromossomo...............................................................................44
Figura 15. Estrutura do cromossomo.................................................................................................45
Figura 16. Pontos de corte do cromossomo.......................................................................................47
Figura 17. Gráfico da população de cromossomos apresentada na tabela 1......................................50
Figura 18. Gráfico das médias de penalidade e função de avaliação da tabela 1...............................50
Figura 19. Tela de consulta professor do sistema desenvolvido........................................................51
Figura 20. Tela de cadastro professor do sistema desenvolvido........................................................52
Figura 21. Tela de apresentação da melhor solução encontrada pelo sistema...................................53
Figura 22. Grade de horário utilizada no semestre.............................................................................56
Figura 23. Grade de horário gerada pelo sistema desenvolvido.........................................................57
Figura 24. Grade horária completa.....................................................................................................58
LISTA DE ABREVIATURAS E SIGLAS
AloGra Alocador de Grade de HoráriaAG Algoritmo GenéticoAGs Algoritmos GenéticosCTIC Congresso de Tecnologia da Informação e TelecomunicaçõesGRASP Greedy Randomized Adaptive Search ProcedureIA Inteligência ArtificialPATAT Pactice and Theory on Automated TimetablingSEPAI Semana Paraense de Informática e Telecomunicações
7
SUMÁRIO
INTRODUÇÃO ........................................................................................91.1 PROBLEMA DE PESQUISA............................................................................101.1.1 Solução Proposta.............................................................................................111.1.2 Delimitação de Escopo....................................................................................111.1.3 Justificativa......................................................................................................111.2 OBJETIVOS........................................................................................................121.2.1 Objetivo Geral.................................................................................................121.2.2 Objetivos Específicos.......................................................................................121.3 METODOLOGIA...............................................................................................121.3.1 Metodologia da Pesquisa.................................................................................121.3.2 Procedimentos Metodológicos........................................................................131.4 ESTRUTURA DO TRABALHO.......................................................................13
2 FUNDAMENTAÇÃO TEÓRICA......................................................142.1 ELABORAÇÃO DA GRADE DE HORÁRIO OU TIMETABLING............142.1.1 Viabilidade x Otimalidade..............................................................................152.2 ALGORITMOS GENÉTICOS..........................................................................162.2.1 Histórico...........................................................................................................162.2.2 Definições.........................................................................................................172.2.3 Analogia Biológica...........................................................................................182.2.4 Aspectos Principais..........................................................................................192.2.4.1 População Inicial.............................................................................................192.2.4.2 Avaliação de Aptidão......................................................................................202.2.4.3 Seleção.............................................................................................................212.2.4.4 Operadores Genéticos......................................................................................222.2.4.5 Critérios de Parada..........................................................................................252.3 MÉTODOS PARA RESOLUÇÃO DO PROBLEMA.....................................26
3 TRABALHOS CORRELATOS..........................................................323.1 ACADÊMICOS...................................................................................................323.2 COMERCIAIS.....................................................................................................333.3 ANÁLISE COMPARATIVA.............................................................................34
4 DESENVOLVIMENTO......................................................................364.1 REQUISITOS......................................................................................................364.1.1 Requisitos Funcionais......................................................................................364.1.2 Requisitos Não Funcionais..............................................................................374.1.3 Regra de Negócio.............................................................................................374.2 MODELAGEM...................................................................................................384.2.1 Caso de Uso......................................................................................................384.2.2 Diagrama de Sequência...................................................................................404.2.3 Banco de Dados................................................................................................41
8
4.2.4 Algoritmo Genético.........................................................................................434.2.5 Interface do Sistema........................................................................................514.3 DESIGN DO EXPERIMENTO.........................................................................534.4 RESULTADOS....................................................................................................54
5 CONCLUSÕES....................................................................................615.1 TRABALHOS FUTUROS..................................................................................62
9
INTRODUÇÃO
Nos dias atuais, com todas as organizações mundiais procurando incessantemente reduzir
custos, um dos grandes desafios encontrado é o schedule, ou seja, a alocação de recursos em um
determinado período de tempo, da melhor maneira possível.
Cada empresa enfrenta um problema de alocação de recurso específico, de acordo com suas
atividades. Uma indústria de automóvel deve alocar as peças que serão utilizadas na linha de
montagem da melhor maneira possível, para que não haja desperdício de tempo no deslocamento
entre seu local de armazenagem e montagem do veículo. Empresas de transporte buscam a melhor
alocação dos itens transportados em suas frotas, para desta forma fazer menos viagens ou utilizar
um veículo menor, economizando combustível. Instituições de ensino tendem a ter problemas com
o ensalamento de concorrentes em concursos e vestibulares, agendamento de exames e elaboração
da grade de horário ou timetabling.
Segundo Wren (1996 apud SANTOS & SOUZA, 2007, p. 3) timetabling é “a alocação,
sujeita a restrições, de recursos a objetos colocados no espaço e no tempo, de modo a satisfazer,
tanto quanto possível, um conjunto de objetivos desejáveis”.
A quantidade de variáveis/restrições existentes nesse tipo de problema pode ser
demasiadamente grande e a cada adição de um novo elemento o grau de complexidade cresce
exponencialmente. Em virtude desse grau de complexidade crescer tanto a cada inclusão de
variável/restrição não existe uma modelagem que provê uma solução genérica para todos os
problemas de alocação de recursos. Desta forma, não é porque já existe um sistema que solucione o
problema apresentado para uma organização, que esta solução funcionará noutra.
Dentre tantas restrições que podem ser encontradas no timetabling pode-se citar: a carga
horária de uma disciplina, a carga horária diária e semanal de uma turma, a sobreposição de
professores, a disponibilidade de professores, a disponibilidade da matéria e restrições geográficas.
Schaerf (1999 apud PAIM & GREIS, 2008, p. 6) classifica as restrições da seguinte
maneira: “restrições essenciais (hard) são aquelas que devem ser obrigatoriamente satisfeitas e
restrições não-essenciais (soft) são aquelas que podem ser violadas mas que devem ser satisfeitas da
melhor forma possível”. Um exemplo de restrição essencial é um professor que não pode dar aula
as terças e quintas-feiras por ter outros compromissos nestes dias. De nada adiantará o responsável
pela grade de horários alocar o professor nos referidos dias, se o mesmo não estará disponível. Já
um exemplo de restrição não-essencial, seria um professor que gostaria de não ministrar aulas as
10
terças e quintas-feiras, ou seja, o professor até pode dar aula nestes dias, mas o ideal é que ele
lecione nos demais dias da semana.
Existem muitas maneiras de solucionar o problema apresentado. Pode-se resolvê-lo usando a
heurística, o Algoritmo Genético (AG) muito difundido na Inteligência Artificial (IA), entre tantas.
Cada uma sendo selecionada de acordo com a modelagem do problema existente.
Tem-se conhecimento da existência de algumas ferramentas para solução do problema de
programação de horários acadêmicos. Entre estas, pode-se citar o Aghora, que é uma ferramenta
desenvolvida por acadêmicos da Universidade da Amazônia, testada na própria instituição e
apresentada na XIX Semana Paraense de Informática e Telecomunicações (SEPAI) e no II
Congresso de Tecnologia da Informação e Comunicação (CTIC). O sistema teve seu
desenvolvimento baseado nos Algoritmos Genéticos (AGs).
Dentro deste contexto, este trabalho procura fazer uma contribuição na área de pesquisa
operacional criando um sistema para automatizar a elaboração do quadro de horários da instituição
de ensino estudada. Compreendendo-se pesquisa operacional como um método científico que
auxilia nas tomadas de decisões.
Com a utilização do sistema desenvolvido na pesquisa, acredita-se que a coordenação do
curso contemplado tenha um ganho de tempo precioso para realizar tarefas mais importantes, visto
que, existe uma complexidade elevada para a construção de uma grade de horário que atenda a
expectativa de todos os envolvidos com ela, seja a coordenação ou os professores. Considerando-se
um cruzamento dos dados necessários a elaboração da grade horária como: a quantidade de
professores envolvidos, suas disponibilidades para lecionar e as disciplinas ministradas no semestre,
percebe-se que a tarefa realizada de forma manual requer muitas horas, sendo que nem sempre é
encontrada a melhor solução possível, enquanto que em alguns minutos, o sistema pode gerar uma
solução muito melhor que a manual, sendo talvez inclusive uma solução ótima.
Dando continuidade ao trabalho, na próxima seção será apresentado o problema da pesquisa.
1.1 PROBLEMA DE PESQUISA
Sabe-se que hoje, todo processo de gerar o quadro de horário do curso de Ciência da
Computação é feito manualmente pela coordenação, o que demanda muitas horas de trabalho para a
confecção de uma grade de horário que atenda a todas as restrições existentes.
Barbadym (1996 apud SOUZA, COSTA & GUIMARÃES, 2002, p. 1) afirma que “a
solução manual deste problema é uma tarefa penosa e complexa e normalmente requer vários dias
de trabalho”.
11
1.1.1 Solução Proposta
Diante de todas as informações expostas até o momento, evidencia-se que a presente
pesquisa, resultou em um sistema capaz de gerar automaticamente a programação horária do curso
de Ciência da Computação do campus São José da Universidade do Vale do Itajaí. Tal sistema foi
desenvolvido com o uso do Algoritmo Genético.
1.1.2 Delimitação de Escopo
O sistema implementado no decorrer da pesquisa, conta com os módulos: configuração do
Algoritmo Genético, disponibilidade do professor, professor, disciplina, semestre e curso. Todos
estes possuem apresentação das informações cadastradas, como a possibilidade de se adicionar
novos dados, edita-los ou removê-los.
Com todos os dados necessários a geração de uma grade de horário cadastrados, o usuário
poderá gerar a tabela de horário do curso de Ciência da Computação do campus São José da
Universidade do Vale do Itajaí.
1.1.3 Justificativa
O trabalho proposto teve o intuito de automatizar a elaboração da grade de horários do curso
de Ciência da Computação do campus São José da UNIVALI. Segundo Souza (2000), existe um
consenso na comunidade científica que é de difícil generalização o problema de alocação de
horários. Isto acontece devido a existência de diversos regimes educacionais, que variam de acordo
com a região, e também com a instituição de ensino. Devido a isto, os sistemas desenvolvidos são
frequentemente focados em uma instituição específica.
Por este motivo, as soluções existentes no mercado podem ser tomadas como base, mas
pelas especificidades encontradas na presente instituição, é necessário um sistema que atenda as
suas características.
Vislumbrou-se que com a presente pesquisa finalizada, a coordenação do curso
contemplado, tenha mais disponibilidade de horário para fazer tarefas menos mecânicas na
instituição.
12
1.2 OBJETIVOS
Esta seção formaliza os objetivos do trabalho, conforme descrito a seguir.
1.2.1 Objetivo Geral
O objetivo geral deste trabalho foi desenvolver um sistema capaz de gerar automaticamente
a grade de horários do curso de Ciência da Computação do campus São José da UNIVALI.
1.2.2 Objetivos Específicos
Os objetivos específicos deste trabalho foram:
1. Pesquisar e analisar soluções similares no mercado e comunidade científica;
2. Pesquisar as técnicas existentes para solução do problema;
3. Desenvolver um sistema capaz de automatizar a elaboração da grade de horários;
4. Testar e avaliar o sistema desenvolvido; e
5. Documentar os resultados apresentados pelo sistema desenvolvido.
1.3 METODOLOGIA
Nesta seção será apresentada a metodologia utilizada na pesquisa.
1.3.1 Metodologia da Pesquisa
O método de pesquisa utilizada no trabalho foi o hipotético-dedutivo, pois se trata de um
problema onde existem conflitos diante das expectativas e soluções existentes para o problema
trabalhado.
A pesquisa sob o ponto de vista de sua natureza foi uma pesquisa aplicada, pois a mesma
resultou em uma ferramenta que pode ser utilizada pela coordenação do curso contemplado.
Sob a forma que o problema foi abordado a pesquisa é do tipo qualitativa, pois se tratou de
um trabalho que vislumbrou a melhora da qualidade do serviço de geração de horário oferecido pela
coordenação do curso contemplado aos professores da instituição.
A presente pesquisa sob o ponto de vista dos objetivos foi uma pesquisa exploratória, devido
ao fato de não existir uma solução padrão para o timetabling, sendo desta forma um problema
aberto a diversos tipos de soluções.
13
1.3.2 Procedimentos Metodológicos
Os procedimentos utilizados no decorrer da presente pesquisa foram a pesquisa bibliográfica
e a pesquisa na internet.
Na biblioteca buscou-se livros que ajudassem no esclarecimento dos assuntos tratados no
decorrer do trabalho.
Já na internet, realizou-se uma busca por artigos científicos, trabalhos de conclusão de curso,
dissertações de mestrado e teses de doutorado capazes de elucidar uma solução para o problema
pesquisado.
Após os passos anteriormente citados, buscou-se criar uma heurística para a geração da
população inicial, já que, vislumbrou-se sempre a geração de indivíduos viáveis desde o inicio do
processo de desenvolvimento do sistema.
1.4 ESTRUTURA DO TRABALHO
O trabalho encontra-se organizado da seguinte forma. Neste capítulo foram apresentados os
problemas de pesquisa, objetivos e metodologia.
No capítulo seguinte será apresentada a fundamentação teórica, com um embasamento a
respeito de timetabling, uma apresentação de métodos existentes para resolução do problema e AG,
que foi a técnica escolhida para se desenvolver a pesquisa.
O Capítulo 3 apresenta uma comparação de trabalhos correlatos com o proposto na presente
pesquisa.
O Capítulo 4 apresentará com os dados do projeto que foi implementado para automatizar a
geração da grade de horários do curso de Ciência da Computação do campus São José da
UNIVALI.
Já o Capítulo 5 apresentará as conclusões referentes à pesquisa.
14
2 FUNDAMENTAÇÃO TEÓRICA
Neste capítulo será apresentado todo o conteúdo necessário à compreensão da pesquisa. Este
capítulo contará com 3 subseções: elaboração da grade de horário ou timetabling, AGs e métodos
para resolução do problema.
Na sequência do trabalho será apresentada a elaboração da grade de horário ou timetabling,
o qual dará embasamento sobre o problema da pesquisa.
2.1 ELABORAÇÃO DA GRADE DE HORÁRIO OU TIMETABLING
Na década de 1960 as pesquisas de Appleby e Gotlieb se tornaram as primeiras pesquisas
sérias que se tem conhecimento sobre a elaboração automatizada de horários acadêmicos (REIS &
OLIVEIRA, 2000; COOPER & KINGSTON, 1996 apud PAIM & GREIS, 2008).
Ainda segundo Paim e Greis (2008) no ano de 1995 foi realizada a primeira conferência
internacional especifica a respeito de elaboração automatizada de horários acadêmicos, Practice
and Theory on Automated Timetabling (PATAT).
No ano de 2002 foi organizada uma competição, a Internacional Timetabling Competition,
pela Metaheuristcs Network. Na competição os participantes deveriam desenvolver programas para
solucionar uma versão simplificada do problema de programação de cursos em universidades. O
vencedor seria o programa que apresentasse a melhor resultado no tempo estipulado. Até a
realização deste evento, era comum publicações compararem os resultados computacionais com os
obtidos manualmente, o que acabava gerando critérios imprecisos (SANTOS & SOUZA, 2007).
O problema da elaboração automatizada de uma grade de horário é constituído do
agendamento de encontros, entre alunos e professores em um período de tempo pré-fixado,
satisfazendo a um grupo de restrições de vários tipos (PAIM & GREIS, 2008).
Schaerf (1995 apud VIEIRA & MACEDO, 2011) classifica o timetabling em três diferentes
grupos: school timetabling, course timetabling, examination timetabling.
A programação de horários em escolas ou school timetabling corresponde, segundo Santos e
Souza (2007), ao problema de programação de horário que encontra-se em escolas do ensino
fundamental e médio. Neste caso, cada professor precisa lecionar um determinado número de aulas
para cada turma em um grupo de períodos. Souza (2000) complementa dizendo que o objetivo
básico é fazer um quadro de horários, em geral semanal, de tal forma que:
1 – As cargas horárias de todas as matérias de todas as turmas sejam cumpridas;
2 – Cada turma não tenha aula com mais de um professor ao mesmo tempo; e
15
3 – Um professor não de aula para mais de uma turma em um mesmo horário.
Na programação de horários de cursos em universidades ou course timetabling, para Santos
e Souza (2007), o conceito de turmas não é tão importante como na programação de horários em
escolas, já que existe a possibilidade dos alunos personalizarem seus currículos. Ocorrendo casos
inclusive de alunos inscreverem-se em disciplinas em mais de um departamento. Para Souza (2000)
o problema é fazer a alocação das aulas dos cursos nos horários disponibilizados, sem ferir as
disponibilidades e capacidades das salas existentes, não permitindo que algum estudante tenha duas
ou mais aulas simultaneamente.
O problema de programação de exames ou examination timetabling é composto por um
grupo de alunos que devem realizar um ou mais exames, os quais precisam ser agendados em um
grupo de períodos que pode se estender por mais de uma semana (SANTOS & SOUZA 2007).
Souza (2000) completa afirmando que o objetivo primário é alocar cada exame a um horário, de
forma que nenhum estudante tenha que fazer dois ou mais exames simultaneamente.
Na seção seguinte será apresentado um cruzamento entre a viabilidade e a otimalidade do
problema.
2.1.1 Viabilidade x Otimalidade
Schaerf (1999 apud PAIM & GREIS, 2008) afirma que o problema típico de horários
acadêmicos é constituído no agendamento de eventos que satisfação um grupo de restrições de
vários tipos, podendo-se classificá-las em dois grupos: hard e soft.
Para Vieira e Macedo (2011) as restrições hard são as restrições que não podem ser violadas
em qualquer hipótese, pois causariam a inviabilidade da grade de horário. Moura et al (2004)
sintetizam afirmando que as restrições hard são aquelas que não podem ser negligenciadas.
Já as restrições soft, são restrições desejáveis, que devem ser preferencialmente seguidas;
sua violação, no entanto, não inviabiliza a solução (VIEIRA & MACEDO, 2011). Moura et al
(2004) complementam garantindo que as restrições soft são aquelas que podem ser violadas, desde
que com parcimônia e quando houver necessidade.
Conforme Souza (2000), os problemas de programação de horário podem ser classificados
em dois tipos, dependendo da necessidade de otimizar ou não uma função objetivo:
1 – Problema de viabilidade: é quando se pretende encontrar apenas um quadro de horários,
viável, ou seja, que satisfaça a todas as restrições hard. (PAIM & GREIS, 2008;
SOUZA, 2000)
16
2 – Problema de otimização: é quando se pretende encontrar dentre todos os quadros de
horários, um que atenda ao grupo de restrições hard e minimizem uma certa função
objetivo, na qual estão incorporadas as funções soft. (PAIM & GREIS, 2008; SOUZA,
2000)
O próximo tópico a ser apresentado no trabalho será o AG, técnica escolhida para solucionar
o problema da pesquisa. Optou-se por esta técnica por ela ser capaz de solucionar problemas
complexos com rapidez e confiança.
2.2 ALGORITMOS GENÉTICOS
Os AGs são algoritmos baseados no princípio da evolução de Charles Darwin. Estes foram
inseridos por John Holland e disseminados por seu aluno David Goldbert (DARWIN 2000,
GOLDBERG 1989, HOLLAND 1975 apud MIRANDA, 2009).
Segundo Lobo (2005), as teorias evolucionárias e a compreensão dos fenômenos da
hereditariedade concretizados a partir dos estudos de Mendel são os elementos-chave para o
desenvolvimento dos AGs. Estes transformam uma população de indivíduos, sendo cada um destes
com seu valor de adaptabilidade, chamado de aptidão, em uma nova geração de indivíduos,
utilizando-se dos princípios de reprodução e sobrevivência dos mais aptos, por meio de operações
genéticas como cruzamento e mutação.
Miranda (2009), completa afirmando que o algoritmo baseado no princípio da seleção
natural simula a criação de soluções, onde novas soluções são geradas a partir de soluções
existentes. Para tanto aplicam-se técnicas de cruzamento e mutação, e seleciona-se os indivíduos
mais fortes para a próxima solução. Desta maneira produz-se sempre uma população melhor que a
anterior, ou seja, mais evoluída.
Na seção seguinte da pesquisa será apresentado um breve histórico sobre o AG.
2.2.1 Histórico
No início da década de 50, diversos cientistas começaram os estudos sobre sistemas
computacionais que visavam imitar a ideia da evolução das populações. Foi o princípio das
pesquisas dos sistemas computacionais evolucionários, acreditando-se que a evolução auxiliaria
como uma ferramenta de otimização para diversos tipos de problemas (LOBO, 2005).
No ano de 1975, John Holland publica o primeiro livro sobre AG, Adaptation in Natural
and Artificial System. O livro reuniu vários trabalhos e ideias que o autor vinha desenvolvendo nos
últimos anos. Já na Alemanha, um outro grupo de pesquisadores, elaboraram uma outra versão de
17
sistema computacional evolucionário, chamada de Estratégias Evolucionárias (BARCELLOS,
2000).
Mitchell, Müller (1996, 2005 apud SKRABE, 2007) afirmam que os estudos apresentavam
similaridade no que diz respeito a ambas usarem um conjunto de soluções candidatas para um
problema e a existência de uma função de aptidão para avaliar se havia uma solução satisfatória.
Outra similaridade encontrada nestas pesquisas era a representação da estrutura de dados, onde são
criadas abstrações de cromossomos biológicos.
A seguir serão apresentadas algumas definições a respeito de AG.
2.2.2 Definições
Os AGs são métodos adaptativos usados para solucionar problemas de busca e otimização.
Eles estão baseados no processo genético e evolutivo dos organismos vivos (COSTA JUNIOR,
1999 apud FERNANDES, 2004).
Russel e Norvig (2004, p. 115) definem AG como:
Uma variação de busca em feixe estocástico, na qual os estados sucessores são gerados pelacombinação de dois estados pais, em vez de serem gerados pela modificação de um únicoestado. A analogia em relação à seleção natural é a mesma que se dá na busca em feixeestocástico, exceto pelo fato de agora estarmos lidando com a reprodução sexuada, e nãocom a reprodução assexuada.
Para Chambers (1996 apud SKRABE, 2007, p. 51) AG é:
Uma técnica de busca matemática baseada nos princípios da seleção natural e recombinaçãogenética [Holland, 1975]. Uma possível solução para o problema é referida como umindividuo. Um individuo é representado por uma estrutura de dados computacionalchamada cromossomo, que é codificada usando um alfabeto de tamanho fixo. Espécies sãoindivíduos com características comuns e nichos são subdomínios do espaço de busca. Porencorajar os nichos e a especiação, os AGs facilitam simultaneamente a convergência paraum ou mais espaços otimizados de busca multimodal.
Segundo Luger (2004, p. 437):
Os Algoritmos Genéticos são baseados numa metáfora biológica: eles veem o aprendizadocomo uma competição numa população de soluções evolutivas, candidatas para o problema.Uma função de “aptidão” avalia cada solução para decidir se ela contribuirá com a próximageração de soluções. Então, através de operações análogas à transferência de genes nareprodução sexual, o algoritmo cria uma nova população de soluções candidatas.
Para Lobo (2005) as principais definições relacionadas aos AGs são:
1 – Cromossomo ou genótipo: cadeia de caracteres, que representam alguma informação
relativa as variáveis do problema, onde cada cromossomo representa uma solução do
problema;
18
2 – Gen ou gene: unidade básica do cromossomo. Os cromossomos são compostos por
um número de genes, cada um deles descrevendo uma variável do problema. Podendo ser do
tipo binário, inteiro ou real;
3 – População: grupo de cromossomos ou soluções;
4 – Fenótipo: cromossomo descodificado;
5 – Geração: número da iteração que o AG executa para gerar uma nova solução;
6 – Operações genéticas: operações realizadas pelo AG nos cromossomos;
7 – Espaço de busca ou região viável: conjunto, espaço ou região que apresenta as
possíveis soluções ou variáveis do problema a ser otimizado. Deve ser caracterizado pelas
funções de restrição que definem a solução viável do problema a ser resolvido;
8 – Função objetivo ou de aptidão: criada a partir dos parâmetros envolvidos no
problema. Estabelece uma aproximação da solução ao conjunto dos parâmetros. A função de
aptidão é calculada para cada indivíduo e fornece o valor a ser usado para o cálculo da
probabilidade de sua seleção na reprodução;
9 – Aptidão bruta: saída da função de aptidão para cada indivíduo da população; e
10 – Aptidão máxima: melhor indivíduo da população.
Na sequência do trabalho será apresentada uma analogia entre o AG e a biologia.
2.2.3 Analogia Biológica
Com os conceitos e definições apresentados até o momento, percebe-se que o AG é uma
analogia a teoria da evolução e a genética, sendo esta, apenas uma simplificação do que ocorre na
natureza (SKRABE, 2007).
Segundo Lobo (2005), os tópicos relevantes à analogia entre a genética e os AGs são:
1 – O vocabulário da genética natural e do AG são o mesmo;
2 – Os cromossomos (população) são atualizados a cada iteração (geração);
3 – Os indivíduos (genótipos) de uma população são representados por cromossomos;
4 – Todo cromossomo (fenótipo) é uma possível solução do problema; e
5 – No processo evolutivo a população de cromossomos é equivalente a uma pesquisa por
meio do espaço de possíveis soluções de um problema.
Na seção seguinte serão apresentados os aspectos principais existentes no AG.
19
2.2.4 Aspectos Principais
Neste tópico serão apresentados os processos que formam um AG. A Figura 1 apresenta o
fluxograma de um AG básico que será detalhado na sequência.
Figura 1. Fluxo do Algoritmo Genético Básico
A seguir será apresentado a primeira etapa do AG básico.
2.2.4.1 População Inicial
A geração da população inicial é a primeira etapa do AG. A população gerada representa um
conjunto de soluções possíveis para o problema, sendo que este conjunto é parte do conjunto de
todas as soluções possíveis existentes (LACERDA & CARVALHO, 1999 apud MIRANDA, 2009).
Conforme Falcone (2004), a população inicial frequentemente é gerada por meio de
procedimentos aleatórios com distribuição uniforme, contudo, também pode-se gerar a população
inicial baseada em heurísticas. Miranda (2009) completa afirmando que devido a todas as
populações geradas posteriormente serem baseadas na população inicial, é importante pensar em
qual(is) característica(s) é(são) interessante(s) que a população inicial tenha, para que não se
reproduzam falhas nas gerações posteriores.
20
Outro fator que deve ser considerado na geração da população inicial é o tamanho de
indivíduos que ela possuirá. Uma população com poucos indivíduos reduzirá o espaço de busca da
solução, e pode diminuir a possibilidade de se chegar a solução ótima. Por outro lado, se a
população de indivíduos for muito grande, o tempo computacional para o processamento da solução
será muito elevado (FALCONE, 2004).
Segundo Silva (2001), existe uma técnica chamada seeding, que constitui-se da introdução
na população inicial de soluções geradas por outros processos de otimização, garantindo desta
forma que a solução gerada pelo AG, seja tão boa quanto a solução gerada pelo outro processo.
Na sequência será apresentado o passo seguinte do fluxo de um AG básico, a avaliação de
aptidão.
2.2.4.2 Avaliação de Aptidão
A avaliação de aptidão ou função de avaliação é a etapa do algoritmo responsável em avaliar
uma população, pontuando cada indivíduo de acordo com sua aptidão. Aos indivíduos considerados
mais próximos da solução ideal é atribuído uma melhor aptidão, de forma que as etapas seguintes
do algoritmo, usem esta informação para gerar sempre indivíduos mais aptos que a população
anterior (MIRANDA, 2009). Leite (2006), completa afirmando que a função de avaliação
demonstra a força de cada indivíduo dentro da população, ou seja, nos diz qual a qualidade da nossa
solução até momento.
Ainda, conforme Leite (2006), a função de avaliação deve ser consideravelmente rápida,
algo típico para métodos de otimização do AG. Devido ao fato do AG trabalhar com soluções
potenciais, incide-se neste o custo de avaliar cada indivíduo da população.
Segundo Falcone (2004) é difícil incorporar ao AG as restrições do problema, ficando
normalmente como responsável pelo gerenciamento das possíveis soluções a função de avaliação.
Conforme Mardle e Pascoe (1999 apud FALCONE, 2004) as restrições causam um impacto muito
maior nos problemas com um pequeno conjunto de soluções, do que aos problemas com um
conjunto grande de soluções. Geralmente a função de avaliação deve determinar o nível de não
factibilidade e otimalidade como uma aptidão estatística.
A seguir será apresentada a etapa de seleção, que é o passo seguinte de um AG básico.
21
2.2.4.3 Seleção
A etapa de seleção normalmente seleciona os melhores indivíduos da população atual para
serem usados na geração da próxima população por meio dos operadores crossover e mutação. Esse
processo de seleção é similar ao processo de seleção natural dos indivíduos, onde os mais adaptados
ao meio tem uma probabilidade maior de reprodução, repassando suas características para a nova
geração (MIRANDA, 2009). Falcone (2004) complementa afirmando que a etapa de avaliação é a
responsável em verificar a aptidão de cada indivíduo da população, relacionando ao indivíduo um
valor de acordo com o critério de otimização escolhido.
De acordo com Leite (2006) os valores retornados pela função de avaliação nem sempre são
apropriados para serem usados como valores de aptidão. É possível por exemplo que uma função de
avaliação retorne um valor negativo, o que inviabiliza a utilização do Método da Roleta, outra
possibilidade é a função de avaliação retornar valores muito próximos tornando o método de
seleção aleatório, outro problema que pode ocorrer entre os problemas advindos do valor da função
de avaliação é que alguns indivíduos podem ter valores muito altos comparados com o resto da
população, tornando desta forma a convergência muito prematura, e etc. Segundo Silva (2001 apud
LEITE, 2006) este problema pode ser evitado mapeando-se a função de avaliação e transformando
seus valores em valores de aptidão.
Os processos de seleção mais comuns são: Seleção da Roleta, Seleção por Classificação,
Seleção por Torneio entre outros.
Seleção da Roleta: O Método da Roleta pode ser descrito fazendo-se uma analogia a roleta
de um cassino, onde cada indivíduo da população tem seu valor de aptidão representado
proporcionalmente ao valor total da aptidão da população, ou seja, quanto maior o valor de aptidão,
maior será a faixa de extensão do indivíduo na roleta e consequentemente maiores as chances deste
ser sorteado (FALCONE, 2004; LEITE, 2006).
A Figura 2 ilustra como é representada a proporção de cada indivíduo no Método da Roleta,
sendo calculada com base na função de avaliação a possibilidade de cada cromossomo ser sorteado
e demonstrando essa possibilidade em percentuais.
22
Figura 2. Representação da proporção de cada indivíduo na roleta
Seleção por Classificação: Na Seleção por Classificação primeiramente classifica-se o
cromossomo de acordo com a função de avaliação e depois se atribui a cada indivíduo da população
um valor de aptidão de acordo com a sua classificação. Nesta classificação o pior indivíduo terá
como valor de aptidão 1, o segundo pior 2 e assim sucessivamente, de tal forma que o melhor
cromossomo terá o valor de aptidão igual ao número de indivíduos da população (LEITE, 2006).
Seleção por Torneio: Neste método os cromossomos são escolhidos de forma aleatória, não
sendo necessária a avaliação da aptidão e nem a ordenação da população (LEITE, 2006).
Segundo Soares (1997 apud FALCONE, 2004) outros métodos de seleção podem ser
encontrados na literatura, entre eles: deterministic sampling, stochastic remainder sampling e
stochastic universal sampling.
De acordo com Nascimento Jr. e Yoneyama (2000 apud MOORI, KIMURA, ASAKURA,
2010) cada método de seleção tem suas vantagens e desvantagens. Devido a isso, deve-se tomar
cuidado com os parâmetros escolhidos para a seleção, não permitindo ao AG convergir rapidamente
a um ponto de alta qualidade, sendo que este não seja o ótimo global, este fenômeno é denominado
na literatura como convergência prematura.
A próxima etapa do AG básico são seus operadores de crossover e mutação.
2.2.4.4 Operadores Genéticos
Esta etapa do algoritmo é a responsável por produzir novos indivíduos de acordo com os
selecionados pelo método anterior. As operações apresentadas a seguir são as mais comumente
usadas na literatura.
23
A Figura 3 mostrada na sequência, apresenta a estrutura de um cromossomo para melhor
compreensão dos operadores genéticos. Onde o conjunto dos genes é o cromossomo, o alelo é o
conteúdo do gene e locus é a posição do gene no cromossomo (MOORI, KIMURA & ASAKURA,
2010).
Figura 3. Cromossomo binário com 10 genes
Fonte: Moori, Kimura e Asakura (2010)
Crossover: O crossover é a parte do algoritmo responsável pela reprodução dos indivíduos,
processo este comparado a reprodução dos seres vivos, onde características dos pais são repassadas
aos filhos. O objetivo do crossover é repassar aos filhos as características mais fortes dos pais,
aproximando cada vez mais a solução do resultado ótimo. A probabilidade do operador de
crossover ser aplicado a qualquer par de cromossomos é denominada taxa de crossover
(MIRANDA, 2009).
A seguir são apresentados alguns tipos de crossover existentes na literatura como os
cruzamentos com um ponto de corte e cruzamento com dois pontos de corte.
Cruzamento com um ponto de corte: seleciona-se um ponto de cruzamento, podendo este ser
fixo ou aleatório, este ponto de cruzamento representa o local de corte do cromossomo, desta forma
o filho1 recebe do pai1 as informações até o ponto de corte selecionado e as demais do pai2 já o
filho2 herda as informações complementares não herdadas pelo filho1. A Figura 4 ilustra o
cruzamento com um ponto de corte.
24
Figura 4. Cruzamento com um único ponto de corte
Cruzamento com dois pontos de corte: similar ao cruzamento com um ponto de corte, só que
com dois pontos de corte. A Figura 5 apresenta o cruzamento com dois pontos de corte.
Figura 5. Cruzamento com dois pontos de corte
Além dos crossover's apresentados detalhadamente, a literatura ainda nos mostra uma vasta
gama de outras formas de realizar o cruzamento entre os cromossomos. Entre estes cita-se o
cruzamento uniforme, cruzamento por variável, cruzamento entre vários indivíduos, cruzamento
aritmético, e etc (FALCONE, 2004; LEITE, 2006; MIRANDA, 2009).
Mutação: Normalmente quando é gerada a população inicial, os cromossomos pertencentes
a ela estão distantes da solução do problema. Devido a isto, é possível que os operadores de seleção
e cruzamento não sejam capazes de fazer as diversificações necessárias na população para encontrar
a solução ótima, tornando a probabilidade de uma convergência prematura muito grande e distante
da solução desejada (LEITE, 2006).
O operador de mutação faz alterações pontuais ao valor do cromossomo, destruindo a
informação anterior e criando uma nova, ou seja, ao contrário do crossover que cria novos
indivíduos, a mutação faz alterações no próprio indivíduo selecionado. Esse processo de
diversificação da população de cromossomos é comparada à mutação no processo evolutivo dos
seres vivos. Devido ao fato do operador de mutação ser um operador destrutivo, deve-se aplicá-lo
25
com uma taxa baixa (taxa de mutação), que geralmente varia entre 0,1% e 5% da população, sendo
isso o suficiente para garantir a diversidade da população (MICHALEWICZ, 1994 apud
MIRANDA, 2009). A Figura 6 ilustra a mutação de um cromossomo.
Figura 6. Mutação do cromossomo
Desta forma, evidencia-se que o operador de mutação influencia de forma importante na
variabilidade das soluções e naturalmente no resultado final do problema. O valor da taxa de
mutação adotado em um problema, depende muito da sensibilidade e experiência do seu operador,
sendo frequentemente necessário que se execute o AG algumas vezes para se calibrar o valor desta
taxa de forma satisfatória (LEITE, 2006).
Na próxima seção será apresentada a última etapa do AG que são os critérios de parada de
execução.
2.2.4.5 Critérios de Parada
Os critérios de parada são os pontos em que o AG deve parar sua execução, sendo estas
condições definidas previamente. Segundo Lobo (2005) são alguns critérios de parada:
1 – Quando se conhecer a resposta máxima da função objetivo;
2 – Quando a aptidão média ou do melhor indivíduo não melhorar mais;
3 – Quando as aptidões dos indivíduos de uma população se tornarem parecidas;
4 – Quando um número pré-estabelecido de gerações for atingido; e
5 – Quando a população não gerar mais diversidade.
Miranda (2009) completa afirmando que um outro critério de parada seria quando 90% à
95% dos cromossomos convergirem para a mesma região, o que indicaria que possivelmente a
população de cromossomos convergiu para uma solução de maior aptidão, ou seja, mais próxima da
solução ótima.
No próximo tópico, serão apresentados alguns métodos existentes para a resolução do
problema proposto.
26
2.3 MÉTODOS PARA RESOLUÇÃO DO PROBLEMA
O problema de automatização da elaboração da grade de horários pode ser resolvido por
muitos métodos. A seguir explica-se algumas possibilidades para resolução do problema.
Souza (2000), em sua tese de doutorado, utilizou-se entre outras metodologias, da Busca
Tabu para chegar a solução perfeita do problema.
A geração inicial da população é realizada de forma construtiva, por um procedimento
parcialmente guloso. Inicialmente determina-se os horários mais críticos, ou seja, aqueles que tem o
menor número de professores disponíveis. Na sequência enumera-se e ordena-se as aulas, dando
prioridade as aulas de maior complexidade para alocação, isto é, as que tem os professores com
maior caga horária e maior quantidade de horários indisponíveis. Forma-se então, uma lista restrita
dos candidatos dessas aulas, selecionando-se uma delas de forma aleatória. Na sequência, procura-
se alocá-la (utilizando-se da ordem de horários críticos) de maneira que não exista nenhum tipo de
inviabilidade (uma turma não pode ter aula com mais de um professor no mesmo horário; e uma
turma não pode ter mais do que X horários de aula da mesma matéria). Caso não seja possível
atender as restrições citadas, admite-se então a violação da segunda. Se mesmo desta forma não for
possível alocar uma determinada aula, admite-se também a violação da primeira restrição. A cada
alocação atualiza-se os horários críticos e as aulas mais difíceis remanescentes.
Com a solução inicial gerada, utiliza-se a Busca Tabu explorando a vizinhança da solução
corrente, por meio de movimentos de troca de dois valores distintos e não negativos de uma dada
linha da solução corrente. Este tipo de movimento pode produzir inviabilidades, contudo essa
solução será rejeitada pela representação escolhida.
Visando prevenir a ocorrência de ciclos, os movimentos realizados pela Busca Tabu são
armazenados em uma lista tabu. Esta lista contém os X movimentos mais recentes, reduzindo a
possibilidade do algoritmo visitar as últimas soluções visitadas anteriormente.
Cada vez que uma solução gerada não apresenta sobreposição, aciona-se o procedimento
Intraturmas-Interturmas, contanto que uma solução de valor igual ainda não tenha sido submetida a
BT-II. Embora soluções com o mesmo valor não sejam necessariamente iguais, esta condição foi
imposta por dois motivos: pela eficiência que o procedimento BT-II apresentou nos testes; e para
que o tempo de processamento do algoritmo não fosse elevado desnecessariamente. Neste ponto o
autor considera duas variantes: BT-II e BT-IIm.
27
Na variante BT-IIm o procedimento continua a busca a partir da solução encontrada em BT-
II. Devido ao fato de BT-II mudar a região pesquisada, inclui-se na lista tabu os movimentos
reversos aos realizados por BT-II caso os movimentos tenham sido de melhora da solução corrente
e nenhuma inviabilidade tenha sido gerada.
Já na variante BT-II, o procedimento de Busca Tabu tem continuidade normal, prosseguindo
a busca a partir do último vizinho gerado. O procedimento BT-II faz uma busca local nas soluções
que estão em seu caminho e atendem a condição de acionamento do procedimento Intraturmas-
Interturmas. Para ser possível a BT-II chegar a este objetivo sem interferir na trajetória do algoritmo
básico, o autor trabalha com uma solução ótima virtual, o que não leva em conta a influencia de BT-
II e é usada para alcançar o valor corrente da função de aspiração.
O autor afirma que os procedimentos BT-II e BT-IIm são acionados apenas uma vez para
cada possível valor que a solução corrente possa assumir.
Souza, Costa e Guimarães (2002) em seu artigo, apresentado no XXII Encontro Nacional de
Engenharia de Produção, elaboraram uma solução híbrida que trabalha com o AG e a Busca Tabu.
Os autores modelaram o cromossomo como uma matriz mxn, onde m é o número de
professores e n o número de horários. Uma célula da matriz representa a situação do professor i no
horário j. As situações supracitadas são representadas da seguinte maneira: se o professor está
disponível recebe um valor infinito, se está indisponível recebe um valor negativo e se está
lecionando recebe um número referente a turma que está lecionando.
A geração da população inicial teve como base a utilizada por Souza (2000), citado
anteriormente. O cruzamento acontece com uma certa probabilidade por meio do crossover. Os
crossover's usados no sistema são o crossover simples e o crossover ordenado, sendo cada um
executado também de acordo com uma probabilidade. No crossover simples, seleciona-se
deterministicamente um ponto de corte, onde o primeiro filho recebe as aulas do primeiro pai antes
do ponto de corte; contudo, as aulas referentes ao segundo pai, antes de serem alocadas passam por
uma verificação de sobreposição. Nos casos em que ocorrem a sobreposição, procuram-se por
horários em que isso não ocorra; se ainda assim acontecer de ter aulas sem alocação, estas são
alocadas aleatoriamente. Já o crossover ordenado, difere do simples pois o ponto de corte acontece
de forma aleatória e antes da operação de corte os quadros são ordenados de acordo com a função
de custo dos professores.
A mutação acontece apenas se for possível reduzir da função de custo do cromossomo. Esta
sucede-se para a programação de um determinado professor escolhido aleatoriamente. A mutação
pode ser de ordem 1, ordem k e dia: a mutação de ordem 1 consiste na troca de genes na
programação do mesmo professor, a mutação de ordem k constitui-se da troca de k genes contíguos
28
da programação de um professor com outro conjunto de k genes contíguos; e a mutação dia, troca a
programação de um dia de um determinado professor.
A função de custo do cromossomo acontece por meio de pesos aplicados as restrições
encontradas, caso a soma dos pesos seja igual a zero a solução é perfeita. A seleção dos indivíduos
que farão parte da próxima geração é feita pelo método da roleta russa.
O algoritmo híbrido proposto pelos autores é um método que a cada geração, o melhor
indivíduo é submetido a um refinamento pelo método de busca tabu.
Lobo (2005), em sua dissertação de mestrado, utilizou-se do AG Paralelo para solução do
problema.
Lobo modelou seu cromossomo como uma matriz de 3 dimensões, de forma que M([Turma]
x [Professor] x [Período]) seja um valor binário. A população inicial é gerada por meio de uma
heurística construtiva buscando atender as restrições fortes. A avaliação de cada cromossomo é
realizada conforme o grau de atendimento das restrições fracas, tendendo a sobreviver os indivíduos
mais adaptados ao meio, ou seja, com maior pontuação.
A mutação acontece com trocas na ordem das disciplinas das turmas entre os períodos
selecionados para participar da operação. O problema na mutação é achar um número X de períodos
que tenham que sofrer mutação. Este valor não pode ser grande, pois causaria uma grande perda de
similaridade com a solução inicial e também não pode ser baixo, pois existe a possibilidade de ser
gerada uma solução idêntica a original.
Na operação de Crossover o autor utiliza-se da teoria de ciclos, fazendo com que as
informações dos pais se completem formando o horário dos filhos de forma completa.
Para realizar o paralelismo no AG, foi utilizado o modelo de ilhas, onde a população é
dividida em subpopulações que são processadas concorrentemente, cada uma responsável por suas
operações. Por meio de processos de migração, os melhores indivíduos de cada ilha podem migrar
para as outras.
Spindler (2010), em sua dissertação de mestrado, utilizou a Busca Dispersa e da Conexão
por Caminhos para resolver o problema.
A Figura 7 apresenta o fluxograma da solução proposta por Spindler em sua dissertação de
mestrado.
29
Figura 7. Algoritmo de Busca Dispersa Implementado por Spindler
Fonte: Spindler (2010)
No Método de Geração Inicial de Soluções Diversas são geradas as soluções iniciais. Tendo
como partida o problema definido, o método agenda as aulas (disciplinas) previstas (número de
disciplinas x carga horária de cada disciplina), agrupando também uma sala e horário. A ordem de
programação das disciplinas acontece de forma aleatória a cada nova geração. Na geração inicial o
algoritmo busca não violar as restrições fortes do sistema. Quando isso não ocorre o sistema leva
em consideração apenas um horário que obedeça a restrição de conflito de alocação de turma. Caso
o conjunto de horários possíveis seja maior que o número de períodos a serem alocados, tem-se a
possibilidade de utilizar duas estratégias: menor alocação e aleatória.
No Método de Melhoria é realizado um sorteio para saber qual o número de vizinhanças que
serão explorados. Os tipos de movimentos existentes são: inserção de sala, realocação de horário,
realocação de horário com inserção de sala, troca de horários, troca de salas e troca de disciplinas.
O Método de Construção de um Conjunto de Referência é uma rotina que seleciona um
conjunto de soluções de referência denominado RefSet, a partir da população inicial. O conjunto
30
RefSet é criado com base nas melhores e mais variadas soluções da população inicial, sendo seu
tamanho consideravelmente menor.
No Método de Geração de Subconjuntos são organizados subconjuntos derivados da
combinação de todos os possíveis pares de soluções de RefSet.
No Método de Combinação são realizadas combinações das soluções encontradas nos
subconjuntos criados pelo Método de Geração de Subconjuntos, adicionando-as a um conjunto
Pool que será avaliado para atualização do conjunto RefSet. O Método de Combinação faz uso de
uma rotina fundamentada na técnica de Reconexão por Caminhos, para encontrar a solução de
melhor qualidade.
O Método de Atualização do Conjunto de Referência tem a função de atualizar o conjunto
RefSet tendo como base as novas soluções geradas. Existem duas possibilidades de atualização do
conjunto RefSet, a primeira é fundamentada na qualidade, usada quando o conjunto Pool contém ao
menos uma solução de custo inferior a melhor solução RefSet, a segunda é baseada na qualidade e
diversidade, utilizada quando o conjunto Pool não oferecer nenhuma solução de custo inferior a
melhor solução de RefSet após duas iterações seguidas.
Subramanian et al (2011) em seu artigo publicado na Revista Produção Online, fizeram uso
da Busca Tabu na solução do problema.
Os autores utilizaram para a geração inicial da população um procedimento construtivo
determinístico. Após a geração inicial, a cada iteração do método é selecionada de forma aleatória
uma determinada aula e executado o melhor movimento de alocação e troca em relação as
vizinhanças. O movimento não tabu dessa vizinhança restrita que obtiver o melhor valor para a
função objetivo será realizado, independentemente dessa solução ser melhor ou pior que a solução
corrente. Um movimento tabu poderá ser realizado caso este produza uma solução melhor que a
gerada até o momento. Realizando-se o movimento, esta aula fica impedida de voltar a sua sala de
origem por X iterações.
Vieira e Macedo (2011) no artigo publicado pela revista Scientia Plena utilizaram o AG
para a solução do problema.
Os autores modelaram o cromossomo de forma que o mesmo contenha todas as turmas a
serem oferecidas no período vigente. Sendo cada gene do cromossomo representado por uma coluna
contendo as informações referentes a turma: disciplina, professor que a leciona, horário da aula e
quantidade de vagas destinadas a cada curso.
A população inicial é gerada com base na lista de todas as turmas que devem ser ofertadas
no período. Para cada indivíduo as informações sobre professor e horário são gerados de forma
aleatória vislumbrando uma variedade maior da população.
31
A avaliação de cada indivíduo é feita por meio do somatório de valores de bonificação e
penalização. Se o indivíduo atender a uma determinada restrição, o mesmo ganha um bônus
associado a um peso pré estabelecido para a mesma. Caso contrário, o indivíduo ganha uma
penalidade com peso pré estabelecido pelo não atendimento da restrição.
A seleção dos indivíduos para o cruzamento é feito por meio do método da roleta russa. Já o
cruzamento é realizado por meio do método single point crossover (cruzamento com um único
ponto de corte), fazendo a seleção do ponto de corte de forma aleatória. Nos exemplos presentes no
artigo, foram utilizadas as taxas de crossover e mutação em 95% e 5% respectivamente.
Existem outras formas possíveis de solucionar o problema da pesquisa. Santos e Souza
(2007) apresentaram no XXXIX Simpósio Brasileiro de Pesquisa Operacional um trabalho
descrevendo algumas formas de solucionar o problema, como Heurísticas baseadas nas Heurísticas
Construtivas e Busca Local, Metaheurísticas utilizando Busca Tabu, Simulated Annealing e
Algoritmos Evolutivos. Souza (2000) em sua tese de doutorado, além da solução apresentada
anteriormente, também apresentou soluções utilizando Greedy Randomized Adaptive Search
Procedure (GRASP), Simulated Annealing, Annealing Microcanônico e Otimização
Microcanônica.
No próximo capítulo serão expostos alguns trabalhos similares ao pesquisado.
32
3 TRABALHOS CORRELATOS
Nesta seção serão apresentados alguns trabalhos semelhantes ao tema pesquisado,
considerando os trabalhos acadêmicos e comerciais.
3.1 ACADÊMICOS
Neste tópico apresentar-se-á algumas ferramentas desenvolvidas no meio acadêmico com o
intuito de resolver o problema de timetabling.
Lucas (2000): O protótipo elaborado por Lucas em seu trabalho de conclusão de curso,
chamado Timetabler, foi desenvolvido com o uso do AG e teve como base a ferramenta GALib por
ter seu código aberto. Segundo o autor, o sistema não tem uma interface muito amigável ao usuário
final e também não leva em consideração todas as restrições necessárias para o problema de
alocação de horário, pois inicialmente tratava-se apenas de um protótipo. Lucas também destaca
algumas características que seriam desejáveis em seu protótipo, são elas: uso de uma base de dados;
uso de restrições complementares e auxílio no processo de matricula.
Jacob e Rocha (2005): O sistema produzido por Jacob e Rocha denominado Aghora, tem o
intuito de reduzir o esforço para gerar a grade de horários. Sendo o sistema baseado no AG, é
permitido ao usuário entrar com o tipo de seleção desejada, taxa de crossover e mutação, assim
como tamanho da população e número de gerações.
O sistema possui dois módulos:
1 – Gerência de informações acadêmicas, onde são inseridas as informações referentes a
instituição, entre elas, professores, cursos e disciplinas; e
2 – Geração de horários, que é o módulo responsável por gerar a grade de horários.
Os autores relatam ao final do trabalho que quanto maior forem as populações e o número
de iterações, maior será o tempo de processamento e melhor será o indivíduo produzido pelo
sistema.
Hamawaki (2005): A ferramenta criada por Hamawaki, denominada Sistema Alocador de
Grade de Horária (AloGra), foi desenvolvida utilizando o pacote Borland C++ Builder 6.0, tem o
gerenciamento do banco de dados realizado por meio do pacote Borland Database Desktop 7.0 e
tem seus relatórios gerados por meio do Quick Report. O sistema usa o AG para gerar a grade de
33
horário e tem o seguinte contexto, um especialista em IA insere os parâmetros do AG, a secretaria
insere as disponibilidades, disciplinas e professores e o sistema retorna a grade horária. O sistema
foi testado com os dados reais do curso de Engenharia Elétrica e segundo o autor apresentou
resultados satisfatórios ao final de sua execução.
Ciscon (2006): O sistema proposto por Ciscon, chamado de AGGH 1.0, foi desenvolvido
em java, tem como sistema gerenciador do banco de dados o MySQL e tem os horários obtidos
exibido em HTML. O sistema que resolve o problema de horários de escolas é baseado no AG.
Como trabalhos futuros o autor citou que seria interessante obter melhorias no AG proposto e
também na aplicação. Ciscon cita como exemplo de melhoria a elaboração de uma heurística para a
geração da população inicial, reduzindo assim o número de indivíduos inviáveis. Outra proposta
para trabalhos futuros identificada pelo autor é o desenvolvimento de uma interface inteligente,
onde o usuário é capaz de fazer alterações no horário fornecido pelo AG e o próprio sistema já
identifica a viabilidade do mesmo.
Preis (2007): O Protótipo Gerador desenvolvido por Preis em seu trabalho de conclusão de
curso foi desenvolvido em java e o gerenciador de banco de dados usado foi o MySQL.
O sistema foi elaborado baseando-se no AG. Neste protótipo é permitido ao usuário
configurar os dados do AG, entre estas configurações é permitido selecionar o número máximo de
gerações, taxa de cruzamento, tipo de cruzamento entre outros.
O autor relata que o sistema funcionou de forma eficaz, sendo que o tempo de execução e
qualidade da solução apresentadas variam de acordo com o tamanho da população, coeficiente de
mutação e número de gerações.
Na próxima seção do trabalho serão apresentadas algumas ferramentas desenvolvidas
comercialmente.
3.2 COMERCIAIS
Neste tópico serão conhecidas algumas ferramentas desenvolvidas de forma comercial.
Phidelis: O Phidelis (http://www.phidelis.com.br) é um sistema web desenvolvido em C#
que trabalha com banco de dados Microsoft Sql Server 2000 ou superior. O sistema possui 5
ambientes entre eles o Portal Administrativo. O Portal Administrativo é utilizado por funcionários
34
da escola, podendo ser acessado por membros da secretaria, tesouraria, coordenações de curso e
diretoria.
Entre algumas das vantagens do sistema apresentadas pela empresa responsável destacam-
se: Segurança de Autenticação e Controle via Níveis de Acesso; Unificação de informações e
gerenciamento de instituições com várias unidades; Processos Acadêmicos (Matrícula,
Cancelamento, Trancamento, Dispensa, Mudança de Turma, Mudança de Unidade, Transferência);
e Configuração Institucional (Cursos, Turnos, Grades Curriculares, Professores, Funcionários).
Lyceum: O Lyceum (http://www.techne.com.br) é um sistema multiplataforma disponível
para internet, smartphone, tablet e TV digital. O sistema realiza tarefas como: a organização dos
cursos, o acompanhamento da execução do projeto pedagógico e a avaliação contínua do
desempenho acadêmico e financeiro.
O sistema efetua o cadastro e a manutenção dos cursos oferecidos pela instituição, sendo
possível incluir critérios para a aprovação nas disciplinas. Também oferece um assistente que
auxilia na montagem da grade curricular dos cursos oferecidos e realiza o agendamento de turmas,
docentes e dependências físicas.
Urânia: Urânia (http://www.horario.com.br) é um sistema desenvolvido pela empresa
GEHA que teve sua primeira versão em 1988. Hoje é utilizado em mais de 7200 instituições de
ensino em todo Brasil.
Entre as funcionalidades do Urânia, destacam-se: determinar os horários em que cada
professor pode dar suas aulas; indicar a forma como as aulas das disciplinas devem ser dispostas na
semana (geminadas, separadas, só uma aula por dia, etc.); elaborar o horário de várias sedes ao
mesmo tempo, controlando o deslocamento dos professores; e trabalhar com duas ou mais turmas,
em conjunto (união de classes).
3.3 ANÁLISE COMPARATIVA
Nesta seção do trabalho tem-se o intuito de fazer uma breve comparação entre as
ferramentas expostas no atual capítulo.
O protótipo desenvolvido por Lucas (2000), deixa clara a necessidade de um sistema
gerador de grade de horários trabalhar com um banco de dados, ou seja, que possibilite armazenar
os dados necessários a elaboração da grade de horários, produzindo a informação desejada.
35
Todos os sistemas acadêmicos apresentados neste capítulo permitem a configuração do AG,
ou seja, o tamanho da população inicial, o número de gerações, a taxa de crossover e mutação,
permitindo desta forma que o usuário calibre o AG de forma a produzir o melhor resultado.
O sistema Urânia é o único sistema que apresenta possíveis soluções para as inviabilidades
encontradas, sugerindo professores que com pequenas alterações em suas disponibilidades podem
viabilizar uma solução. Após ter soluções viáveis o sistema Urânia busca eliminar as janelas
existentes nos horários dos professores.
O problema de janelas não ocorrerá nesta pesquisa pelo fato das aulas serem germinadas, ou
seja, em sequência.
O Quadro 1, mostrado a seguir, apresenta um breve comparativo entre as ferramentas
estudadas e a solução proposta no trabalho.
Quadro 1. Quadro comparativo das soluções correlatas
No próximo capítulo serão apresentados os dados da modelagem do sistema que foi
implementado para solucionar o problema do curso de Ciência da Computação do campus São José
da Universidade do Vale do Itajaí.
Lu
cas
(200
0)
Urâ
nia
Nas
cim
ento
(20
13)
Sistema Comercial X X X
Gera Grade Escolar X ? ? X
Gera Grade Universitária X X X X ? ? X X
Sistema Gerenciador de BD X X X X ? ? ? X
Importação de Dados X
Interface Web X X X X
Jaco
b e
Roc
ha
(200
5)
Ham
awak
i (20
05)
Cis
con
(200
6)
Pre
is (
2007
)
Phi
delis
Lyc
eum
36
4 DESENVOLVIMENTO
Neste capítulo serão apresentadas as informações do sistema que foi implementado. Este
capítulo é composto pelos requisitos funcionais, não funcionais e regras do negócio do sistema,
como também pelo caso de uso, diagrama de sequência, o modelo de relacionamento do banco de
dados e a estrutura do AG que foi implementado.
4.1 REQUISITOS
Neste tópico serão apresentados os requisitos funcionais, não funcionais e regras do negócio
do sistema. Primeiramente serão expostos os requisitos funcionais.
4.1.1 Requisitos Funcionais
Segundo Pfleeger (2004) um requisito funcional descreve uma interação entre o sistema e
seu ambiente. Os requisitos funcionais do sistema são:
RF 01 – O sistema deve permitir ao usuário gerar a grade de horários, sem violar as
restrições de disponibilidade dos professores;
RF 02 – O sistema deve permitir o cadastro de curso;
RF 03 – O sistema deve permitir consultar o curso cadastrado;
RF 04 – O sistema deve permitir editar o curso cadastrado;
RF 05 – O sistema deve permitir excluir o curso cadastrado;
RF 06 – O sistema deve permitir o cadastro de semestres;
RF 07 – O sistema deve permitir consultar os semestres cadastrados;
RF 08 – O sistema deve permitir editar os semestres cadastrados;
RF 09 – O sistema deve permitir excluir os semestres cadastrados;
RF 10 – O sistema deve permitir o cadastro de disciplinas;
RF 11 – O sistema deve permitir consultar as disciplinas cadastradas;
RF 12 – O sistema deve permitir editar as disciplinas cadastradas;
RF 13 – O sistema deve permitir excluir as disciplinas cadastradas;
RF 14 – O sistema deve permitir o cadastro de professores;
RF 15 – O sistema deve permitir consultar os professores cadastrados;
RF 16 – O sistema deve permitir editar os professores cadastrados;
RF 17 – O sistema deve permitir excluir os professores cadastrados;
37
RF 18 – O sistema deve permitir o cadastro da disponibilidade dos professores;
RF 19 – O sistema deve permitir consultar as disponibilidades dos professores cadastrados;
RF 20 – O sistema deve permitir editar as disponibilidades dos professores cadastrados;
RF 21 – O sistema deve permitir excluir as disponibilidades dos professores cadastrados;
RF 22 – O sistema deve permitir o cadastro das configurações do AG;
RF 23 – O sistema deve permitir consultar as configurações do AG cadastradas;
RF 24 – O sistema deve permitir editar as configurações do AG cadastradas;
RF 25 – O sistema deve permitir excluir as configurações do AG cadastradas;
RF 26 – O sistema deve permitir a associação de professores e disciplinas;
RF 27 – O sistema deve permitir a visualização da melhor solução gerada.
A seguir serão apresentados os requisitos não funcionais.
4.1.2 Requisitos Não Funcionais
De acordo com Pfleeger (2004) os requisitos não funcionais descrevem uma restrição no
sistema que limita as opções para criar uma solução para o problema. Os requisitos não funcionais
do sistema são:
RNF 01 – A linguagem de programação utilizada deve ser o Java;
RNF 02 – O Banco de dados utilizado deve ser o MySQL;
RNF 03 – O sistema deve ter interface Web.
A seguir serão apresentadas as regras de negócio.
4.1.3 Regra de Negócio
Na sequência são apresentadas as regras de negócio, sendo que todas dizem respeito ao RF
01.
RN 01 – Procurar não colocar todas as disciplinas de programação no mesmo dia;
RN 02 – Um professor não deve dar mais de uma disciplina para a mesma turma, mas caso
isto ocorra, não devem ser em dias consecutivos;
RN 03 – Um professor não pode dar aula para mais de uma turma no mesmo horário;
RN 04 – Deve-se verificar a disponibilidade do professor para alocá-lo no referido dia;
38
RN 05 – Não permitir quebra de aulas (sempre quatro créditos por dia, exceto para
disciplinas de 6 créditos);
RN 06 – Respeitar o limite diário de aulas de uma mesma disciplina e turma;
RN 07 – Disciplinas com mais de 6 créditos não devem ser em dias consecutivos; e
RN 08 – Um professor só pode ser associado a disciplinas que esteja habilitado a lecionar.
Na próxima seção da pesquisa será apresentada a modelagem do sistema.
4.2 MODELAGEM
Nesta seção será ilustrado como foi realizada a modelagem do sistema, ou seja, o Caso de
Uso, a estrutura do Banco de Dados e o AG. Dar-se-á inicio a apresentação da estrutura do sistema
pelo Caso de Uso.
4.2.1 Caso de Uso
Conforme Fowler (2005), os casos de uso são uma técnica que tem o intuito de captar os
requisitos funcionais de um sistema onde procura-se descrever as interações existentes entre os
usuários e o próprio sistema, demonstrando como o sistema é utilizado.
Na Figura 8 é apresentado o Caso de Uso do sistema que foi implementado na instituição
estudada sendo este, explicado na sequência.
39
Figura 8. Caso de Uso do sistema modelado
CSU 01 – Consulta Curso: neste caso de uso é possível consultar o curso cadastrado. Este
caso de uso atende ao RF 02 e são fluxos alternativos deste caso de uso os RF 03, RF 04 e RF 05.
CSU 02 – Consulta Semestre: neste caso de uso é possível consultar os semestres
cadastrados. Este caso de uso atende ao RF 06 e são fluxos alternativos deste caso de uso os RF 07,
RF 08 e RF 09.
CSU 03 – Consulta Disciplina: neste caso de uso é possível consultar as disciplinas
cadastradas. Este caso de uso atende ao RF 10 e são fluxos alternativos deste caso de uso os RF 11,
RF 12 e RF 13.
CSU 04 – Consulta Professor: neste caso de uso é possível consultar os professores
cadastrados. Este caso de uso atende ao RF 14 e são fluxos alternativos deste caso de uso os RF 15,
RF 16 e RF 17.
40
CSU 05 – Consulta Disponibilidade do Professor: neste caso de uso é possível consultar as
disponibilidades dos professores cadastrados. Este caso de uso atende ao RF 18 e são fluxos
alternativos deste caso de uso os RF 19, RF 20 e RF 21.
CSU 06 – Consulta Configurações do AG: neste caso de uso é possível consultar as
configurações do AG cadastradas. Este caso de uso atende ao RF 22 e são fluxos alternativos deste
caso de uso os RF 23, RF 24 e RF 25.
CSU 07 – Apresentar Melhor Solução: neste caso de uso é apresentada ao usuário a melhor
solução gerada pelo sistema. Este caso de uso atende ao RF 27.
CSU 08 – Gerar Grade de Horário: neste caso de uso é gerada uma grade de horário de
acordo com as informações cadastradas no sistema e as regras de negócio passadas pela
coordenação do curso. Este caso de uso atende ao RF 01.
Na próxima seção do trabalho será apresentado o diagrama de sequência.
4.2.2 Diagrama de Sequência
Com o intuito de elucidar as interações existente no sistema da presente pesquisa, a Figura 9
apresenta o diagrama de sequência da geração da grade de horários.
Nesta ilustração é possível visualizar as atividades que o usuário do sistema executará para
gerar a grade de horário, bem como as atividades que isso acarretará ao sistema.
41
Figura 9. Diagrama de sequência da geração da grade de horário
Continuando a apresentação das informações do sistema, na sequência será ilustrado como
foi estruturado o Banco de Dados.
4.2.3 Banco de Dados
Segundo Date (2004), um sistema de banco de dados pode ser compreendido como um
sistema computadorizado de manutenção de registros, ou seja, um sistema computadorizado para
armazenar informações permitindo aos usuários buscá-las e atualizá-las quando necessário.
Na Figura 10 apresenta-se o Modelo de Relacionamento que foi utilizado no sistema
elaborado para a instituição de ensino estudada, com o intuito de armazenar as informações
necessárias à sua execução, com o intuito de solucionar o problema do curso de Ciência da
Computação do campus São José da Universidade do Vale do Itajaí
42
Figura 10. Modelo de Relacionamento do sistema modelado
A tabela ConfiguracoesAG armazena as informações referentes ao AG, evitando desta
forma que seja necessário que o usuário sempre digite estes dados. Já a tabela FaseSemestre é a
responsável por armazenar os semestres do curso. A tabela Disciplina armazena todas as disciplinas
do curso contemplado pelo sistema, além disso, também constam nesta tabela dois flag`s. Um para
sinalizar se a disciplina deve ser considerada como de programação e o outro identifica se o sistema
deve considerar tal disciplina na hora de montar a grade de horário. O primeiro flag se faz
necessário para atender a RN 01, enquanto o segundo flag atende a especificidade da instituição que
não oferece todas as disciplinas todos os semestres. A tabela Professor guarda os dados referentes
ao professor e a tabela Disponibilidade armazena as preferências do professor no que diz respeito a
sua viabilidade de ministrar aulas, a disponibilidade do professor é identificada da seguinte forma:
se o professor estiver disponível, o dia de disponibilidade receberá o valor 1; se estiver indisponível
este dia receberá o valor 2.
43
Na próxima seção do trabalho será descrita a modelagem do AG.
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.
44
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.
45
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.
46
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.
47
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%.
48
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.
49
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.
50
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.
51
4.2.5 Interface do Sistema
Este tópico do trabalho tem o intuito de apresentar a interface que foi desenvolvida para a
presente pesquisa.
Vislumbrando-se facilitar a utilização do sistema por parte do usuário final, foi criado um
padrão para as telas de consulta e cadastro.
A Figura 19, apresentada na sequência, ilustra a tela de consulta professor, sendo que, como
mencionado anteriormente, todas as telas de consulta seguem o mesmo padrão. A tela de consulta
apresenta um campo para que o usuário digite o nome do professor que está procurando, também
conta com um ícone para adição de novos professores no canto superior direito. A tabela da tela
apresenta os dados compatíveis com a pesquisa, sendo que por default, quando a tela é aberta, são
apresentados todos os itens referentes a ela. Na tabela figuram alguns dados referentes aos
professores e dois ícones, sendo o primeiro para edição dos dados do item contido naquela linha e
outro para exclusão do item. Na tela de consulta professor são apresentados o nome do professor,
sua matricula, e o código de disponibilidade, sendo este código necessário para a consulta da
disponibilidade do professor.
Figura 19. Tela de consulta professor do sistema desenvolvido
52
A Figura 20 ilustra a tela de cadastro do professor, onde o usuário digita as informações
requisitadas e nos dados referentes a outras tabelas do banco de dados, o usuário deve clicar na lupa
para que seja aberta a tela de consulta do referido item. O item desejado pelo usuário é selecionado
por um duplo clique.
Figura 20. Tela de cadastro professor do sistema desenvolvido
A Figura 21, apresentada na sequência, ilustra a tela onde é visualizado o resultado gerado
pelo sistema desenvolvido. Nesta tela o usuário deve selecionar a configuração do AG pretendido e
o número de tentativas aleatória que será utilizado pelo método de alocação de disciplinas de quatro
créditos de forma aleatória.
53
Figura 21. Tela de apresentação da melhor solução encontrada pelo sistema
Na próxima seção do trabalho é apresentado o design do experimento, ou seja, como foram
os testes e avaliações do sistema implementado.
4.3 DESIGN DO EXPERIMENTO
Almejando que o sistema desenvolvido no decorrer da presente pesquisa seja utilizado pela
coordenação do curso de Ciência da Computação, o mesmo foi testado com os dados reais do curso,
analisando-se, desta forma, sua eficácia na solução do problema.
Com o decorrer dos testes, baseando-se nos dados reais, foi constatado que existe uma
rigidez muito grande na elaboração da grade de horário do curso contemplado. Tal rigidez deve-se
ao fato de que alguns professores da instituição lecionam cinco e até seis disciplinas do curso.
Embora todas estas disciplinas não sejam ofertadas no mesmo semestre, pela quantidade de
disciplinas que esses professores estão habilitados a lecionar, eles ministram de três a quatro
disciplinas no semestre, chegando algumas vezes a até cinco disciplinas.
Devido às especificidades encontradas no curso de Ciência da Computação, também foram
realizados testes com dados fictícios, a fim de melhor testar o sistema. Entendendo-se como dados
54
fictícios, neste caso, o cadastro de novos professores, reduzindo, assim, o número de disciplinas de
cada professor para no máximo três, viabilizando desta forma a geração de uma grade completa.
Para ambos os casos apresentados anteriormente foi realizada uma vasta quantidade de
testes, variando o tamanho da população, o número de iterações, o tipo de seleção, a taxa de
mutação, a remoção ou não dos indivíduos e as tentativas aleatórias para as disciplinas de quatro
créditos.
Outro teste realizado no decorrer da pesquisa foi a comparação dos resultados apresentados
pelo sistema, com a grade atual do curso.
A validação do sistema ocorreu por meio dos resultados apresentados no decorrer dos testes,
com os dados reais e fictícios, sendo ambos considerados satisfatórios.
Na sequência da pesquisa são relatados os resultados encontrados nos testes executados.
4.4 RESULTADOS
Buscando avaliar o sistema da melhor forma possível, foram realizados diversos testes.
Dentre estes, o que teve maior impacto na comprovação da viabilidade do sistema foi a geração de
uma grade de horário simulando os mesmos dados do semestre atual.
A Figura 22 apresenta a grade de horário utilizada neste semestre, onde existem diversas
irregularidades. Dentre elas algumas restrições hard. São restrições hard encontradas na grade de
horário deste semestre: os professores Fabiane e Perfeito estão lecionando na quinta-feira, sendo
que a disponibilidade da primeira é terça e quarta-feira; já a disponibilidade do segundo é segunda e
sexta-feira. Também foram encontradas duas restrições soft, ambas acontecendo na primeira fase.
Uma é que a professora Fernanda ministra duas disciplinas na mesma fase, outra é, que essa
professora leciona na mesma fase em dias consecutivos. Desta forma a grade de horário gerada foi
penalizada duas vezes pela mesma regra de negócio, a RN 02. O Apêndice A apresenta as
disponibilidades de cada professor, podendo-se, desta forma, verificar que seria impossível a grade
de horário não receber estas penalidades, já que o professor de Álgebra tem disponibilidade para
lecionar apenas nas quartas-feiras. No que diz respeito a professora Fernanda ministrar duas
disciplinas para a mesma turma, deve-se a especificidade encontrada na instituição, onde os
professores lecionam muitas disciplinas.
A Figura 23 representa a grade de horário gerada pelo sistema, de acordo com as regras de
negócio apresentadas pela coordenação do curso. Esta grade viola as duas restrições soft
apresentadas na grade de horário atual, já que é impossível pelas especificidades encontradas no
curso de Ciência da Computação, que estas violações não ocorram.
55
Com o intuito de verificar o comportamento do AG, sem que o mesmo esteja tão engessado
pelas especificidades da instituição, comprovando, desta forma, a sua capacidade de gerar uma
grade completa, a Figura 24 ilustra uma grade de horário completa gerada com os dados fictícios. O
AG gerou essa grade com apenas uma restrição soft. A restrição quebrada foi a RN 01, já que na
sexta-feira existem duas disciplinas de programação alocadas. Sabendo-se que existem duas
disciplinas de programação de seis créditos, o que obriga que sejam necessários dois dias para cada
uma, mais duas disciplinas de programação de quatro créditos, precisando desta forma de mais um
dia para cada disciplina, para que não haja tal sobreposição, seriam necessários seis dias distintos, o
que não é possível pelos dias letivos serem de segunda a sexta-feira. Desta forma, esta sobreposição
se torna necessária, tendo o sistema encontrado a melhor solução possível. Os dados fictícios
utilizados para a geração desta grade de horário encontram-se no Apêndice C.
59
A Tabela 2, apresentada na sequência do trabalho, ilustra a evolução da população dos
cromossomos utilizado-se os dados fictícios. Os dados iniciais para processamento do AG que
resultaram nesta tabela foram o seguinte: o tamanho da população foi de 1000 indivíduos, o número
de iterações foi de 50 (mas devido ao fato que a partir da sétima iteração os dados se repetiram,
figuram na tabela apenas as 10 primeiras iterações) a taxa de mutação foi de 5% e por fim o número
de tentativas aleatórias para alocar disciplinas de quatro créditos foi de 15.
O processamento do AG com a entrada destes dados foi de aproximadamente 35 minutos.
Sendo deste tempo, mais de 90% para geração da população inicial. Para tal teste foi utilizado um
computador com um processador Intel Core2 Duo 2.00 GHz e 4GB de memória ram.
Tabela 2. Resultados apresentados pelo AG com dados fictícios
Com o intuito de melhor testar o sistema desenvolvido, foram realizadas baterias de testes,
sendo cada uma destas composta por 100 rodadas. Para tais testes buscou-se simular o aumento do
número de penalidades, alterando-se algumas disponibilidades de professores e classificando mais
disciplinas como disciplina de programação.
Para todos os testes, o tamanho da população foi de 100 indivíduos, o número máximo de
iterações foi de 20 e a taxa de mutação foi de 5%. Alterando-se entre os testes, o número de
tentativas aleatórias para as disciplinas de quatro créditos.
Tendo-se como referencia, o número de tentativas aleatórias para as disciplinas de quatro
créditos, 20 tentativas, os processos chegaram a sua solução final entre 4 e 5 minutos. Com este
parâmetro, chegou-se a melhor solução com o número de iterações ficando entre 8 e 16. A maior
penalidade registrada na primeira iteração foi de 13 e o menor valor apresentado para a maior
penalidade foi de 9.
60
Já, tendo-se como referencia, o número de tentativas aleatórias para as disciplinas de quatro
créditos, 25 tentativas, os processos chegaram a sua solução final entre 4 e 7 minutos. Com este
parâmetro, chegou-se a melhor solução com o número de iterações ficando entre 7 e 15. A maior
penalidade registrada na primeira iteração foi de 13 e o menor valor apresentado para a maior
penalidade foi de 9.
E tendo-se como referencia, o número de tentativas aleatórias para as disciplinas de quatro
créditos, 30 tentativas, os processos chegaram a sua solução final entre 5 e 8 minutos. Com este
parâmetro, chegou-se a melhor solução com o número de iterações ficando entre 7 e 16. A maior
penalidade registrada na primeira iteração foi de 13 e o menor valor apresentado para a maior
penalidade foi de 8.
Nas três últimas baterias de testes apresentadas, o número final de penalidades encontrada
foi 3.
A Tabela 3, apresentada na sequência, ilustra os resultados encontrados nas baterias de testes
detalhados anteriormente.
Tabela 3. Tabela de comparação dos resultados apresentados pelas baterias de testes
Dando continuidade ao trabalho, na próxima seção são apresentadas as conclusões e os
trabalhos futuros.
61
5 CONCLUSÕES
Na presente pesquisa foi solucionado o problema de geração de grade de horário para o
curso de Ciência da Computação do campus São José da UNIVALI. Para chegar ao sistema que
resolvesse de forma efetiva o problema enfrentado pela coordenação do curso, foram necessários
alguns passos.
Primeiro foi necessário pesquisar as técnicas existentes para solução do problema. Diante
desta pesquisa foram encontradas muitas possibilidades. A solução poderia ter vindo por Heurística
Construtiva, Simulated Annealing, Busca Tabu e etc. Entretanto, o trabalho baseou-se no Algoritmo
Genético, acreditando-se em sua capacidade de solucionar problemas NP-Completos.
Após a escolha da técnica que seria utilizada, passou-se a fase de desenvolvimento.
Julgando-se que a melhor forma de se chegar a soluções ótimas seria partindo de uma população
inicial composta apenas por indivíduos factíveis, criou-se uma heurística capaz de gerar tal
população. Por este motivo, a geração da população inicial foi a parte mais árdua do
desenvolvimento do AG. Um fator destacável desta heurística foi seu custo computacional, onde
consegui-se gerar populações com no máximo 3.000 indivíduos.
Quanto ao método de seleção, inicialmente pretendia-se trabalhar com o Método da Roleta,
contudo o Método Elitista apresentou melhor resultado quando se trabalhava com populações
maiores.
Já quanto à mutação, no início da pesquisa, tinha-se a intenção de permitir movimentos de
piora, mas foi detectado no decorrer dos testes que permitir tais movimentos prejudicava o
desenvolvimento da população.
Terminado o desenvolvimento do sistema, iniciou-se a fase de testes com o intuito de avaliar
como o AG se comportaria em produção. Foram realizados testes de diversas formas, com dados
reais e fictícios. De acordo com o esperado, o AG se portou bem diante das avaliações a que foi
submetido. Chegou-se a soluções ótimas na medida do possível, já que nem sempre existe a
possibilidade de se gerar soluções sem qualquer penalidade, como nos casos apresentados na Seção
4.4.
Por fim, com o sistema desenvolvido e testado, procurou-se realizar uma documentação da
forma mais clara possível, viabilizando desta forma a continuidade da pesquisa.
Na seção seguinte do trabalho são apresentadas as propostas para trabalhos futuros.
62
5.1 TRABALHOS FUTUROS
Acredita-se que a presente pesquisa seja apenas o primeiro passo no meio acadêmico, tendo
ainda muito a evoluir.
Um melhoramento que pode ser aplicado à pesquisa é a criação de usuário e senha para que
desta forma os próprios professores possam cadastrar suas disponibilidades, ficando a cargo da
coordenação, apenas a associação dos professores com as disciplinas e a geração da grade de
horário.
Já um fator que justificaria uma pesquisa futura seria que o sistema solucionasse a geração
da grade de horário para mais de um curso, visto que a coordenação do curso de Ciência da
Computação do campus São José é a mesma do curso de Ciência da Computação do campus Ilha e
também do curso de Jogos do campus Ilha. Um fato interessante para esta pesquisa é que os
professores dos campus são os mesmos e os cursos do campus Ilha tem disciplinas equivalentes,
desta forma as aulas destas disciplinas são lecionadas em uma única turma.
Outro fator que poderia gerar uma pesquisa seria criar uma interação entre o resultado
apresentado e o usuário. Desta forma seria possível a coordenação do curso manipular a solução
gerada, tendo o sistema que readaptar a solução encontrada.
63
REFERÊNCIAS BIBLIOGRÁFICAS
ABENSUR, E. O.; OLIVEIRA, R. C. Um Método Heurístico Construtivo para o Problema daGrade Horária Escolar. Revista Eletrônica Pesquisa Operacional para Desenvolvimento, Rio deJaneiro, v. 4, n. 2, p. 230-248, Maio a Agosto de 2012
BARCELLOS, J. C. H. Algoritmos Genéticos Adaptativos: Um Estudo Comparativo. -Dissertação (Mestrado em Engenharia) - Escola Politécnica da Universidade de São Paulo, SãoPaulo, 2000.
CISCON, L. A. O Problema de Geração de Horários: Um Foco na Eliminação de Janelas eAulas Isoladas. TCC (Bacharelado em Ciência da Computação) – UFLA, Lavras, Abril de 2006.
DATE, C. J. Introdução a sistemas de bancos de dados. 8.ed. Rio de Janeiro: ElsevierButterworth Heinemann, 2004.
FALCONE, M. A. Estudo Comparativo entre Algoritmos Genéticos e Evolução Diferencialpara Otimização de um Modelo de Cadeia de Suprimentos Simplificada. Dissertação (Mestradoem Engenharia de Produção e Sistemas) – PUC Paraná, Curitiba, Setembro de 2004.
FERNANDES, A. M. R. Inteligência artificial: Noções Gerais. Florianópolis: Visual Books, 2004.
FOWLER, M. UML essencial: um breve guia para a linguagem-padrão de modelagem de objetos.3. ed. Porto Alegre: Bookman, 2005.
HAMAWAKI, C. D. L. Geração Automática de Grade de Horária Usando AlgoritmosGenéticos: O Caso da Faculdade de Engenharia Elétrica da UFU. Dissertação (Mestrado emCiências) – UFU, Uberlândia, Novembro de 2005.
JACOB, A. F. L. Jr.; ROCHA, C. A. J. AGHORA: Algoritmos Genéticos para Geração de Horáriosde Aula. XIX Semana Paraense de Informática e Telecomunicações – SEPAI e II Congresso deTecnologia da Informação e Comunicação – CTIC. Anais do Congresso... Belém, PA , Setembrode 2005.
LEITE, F. A. P. Análise Inversa de Estruturas com Utilização de Algoritmos Genéticos.Dissertação (Mestrado em Engenharia) – Escola Politécnica da Universidade de São Paulo, SãoPaulo, 2006.
LOBO, E. L. M. Uma Solução do Problema de Horário Escolar Via Algoritmo GenéticoParalelo. Dissertação (Mestrado em Modelagem Matemática e Computacional) – CEFET-MG,Belo Horizonte, Outubro de 2005.
LUCAS, D. C. Algoritmos Genéticos: Um Estudo de Seus Conceitos Fundamentais e Aplicaçãono Problema de Grade Horária. TCC (Bacharelado em Informática) – UFPel, Pelotas, Dezembrode 2000.
LUGER, George F. Inteligência artificial: estruturas e estratégias para a resolução de problemascomplexos. 4. ed. Porto Alegre: Bookman, 2004.
64
MARCONI, M. de A.; LAKATOS, E. M. Metodologia científica. 6. ed. São Paulo: Atlas, 2011.
MARINHO, E. H. Heurística Busca Tabu para o Problema de Programação de Tripulações deÔnibus Urbano. Dissertação (Mestrado em Otimização e Inteligência Artificial) – UFF, Rio deJaneiro, Maio de 2005.
MIRANDA, L. A. Estratégia Paralela Para Alinhamento Múltiplo de Sequências comAlgoritmo Genético Multi-Ilha. Dissertação (Mestrado em Informática) – UNB, Brasília,Setembro de 2009.
MOORI, R. G.; KIMURA, H.; ASAKURA, O. K. Aplicação do Algoritmo Genético na Gestão deSuprimentos. Revista de Administração e Inovação, São Paulo, v. 7, n. 2, p. 171-192, Abril aJunho de 2010.
MOURA, A.; SCARAFICCI, R.; SILVEIRA, R.; SANTOS, V. Técnicas Metaheurísticas Aplicadasà Contrução de Grades Horárias Escolares. XXXVI Simpósio Brasileiro de Pesquisa Operacional –SBPO. Anais do Simpósio... São João Del Rei, MG, Novembro de 2004.
PAIM, A. S.; GREIS, I. C. Abordagens para Elaboração Automatizada de Tabela de HoráriosAcadêmicos. XI Seminário Intermunicipal de Pesquisa. Anais do Seminário... Guaíba, RS,Outubro de 2008. Disponível em <http://www.ulbra.br/guaiba/pesquisa/seminario-de-pesquisa>.Acesso em: 01 ago. 2012.
PFLEEGER, S. L. Engenharia de software: teoria e prática. 2. ed. São Paulo: Prentice Hall, 2004.
PREIS, T. A; Protótipo Gerador de Grades Horárias para Instituições de Ensino. TCC(Graduação em Ciência da Computação) – FURB, Blumenau, Novembro de 2007.
RUSSELL, Stuart J.; NORVIG, Peter. Inteligencia artificial. Rio de Janeiro, RJ: Campus, 2004.
SANTOS, H. G.; SOUZA, M. J. F. Programação de Horários em Instituições Educacionais:Formulações e Algoritmos. XXXIX Simpósio Brasileiro de Pesquisa Operacional – SBPO. Anaisdo Simpósio... Fortaleza, CE, Agosto de 2007.
SILVA, E. E. da Otimização de Estruturas de Concreto Armado Utilizando AlgoritmosGenéticos. Dissertação (Mestrado de Engenharia de Estruturas) – USP, São Paulo, Novembro de2001.
SKRABE, M. S. Proposta de Algoritmo Genético para Aplicação no Problema da GradeHorária. TCC (Bacharel em Sistemas de Informação) – Centro Universitário Feevale, Novembro,2007.
SOUZA, M. J. F. Programação de Horários em Escolas: Uma Aproximação porMetaheurísticas. Tese (Doutorado em Engenharia de Sistemas e Computação) – UFRJ, Rio deJaneiro, Dezembro de 2000.
SOUZA, M. J. F.; COSTA, F. P.; GUIMARÃES, I. F. G. Um Algoritmo Evolutivo Híbrido para oProblema de Programação de Horários em Escolas. XXII Encontro Nacional de Engenharia deProdução – ENEGEP. Anais do Encontro... Curitiba, PR, Outubro de 2002.
65
SPINDLER, M. Uma Proposta de Solução para Problemas de Horário Educacional UtilizandoBusca Dispersa e Reconexão por Caminhos. Dissertação (Mestrado em Computação Aplicada) –Universidade do Vale do Rio dos Sinos, São Leopoldo, Março de 2010.
SUBRAMANIAN, A.; MEDEIROS, J. M. F.; FORMIGA, L. A.; SOUZA, M. J. F. Aplicação daMetaheurística Busca Tabu ao Problema de Alocação de Aulas a Salas em uma InstituiçãoUniversitária. Revista Produção Online, v. 11, n. 1, Março de 2011.
SUCUPIRA, I. R. Métodos Heurísticos Genéricos: Metaheurísticas e Hiper-Heurísticas. USP,São Paulo, 2004.
VIEIRA, F.; MACEDO, H. Sistema de Alocação de Horários de Cursos Universitários: Um Estudode Caso no Departamento de Computação da Universidade Federal de Sergipe. Revista ScientiaPlena, v. 7, n. 3, 2011.
66
APÊNDICE A – DISPONIBILIDADE DOS PROFESSORES
A tabela a seguir apresenta a disponibilidade de cada professor do curso de Ciência da Computaçãodo campus São José da Universidade do Vale do Itajaí. Os dias disponíveis do professor sãopreenchidos com X.
67
APÊNDICE B – RELAÇÃO DAS DISCIPLINAS
A tabela a seguir apresenta a relação das disciplinas, a fase que esta disciplina pertence e o número de créditos presenciais de cada uma.