Você está na página 1de 53

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO SUL DE

MINAS GERAIS – CAMPUS PASSOS

Joyce Ribeiro

Algoritmos genéticos aplicados à resolução do problema timetabling

PASSOS, MG
2019
Joyce Ribeiro

Algoritmos genéticos aplicados à resolução do problema timetabling

Trabalho de Conclusão de Curso apresentado ao


IFSULDEMINAS como parte das exigências do
curso de graduação em bacharelado em Ciência
da Computação para a obtenção do título de
Bacharel em Ciência da Computação.

Orientador(a): Profa. Ma. Jéssica Renata Nogueira

PASSOS, MG
2019
Ficha catalográfica elaborada pelo Sistema de Geração de Ficha Catalográfica do
Instituto Federal do Sul de Minas Gerais - Campus Passos

R367a Ribeiro, Joyce.


Algoritmos genéticos aplicados à resolução do problema
timetabling / Joyce Ribeiro. - 2016.
49 p.

Orientador(a): Jéssica Renata Nogueira.

Trabalho de Conclusão de Curso (Graduação - Bacharelado em


Ciência da Computação) - Instituto Federal de Educação, Ciências e
Tecnologia do Sul de Minas Gerais - Campus Passos, 2016.

1. Timetabling. 2. Grade horária escolar. 3. Algoritmos genéticos.


4. Metaheuristicas. I. Título.

CDD: 006.32
Dedico este trabalho a minha família e amigos que
me apoiaram neste momento.
AGRADECIMENTOS

Aos amigos que se despuseram de seu tempo para me ajudar, seja me


ouvindo falar sobre o desenvolvimento do trabalho ou me auxiliando no
desenvolvimento do mesmo. A todos que me incentivaram e acreditaram em meu
trabalho.
A minha orientadora Jéssica Renata Nogueira, que teve toda a paciência do
mundo em me ajudar, mesmo quando eu não apresentando confiança, obrigada por
acreditar em mim. Mais que uma orientadora, uma grande amiga.
Ao professor Taffarel Branti Ribeiro, que nos preparou para este momento,
além de ser mais que um professor, um amigo.
Agradeço imensamente ao professor Luciano Carrijo que em meu primeiro
período na faculdade, me mostrou que sou capaz de realizar diversas coisas, o que
me incentivou a dar continuidade no curso.
Obrigada!
RESUMO

A geração da grade horária de uma instituição de ensino pode ser considerada uma
tarefa árdua de se realizar manualmente e tal tarefa é nomeada na literatura de
timetabling. Este trabalho buscou solucioná-lo de forma que a mesma aplicação
possa ser reaplicada em diversas instituições, otimizando seu tempo de execução.
Devido a sua complexidade, há autores que buscam tratá-lo através do
desenvolvimento para apenas uma instituição. Para torná-lo flexível, será realizado
um levantamento das possíveis restrições que instituições de ensino podem utilizar.
Assim, ao se realizar a implementação, o usuário poderá montar as restrições que
lhe forem úteis. Através do estudo teórico do problema timetabling e a compreensão
do funcionamento de metaheurísticas, estabeleceu-se a utilização de Algoritmos
Genéticos (AGs) para a obtenção da solução. Devido a sua forma estrutural e a sua
atuação, os AGs agem por meio de evoluções do indivíduo para se obter uma
solução satisfatível ao problema. Uma grade horária satisfatória é obtida através da
satisfabilidade de todas as restrições fortes vinculadas à solução, considerando que
as mesmas devem ser obrigatoriamente satisfeitas como descrito pelo problema
timetabling. A fim de validar o projeto realizado, utilizou-se a grade horária
desenvolvida no IFSULDEMINAS - Campus Passos, no ano de 2019. Neste
trabalho, ao inserir as restrições utilizadas, as disciplinas, os cursos e os professores
da instituição, a implementação não foi capaz de gerar uma grade satisfazendo
todas as restrições fortes para a solução. Porém, foi possível gerar indivíduos
contendo soluções próximas às ótimas, de modo que tornou-se possível avaliar a
qualidade da solução obtida e o tempo de execução dos algorítimos propostos para
seleção e cruzamento. Dentre as abordagens avaliadas, a utilização do algoritmo de
seleção por torneiro junto do algoritmo de cruzamento de um ponto, apresentaram
os melhores tempos de execução.

Palavras-chave: Timetabling, grade horária escolar, algoritmos genéticos,


metaheuristicas.
ABSTRACT

The generation of the hourly grid of an educational institution can be considered an


arduous task of performing manually and this task is named in the timetabling
literature. This work sought to solve it so that the same application can be reapplied
in several institutions, optimizing its execution time. Due to its complexity, there are
authors who seek to treat it through development for only one institution. To make it
flexible, a survey of the possible restrictions that educational institutions can use will
be carried out. Thus, when performing the implementation, the user can mount the
restrictions that are useful to him. Through the theoretical study of the timetabling
problem and the understanding of the functioning of metaheuristics, the use of
Genetic Algorithms (AGs) was established to obtain the solution. Due to their
structural form and their performance, The AGs act through evolutions of the
individual to obtain a satisfactorily solution to the problem. A satisfactory hourly grid is
obtained through the satisfactory satisfaction of all strong constraints linked to the
solution, considering that they must be satisfied as described by the timetabling
problem. In order to validate the project carried out, the hourly grid developed at
IFSULDEMINAS - Campus Passos was used in 2019. In this work, when inserting
the restrictions used, the disciplines, courses and teachers of the institution, the
implementation was not able to generate a grid satisfying all the strong restrictions
for the solution. However, it was possible to generate individuals containing solutions
close to optimal solutions, so it became possible to evaluate the quality of the
solution obtained and the execution time of the algorithms proposed for selection and
crossing. Among the evaluated approaches, the use of the selection algorithm by
turner along with the point crossing algorithm presented the best execution times.

Keywords: Timetabling, school schedule, genetic algorithms, metaheuristic.


LISTA DE ILUSTRAÇÕES

Figura 1: Relação entre as classes NP, NP-Difícil e NP-Completo............................17


Figura 2: Estrutura de funcionamento tradicional de um Algoritmo Genético............22
Figura 3: Funcionamento do cruzamento com corte de um ponto.............................24
Figura 4: Funcionamento do cruzamento com corte de dois pontos.........................24
Figura 5: Mutação tradicional......................................................................................25
Figura 6: Pseudocódigo de um AG.............................................................................26
Figura 7: Ano letivo dividido em semestres................................................................28
Figura 8: Ano letivo dividido em bimestres.................................................................29
Figura 9: Representação cromossomo.......................................................................29
Figura 10: Gene de um cromossomo.........................................................................30
Figura 11: Pseudocódigo da geração de indivíduos...................................................32
Figura 12: Pseudocódigo da geração de indivíduos...................................................33
Figura 13: Qualidade das soluções obtidas empregando seleção por roleta,
cruzamento em um ponto e 50, 100 e 200 indivíduos e um valor máximo de 200
gerações......................................................................................................................35
Figura 14: Qualidade das soluções obtidas empregando seleção por roleta,
cruzamento em um ponto e 50, 100 e 200 indivíduos e um valor máximo de 500
gerações......................................................................................................................36
Figura 15: Qualidade das soluções obtidas empregando seleção por roleta,
cruzamento em um ponto e 50, 100 e 200 indivíduos e um valor máximo de 1000
gerações......................................................................................................................36
Figura 16: Qualidade das soluções obtidas empregando seleção por roleta,
cruzamento em dois pontos e 50, 100 e 200 indivíduos e um valor máximo de 200
gerações......................................................................................................................37
Figura 17: Qualidade das soluções obtidas empregando seleção por roleta,
cruzamento em dois pontos e 50, 100 e 200 indivíduos e um valor máximo de 500
gerações......................................................................................................................37
Figura 18: Qualidade das soluções obtidas empregando seleção por roleta,
cruzamento em dois pontos e 50, 100 e 200 indivíduos e um valor máximo de 1000
gerações......................................................................................................................38
Figura 19: Qualidade das soluções obtidas empregando seleção por torneio,
cruzamento em um ponto e 50, 100 e 200 indivíduos e um valor máximo de 200
gerações......................................................................................................................39
Figura 20: Qualidade das soluções obtidas empregando seleção por torneio,
cruzamento em um ponto e 50, 100 e 200 indivíduos e um valor máximo de 500
gerações......................................................................................................................39
Figura 21: Qualidade das soluções obtidas empregando seleção por torneio,
cruzamento em um ponto e 50, 100 e 200 indivíduos e um valor máximo de 1000
gerações......................................................................................................................40
Figura 22: Qualidade das soluções obtidas empregando seleção por torneio,
cruzamento em dois pontos e 50, 100 e 200 indivíduos e um valor máximo de 200
gerações......................................................................................................................41
Figura 23: Qualidade das soluções obtidas empregando seleção por torneio,
cruzamento em dois pontos e 50, 100 e 200 indivíduos e um valor máximo de 500
gerações......................................................................................................................41
Figura 24: Qualidade das soluções obtidas empregando seleção por torneio,
cruzamento em dois pontos e 50, 100 e 200 indivíduos e um valor máximo de 1000
gerações......................................................................................................................42
Figura 25: Individuo gerado como solução, para o problema....................................49
LISTA DE TABELAS

Tabela 1: Representação de tabela horária................................................................14


Tabela 2: Representação de termos da recombinação genética em AGs.................20
Tabela 3: Tempo de execução obtido nas simulações...............................................36
Tabela 4: Tempo de execução obtido empregando seleção por roleta e cruzamento
em dois pontos............................................................................................................38
Tabela 5: Tempo de execução obtido nas simulações empregando seleção por
torneio e cruzamento em um ponto............................................................................40
Tabela 6: Tempo de execução obtido nas simulações empregando seleção por
torneio e cruzamento em dois pontos.........................................................................42
LISTA DE EQUAÇÕES

Equação 1 - Campo de busca para se encontrar esta solução exata........................17


LISTA DE SIGLAS

FRB Faculdade Ruy Barbosa


NP Não Polinomial
CBTU Campo de busca para o problema timetabling universitário
DS Quantidade de dias da semana letiva
AD Número máximo de aulas diárias
SD Número de salas disponíveis da instituição
D Número de disciplinas, para o semestre atual
NA Número de aulas a serem ministradas durante a semana
GRASP Procedimento de pesquisa adaptável randomizado ganancioso
VNS Variable Neighbourhood Search
AGs Algoritmos Genéticos
XNOR Negação da disjunção
SUMÁRIO

1 INTRODUÇÃO...................................................................................................11
1.1 Objetivo Geral....................................................................................................13
1.2 Objetivos Específicos.........................................................................................13
2 REFERENCIAL TEÓRICO................................................................................14
2.1 Timetabling.........................................................................................................14
2.1.1 Restrições..........................................................................................................15
2.1.2 Complexidade....................................................................................................17
2.2 Metaheurísticas..................................................................................................18
2.2.1 Categorias e Aplicações.....................................................................................18
2.3 Algoritmos Genéticos.........................................................................................20
2.3.1 Representação do indivíduo, População Inicial e Avaliação.............................22
2.3.2 Seleção..............................................................................................................23
2.3.3 Cruzamento........................................................................................................23
2.3.4 Mutação..............................................................................................................25
2.3.5 Pseudocódigo, Condições de Parada e Aplicações..........................................26
3 MATERIAL E MÉTODOS..................................................................................27
3.1 Metodologia de Pesquisa e Materiais................................................................27
3.2 Detalhes da implementação..............................................................................28
3.2.1 Representação e validação do indivíduo...........................................................29
3.2.2 Criação do individuo...........................................................................................31
3.2.1 Restrições pertinentes à implementação...........................................................32
3.2.2 Algoritmos de seleção, cruzamento e mutação.................................................34
4 RESULTADOS E DISCUSSÕES.......................................................................35
5 CONCLUSÃO....................................................................................................44
5.1 Trabalhos Futuros..............................................................................................44
REFERÊNCIAS BIBLIOGRÁFICAS.................................................................46
ANEXO A...........................................................................................................49
11

1 INTRODUÇÃO

A geração da grade horária para uma instituição de ensino trata-se de uma


tarefa importante, pois em diversos momentos são gerados conflitos ao se tentar
satisfazer os desejos de estudantes e professores (HAMAWAKI, 2005). Ao
estabelecê-la, a mesma é utilizada por um certo período de tempo, no qual as
mudanças ocorridas devido a um planejamento inadequado podem trazer
transtornos a alunos e professores. Tais mudanças podem ocorrer pois, de forma
geral, trata-se de uma tarefa árdua a ser desenvolvida manualmente, devido às
diversas restrições e ao tamanho da entrada de dados.
O tempo para se obter uma solução para o problema da geração da grade
horária que o satisfaça cresce exponencialmente de acordo com o tamanho da
entrada (PASSOS et al, 2017). Na literatura, este problema é conhecido como
timetabling e busca-se para ele uma solução satisfatória a partir de restrições, sendo
elas prioritárias ou não para a geração da solução.
Existem diferentes abordagens para solucionar esse problema, que
compartilham peculiaridades entre si. Um exemplo pode ser observado em Timóteo
(2002). O problema abordado pelo autor não se restringe a apenas uma instituição,
consistindo em arranjar as aulas dos professores para turmas em um período de
tempo fixado em uma semana, de modo a satisfazer um conjunto de restrições. Para
obtenção da solução, levou-se em consideração o estabelecimento dos horários a
serem satisfeitos, o número de professores disponíveis para cada matéria, dentre
outras restrições.
Já no trabalho de Freitas et al. (2002), é proposta uma ferramenta capaz de
montar a grade horária de uma instituição específica, devido às várias restrições que
podem mudar de instituição para instituição. A faculdade utilizada como objeto de
estudo foi a Faculdade Ruy Barbosa (FRB) e o sistema de análise é semelhante ao
proposto por Timóteo (2002).
Analisando a proposta de Passos et al. (2017), observa-se uma abordagem
diferente das demais. Neste trabalho, buscou-se simplificar as restrições
encontradas para solucionar o problema de timetabling. Na análise de seus
resultados, essa alteração acarretou em uma estagnação nas soluções obtidas.
Desse modo, simplificações bruscas nas restrições podem derivar em soluções
12

satisfatíveis mas não ótimas para o problema tratado. Assim, deve-se avaliar a real
necessidade de realizar tais mudanças.
O problema timetabling pertencente à classe NP-Completo (SCHAERF, 1999).
Nessa classe de problemas, é possível gerar a solução para apenas uma instância
do problema em tempo polinomial, não sendo possível garantir que o mesmo tenha
uma solução para todas as suas instâncias, o que torna necessário um tempo não
polinomial para resolvê-lo em toda sua completude.
O presente trabalho far-se-á uso de metaheurísticas para se obter uma
solução em menor tempo possível. Como descrito por Arroyo (2002),
metaheurísticas são métodos inteligentes e flexíveis, pois possuem uma estrutura
com componentes genéricos capazes de se adaptar ao problema a que pretende-se
resolver. Dessa maneira, o emprego de uma metaheurística apresenta uma resposta
a um problema da classe NP-Completo em tempo eficiente, mas não há garantias
sobre sua otimalidade.
Pela sua capacidade de adaptabilidade, metaheurísticas são comumente
utilizadas em problemas de geração de grades de horários, como observado em
Machado (2009). Nesse trabalho, o autor utiliza a metaheurística Busca Tabu como
base para o desenvolvimento do algoritmo de coloração de grafos, problema
conhecidamente NP-Completo. Após sua solução, o autor realizou uma extensão da
solução para o problema da geração da grade horária, gerando uma resposta
equivalente para esse problema.
Andrade (2014) utilizou as metaheurísticas Busca Local e Pesquisa local
iterada (Iterated Local Search) para desenvolver uma ferramenta capaz de gerar a
grade horária para instituições públicas de ensino fundamental. No trabalho de
Ciscon e Alvarenga (2005), foi empregada a metaheurística algoritmos genéticos
para solucionar o problema de timetabling. Os autores apresentaram um método
cuja finalidade era o de eliminar os horários em branco entre duas aulas de um
mesmo turno e aulas isoladas no horário dos professores.
O presente trabalho fará uso da metaheurística evolutiva conhecida na
literatura como Algoritmo Genético (AG) para resolver o timetabling. Esse algoritmo
matemático é inspirado no mecanismo de evolução natural e recombinação
genética. Como explica Bucior (2018), AGs fornecem mecanismos que propõe
modelar computacionalmente as regras básicas da teoria da evolução natural, de
13

forma que em um ciclo evolutivo busca-se alcançar uma solução ideal entre os
candidatos, melhorando-os gradativamente.

1.1 Objetivo Geral

Propor uma solução para o problema de timetabling de forma genérica, para


assim gerar soluções para diversas instituições, além de reduzir o tempo gasto por
meio da implementação de um algoritmo genético, comparando o tempo de
execução dos métodos desenvolvidos.

1.2 Objetivos Específicos

Para se obter uma solução que satisfaça o problema de timetabling, as


seguintes etapas serão seguidas:
• Compreender o que é o timetabling, os problemas enfrentados ao utilizá-lo e
a classe de problemas a que pertence, apontando a relevância do trabalho;
• Estudar o que são heurísticas e metaheurísticas, com enfoque em algoritmos
genéticos;
• Especificar os tipos de restrições encontradas para o problema tratado;
• Apresentar abordagens encontradas na literatura que possuem resultados
satisfatórios;
• Implementar o algoritmo proposto;
• Testar o algoritmo desenvolvido, com base em um caso de estudo;
• Compilar e analisar os resultados obtidos;
• Avaliar os resultados obtidos em relação ao tempo e solução gerada.
14

2 REFERENCIAL TEÓRICO

Este Capítulo fornece a descrição e o funcionamento das técnicas e conceitos


utilizados no processo de desenvolvimento deste trabalho. Na Seção 2.1, aborda-se
características gerais do problema timetabling, suas restrições e complexidade. Na
Seção 2.2, será abordada a definição de metaheurísticas, suas categorias e
aplicações. Na Seção 2.3, aborda-se as características da metaheurística algoritmo
genético, a representação do indivíduo, a população inicial, sua forma de avaliação,
técnicas de seleção, técnicas de cruzamento, técnicas de mutação, o pseudocódigo,
as condições de parada e suas aplicações.

2.1 Timetabling

Com estudos iniciados em 1963 (GOTLIEB, 1963), a geração da grade


horária para uma instituição de ensino é conhecida na literatura como timetabling.
Ela é utilizada na representação das aulas de um período letivo, seja ele semestral,
trimestral ou bimestral, seguindo as normas da instituição. A Tabela 1 representa um
formato que pretende-se obter a partir da resolução do problema timetabling. Vale
ressaltar que, para instituições que tenham o ensino em período integral, esta
mesma tabela contém disciplinas divididas no período matutino e vespertino, de
acordo com as necessidades e disponibilidades preestabelecidas pela instituição.

Tabela 1: Representação de tabela horária.

Seg Ter Qua Qui Sex Sáb

Horário Disciplina/ Disciplina/ Disciplina/ Disciplina/ Disciplina/ Disciplina/


aula (Professor) (Professor) (Professor) (Professor) (Professor) (Professor)

... ... ... ... ... ... ...

Intervalo Intervalo Intervalo Intervalo Intervalo Intervalo Intervalo

Horário Disciplina/ Disciplina/ Disciplina/ Disciplina/ Disciplina/ Disciplina/


aula (Professor) (Professor) (Professor) (Professor) (Professor) (Professor)

Horário Disciplina/ Disciplina/ Disciplina/ Disciplina/ Disciplina/ Disciplina/


aula (Professor) (Professor) (Professor) (Professor) (Professor) (Professor)
Fonte: autoria própria.
15

De acordo com Schaerf (1999), o problema de geração de grade horária


contém diversas variações propostas na literatura, sendo elas baseadas nas
necessidades da instituição utilizada como alvo do estudo e suas restrições. Dadas
as diferentes vertentes existentes para o problema de timetabling, o autor propõe as
seguintes classes de divisão, sendo elas timetabling escolar, timetabling em cursos
universitários, e timetabling para exames.
Na classe nomeada timetabling escolar, temos que a mesma busca construir
a programação semanal da instituição. Logo, a saída para esse problema deve ser
única para cada classe pertencente à escola, pois um professor não pode estar em
duas salas ao mesmo tempo, o que se difere para as disciplinas desde que sejam
ministradas por professores distintos. Já a classe timetabling em cursos
universitários, destina-se a minimizar a oferta de disciplinas em um mesmo horário
que tenham alunos em comum.
Por fim temos a classe timetabling para exames, que busca realizar o
agendamento de horários para se aplicar exames de disciplinas pertencentes a
cursos universitários. Desse modo, para o timetabling universitário, é dado o
enfoque na redução de choque de exames que possuem alunos em comum,
separando os exames para os alunos o tanto quanto possível.
Tais classificações descritas pelo autor podem não compreender todo o
problema, pois o mesmo pode estar presente em duas das classes descritas
anteriormente e não possuir similaridade com apenas uma. Essa eventualidade
pode ser provocada quando se tem situações como a de um estudante que tem
muita liberdade na escolha de seus horários.

2.1.1 Restrições

Dado o problema de timetabling, temos as restrições pertinentes a ele que


são necessárias ou não resolver para se obter uma solução satisfatória. Tais
restrições são referenciadas como forte (hard) ou fracas (soft) na literatura.
Restrições do tipo forte devem ser satisfeitas para solucionar o problema, já as
fracas não possuem essa obrigatoriedade, mas sua aplicação afeta diretamente a
qualidade da solução (HAMAWAKI, 2005).
Dentre as diversas restrições de uma instituição, a mesma tem como foco
principal três indivíduos: os alunos, os professores e a própria instituição
16

(HAMAWAKI, 2005). Os alunos, através da grade horária, compreenderão os


horários e as disciplinas que deverão assistir diariamente. Os professores a utilizam
como a representação da sua agenda de compromissos. E por fim, a instituição, que
deverá manter o controle dos recursos que possui para assim atender ao máximo a
necessidade de todos, buscando minimizar conflitos.
Com base nos indivíduos citados anteriormente, deve-se compreender
claramente o que cada tipo de restrição atenderá. A exemplo disso, caso todas as
restrições de uma instituição forem do tipo forte, dificilmente será obtida uma grade
horária que as satisfaçam completamente, levando em conta um número baixo de
de professores disponíveis para atender diversas turmas em uma instituição. Já para
o caso contrário, se todas forem do tipo fraco, teremos uma grade horária ineficiente,
com necessidades importantes não atendidas.
Analisando os exemplos já apresentados, pode-se dividir as restrições quanto
a sua classe. Para isso, definem-se como obrigatórias as que dizem respeito à
instituição de ensino, tais como disciplinas e horários pré-definidos, e não
obrigatórias as que são voltadas a satisfazer a vontade de professores e alunos,
podendo haver conflitos.
Considerando-se as restrições citadas por Timóteo (2002), é possível
exemplificar algumas viáveis para solucionar parte do problema e de forma genérica.
Para restrições do tipo forte, tem-se como exemplo a colisão por professor, que
busca evitar a simultaneidade em se ministrar disciplinas por um mesmo professor,
em um mesmo horário. Outro exemplo de restrição é a média de aulas por dia, que
através da carga horária semanal utilizada na instituição, busca gerar uma média
diária de aulas para as turmas. Dessa forma, esta restrição controlará a quantidade
de aulas por dia para cada turma.
Um exemplo de restrição fraca que pode-se obter das expostas pelo autor é o
controle de horários esparsos, pois trata a formação de horários vagos na grade
horária gerada, buscando minimizar essas ocorrências. Essa condição pode não ser
obrigatória, pois dependerá da disposição de professores pela instituição e da forma
que a mesma aborda o problema. Devido à especificidade de cada restrição, é
necessário chegar a um consenso previamente antes de defini-las.
17

2.1.2 Complexidade

Segundo Schaerf (1999) o problema de timetabling faz parte da classe NP-


Completo em todas suas variantes. A classe de problemas NP-Completo pertence à
classe NP e NP-Difícil simultaneamente, como observado na Figura 1. A primeira
classe trata, respectivamente, dos problemas que possuem solução para apenas
instâncias em tempo polinomial, e a classe seguinte engloba problemas pelo menos
tão difíceis quanto qualquer outro da classe NP (GONZAGA de OLIVEIRA, 2011).

Figura 1: Relação entre as classes NP, NP-Difícil e NP-Completo.

Fonte: adaptado de Gonzada de Oliveira (2011).

Schaerf (1999) ressalta que é possível obter a solução exata para o problema
de timetabling apenas em casos pequenos, contendo no máximo 10 disciplinas.
Desse modo, neste trabalho, não foi implementada a abordagem ingênua neste
trabalho. Através da proposta apresentada por Frangouli et al. (1995) para o
timetabling universitário, obtém-se a Equação 1, resultando no campo de busca para
se encontrar esta solução exata.

CBTU =(DS∗AD∗SD)D∗NA (1)

onde:
CBTU campo de busca para o problema timetabling universitário;
DS a quantidade de dias da semana letiva;
AD número máximo de aulas diárias;
SD número de salas disponíveis da instituição;
D número de disciplinas, para o semestre atual;
NA número de aulas a serem ministradas durante a semana.
18

De modo a exemplificar o emprego da Equação 1, tendo como base uma


instituição que possui 30 disciplinas diferentes para um semestre, sendo divididas
em 4 aulas semanais, em um período de 5 dias úteis da semana letiva, com no
máximo 10 possíveis horários para ministrá-las diariamente e 3 salas disponíveis.
Utilizando a equação citada, anteriormente, tem-se que (5∗10∗3)4∗30=1.35∗10261 é
a representação das possíveis soluções para o problema do timetabling, como cita
Frangouli et al. (1995). Segundo o autor, o problema é encontrar uma grade horária
neste vasto campo de busca, que satisfaça todas as restrições impostas a ele.

2.2 Metaheurísticas

Algoritmos que utilizam de heurísticas atuam por meio de buscas em um


conjunto de soluções, sem a garantia da otimalidade para o resultado obtido para o
problema (TIMÓTEO, 2002). As metaheurísticas são uma subclasse dos métodos
heurísticos, sendo elas mais flexíveis pois possuem uma estrutura genérica capaz
de se adaptar ao problema.
Mesmo com toda sua flexibilidade, as metaheurísticas não garantem a
otimalidade global (melhor solução) do problema. Seus métodos de resolução
permitem efetuar a seleção, por meio de escolhas estratégicas, das piores soluções
dentre as já encontradas para assim superar a otimalidade local (soluções
satisfatíveis mas não ótima) (ARROYO, 2002). Dessa forma, é possível obter uma
solução ótima, sem a garantia de ser global, quase sempre sendo local.

2.2.1 Categorias e Aplicações

Mesmo sendo descritas como estratégias de busca, as metaheurísticas


possuem diversas variações que permitem categorizá-las por suas características
em comum (SUCUPIRA, 2004). As metaheurísticas são classificadas como
construtivas, de relaxação, de busca por entornos, e evolutivas.
As metaheurísticas construtivas, tratam-se daquelas que estabelecem meios
para se obter uma solução satisfatível por meio da definição de seus componentes.
Usualmente, dentre estas metaheurísticas, a estratégia clássica a ser utilizada é a
gulosa, na qual se insere um elemento à solução parcial, para assim obter os
melhores resultados de forma imediata. Uma metaheurística possível de se
19

exemplificar para esta classe é o Procedimento de pesquisa adaptável randomizado


ganancioso (Greedy Randomized Adaptive Search Procedure, GRASP).
Para as metaheurísticas de relaxação, temos que as mesmas buscam efetuar
modificações na modelagem original do problema a ser solucionado, construindo um
mais simples chamado de problema relaxado. A solução para este tipo de problema
poderá ser encontrada com eficiência, ao se fornecer informações que guiaram o
algoritmo na busca da solução do problema primário.
A metaheurística de busca por entornos é definida por um procedimento que
percorre espaços de buscas compostos pelas possíveis soluções, levando-se em
conta a vizinhança da solução em análise. Para essa metaheurística, a estrutura do
problema tem um custo para a geração da solução. Quanto maior for a estrutura, o
problema tende a perder desempenho em cada iteração. Enquanto que estruturas
com baixa diversificação podem limitar o espaço de busca. As metaheurísticas:
Subida de Encosta (Hill-Climbing), VNS (Variable Neighbourhood Search), Busca
Local Guiada (Guided Local Search), Recozimento Simulado (Simulated Annealing),
Threshold Accepting, dentre outras, compõem a categoria de Busca por Entornos.
Por fim, há a categoria das metaheurísticas evolutivas, que através de uma
população inicial geram interações entre seus elementos, de forma a preservar os
que forem desejáveis, para assim melhorar a média de suas soluções de acordo
com as gerações sem comprometer sua diversidade. Compõem esta classe as
metaheurísticas nomeadas por Algoritmos Genéticos, Algoritmos Meméticos, os
Algoritmos de Estimação de Distribuição, a Busca Dispersa (Scatter Search), por fim
o Path Relinking.
Existem metaheurísticas que não se enquadram entre as categorias descritas
anteriormente, por serem focadas na utilização de recursos computacionais
especiais ou por estarem contidas em mais de uma das classes. Algumas destas
metaheurísticas são as de Decomposição, as Redes Neurais Artificiais, a de
Otimização Extrema (Extreme Optimization), dentre outras.
Um exemplo da utilização de uma metaheurística de relaxação segundo
Sucupira (2004), está na eliminação da obrigatoriedade das variáveis serem inteiras,
em um problema de programação linear. Assim, em sua forma relaxada, o problema
poderá ser resolvido através da utilização de algoritmos eficientes, como o método
Simplex, sendo que a solução obtida se encontrará na mesma forma que a do
problema original.
20

A metaheurística de busca por entornos Subida de Encosta (Hill-Climbing), foi


utilizada pelo autor Librantz et al. (2010), para efetuar um comparativo com outras
metaheurísticas na obtenção de uma solução para o problema de gestão de
estoque. Em seu trabalho o autor cita que o algoritmo com reinício aleatório, trata-se
de uma melhoria na proposta realizada, efetuando-se uma série de buscas de
estados iniciais. Dessa forma aumentam-se as chances do algoritmo encontrar uma
solução, de acordo com a quantidade de reinícios.

2.3 Algoritmos Genéticos

Considerados algoritmos de otimização global, os Algoritmos Genéticos (AGs)


foram desenvolvidos a partir da inspiração no mecanismo da evolução natural
acompanhado da recombinação genética (BUCIOR, 2018). Eles são eficientes para
realizar busca de soluções ótimas ou próximas a ela, pois não possuem limitações
encontradas em métodos de busca tradicionais (HAMAWAKI, 2005).
A teoria da evolução natural privilegia os melhores indivíduos, com maior
probabilidade de reprodução. Dessa forma, seus descendentes farão com que seus
códigos genéticos persistam ao decorrer das gerações. Os códigos genéticos
constituem a identidade de cada indivíduo e são representados nos cromossomos.
Esse último refere-se a uma solução candidata para o problema, comumente
representada por uma sequência de bits (ABENSUR; OLIVEIRA, 2012). Tendo em
vista que os AGs foram inspirados em elementos da recombinação genéticos, pode-
se observar na Tabela 2 a forma de representação dos termos genéticos nos AGs.

Tabela 2: Representação de termos da recombinação genética em AGs.

Elementos Genéticos Algoritmos Genéticos

Cromossomo Palavra binária, vetor, etc.

Gene Característica do problema

Alelo Valor da característica

Genótipo Estrutura

Fenótipo Estrutura submetida ao problema

Indivíduo Solução
Fonte: adaptado de Izquierdo (2013).
21

Entre os diversos elementos da genética temos que o cromossomo é um


indivíduo, que possui um conjunto de características chamada genótipo. Cada
característica pertencente ao genótipo é chamada de gene, sendo que o mesmo
possui um conjunto de valores que pode assumir, chamado de alelo. O processo de
decodificação dos genes resultam em características chamadas fenótipos (LUCAS,
2002). A partir da Tabela 2, pode-se ter conhecimento do que cada uma das
descrições acima representam em um AG.
Dado que sua estrutura é desenvolvida com base na evolução natural e na
recombinação genética, os AGs se destacam perante os métodos tradicionais devido
aos parâmetros utilizados, que são a quantidade de soluções, a forma de avaliar a
solução e as regras utilizadas (TIMÓTEO, 2002). Em AGs, não se trabalha com os
parâmetros diretamente, mas com a codificação dos mesmos. Um indivíduo em AGs
representa um conjunto de soluções e não uma solução unitária. Eles utilizam de
informações de custo ou de recompensa, dentre outras regras para validar uma
solução obtida, além de possuir regras probabilísticas não determinísticas.
Seu funcionamento ocorre primeiramente pela determinação de uma
população inicial de cromossomos, sendo avaliado separadamente os indivíduos da
população pela função de avaliação gerada. Em seguida, selecionam-se os
melhores indivíduos para gerar os descendentes da próxima geração, iniciando a
etapa de reprodução. Posteriormente são aplicadas as operações de cruzamento e
de mutação, etapas em que são realizadas reproduções dos indivíduos. Finalmente,
a nova população gerada será exposta ao critério de parada estabelecido. Caso o
mesmo seja satisfeito, o algoritmo retorna o cromossomo gerado. Caso contrário,
será realizado todo o processo novamente, assim como observado na Figura 2.
22

Figura 2: Estrutura de funcionamento tradicional de um Algoritmo Genético.

Fonte: adaptado de LUCAS (2002).

2.3.1 Representação do indivíduo, População Inicial e Avaliação

Visto que a representação de um indivíduo para um Algoritmo Genético é


responsável pelo seu desempenho, trata-se de uma das tarefas mais importantes a
ser desenvolvida (LUCAS, 2002). Os meios de representação dependem
diretamente do problema em questão. Existem diversas formas de se representar
um indivíduo, dentre eles temos a binária utilizada para problemas de foco numérico
e inteiro sendo eles 0 e 1, as representações numéricas, que utilizam números reais
e as representações híbridas que fazem uso das representações binárias e
numéricas (ALMEIDA, 2015).
Levando em conta os tipos de representação citados, Almeida (2015)
descreve que a forma binária é a mais simples e utilizada dependendo do problema.
Entretanto, não oferece bom desempenho, assim como a representação por
números reais (ponto flutuante). Independente da representação utilizada, a mesma
deve ser capaz de representar todo o espaço de busca a ser investigado.
23

Existem diversas formas para se obter a população inicial de um problema, o


que dependerá diretamente da forma de representação adotada. Conforme Ribeiro
Filho (2001), ao se formar uma população inicial para um AG, tem-se que a
quantidade de indivíduos pertencentes a ela é fixa durante todo o processo evolutivo
(ciclo de etapas efetuadas pelo AG), sendo que a determinação desse parâmetro
ocorre de forma empírica.
A etapa de avaliação é realizada por meio de uma função elaborada para
melhor representar o problema, tendo por objetivo o fornecimento da medida de
aptidão para cada indivíduo da população. As funções de avaliação são específicas
para cada problema.

2.3.2 Seleção

Existem diversas técnicas para selecionar os indivíduos que farão parte da


etapa de reprodução. Nos trabalhos iniciais, a forma de seleção dos indivíduos era
realizada com base no processo de seleção natural, em que os mais aptos tinham
mais chance de serem escolhidos, como cita Ribeiro Filho (2001).
Dentre as diversas formas de se realizar a seleção de um indivíduo, no
trabalho de Freitas et al. (2007), encontram-se as seguintes maneiras: seleção
determinística, em que os indivíduos são selecionados a partir de uma função que
calcule o grau de expectativa de geração de descendentes; seleção por torneio, que
ao se sortear aleatoriamente dois indivíduos, é realizada uma comparação entre
eles, sendo escolhido o que obtém o melhor valor de fitness; seleção aleatória, que
considera todos os indivíduos com mesmo valor de fitness, em que pode ser
escolhido indivíduos inaptos e provocar estagnação da solução; steady state
selection (seleção de estado estacionário), que substitui um pequeno número de
indivíduos da geração atual, pelos seus descendentes obtidos a partir dos
cruzamentos e mutações.

2.3.3 Cruzamento

Também chamado de crossover, trata-se da simulação do fenômeno de


cruzamento, ou seja, a troca de fragmentos entre indivíduos (HAMAWAKI, 2005).
Esse procedimento gera os descendentes a serem utilizados nas gerações
24

seguintes. Para efetuar este cruzamento existem diversas técnicas, com base no
trabalho de Ribeiro Filho (2000) tem-se as seguintes técnicas de cruzamento: com
corte em um ponto, com corte em dois pontos, com múltiplos pontos e segmentado.
Para a técnica de cruzamento com corte em um ponto, considerada padrão
para um AG, seu funcionamento se inicia com o sorteio aleatoriamente um ponto,
chamado de ponto de corte e a partir dele será efetuada a troca genética entre os
indivíduos como podemos observar na Figura 3. Possuindo o mesmo funcionamento
que a técnica anterior, o cruzamento com corte em dois pontos se difere por utilizar
dois pontos onde serão efetuados os cortes, como pode ser observado na Figura 4.

Figura 3: Funcionamento do cruzamento com corte de um ponto.

Fonte: autoria própria.

Figura 4: Funcionamento do cruzamento com corte de dois pontos.

Fonte: autoria própria.

Por se tratar de uma generalização das técnicas apresentadas anteriormente,


o cruzamento com múltiplos pontos difere-se das mesmas ao se efetuar o sorteio de
vários números fixos para pontos de corte. Segundo o autor, em grande parte dos
25

casos essa técnica não funciona de maneira eficiente. Por fim, tem-se o cruzamento
segmentado, que se apresenta como uma variação da técnica anterior, onde não se
mantém fixo o valor dos pontos obtidos anteriormente, sendo assim a cada geração
serão gerados novos pontos.

2.3.4 Mutação

Recurso que oferece meios para se introduzir novos elementos nos indivíduos
criados, promovendo a diversidade e a variabilidade extra da população, sem
interromper o progresso já alcançado pelo algoritmo genético (BUCIOR, 2018).
Permite que o algoritmo trabalhe sobre um campo de busca maior, não dependendo
somente dos indivíduos obtidos pelo cruzamento genético (TIMÓTEO, 2002).
Em Almeida (2015), são descritas das técnicas de mutação tradicional,
dirigida e com base em ordem. Sendo que a primeira acontece na representação
binária, de forma que se é sorteado um valor que representará o gene escolhido
para ser alterado, como pode ser observado na Figura 5.

Figura 5: Mutação tradicional.

Fonte: autoria própria.

Para o segundo caso, se é necessário um certo número de gerações, pois


dessa forma, o algoritmo busca encontrar o esquema dominante dentro de uma
representação binária, aplicando o operador lógico XNOR (negação da disjunção)
nos cromossomos para determinar este esquema. Essa operação resulta na
atribuição do valor 0 em todos os indivíduos que possuem genes iguais, e 1 nos que
forem diferentes. Ao inverter o resultado (operação XNOR), obtém-se uma máscara
que equivale ao esquema dominante.
Por fim, tem-se a mutação com base em ordem, que consta de mudanças
locais em cromossomos. Existem três maneiras de se realizar esta mutação, a
26

permutação de elementos, a inversão de sublista e a mistura de sublista. Na


primeira, são escolhidos dois elementos do indivíduo de forma aleatória e os troca
de posição. Para a segunda forma, escolhe-se dois pontos no indivíduo de forma
aleatória e inverte a ordem dos genes presentes neste intervalo. Já na última forma,
são escolhidos dois pontos de forma aleatória assim como na anterior, no entanto os
genes presentes neste intervalo são reorganizados de forma aleatória.

2.3.5 Pseudocódigo, Condições de Parada e Aplicações

O funcionamento básico de um AG pode ser observado na Figura 6, através


de seu pseudocódigo. De modo que se inicie pela geração da população inicial,
seguida do calculo de aptidão (fitness) de cada indivíduo e do início da análise de
satisfação da condição de parada, junto da etapa de reprodução.
Enquanto não atingir a condição de parada, serão selecionados dois
indivíduos para a etapa de cruzamento seguida da mutação. Posteriormente,
calcula-se novamente seu grau da aptidão. A condição de parada para este
algoritmo pode empregar vários parâmetros, sendo eles o estabelecimento de um
período de tempo máximo para execução, um número máximo de gerações e o
critério de convergência, que lida com a similaridade dos indivíduos da população.

Figura 6: Pseudocódigo de um AG.

Fonte: adaptado de TIMÓTEO (2002).


27

Dentre os critérios citados, Timóteo (2002) retrata que o critério de


convergência pode ser inapropriado em certos casos, pois existem situações que a
convergência esperada dos indivíduos pode demorar muito tempo. Já o critério que
leva o tempo de execução como ponto de parada pode ser abstrato, pois este tempo
pode ser diferente de máquina para máquina. Por fim, o número de gerações é
considerado pelo autor como a melhor escolha para se encerrar o processamento de
um AG, pois independe da arquitetura da máquina utilizada tornando-o mais
realístico.
Os algoritmos genéticos podem ser aplicados a vários problemas de
otimização e possuem diversos parâmetros ou características que precisam ser
combinadas para se obter a melhor solução. AGs podem ser utilizados para tratar
problemas com muitas restrições, com condições que não podem ser representadas
matematicamente, como também problemas com grande espaço de busca.
28

3 MATERIAL E MÉTODOS

Neste Capítulo, descrevem-se a metodologia de pesquisa, as ferramentas


utilizadas durante o trabalho. Sendo descrita na Seção 3.1 a metodologia de
pesquisa, seguida da Seção 3.2, que aborda os detalhes da implementação do
projeto computacional e as ferramentas utilizadas durante a realização deste
trabalho.

3.1 Metodologia de Pesquisa e Materiais

O conhecimento necessário para a realização deste trabalho foi adquirido por


meio da compreensão do problema timetabling, dos problemas enfrentados ao
utilizá-lo e a classe de problemas a que pertence, assim como descrito na Seção
2.1. Nessa fase também ocorreu o estudo de heurísticas e metaheurísticas, com
enfoque em algoritmos genéticos como observado na Seção 2.2. Este conhecimento
foi obtido por meio da leitura de artigos e livros, sendo eles encontrados em
plataformas de divulgação dos mesmos.
O trabalho foi desenvolvido no Instituto Federal de Educação, Ciência e
Tecnologia do Sul de Minas Gerais - Campus Passos (IFSULDEMINAS - Campus
Passos). Utilizou-se a infraestrutura disponibilizada pela instituição, como
laboratórios de computação e os recursos oferecidos para estudos, através da
biblioteca do campus.
Para o desenvolvimento do projeto, utilizou-se para a execução das
simulações um computador cujas configurações são compostas por uma memória
RAM de 8GB, um processador Intel Core i5-5200U CPU @ 2.20 GHz, placa de
vídeo NVIDIA GeForce 820M e um SSD de 120GB. Nas implementações, foi
utilizada a linguagem de programação Java e a IDE NetBeans, em sua versão 8.2.

3.2 Detalhes da implementação

O objetivo do projeto computacional foi obter, por meio de um algoritmo


genético, a resolução para o problema timetabling de forma genérica. De forma que
o mesmo não esteja vinculado a apenas uma instituição, permitindo assim uma certa
29

flexibilização em suas restrições. Desse modo possibilitando aplicá-lo a mais


instituições mantendo a qualidade da solução.
Desenvolveu-se um programa computacional genérico, que aceita como
entrada, restrições fortes e fracas considerando que o usuário definirá as restrições
necessárias referentes a professores e a disciplinas, seguidas de seu tipo para
formulação estrutural do algoritmo. A obtenção da solução para esse programa
utilizou a metaheurística algoritmos genéricos, conforme seu funcionamento
apresentado pela Figura 2 (pág. 22).
Dentre as possíveis escolhas de divisões dos períodos em um ano letivo, são
comumente aplicadas as divisões semestrais e bimestrais. Em cada divisão, serão
alocadas as disciplinas que serão ministradas no período, junto da carga horária
para cada uma delas, como observa-se nas Figuras 7 e 8.

Figura 7: Ano letivo dividido em semestres.

Fonte: autoria própria.

Figura 8: Ano letivo dividido em bimestres.

Fonte: autoria própria.

Baseando-se na estrutura de divisão semestral apresentada anteriormente


para este projeto, será possível criar grades horárias para apenas um semestre por
vez. Assim, para turmas que pertençam ao ensino superior, será gerada uma tabela
30

horária e para turmas do ensino médio serão geradas duas grades seguindo o
formato de primeiro bimestre e segundo bimestre.

3.2.1 Representação e validação do indivíduo

A representação do indivíduo baseia-se na criação de um cromossomo, que


deve conter toda a informação relativa a grade horária (HAMAWAKI, 2005). Para a
realização desta representação, utilizou-se a estrutura padrão de um cromossomo.
No entanto, cada gene (intervalo) do cromossomo representará um dia da semana
letiva, assim como observado na Figura 9.

Figura 9: Representação cromossomo.

Fonte: autoria própria.

A partir da representação apresentada anteriormente, cada gene do


cromossomo possui uma tabela com n linhas e m colunas, sendo que as colunas
correspondem a cada posição das turmas inseridas anteriormente. Já as linhas
correspondem aos horários pré-definidos pelos usuários, assim como apresentado
pela Figura 10.
Figura 10: Gene de um cromossomo.

Fonte: autoria própria.


31

Cada intervalo da tabela contém dois valores como observado na Figura 10,
sendo eles a posição da disciplina e do professor que a ministrará, ambos valores
correspondem a posição de um ArrayList (vetor dinâmico) para disciplinas e um para
professores. A seleção de professores para as disciplinas passa por uma avaliação
primária para verificar se a disciplina já possui um professor responsável, ou se o
possível professor possui alguma restrição que o impossibilite de ministrá-la.
A avaliação de um indivíduo foi realizada a partir da somatória de restrições
fortes e fracas satisfeitas, subtraída do valor do maior individuo. Dessa forma, foi
possível obter os melhores indivíduos para a geração de novas gerações. Para
validar um indivíduo como satisfatório para o problema, foram analisadas suas
restrições fortes, considerando-se que quanto mais restrições ele quebrar, mais
inaceitável ele se torna.

3.2.2 Criação do individuo

A princípio, é necessário que o usuário cadastre todas as turmas que serão


trabalhadas durante a execução, junto aos professores que compõem o corpo
docente da instituição e suas restrições. Para inserir uma turma, é necessário o
nome, o tipo de ensino, sendo que o mesmo pode ser superior, médio ou
fundamental, seguido do ano ou período e bimestre que a turma se encontra.
Juntamente de seu período de atuação, seja ele matutino, vespertino, noturno ou
integral e por fim as disciplinas, estas são compostas por uma nomenclatura, sua
carga horária semanal e o bimestre em que a mesma será ministrada.
Com a inserção das turmas, se faz necessária a disponibilização da
quantidade de aulas máximas por dia para cada tipo de ensino. O cadastro de
professores consta do nome do professor e as disciplinas que ele está habilitado a
ministrar, juntamente das restrições que são pertinentes a ele. Após a realização dos
cadastros necessários, tem-se os conjuntos que serão utilizados para a criação do
indivíduo em si.
As informações inseridas foram armazenadas em vetores dinâmicos e
matrizes para definir a estrutura. Com a coleta dos dados realizada, deu-se início a
geração do individuo para formar a população, assim como observado na Figura 11.
32

Para sua validação, utilizou-se a grade horária do IFSULDEMINAS – Campus


Passos, com as restrições definidas para o segundo semestre do ano de 2019.

Figura 11: Pseudocódigo da geração de indivíduos.

Fonte: autoria própria.

3.2.1 Restrições pertinentes à implementação

Considerando que dentre as restrições existem dois tipos, as fortes e as


fracas, foi realizado um levantamento nos trabalhos de Freitas (2007), Francisco
(2011), Abensur e Oliveira (2012), Reis Filho e Origuela (2018), Nogueira (2018) e
Silveira (2018) para formar a base das restrições que farão parte da solução. Dessa
forma, parte das restrições fortes dizem respeito à instituição e diversos conceitos
33

foram definidas, sendo que as restrições fracas que dizem respeito aos professores
e disciplinas ficaram a cargo do usuário inseri-las.
Para armazenamento das restrições, foram desenvolvidas listas referenciando
professores e disciplinas. Às restrições fortes, foi associado peso 0, que
corresponde à necessidade de serem satisfeitas. Já às restrições fracas, foram
associados pesos no intervalo de 1 a 5, sendo que o peso 1 representa a restrição
com maior relevância e a de peso 5 menor relevância.
Ao se utilizar a grade horária desenvolvida em 2019 no IFSULDEMINAS –
Campus Passos para a validação do estudo, têm-se restrições fracas e fortes
voltadas aos professores. Para as fracas, foram estabelecidas preferências de dias
durante a semana para se ministrar as disciplinas. Já as fortes estão relacionadas à
necessidade de cumprir a preferência de dias, para aqueles que possuírem
afastamento para qualificação (mestrado ou doutorado).
Para auxiliar o usuário no tratamento e escolha das restrições que farão parte
da solução, durante o cadastro de disciplinas e de professores, são ofertadas
possíveis restrições que poderão fazer parte da solução final caso necessário.
Desse modo, o usuário escolherá as que melhor correspondem ao problema a que
se pretende resolver. pode-se observar as restrições na Figura 12.

Figura 12: Pseudocódigo da geração de indivíduos.

Um mesmo professor não pode dar aulas a turmas diferentes em salas de


aulas distintas no mesmo horário
Limites de carga horária semanal que pode ser atribuído aos professores de 24
horas-aula
Se duas ou mais matérias forem do mesmo professor, elas deverão estar em
horários diferentes
Restrições fortes
Não pode existir mais que um professor na mesma classe em um mesmo
horário
Deve ser respeitado o número de aulas por semana de cada disciplina
Disciplina exclusiva para um professor
Afastamento ou indisponibilidades do professor de lecionar na faculdade em
determinados períodos
Preferencia por algum dia da semana
Restrições fracas A preferência de horário de cada professor
Evitar o aparecimento de janelas entre os horários
Fonte: autoria própria.
34

3.2.2 Algoritmos de seleção, cruzamento e mutação

Para realizar a seleção dos indivíduos, foram implementados os algoritmos de


seleção por torneio e por roleta. No algoritmo de seleção por roleta, primeiramente,
foi realizado a somatória do fitness de todos os indivíduos da população. Em
seguida, realizou-se o sorteio de um valor entre 0 e o valor total somado, de modo
que esse valor encontrado representa o indivíduo. Para retorná-lo, foi necessário
somar novamente os valores até que se encontrasse um valor igual ou menor ao
gerado. Já no algoritmo de seleção por torneio, realizou-se o sorteio de n indivíduos
para disputarem entre si. Nesse método, vencia aquele que possuía o maior valor de
fitness, sendo então o indivíduo retornado, para continuação das avaliações.
Os algoritmos de cruzamento implementados foram os de um ponto e dois
pontos. Para o cruzamento em um ponto, foi realizado, a princípio, o sorteio do
ponto de corte, seguida da aplicação dessa alteração, retornado assim o individuo.
Para o segundo algoritmo, foi realizado o sorteio de um ponto, seguido do segundo,
para assim aplicar as modificações e retornar o indivíduo gerado. Em ambos os
métodos de cruzamento, a taxa de mutação foi de 10%, sendo que essa taxa
representa a porcentagem alterada do indivíduo.
No algoritmo de mutação, foi necessário equilibrar novamente o indivíduo,
pois após a operação de cruzamento poderia acontecer a sobrecarga de disciplinas
em uma grade, ou até mesmo a ausência dela. Dessa foma, foi realizado, a princípio
uma limpeza na grade, para remoção de disciplinas com sobrecarga de aulas e das
disciplinas com dois professores lecionando na mesma grade.
Para remoção de professores diferentes em uma mesma disciplina, optou-se
por manter o professor que estava presente no pai principal, pois assim não se
desequilibraria a divisão de aulas por professores. Caso houvesse disciplinas
faltantes na solução gerada, as mesmas foram incluídas novamente na grade, de
forma aleatória.
35

4 RESULTADOS E DISCUSSÕES

Para que seja aceita uma solução para o problema, é necessário que a
mesma possua todas as restrições fortes satisfeitas. Neste trabalho, não foi possível
obter uma solução satisfatória que atenda a restrição forte que está sendo tratada
por meio da aleatoriedade, para a base de dados do IFSULDEMINAS – campus
Passos. Isso ocorre pois, a solução estagna conforme os valores se aproximam da
solução desejada. Foram realizados 4 testes para uma população de 50, 100 e 200
indivíduos, empregando os algoritmos de seleção e cruzamento implementados.
Foram utilizados os valores de 200, 500 e 1000 gerações.
Na primeira simulação foi utilizado o algoritmo de seleção por roleta e o
cruzamento em um ponto, para gerações de tamanho 200, 500 e 1000 e
empregando 50, 100 e 200 indivíduos. Os resultados contendo a qualidade das
soluções obtidas nas simulações podem ser observados nas Figuras 13, 14 e 15.
Ainda, o tempo de execução obtido nesses mesmos testes pode ser observado na
Tabela 3.

Figura 13: qualidade das soluções obtidas empregando seleção por roleta, cruzamento em um ponto
e 50, 100 e 200 indivíduos e um valor máximo de 200 gerações.

Fonte: autoria própria.


36

Figura 14: qualidade das soluções obtidas empregando seleção por roleta, cruzamento em um ponto
e 50, 100 e 200 indivíduos e um valor máximo de 500 gerações.

Fonte: autoria própria.

Figura 15: qualidade das soluções obtidas empregando seleção por roleta, cruzamento em um ponto
e 50, 100 e 200 indivíduos e um valor máximo de 1000 gerações.

Fonte: autoria própria.

Tabela 3: Tempo de execução obtido nas simulações.

População
Gerações
50 100 200
200 29s 58s 123s
500 72s 141s 285s
1000 112s 212s 394s
Fonte: autoria própria.
37

O segundo teste foi realizado utilizando os algoritmos de seleção por roleta e


cruzamento de dois pontos. Os demais procedimentos utilizados foram os mesmos
como descritos na simulação anterior. Os resultados para os testes podem ser
observados nas Figuras 16, 17 e 18 e seus tempos de execução na Tabela 4.

Figura 16: qualidade das soluções obtidas empregando seleção por roleta, cruzamento em dois
pontos e 50, 100 e 200 indivíduos e um valor máximo de 200 gerações.

Fonte: autoria própria.

Figura 17: qualidade das soluções obtidas empregando seleção por roleta, cruzamento em dois
pontos e 50, 100 e 200 indivíduos e um valor máximo de 500 gerações.

Fonte: autoria própria.


38

Figura 18: qualidade das soluções obtidas empregando seleção por roleta, cruzamento em dois
pontos e 50, 100 e 200 indivíduos e um valor máximo de 1000 gerações.

Fonte: autoria própria.

Tabela 4: Tempo de execução obtido empregando seleção por roleta e cruzamento em dois pontos.

População
Gerações
50 100 200
200 22s 42s 85s
500 55s 103s 200s
1000 113s 221s 407s
Fonte: autoria própria.

A terceira simulação realizada empregou os algoritmos de seleção por torneio


e cruzamento de um ponto, mantendo os demais valores conforme descrito nos
testes anteriores. Os resultados para os testes podem ser observados nas Figuras
19, 20 e 21 e seus tempos de execução na Tabela 5.
39

Figura 19: qualidade das soluções obtidas empregando seleção por torneio, cruzamento em um ponto
e 50, 100 e 200 indivíduos e um valor máximo de 200 gerações.

Fonte: autoria própria.

Figura 20: qualidade das soluções obtidas empregando seleção por torneio, cruzamento em um ponto
e 50, 100 e 200 indivíduos e um valor máximo de 500 gerações.

Fonte: autoria própria.


40

Figura 21: qualidade das soluções obtidas empregando seleção por torneio, cruzamento em um ponto
e 50, 100 e 200 indivíduos e um valor máximo de 1000 gerações.

Fonte: autoria própria.

Tabela 5: Tempo de execução obtido nas simulações empregando seleção por torneio e cruzamento
em um ponto.

População
Gerações
50 100 200
200 32s 42s 86s
500 51s 100s 195s
1000 103s 199s 389s
Fonte: autoria própria.

A quarta e última simulação foi realizada empregando os algoritmos de


seleção por torneio e o cruzamento em dois pontos, mantendo os demais
parâmetros conforme descrito anteriormente. Os resultados para as simulações
podem ser observados nas Figuras 22, 23 e 24 e na Tabela 6, seus tempos de
execução.
41

Figura 22: qualidade das soluções obtidas empregando seleção por torneio, cruzamento em dois
pontos e 50, 100 e 200 indivíduos e um valor máximo de 200 gerações.

Fonte: autoria própria.

Figura 23: qualidade das soluções obtidas empregando seleção por torneio, cruzamento em dois
pontos e 50, 100 e 200 indivíduos e um valor máximo de 500 gerações.

Fonte: autoria própria.


42

Figura 24: qualidade das soluções obtidas empregando seleção por torneio, cruzamento em dois
pontos e 50, 100 e 200 indivíduos e um valor máximo de 1000 gerações.

Fonte: autoria própria.

Tabela 6: Tempo de execução obtido nas simulações empregando seleção por torneio e cruzamento
em dois pontos.

População
Gerações
50 100 200
200 35s 42s 125s
500 54s 103s 206s
1000 111s 214s 402s
Fonte: autoria própria.

De acordo com os resultados obtidos, pode-se afirmar que quanto maior for o
tamanho da população, maior será o tempo gasto pelo algoritmo para coletar
respostas, independente da quantidade de gerações utilizadas como paramento. Ao
analisar o resultado apresentado pelos algoritmos, observou-se que o tempo
necessário para se obter modificações no indivíduos que possuem as maiores
populações é superior aos demais.
A qualidade de um individuo é definida a partir da quantidade de restrições
fortes que o mesmo não satisfaz. Deve-se levar em conta que a única restrição forte
definida para este trabalho a ser calculada é a correspondente a ocorrência do
mesmo professor ser escalado para aulas de disciplinas distintas em mesmo horário,
as demais restrições foram tratadas ao decorrer da implementação.
Considerando o que foi dito, ao se analisar as figuras anteriores aquelas que
possuírem o valor de qualidade próximo a 0, são consideradas as melhores
43

soluções para o problema. Dentre os algorítimos utilizados, o algoritmo de seleção


por torneio junto ao algoritmo de cruzamento de dois pontos apresentaram os
melhores resultados, considerando que ouve a ocorrência de apenas 3 professores
em salas distintas em mesmo horário.
Em relação ao tempo de execução, para a melhor solução foi de 103s, os
demais testes com mesma quantidade de gerações de indivíduos, o melhor
resultado pode ser observado no (ANEXO A). Dado que as possíveis soluções do
algoritmo estagnaram em um momento da execução, para a base de dados
empregada para avaliação, concluiu-se o ponto máximo de gerações necessárias,
independente do método de cruzamento e mutação empregados, é 300.
44

5 CONCLUSÃO

Neste trabalho, foi proposto um programa para solucionar o problema do


timetabling empregando algoritmos genéticos. Foram avaliados os métodos de
seleção por roleta e por torneio e foi realizado o cruzamento em um e em dois
pontos. Para validação dos resultados, foi utilizada a base de dados fornecida pelo
IFSULDEMINAS – campus Passos.
A partir dos dados obtidos essa base, pode-se concluir que, mesmo não
gerando um resultado em que todas as restrições fortes são satisfeitas, o algoritmo
de seleção por torneio apresentou um melhor desempenho que os demais. Ainda, foi
verificado que, embora os testes empreguem até 1000 gerações, os valores obtidos
para testes com 250 gerações apresentaram estagnação nos resultados.
A melhor solução obtida foi através do algorítimo de seleção por torneio,
utilizando o cruzamento de dois pontos, como observado no (ANEXO A). Para esta
solução foram encontradas três ocorrências da quebra da restrição referente a um
professor ministrar duas disciplinas em simultâneo no mesmo horário em turmas
distintas.
Acredita-se que esta estagnação tenha sido causada pela taxa de
aleatoriedade utilizada na implementação do mesmo e a quantidade de professores
disponíveis para uma mesma disciplina. De forma que, ao se deparar com uma
disciplina com diversas aulas, porém poucos professores disponíveis, o algoritmo,
não se mostrou eficiente em escalonar estes pra obter uma melhor solução.

5.1 Trabalhos Futuros

Tem-se a criação de um novo método de mutação possa auxiliar de forma


direta, diminuindo a aleatoriedade do algoritmo, e concentrando em evitar estas
ocorrências. Logo, serão efetuados testes para avaliar o tempo de execução do
mesmo e a qualidade do indivíduo gerado, para assim compará-lo com a abordagem
ingênua.
O desenvolvimento uma aplicação web, seria utilizado para colocar este
algoritmo em funcionamento. Permitindo assim o acesso de diversas instituições de
ensino de forma gratuita.
45

REFERÊNCIAS BIBLIOGRÁFICAS

ABENSUR, Eder Oliveira; DE OLIVEIRA, Rafael Cavalcante. Um Método Heurístico


Construtivo para o Problema da Grade Horária Escolar. Pesquisa Operacional para
o Desenvolvimento, v. 4, n. 2, p. 230-248, 2012.

ALMEIDA, Maria Weslane de Sousa. Utilização de algoritmos genéticos para


montagem de horários acadêmicos com foco na blocagem de horários. 2015.
Trabalho de Conclusão de Curso. Universidade Federal do Rio Grande do Norte.

ANDRADE, Pedro Rochavetz de Lara. Otimização na geração de grade horária


escolar através de um modelo matemático e das meta-heurísticas busca local e
iterated local search. 2014.

ARROYO, José Elias Cláudio et al. Heurísticas e metaheurísticas para otimização


combinatória multiobjetivo. 2002.

BUCIOR, Lucas; ZANIN, Fabio Asturian; LUCAS, Marcos A. Elaboração de Grades


Horárias Utilizando Algoritmos Genéticos. IX EATI - Encontro Anual de Tecnologia
da Informação, p. 30. 2018.

CISCON, Leonardo Aparecido; ALVARENGA, G. B. O problema de geração de


horários: um foco na eliminação de janelas e aulas isoladas. In: XXXVII Brazilian
Symposium of Operational Research. 2005.

DE FARIA PASSOS, Alfredo Ricardo et al. UMA APLICAÇÃO DE ALGORITMOS


GENÉTICOS AO PROBLEMA DE TIMETABLING. Engevista, v. 19, n. 4, p. 862-880,
2017.

IZQUIERDO, Rafael Crespo. Projeto de formação de células de manufatura através


da utilização de algoritmos genéticos. 2013.

FRANGOULI, Harikleia; HARMANDAS, Vassilis; STAMATOPOULOS, Panagiotis.


UTSE: Construction of optimum timetables for university courses---A CLP based
approach. In: In Proceedings of the Third International Conference on the
Practical Applications of Prolog. 1995.

FRANCISCO, Daniela Oliveira; SILVA, Ivan Nunes da. Estratégia de otimização


baseada em sistemas inteligentes aplicada ao problema de geração de grades
horárias. In: 10th Brazilian Congress on Computational Intelligence–CBIC. 2011.
46

FREITAS, Cherze C. et al. Uma ferramenta baseada em algoritmos genéticos para a


geração de tabela de horário escolar. SÉTIMA ESCOLA REGIONAL DE
COMPUTAÇÃO Bahia-Sergipe. Vitória da Conquista:[sn], 2007.

GONZAGA DE OLIVEIRA, S.L. Algoritmos e seus fundamentos. Lavras: UFLA,


2011. 420 p. Bibliografia: p. 349-373. ISBN 978-85-87672-97-9.

GOTLIEB, C. C. The construction of class-teacher timetables. In: IFIP congress.


1963. p. 73-77.

HAMAWAKI, Cristiane Divina Lemes. Geração automática de grade horária usando


algoritmos genéticos: o caso da Faculdade de Engenharia Elétrica da UFU. 2005.
104 f. Dissertação (Mestrado em Engenharias) - Universidade Federal de
Uberlândia, Uberlândia, 2005.

LIBRANTZ, André Felipe Henriques et al. Algoritmos de busca aplicados na


estimação de parâmetros em um modelo probabilístico de gestão de estoque.
Exacta, São Paulo, v. 8, n. 2, p. 237-248, 2010.

LUCAS, Diogo C. Algoritmos genéticos: uma introdução. Universidade Federal do


Rio Grande do Sul–Porto Alegre, 2002.

MACHADO, André Manhães; BOERES, Maria Claudia Silva. Uma proposta de


formulação do problema de programação de tabela-horário de exames de Toronto
via coloração de grafos e sua resolução pelo algoritmo de busca tabu. XLI SBPO-
Pesquisa Operacional na Gestão do Conhecimento, 2009.

NOGUEIRA, Leonardo de Souza. Um modelo de programação inteira para a


alocação de horários do Instituto de Ciências Exatas e Aplicadas da Universidade
Federal de Ouro Preto. 2018.

REIS FILHO, José Humberto Nunes dos; ORIGUELA, Leandro C. Otimização de


quadros horários escolares por meio de uma ferramenta baseada em algoritmos
inteligentes. 2018.

RESENDE, Mauricio GC; RIBEIRO, Celso C. GRASP: Greedy randomized adaptive


search procedures. In: Search methodologies. Springer, Boston, MA, 2014. p. 287-
312.
47

RIBEIRO FILHO, Geraldo. Melhoramentos do Algoritmo Genético Construtivo e


Novas Aplicações em Problemas de Agrupamento. INPE, São José dos Campos,
2000.

SCHAERF, Andrea. A survey of automated timetabling. Artificial Intelligence


Review, v. 13, n. 2, p. 87-127, 1999.

SILVEIRA, Jhonathan Alberto dos Santos et al. Uso de abordagem heurística para o
problema do quadro de horários e alocação de salas de aula. 2018.

SUCUPIRA, Igor Ribeiro. Métodos heurísticos genéricos: metaheurísticas e hiper-


heurísticas. USP: São Paulo, p. 32, 2004.

TIMÓTEO, Guilherme Tadeu Silva. Desenvolvimento de um Algoritmo Genético para


a Resolução do Timetabling. Universidade Federal de Lavras, Lavras-MG, 2002.
48

ANEXO A
Na Figura 25, pode-se observar um exemplo de solução obtida ao utilizar o algoritmo
proposto neste trabalho. Nessa Figura: i) H1 (07h-07h50), H2 (07h50-08h40), H3
(08h40-09h30), H4 (10h-10h50), H5 (10h50-11h40), H6 (13h-13h50), H7 (13h50-
14h40), H8 (15h-15h50) e H9 (15h50-16h40) referem-se aos horários de início e
término das aulas; ii) T1 (Bacharelado em Ciência da Computação (BCC) – 2°
Período), T2 (BCC – 4° Período), T3 (BCC – 6° Período), T4 (BCC – 8° Período), T5
(Técnico em Informática Integrado ao Ensino Médio (TI) – 1° ano), T6 (TI – 2°ano),
T7 (TI – 3° ano), T8 (Técnico em Produção de Moda Integrado ao Ensino Médio
(PM) – 1° ano), T9 (PM – 2° ano), T10 (PM – 3° ano), T11 (Técnico em Comunicação
Visual Integrado ao Ensino Médio (CV) – 1° ano), T12 (CV – 2° ano) e T13 (CV – 3°
ano) referem-se às turmas utilizadas para teste; iii) em cada uma das colunas, são
descritos, respectivamente, o número do código relativo à disciplina, seguido do
número de identificação do professor que deve ser lecionar nesse horário. Os
horários vagos são representados por “0 - 0”.
49

Figura 25: Individuo gerado como solução, para o problema.

Fonte: autoria própria.

Você também pode gostar