Sunteți pe pagina 1din 44

FACULDADE PITGORAS

CURSO DE CINCIA DA COMPUTAO

PAULA MYRIAN LIMA PEDROSO

PROGRAMAO POR RESTRIO: UMA SOLUO PARA RESOLVER


PROBLEMAS DE ORGANIZAO DE HORRIOS

So Lus
2014

PAULA MYRIAN LIMA PEDROSO

PROGRAMAO POR RESTRIO: UMA SOLUO PARA RESOLVER


PROBLEMAS DE ORGANIZAO DE HORRIOS

Monografia apresentada ao Curso de Cincia da


Computao da Faculdade Pitgoras, para
obteno do grau de Bacharel em Cincia da
Computao.
Orientador: Thiago Nelson Faria dos Reis

So Lus
2014

PAULA MYRIAN LIMA PEDROSO

PROGRAMAO POR RESTRIO: UMA SOLUO PARA RESOLVER


PROBLEMAS DE ORGANIZAO DE HORRIOS

Monografia apresentada ao Curso de


Cincia da Computao da Faculdade
Pitgoras, para obteno do grau de
Bacharel em Cincia da Computao.

Aprovado em: 16 / 12 / 2014

Prof. Thiago Nelson Faria dos Reis (Orientador)


Faculdade Pitgoras

Prof. Aline Lopes da Silva


Faculdade Pitgoras

Prof. Allisson Jorge Silva Almeida


Faculdade Pitgoras

Prof. Aleya de Cassia Pereira Pires


Faculdade Pitgoras

AGRADECIMENTOS
Agradeo primeiramente a Deus por sua infinita bondade e cuidado comigo.
Aos meus pais, Lene e Paulo, por me proporcionarem suporte emocional e
financeiro. Ao meu professor orientador Thiago Nelson, por me guiar nos caminhos
para a pesquisa, por sua pacincia e dedicao, ao professor Clriston Silva por
suas avaliaes com relao a escrita e pelo tempo disposto e aos professores
Arlison Wady e Aleya Pires por me ajudarem diretamente para a criao desta
monografia com dicas e informaes importantes. Aos demais professores que
contriburam direta e indiretamente para a minha formao. Aos meus familiares e
amigos que de maneira sutil, contriburam para o meu crescimento pessoal,
profissional e acadmico.

No abandone a sabedoria, e ela o proteger; ame-a, e ela cuidar de voc.


Provrbios 4:6

RESUMO
Pelo estudo da Inteligncia Artificial possvel a resoluo de problemas
antes realizados somente pelo ser humano e que agora so resolvidos de forma
mais rpida utilizando mecanismos computacionais. Com base na rea de
Computao restritiva da Inteligncia Artificial, o presente estudo mostra uma
soluo para resolver o problema da criao ou organizao da grade de horrios
dos professores, visando melhorar o desempenho dos coordenadores em suas
tarefas. So realizados estudos sobre a origem da Inteligncia Artificial, suas
subdivises e, de forma mais detalhada, os Problemas de Satisfao de Restrio,
que o mtodo base para o tratamento das particularidades no problema de
organizao na grade dos horrios e que ser aplicado no desenvolvimento do
software deste trabalho atravs do paradigma da Programao por Restrio afim
de automatizar a tarefa de organizao dos horrios, visando garantir agilidade a
este processo. Pretende-se ainda estudar biblioteca especfica para o uso de
restries, neste caso a biblioteca Choco, que foi utilizada na etapa de
implementao do programa. Desta forma, os resultados obtidos com o software
satisfizeram o que foi proposto pois houve uma organizao adequada de horrios e
disponibilidade dos professores. Por fim, a programao por restrio atendeu s
necessidades exigidas para a decomposio de um sistema complexo com
utilizaes simples.

Palavras-Chave: Organizao dos Horrios, Inteligncia Artificial, Problemas de


Satisfao de Restrio, Programao por Restrio, Choco.

ABSTRACT
The study of Artificial Intelligence is possible to solve problems before
performed only by humans and are now resolved more quickly using computational
mechanisms. Based on restrictive Computer Science Artificial Intelligence, this study
shows a solution to solve the problem of creating or organization Teachers schedule
grid, to improve the performance of the coordinators in their tasks. Studies are
conducted on the origin of Artificial Intelligence, its subdivisions and, in more detail,
the Constraint Satisfaction Problems, which is the base method for the treatment of
the peculiarities in the organization of problem in the grid of the times and to be
applied in the development software this work through the programming paradigm for
restriction in order to automate the task of organizing the schedules, to ensure agility
in this process. The aim is also to study specific library for the use of restrictions in
this case the Choco library, which was used in the program implementation stage.
Thus, the results obtained with the software fulfilled what was proposed because
there was a proper work scheduling and availability of teachers. Finally, the
programming restriction has met the needs required for the decomposition of a
complex system with simple uses.

Keywords: Organization of schedules, Artificial Intelligence, Constraint Satisfaction


Problems, Constraint Programming, Choco.

LISTA DE FIGURAS

Figura

Modelo

do

teste

de

Turing

um

agente

.........................................................................14
Figura

Arquitetura

genrica

de

...........................................................16
Figura

Representao

dos

turnos

dias

da

semana

biblioteca

Choco

...........................................20
Figura

Arquitetura

geral

da

........................................................27
Figura

Modelo

do

problema

..................................................................................31
Figura

Diagrama

de

Entidade

Relacionamento

do

Skeduler

.............................32
Figura

Modelo

de

Organizao

do

Choco

............................................................34
Figura

Importaes

do

Choco

...............................................................................35
Figura

Modelo

variveis

.....................................................................................35
Figura

10

Restries

...............................................................................................35
Figura

11

Soluo

...................................................................................................36
Grfico

professores

por

Perodo

...........................................................................36
Quadro

Tabela

dos

professores

...........................................................................37
Quadro

Permutao

dos

professores

do

Perodo

.............................................37
Grfico

Grfico

............................................................................38

de

Permutao

LISTA DE SIGLAS
IA Inteligncia Artificial.
PSR Problemas de Satisfao de Restries
ID ndice
PR Programao por Restrio
BSD Berkeley Software Distribution License
OCRE Outil Contraintes pour la Recherche et lEnseignement
API Application Programming Interface
P&D Pesquisa e Desenvolvimento
NASA National Aeronautics and Space Administration
DNA Deoxyribonucleic Acid
BD Banco de Dados
SGBD Sistema de Gerenciamento de Banco de Dados
SQL Structured Query Language
IDE Integrated Development Environment
DER Diagrama de Entidade e Relacionamento
POO Programao Orientada a Objetos

SUMRIO
1 INTRODUO ....................................................................................................... 11
2 INTELIGNCIA ARTIFICIAL ................................................................................. 13
2.1 Comportamento Inteligente .......................................................................... 14
2.2 Mquina e Ser Humano ................................................................................. 15
2.3 Agente ............................................................................................................. 16
2.4 Resolver Problemas ...................................................................................... 17
3 PROBLEMAS DE SATISFAO DE RESTRIO .............................................. 19
3.1 Definies de Problemas de Satisfao de Restrio ................................ 19
3.2 Representaes do Problema de Satisfao de Restrio ........................ 20
3.3 Tipos de Variveis ......................................................................................... 21
3.4 Tipos de Restries ....................................................................................... 22
3.5 Domnios Finitos ............................................................................................ 22
3.5.1 Busca com Retrocesso ............................................................................. 22
3.5.2 Busca Local ............................................................................................... 22
3.5.3 Propagao de Restrio .......................................................................... 23
3.6 Estrutura de um Problema Restritivo........................................................... 23
4 PROGRAMAO POR RESTRIO ................................................................... 24
4.1 Modelando o problema .................................................................................. 24
4.2 Mtodos de Soluo ...................................................................................... 24
4.3 Programao Restritiva e Problemas de Satisfao de Restries .......... 25
4.4 Resoluo de problemas .............................................................................. 25
4.5 Biblioteca Choco............................................................................................ 26
4.5.1 Histria ...................................................................................................... 26
4.5.2 Caractersticas da Choco .......................................................................... 27
4.5.3 Particularidade da Choco .......................................................................... 28
4.6 Utilizaes de Programao por Restrio ................................................. 28
4.7 Vantagens de utilizar Programao Restritiva ............................................ 29
4.8 Limitaes da Programao Restritiva ........................................................ 29
5 ESTUDO DE CASO: SKEDULER ......................................................................... 30
5.1 Elaborao do Problema ............................................................................... 30
5.2 Banco de Dados ............................................................................................. 31
5.3 Implementao do Estudo de Caso ............................................................. 33
5.3.1 Ambiente de Programao (JAVA) ........................................................... 34

5.3.2 Importando a biblioteca Choco .................................................................. 34


5.3.3 Criando o modelo e a soluo ................................................................... 35
5.4 Testes ............................................................................................................. 36
5.5 Resultados ..................................................................................................... 39
6 CONCLUSO ........................................................................................................ 40
REFERNCIAS ......................................................................................................... 41

11

1 INTRODUO
Todo incio de bimestre em uma faculdade ou universidade, existe a
necessidade de organizar os horrios dos professores com suas respectivas
disciplinas que iro lecionar. Pesquisas com base no INEP, Instituto Nacional de
Estudos e Pesquisas Educacionais, afirmam que houve um aumento de 81% de
pessoas matriculadas em ensino superior entre 2003 e 2012, com tendncias de
aumento ainda maior. Com base nos dados desta pesquisa, esse aumento do
nmero de ingressos torna a tarefa de distribuio de professores bastante
complexa, evidenciando os seguintes impasses: disponibilidade de horrio de cada
professor, afinidade para determinada disciplina e quantidade de turmas para cada
curso.
Cada instituio de ensino possui sua forma de organizar os horrios dos
professores, sendo frequentemente de forma no automtica, demandando tempo e
disponibilidade tanto dos professores quanto dos coordenadores de curso. Esse tipo
de organizao muita das vezes se torna inconsistente, pois os coordenadores
encontram dificuldades na definio dos horrios dos professores.
A fim de solucionar tal problema, necessria a criao de um software
que seja capaz fazer as divises dos horrios de acordo com as particularidades de
cada docente e curso. Entretanto, esse sistema deve ser feito de forma adaptativa
para poder satisfazer os mais diferentes requisitos que podem vir a existir.
Uma soluo para esse problema a utilizao da programao por
restrio, um paradigma que utiliza mtodos de modelagens que restringe solues
para torn-las mais completas de forma nativa. E para que possamos entender
como funciona a programao restritiva, faz-se necessrio estudar alguns conceitos
relacionados inteligncia artificial e os problemas de satisfao de restrio.
O presente trabalho tem como objetivo fazer um estudo sobre a utilizao
da programao restritiva, analisar a Choco, uma biblioteca de programao para
desenvolvimento de softwares especializada em restrio e desenvolver uma
aplicao chamada Skeduler para o referido estudo de caso com todas as
caractersticas da programao restritiva utilizando a presente biblioteca.
Este trabalho est organizado em seis sees. A segunda ser definida
os conceitos bsicos de Inteligncia Artificial e seus mtodos para buscar solues.

12

Na terceira sero apresentados mtodos de resoluo de impasses chamados


Problemas de Satisfao de Restries.
Na quarta abordamos a Programao por Restrio, um paradigma
especializado em impasses tendo como base as disciplinas demonstradas nas
sees dois e trs, alm de explicar sobre uma biblioteca de programao chamada
Choco que apta para trabalhar com restries. Continuando nesse captulo, ser
demonstrado a utilidade desse paradigma e os benefcios de aplicar tal biblioteca em
softwares para resoluo de limitaes.
Na quinta seo, so apresentadas as ferramentas utilizadas para o
desenvolvimento do sistema de gesto de horrios dos professores, agregando os
conceitos abordados neste trabalho.
Por fim, aps o desdobramento das sees anteriores, far-se- uma
concluso onde se demonstrar os resultados e as consideraes finais sobre o
trabalho.

13

2 INTELIGNCIA ARTIFICIAL
O campo da Inteligncia Artificial (IA) utiliza tcnicas para compreender os
pensamentos

humanos

construir

entidades

inteligentes

partir

desse

entendimento. A IA uma cincia basicamente nova, pois o seu trabalho comeou


aps a Segunda Guerra Mundial e seu nome foi cunhado em 1956.
A IA possui vrios conceitos que se baseiam de acordo com cada
utilizao. Para Luger (2004), a Inteligncia Artificial pode ser definida como o ramo
da cincia da computao que se ocupa da automao do comportamento
inteligente. Russell e Norving (2004) afirmam que as definies variam de acordo
com o comportamento e processos de pensamento e raciocnio, que podem ter
como medidas de desempenho as aes feitas pela mquina que parecem com as
do ser humano e a forma inteligente de pensar, ou seja, a separao entre
sistemas que pensam e/ou atuam como seres humanos dos sistemas que pensam
e/ou atuam racionalmente.
Os fundamentos da Inteligncia Artificial, de acordo com Russell e
Norving (2004), foram construdos baseados nas seguintes disciplinas: filosofia,
matemtica, neurocincia, psicologia, engenharia de computadores, lingustica e
teoria de controle e ciberntica.
A filosofia contribuiu com os estudos sobre o raciocnio. A matemtica
props o desenvolvimento da lgica, computao e probabilidade. A economia foi
adicionada a questo da maximizao de lucros. A neurocincia ajudou com o
estudo do crebro (processamento de informaes). A psicologia props o estudo do
comportamento dos seres vivos. A engenharia de computadores anexou os
conceitos de criao de mquinas eficientes. A lingustica acrescentou a analogia do
relacionamento da linguagem com o pensamento. A teoria de controle e ciberntica
contribuiu com o estudo da independncia das mquinas, ou seja, a forma que elas
podem operar por si s.
Por isso, torna-se difcil chegar a uma nica definio, pois a IA uma
cincia que agrega definies estabelecidas de outras reas. Contudo, a definio
que ir integrar esse estudo ser a de Luger (2004), citada anteriormente.
Atualmente, a IA abrange uma enorme variedade de subcampos, desde
reas de uso geral, como aprendizado e percepo, at tarefas especficas como

14

jogos de xadrez, demonstrao de teoremas matemticos, criao de poesia e


diagnstico de doenas (RUSSELL, NORVING. 2004).
2.1 Comportamento Inteligente
Inteligncia de acordo com o dicionrio significa faculdade de entender,
pensar, raciocinar e interpretar ou capacidade de resolver situaes novas com
rapidez e xito. No entanto, como faremos para que um sistema ou uma mquina
possa obter um comportamento inteligente?
Como forma de demonstrao do campo de atuao, Alan Turing (1950)
publicou um dos primeiros artigos com relao a IA. Sua proposta era provar que
uma mquina poderia ser to inteligente a ponto de ser confundida com o pensar de
um ser humano. Ele props um teste que media o desempenho de uma mquina
considerada inteligente e o compara ao raciocnio de uma pessoa, como
representado na Figura 1.

Figura 1: Modelo do teste de Turing


Fonte: http://www.notapositiva.com/pt/trbestbs/filosofia/11_intelegencia_artificial_d.htm

O teste era composto por duas pessoas e uma mquina, onde uma
pessoa possua a funo de interrogar a mquina e a outra pessoa, sendo que os
trs estariam em salas separadas, assim como na Figura 1. A funo do
interrogador era fazer perguntas e tentar descobrir quem era a mquina. Para Turing
(1950), a mquina seria considerada inteligente se o interrogador no conseguisse
diferenciar as respostas dadas pelo ser humano das fornecidas pela mquina.

15

Para acrescentar, Luger (2004) afirma que:


Turing tambm tratou da real possibilidade de se construir um
programa inteligente num computador digital. Pensando em termos de um
modelo especfico de computao [...], ele formulou algumas conjecturas
bem fundamentadas com relao capacidade de armazenamento,
complexidade do programa e filosofia bsica de projeto, necessrias para
este tipo de sistemas. Por fim, ele discutiu uma srie de objees [...] sobre
a possibilidade de se construir um programa assim em termos de tecnologia
atual.

Em seu artigo, Computing machinery and intelligence, Turing (1950)


responde a algumas objees com relao ao seu experimento. Uma delas foi a da
Lady Lovelace (considerada a primeira programadora da histria), que afirmou que
uma mquina s faz o que o seu programador definiu. Porm, ele debate que a
mquina pode, com o avano da engenharia, ter suporte para o aprendizado, ou
seja, fazer com que a mquina possa simular a evoluo do aprendizado de uma
criana, onde no se levar em conta o processo de crescimento de um ser humano
e sim a forma como haver o amadurecimento de informaes ao longo do tempo
(criando experincia).
O teste de Alan Turing teve um apelo intuitivo com relao a definio de
inteligncia da mquina, mas por possuir caractersticas importantes como o foco no
contedo das respostas e no no comportamento caracterstico dos seres vivos, que
ele tem sido utilizado para avaliar programas de IA modernos (LUGER, 2004).
2.2 Mquina e Ser Humano
A histria da IA teve ciclos de sucesso, otimismo imprprio e quedas
resultantes no entusiasmo e na subveno (RUSSELL, NORVING, 2004), mas teve
um progresso considerado nas ltimas dcadas devido ao grande avano da
tecnologia e a necessidade (ou at mesmo vontade) de construir sistemas mais
eficientes e rpidos para resolver problemas difceis para os seres humanos, tendo o
desempenho como critrio. Pois coisas que antes levavam demasiados tempos para
serem concludas, atualmente houve um processo de acelerao com a evoluo
das mquinas e seu poder computacional superior.
Embora a inteligncia humana seja um ponto de referncia ao considerar
a IA, os programas no vo seguir o modelo organizacional da mente humana, pois,
como falado anteriormente, o poder computacional das mquinas est acima do
poder computacional humano.

16

A IA uma cincia composta por vrias disciplinas (como dito


anteriormente) e, consequentemente, aplicada em vrias funes que envolvem
jogos, raciocnio automtico, robtica, redes neurais, gentica, entre outros. Como
exemplo, a utilizao do raciocnio automtico encontrado usando tcnicas de IA,
tem-se o sistema de organizao de horrios de professores, que objeto deste
trabalho.
2.3 Agente
Conforme Russell e Norving (2004), um agente tudo o que pode ser
considerado capaz de perceber seu ambiente por meio de sensores e de agir sobre
esse ambiente por meio de atuadores, como demonstrado na Figura 2. O agente
est dividido em reativos simples, reativos baseados em modelos, objetivos,
utilidade e com aprendizagem.

Figura 2: Arquitetura genrica de um agente


Fonte: http://www.devmedia.com.br/engenharia-de-software-orientada-a-agentes/29238

Os agentes reativos simples so baseados em regras de condies, pois s iram


realizar aes de acordo com sua percepo atual. Os agentes reativos baseados
em modelos empregam um ambiente pr-observado para poder utiliza-lo nas
tomadas de decises.

17

Os agentes baseados em objetivos utilizam um foco a ser seguido, ou


seja, um propsito. Os agentes baseados na utilidade buscam definir uma prioridade
para determinada ao. E os agentes com aprendizado so aqueles que tem a
capacidade de estudar o ambiente para poder se adequar a ele.
Ao construir um sistema de organizao de horrios dos professores, as
definies de agente que sero enquadradas para resolver esse problema sero de
agentes baseados em objetivo e utilidade.
Os conceitos de agente possuem uma caracterstica aproximada quando
queremos tratar de sistemas fsicos ou lgicos. No entanto, esse trabalho ir ser
enquadrado em agentes lgicos ou de software1.
O agente de software recebe sequncias de teclas digitadas, contedo de
arquivos e pacotes de rede como sensores e atua sobre o ambiente exibindo algo na
tela, gravando arquivos e enviando pacotes de rede (RUSSELL, NORVING. 2004).
Ele tem a capacidade de decidir quais aes sero mais apropriadas para um
usurio ou um outro programa, dependendo das informaes que foram
anteriormente fornecidas, ou seja, ele trabalha de forma previsvel em reao ao
ambiente.
2.4 Resolver Problemas
Com os agentes reativos, um simples mapeamento direto de estados em
aes podem resolver os problemas para achar a soluo. Entretanto, ambientes
necessitados de mapeamentos grandes demais para armazenamento fariam com
que o aprendizado deles demorasse. Ento, os agentes baseados em objetivos
podem obter sucesso, considerando aes futuras e a convenincia de seus
resultados (RUSSELL, NORVING. 2004).
Existem mtodos de resolues de problemas em que um agente pode
utilizar para fazer o tratamento de uma sequncia de aes para alcanar seus
objetivos. So eles:
Problemas por meio de busca;
Busca com informao e explorao;
Busca competitiva; e
1

Software Qualquer programa ou grupo de programas que instrui o hardware sobre a maneira como ele
deve executar uma tarefa, inclusive sistemas operacionais, processadores de texto e programas de aplicao.
(Dicionrio).

18

Problemas de satisfao de restries.


A resoluo de problemas por meio de busca decide o que fazer
encontrando sequncias de aes que levam a estados desejveis (RUSSELL,
NORVING. 2004).

As buscas no possuem uma informao sobre o problema,

tendo que utilizar testes de comparao de objetivos, tornando a sua execuo


exaustiva. A busca com informao e explorao um aprimoramento do sistema
de busca tradicional, pois ele levantar um conjunto de informaes para encontrar
solues de modo mais eficiente a fim de reduzir os custos da busca. A busca
competitiva basicamente examinar os problemas enquanto surgem agentes que
dificultam esse trabalho (muito utilizado em sistema de jogos).
Os problemas de satisfao de restries utilizam uma ampla variedade
de mtodos de busca, pois eles iro abordar uma compreenso mais profunda da
estrutura e da complexidade dos problemas. Este assunto ser mais aprofundado na
prxima seo.

19

3 PROBLEMAS DE SATISFAO DE RESTRIO


Nos algoritmos de resoluo de problemas tradicionais, os problemas
podem ser resolvidos fazendo uma busca sobre um conjunto de estados. Esses
estados podem ser avaliados por mtodos ou processos especficos de domnios e
testados para verificar se possui um objetivo. Pelo ponto de vista do algoritmo, cada
estado como uma caixa-preta, pois no possui uma estrutura que possa ser
discernida.
Em certas situaes, h a necessidade de utilizar algoritmos de busca
que utilizem heursticas de estruturas generalizadas, pois a soluo desses
problemas obedece um mtodo de resoluo padro e organizada.
Novamente, como exemplo, um algoritmo que faz a organizao de
horrios de professores, existe uma exigncia para uma regra definida de execuo
de testes para uma estruturao do problema e consequentemente a decomposio
do mesmo.
3.1 Definies de Problemas de Satisfao de Restrio
O Problema de Satisfao de Restrio (PSR), em termos informais, so
impasses definidos por um conjunto de objetos responsveis para satisfazer
restries, pois os estados e testes de objetivo vo obedecer a uma representao
padronizada e determinada.
Isso leva a mtodos para decomposio do problema e para uma
compreenso da conexo ntima entre a estrutura de um problema e a dificuldade de
resolv-lo (RUSSEL, NORVING. 2004).
Para uma definio mais formal,
[...] um problema de satisfao de restries (PSR) definido por um
conjunto de variveis,
, e por um conjunto de restries,
. Cada varivel
tem um domnio
no vazio de valores
possveis. Cada restrio
envolve algum subconjunto das variveis e
especifica as combinaes de valores permitidas para aquele subconjunto.
Um estado do problema definido por uma atribuio de valores a alguma
ou a todas as variveis [...] e uma soluo para um PSR uma atribuio
completa que satisfaz a todas as restries. (RUSSEL, NORVING, 2004,
p.135).

De acordo com Apt (2009), o PSR uma sequncia finita de variveis


com os respectivos domnios, juntamente com um conjunto finito de restries, cada

20

um em uma subsequncia dessas variveis. Ao considerar uma sequncia finita de


variveis

com seus respectivos domnios

admitir que cada varivel

pertence ao domnio

, podemos

. Ao admitir uma restrio

, queremos dizer que existe um subconjunto

e se

em
,

ento dizemos que a restrio foi resolvida.


Utilizando nosso objeto de estudo para exemplificar, admitimos que existe
uma sequncia finita de professores que devem ser organizados em dias, perodos,
turnos e disciplinas (domnios) de acordo com suas restries. Haver uma
subsequncia de professores, nesse caso poder ou no englobar todos eles, que
vai ficar unido por uma determinada restrio. Se ela respeitar o domnio e fizer
parte do conjunto maior (conjunto de professores), ento haver soluo para o
problema.
3.2 Representaes do Problema de Satisfao de Restrio
A representao do PSR segue um padro para a construo de um
espao de estados que so o estado inicial, funo sucessor, teste de objetivo e o
custo do caminho. O estado inicial a atribuio vazia, na qual todas as variveis
ainda no foram atribudas. A funo sucessor um valor que pode ser atribudo a
qualquer varivel de estado inicial, sendo que ela no pode entrar em conflito com
outras variveis j atribudas. O teste de objetivo serve para mostrar se o que foi
proposto anteriormente ocorreu em resultados satisfatrios e o custo do caminho
basicamente para mostrar a eficincia da ao, ou seja, quanto foi o custo da
resoluo.
Ao tomar como exemplo a organizao de horrios dos professores,
verificamos que o estado inicial uma tabela vazia de dias da semana, a funo
sucessor seria o cdigo inicial dos professores (ID) que pode ser colocado em
qualquer clula vazia, que foi representado na Figura 3, e o teste de objetivo para
saber se as restries dos professores foram respeitadas.

Figura 3 Representao dos turnos e dias da semana.


Fonte Pedroso, 2014.

21

Ao tratar o problema como restrito nos d benefcios importantes, tendo


em vista que a representao de estados em um PSR obedece a um padro
definido, a funo sucessor e o teste de objetivo pode ser descrito de modo genrico
(RUSSEL, NORVING. 2004), ou seja, da forma em que um PSR organizado, os
mesmos esquemas de conjunto de variveis com valores atribudos podem ser
utilizados em variadas situaes. Por isso que Russell e Norving (2004) afirmam que
o PSR um esquema de representao muito eficiente e simples.
comum visualizar um PSR como um grafo2 de restries, sendo que os
ns so as variveis e os arcos so as restries, fazendo uma busca em
profundidade (explorar todas os ramos do grafo antes de retroceder) para achar uma
soluo.
Toda soluo deve ser uma atribuio completa e, portanto, aparece na
profundidade n se existem n variveis (RUSSEL, NORVING, 2004). Logo, a
profundidade da rvore de busca ser n. Essa caracterstica faz com que algoritmos
de busca em profundidade se encaixem no processo de soluo das restries.
Nesse caso, o caminho que utilizado para ser solucionado as restries torna-se
irrelevante. Consequentemente, pode-se usar uma formulao de estados
completos, em que todo estado uma atribuio completa que pode ou no
satisfazer s restries (RUSSELL, NORVING. 2004).
3.3 Tipos de Variveis
As variveis de um PSR podem ser de domnios finitos, infinitos e
contnuos. Os de domnios finitos possuem um valor definido para cada varivel,
como o problema de organizao de horrios dos professores (definido por uma
matriz 5x2, onde 5 representam os dias da semana e 2 representam os turnos) e
problemas de satisfao booleanos (verdadeiro ou falso).
O conjunto de nmeros inteiros pode se classificar como um domnio
infinito, que nesse caso, no ser mais possvel enumerar todas as combinaes
possveis de valores, tendo a necessidade de utilizar uma linguagem de restrio.
A categoria de PSR com domnios contnuos so usados em problemas
de programao linear, aplicaes comuns e pesquisa operacional, como por

Grafo Conjunto de pontos chamados vrtices, em certos pares esto ligados por uma linha orientada
(flecha) ou no (aresta). (Dicionrio).

22

exemplo o escalonamento de experimentos em um telescpio (sincronizao precisa


de observaes para os resultados).
3.4 Tipos de Restries
Como explica Russell e Norving (2004), alm de examinar os tipos de
variveis que podem aparecer em PSR, til examinar os tipos de restries. Elas
podem ser unrias, binrias, de alta ordem e de preferncia.
As restries unrias restringem o valor de uma s varivel, as binrias
relacionam duas variveis, as de alta ordem envolvem trs ou mais variveis e as de
preferncia utilizam artifcios de prioridade sobre outra atribuio.
Ao pegar o modelo da organizao dos horrios dos professores,
verificamos que se trata de um problema que requer preferncia. Por exemplo, o
professor X s pode lecionar pela manh, enquanto o professor Y pode lecionar pela
manh e pela noite. Caso o professor X e Y tenham disponibilidade de atuar
somente na segunda feira, a prioridade de alocao pela manh ser para o
professor X, pois o professor com a menor disponibilidade.
3.5 Domnios Finitos
O PSR com domnios finitos so resolvidos usando algoritmos de busca
pelas tcnicas de busca com retrocesso, busca local e propagao de restrio.

3.5.1 Busca com Retrocesso


Para Russell e Norving (2004), a expresso busca com retrocesso
utilizada para indicar uma busca em profundidade que escolhe valores para uma
varivel de cada vez e vai efetuando um retorno quando no encontra um valor
vlido restante para ser atribudo. Essa operao ir repetir at que haja uma
soluo aceitvel.

3.5.2 Busca Local


Os algoritmos de busca local utilizam uma formulao de estados
completos: o estado inicial atribui um valor a cada varivel e a funo sucessor em

23

geral funciona alterando a valor de uma varivel por vez (RUSSELL, NORVING.
2004).
Ao escolher um novo valor para uma varivel, a heurstica mais adequada
encontrar um valor que resulta em um nmero pequeno de conflitos com as outras
variveis, chamada de heurstica de conflitos mnimos. O tempo de execuo de um
PSR resolvido com esse tipo de heurstica ser independentemente do tamanho do
problema (sem levar em considerao o posicionamento inicial).

3.5.3 Propagao de Restrio


A propagao de restries a expresso geral para indicar a
propagao das implicaes de uma restrio de uma varivel para outras variveis
(RUSSEL, NORVING, 2004).
Propagao por restries difunde informaes das variveis que j foram
atribudas para as que ainda sero alocadas. Esta tcnica consegue retirar, durante
a procura, valores inconsistentes dos domnios das variveis, e assim, reduzir o
espao de procura (BAPTISTA, 2010).
A propagao de restrio pode ser usada para verificar se um problema
equivalente a outro como tambm pode conferir o nvel se satisfao e
insatisfao do problema, ou seja, pode ser usada para testar consistncia de um
grupo de variveis ou restries.
3.6 Estrutura de um Problema Restritivo
As tcnicas de PSR utilizam mtodos que compreendem a estrutura e a
complexidade do problema proposto com estados definidos por variveis e seus
respectivos domnios, tornando-se mais poderosos que os algoritmos tradicionais de
procura, pois eles no fazem um tratamento adequado para as restries,
transformando o estado em uma simples caixa-preta.
A complexidade da resoluo de um PSR est fortemente relacionada
estrutura de seu grafo de restries (RUSSELL, NORVING. 2004), pois haver uma
quantidade de restries e variveis para cada caso e a diviso dos dois gerar
subproblemas conectados entre si a ponto de se formar uma rvore, fazendo com
que duas variveis quaisquer possam estar interligadas por um nico caminho, alm
de serem resolvidas em tempo linear.

24

4 PROGRAMAO POR RESTRIO


Programao por restrio (PR) um paradigma de programao
desenvolvida durante os anos 1980 que possui abordagens alternativas para a
programao em que o processo da mesma limitado a uma gerao de requisitos
(restries), podendo ser considerada poderosa para resolver problemas de
pesquisa combinatria que recorre a uma gama de tcnicas de IA, cincia da
computao e pesquisa operacional.
uma tecnologia que faz com que o programador no se preocupe com a
forma que as restries sero resolvidas, mas com as modelagens de cada
problema. Essa caracterstica faz com que a PR torne-se um mtodo eficiente para
fazer tratamento de excees.
4.1 Modelando o problema
Para Sucupira (2003), modelar um problema em um sistema de PR
consiste em especificar um conjunto de variveis, o domnio de cada uma delas e
um conjunto de restries. Alm disso, se faz necessrio estabelecer uma conexo
entre as variveis ou restringir os domnios individualmente.
Utilizando como exemplo nosso objeto de estudo, podemos definir trs
modelos para o impasse da organizao do horrio dos professores:
Modelo 1 Colocar como preferncia os professores com menor
disponibilidade de dias para lecionar.
Modelo 2 Organizar os professores por dias da semana.
Modelo 3 Verificar as disciplinas que cada professor poder ministrar
e aloca-los em seus perodos.
4.2 Mtodos de Soluo
A PR busca solucionar problemas por meio de mtodos especficos gerais
ou de domnio. Os mtodos gerais utilizam tcnicas de reduo do espao de busca
com mtodos de busca especfico. Em contrapartida, os mtodos especficos do
domnio so, geralmente, fornecidos em forma de algoritmos de propsito especfico
ou pacotes especializados (tambm chamados de solucionadores de restrio).

25

Muitos problemas que precisam ser resolvidos por meio da computao


no esto definidos com preciso ou a sua especificao pode depender da
qualidade de uma soluo, como a velocidade com o que calculado ou dispositivos
de hardwares ultrapassados. Para resolver esses problemas preciso utilizar vrias
interaes, nesses casos a PR torna-se um meio eficaz.
4.3 Programao Restritiva e Problemas de Satisfao de Restries
A PR uma tecnologia que resolve problemas de restries com
eficincia, no entanto, o problema deve ser modelado como um PSR, havendo a
interao entre o modelo de restrio e o algoritmo de busca.
Existem duas abordagens diferentes que foram criadas para simplificar
essa interao, a primeira utilizando bibliotecas especficas, como ILOG Solver
(biblioteca C++), Choco (biblioteca JAVA) e Emma (biblioteca Phyton), a segunda
consiste em oferecer ao usurio uma linguagem baseada na restrio lgica, como
ECLiPSe (baseado em Prolog) e SWI Prolog (software contendo vrias bibliotecas
para solucionar restrio).
Devemos considerar as definies de PSR para representar um problema
P, onde a modelagem M = (X, D, C), X representando as variveis, D o domnio e C
as restries. O modelo em si ser representado pelo conjunto das restries,
domnios e variveis, sendo diferenciado do problema, ou seja, o modelo separado
do impasse. Continuando, M ento ser um modelo de P se cada soluo C
corresponder a uma soluo de P e cada concluso de P pode ser derivada a partir
de pelo menos uma soluo em C, ou seja, vrias resolues de M pode
corresponder mesma soluo a P.
Exemplificando atravs do nosso objeto de estudo, haver a criao de
um modelo para solucionar as divergncias de dias, horrios e disciplinas, sendo
que elas devem ser verificadas pelo conjunto do problema, ou seja, para ter a
soluo do impasse da organizao dos horrios dos professores ser necessrio
obedecer a todas as restries de cada modelo.
4.4 Resoluo de problemas
Uma particularidade da PR que a modelagem por meio de restries
leva a uma representao mediante relaes e essa unicidade faz com que possa

26

ser possvel utilizar o mesmo programa para finalidades diferentes. Em linguagens


de programao convencionais as relaes precisam ser convertidas primeiro em
funes, portanto a possibilidade de usar relaes para diferentes cdigos ento
perdida.
O uso de relaes para resolver problemas possui semelhanas com
sistemas de banco de dados relacionais. A diferena que em PR as relaes so
informadas de forma implcita e possui uma tarefa de resolv-las, j em banco de
dados relacionais, as relaes (tabelas) so normalmente dadas explicitamente e a
tarefa consiste na eficincia de consulta (APT. 2009).
A representao de um problema por meio de restries muito flexvel,
pois a condio para cada caso pode ser adicionada, retirada ou at mesmo
modificada. No processo, h uma representao do problema usando restries e
suas respectivas solues, podendo ser dividido em partes menores e intercaladas,
alm de possui a possibilidade de ser utilizado para vrias funcionalidades.
4.5 Biblioteca Choco
Como citado anteriormente, a PR trabalha tambm com bibliotecas
especficas para apurao de limitaes. Uma delas a Choco, uma biblioteca Java
para PSR e PR com cdigo aberto, construda sobre um mecanismo de
programao baseado em eventos com estruturas recorrveis, distribudo sob a
licena BSD (Berkeley Software Distribution License) e hospedado no site sourceforge.net. Ela fornece os fundamentos bsicos de um sistema de restrio, como:
variveis e seus domnios, restries de propagao e de busca em rvore.

4.5.1 Histria
A biblioteca Choco foi criada em 1999 no mbito do projeto OCRE, uma
iniciativa nacional francesa para um solucionador de restrio para ensino e
pesquisa, envolvendo professores e pesquisadores da cole des Mines de Nantes
(Frana), sendo utilizado inicialmente na linguagem de programao C++.
Somente em 2003 que a Choco passou por uma modificao para ser
utilizado na linguagem de programao Java, pois eles possuam um objetivo de
garantir uma maior portabilidade e uma aquisio mais fcil para os novos
programadores. Com o seu avano progressivo, hoje est na sua terceira verso

27

(3.2.0). O objetivo dos criadores da Choco proporcionar uma plataforma


experimental envolvendo ferramentas, exemplos de algoritmos e suporte para
fornecer ensino sobre programao restritiva.

4.5.2 Caractersticas da Choco


Ela capaz de manipular uma grande variedade de tipos de variveis
como: variveis inteiras, conjuntos de valores inteiros, variveis reais e expresses
que representem um nmero inteiro ou operadores de expresso usando base real
(mais, menos, multiplicao, diviso, escalar e outros).
Alm de possuir a caracterstica base de uma programao restritiva, que
a separao entre o modelo de problema e a resoluo. Como demonstrado na
Figura 4, a biblioteca Choco faz essa separao em duas etapas.
A primeira parte dedicada em expressar o problema. A API3 fornecida
para ser capaz de afirmar um problema da forma mais amigvel possvel, ou seja,
haver uma manipulao de variveis e a verificao de relaes para essas
variveis (restries) desconsiderando seu potencial de execuo.
A segunda parte dedica-se somente em resolver o problema, incluindo o
gerenciamento de memria especfica para pesquisas baseadas em rvores, uma
soluo comumente utilizada em um PSR.

Figura 4: Arquitetura geral da biblioteca Choco


Fonte: Pedroso, 2014.

API Interface de Programao de Aplicativos.

28

4.5.3 Particularidade da Choco


A Biblioteca Choco financiada pela cole des Mines de Nantes,
Bouygues SA e Amadeus SA para que exista um desenvolvimento continuo de
melhorias e adaptaes. Essa iniciativa faz com que a API torne-se mais adaptvel
aos profissionais novatos e experientes em PR, ou seja, mais eficiente para
trabalhar com pesquisas, desenvolvimento de softwares e ensino da programao
restritiva.
Ela no a nica especializada em resolver restries, mas um de seus
diferenciais que ela um software open source4, permite uma reduo na
quantidade de linhas de cdigo e possui o suporte completo para o seu aprendizado
no seu site oficial e em fruns.
Universidades e escolas de engenharia a utilizam como forma de
aprendizado para programao restritiva, como: Montpellier, Rennes, Toulouse,
cole des Mines de Nancy, cole des Mines de Nantes, cole Nationale Suprieure
des Sciences et Techniques Appliques, entre outras. Tambm utilizada em
divises de P&D em vrias empresas como: Amadeus SA e Bouygues SA, at
mesmo agncias de pesquisas renomadas, como a NASA.
4.6 Utilizaes de Programao por Restrio
Programao restritiva j foi aplicada com sucesso para vrias finalidades
como: sequenciamento de DNA (biologia molecular), localizao de falhas em
circuitos (engenharia eltrica), operaes de problema de pesquisa, problemas
relacionados com agendamento, entre outros.
A importncia da rea da PR est em constante crescimento, mas o
campo de estudo ainda jovem, com poucos livros sobre o assunto. Por outro lado,
vrias edies especiais de revistas de cincia da computao vm dedicados ao
tema das restries, a criao de conferncias anuais e o lanamento da revista
chamada Constraints pela Kluwer Academic Publishers.

Open Source Cdigo aberto.

29

4.7 Vantagens de utilizar Programao Restritiva


PR uma tecnologia para resoluo de problemas de planejamento e
programao complexa. Com relao aos mtodos de programao tradicionais que
utilizam otimizao matemtica, ou seja, otimizao por meio de funes de muitas
variveis, a PR possui umas particularidades que a tornam um mtodo eficiente para
fazer o tratamento de restries, como:
Suportar nativamente restries lgicas e uma quantidade completa de
expresses aritmticas, incluindo diviso, mdulo, mnimo e mximo.
No possui limitaes para restries.
Um modelo de PR trabalha apenas com variveis de deciso discretas,
como inteiros e booleanos.
Tomar decises sobre variveis e valores atravs de inferncias
lgicas para reduzir as opes disponveis para os domnios,
Trabalha com a melhor soluo possvel, ou seja, mostra que no h
soluo melhor que a atual encontrada (prova a otimalidade).
No limitado s relaes lineares entre variveis, ou seja, oferece
vrias possibilidades.
4.8 Limitaes da Programao Restritiva
As tcnicas utilizadas em PR so aptas para resolver tarefas com
inferncias que envolvem reduo do domnio das variveis. No entanto, quando a
quantidade de variveis de um nmero muito elevado a resoluo atravs deste
tipo de paradigma poder aumentar significativamente o tempo de processamento.
Contudo, a PR ainda consegue ser um paradigma eficiente para
tratamentos de restries, pois possui um alto poder de modelagem e tcnicas de
inferncias. A questo da alta quantidade de variveis no o caso do objeto de
estudo desta monografia, que a organizao de horrios dos professores.

30

5 ESTUDO DE CASO: SKEDULER


O Skeduler um software que obter a funo de organizar os horrios
dos professores a partir de informaes contidas no banco de dados com base em
restries de dias da semana, disciplinas para ministrar e turnos (matutino,
vespertino ou noturno). O objetivo principal do programa fazer essa organizao
da forma mais automtica possvel, sem haver a necessidade de elevados tempos
para o escalonamento.
Para fazer com que ele fosse capaz de atender a todos os impasses
abordados para a organizao dos horrios dos professores, foi necessrio dividir o
trabalho em trs partes: elaborao do problema, criao do banco de dados para
armazenar todas as informaes dos professores e elaborao de um programa
capaz de organizar as informaes para o resultado proposto. Alm de test-lo e
verificar se tudo o que foi proposto para ser realizado surtiu o efeito esperado.
5.1 Elaborao do Problema
A elaborao do problema partiu de uma carncia que os coordenadores
possuam com relao a eficincia na distribuio dos professores para suas
respectivas turmas e horrios, de acordo com a unicidade de cada educador. A
dificuldade maior no fica em torno de uma turma somente e sim na permutao de
cada professor em turmas distintas. Com todas as restries cabveis, foi formulado
uma rvore de possibilidades para a resoluo deste impasse.
Ao utilizar PR necessrio que formulemos um problema para que
depois, a partir dessas restries, possamos encontrar uma soluo aceitvel. Fezse necessrio a diviso do problema para subproblemas com o intuito de fazer a
separao de forma correta sem ter que perder o foco sobre os conceitos bsicos de
PR.
Assim sendo, foi-se repartido em subproblemas de menor disponibilidade
(professores com menor quantidade de dias disponveis para ministrar aula), dias da
semana, horrios e disciplinas para ministrar dos professores para um determinado
curso.
O esquema demonstrado na Figura 5 mostra como o software vai
trabalhar e como o problema foi dividido em subproblemas especficos. Os

31

professores ficam alocados em um vetor a partir dos seus IDs cadastrados no banco
de dados, o programa est preparado para pegar o professor que tiver o menor
coeficiente de dias para ministrar aula e verificar se condiz com o dia que o software
quer utilizar. Caso essas afirmativas sejam verdadeiras, o sistema passar para a
etapa que verificar se o professor

possui disponibilidade para o horrio. Se a

resposta for positiva, ento o programa ir verificar se o professor em questo


possui a disciplina em sua grade. Se todas essas etapas forem verdadeiras, o
problema para o dia Y ser resolvido. Vale ressaltar que se o professor no atender
a qualquer uma das restries, o software volta ao estado inicial e acrescenta um
valor para percorrer o vetor.

Figura 5: Modelo do problema


Fonte: Pedroso, 2014

5.2 Banco de Dados


O banco de dados (BD) uma coleo de dados logicamente
relacionados que possuem um significado implcito onde uma determinada aplicao
poder fazer sua interpretao de modo coerente. O BD operado por um sistema
de gerenciamento de banco de dados (SGBD), que possui a funo de controlar o
acesso s informaes, garantir a consistncia dos dados armazenados e fornecer
meios de acesso a eles. O SGBD utilizado para armazenar a base de dados do
Skeduler foi o MySQL, que utiliza a linguagem SQL5 como interface.
5

SQL Linguagem de Consulta Estruturada.

32

Figura 6: Diagrama de Entidade e Relacionamento do Skeduler


Fonte: Pedroso, 2014

33

Para representar o BD graficamente, necessrio criar um modelo com


formato de diagramas que ir descrever o paradigma conceitual do sistema, ou seja,
um Diagrama Entidade e Relacionamento (DER). Pode-se definir que a entidade
ser os objetos utilizados dentro de um banco de dados com seus devidos atributos.
Ainda existem relacionamentos que interligam as entidades (funes comuns). A
Figura 6 mostrada anteriormente, apresenta o DER do Skeduler com todas as suas
ligaes.
5.3 Implementao do Estudo de Caso
A partir dos estudos sobre os conceitos da programao restritiva e o
acumulo de informaes necessrias para elaborao de testes, foi iniciado a
construo de um software capaz de resolver o problema da organizao de
horrios dos educadores.
A linguagem de programao utilizada para o desenvolvimento do
software foi a Java, uma linguagem orientada a objetos executada por uma mquina
virtual. A PR possui uma gama de ferramentas capazes de utiliz-la da forma mais
eficaz possvel. Dentre elas escolhemos a biblioteca Choco, pois ela uma
ferramenta livre, possui todas as ferramentas necessrias para ser utilizada na
elaborao desse software e garante um suporte completo em seu frum para
possveis dvidas quanto ao seu funcionamento.
A IDE6 utilizada para a alocao do cdigo fonte ser o Eclipse, pois,
assim como o Choco, possui um suporte muito grande para os usurios, alm de ser
um programa gratuito e recomendado para uso pelos prprios criadores da
biblioteca.
Para incio de pesquisa, o software ir organizar os horrios dos
professores do curso de Cincias da Computao no turno matutino. Como a
programao orientada a objetos (POO) e a PR so paradigmas reaproveitveis, ou
seja, os algoritmos podem ser reutilizados para outras finalidades, a implementao
para os outros cursos no apresentar problemas.

IDE Ambiente de desenvolvimento.

34

5.3.1 Ambiente de Programao (JAVA)


Respeitando os conceitos de POO, foi implementado classes para definir
os objetos para compor e interagir com as unidades do software. Foi criado quatro
classes onde uma hospeda o cdigo que ir puxar as informaes do BD, outra que
ficar responsvel pela organizao da PR e as outras duas para criao dos
objetos principais da organizao: professores e disciplinas.
Para poder fazer a utilizao e manipulao do BD no JAVA, fez-se
necessrio a importao de uma biblioteca especfica para o tratamento do SQL,
pois no uma utilizao nativa. A biblioteca utilizada foi a mysql-connector-java.
Vale ressaltar que apenas na classe que fazia a conexo com o BD que ela foi
importada. A outra biblioteca utilizada foi a Choco, importada apenas na classe que
tratava das restries.

5.3.2 Importando a biblioteca Choco


Como representado nas sees anteriores, a biblioteca em questo
necessita de um modo de organizao pr-estabelecido: primeiro define um modelo
de problema, depois determina as restries para enfim poder estabelecer uma
soluo, assim representado na Figura 7.

Figura 7: Modelo de Organizao do Choco


Fonte: Pedroso, 2014

Assim representado na Figura 8, para essa aplicao, foram importadas


as variveis principais de restries, um modelo para as restries, uma soluo

35

para as restries, o modelo de kernel7 das restries e um modelo de kernel para


os tipos de variveis que iremos trabalhar. Vale observar que o tratamento dos
professores ser feito pelos ID e no pelo nome deles, por isso a utilizao de
variveis inteiras.

Figura 8: Importaes do Choco


Fonte: Pedroso, 2014

5.3.3 Criando o modelo e a soluo


Tomando como base as definies de PR, o modelo do problema
necessita ser criado, assim mostrado na Figura 9. Por utilizar a POO, o objeto
modelo dever ser do tipo especfico de modelo do Choco (CPModel), ou seja, um
objeto.

Figura 9: Modelo e variveis


Fonte: Pedroso, 2014

Aps definir o objeto do modelo, foi criado o objeto das variveis, assim
demonstrado na Figura 9, do tipo vetor inteiro. Depois, estabelecer as restries em
torno do tipo de variveis que iremos trabalhar, como representado na Figura 10.

Kernel Ncleo de um sistema.

36

Figura 10: Restries


Fonte: Pedroso, 2014

Por fim, foi criado um objeto que ser responsvel por solucionar as
restries anteriormente propostas, assim demonstrado na Figura 11.

Figura 11: Soluo


Fonte: Pedroso, 2014

5.4 Testes
Os testes iniciais foram propostos para fazer a organizao dos
professores que lecionam no curso de cincia da computao pelo turno matutino,
com 10 educadores alocados no BD. As disciplinas disponveis por perodo seguem
organizao estabelecida na grade curricular do curso. O Grfico 1 mostra a
quantidade de professores para cada perodo.
Grfico 1: Professores por Perodo

37

Professores por Perodo


8
7
6
5
4
3
2
1
0

Quantidade de Professores

Fonte: Pedroso, 2014

Ao coletar essas informaes, para direcionar os testes, utilizamos como


base o 2 perodo, pois, assim demonstrado no Grfico 1, o que possui a maior
quantidade de professores disponveis. Os professores que estavam disponveis no
BD para esse perodo esto representados na Quadro 1.

Quadro 1: Tabela dos professores

Fonte: Pedroso, 2014

Foi realizado cinco execues de troca para verificar a permutao de


cada professor, representados com seus respectivos IDs e nomes. O nmero de
execues foi determinado de forma arbitrria, sendo assim, ao realizar cinco

38

diferentes permutaes, verificou-se que o programa modificava os professores de


acordo com cada disponibilidade de dias, como apresentado na Quadro 2.
Quadro 2: Permutao dos professores do 2 Perodo
Permutao

Segunda

Tera

Quarta

Quinta

11 Arivaldo

67 Thiago

71 Elda

54 Nilvanete

lgebra

Algoritmo e

Lgica

Metodologia

Linear

Programao

Computacional

Cientfica

11 Arivaldo

71 Elda

67 Thiago

54 Nilvanete

lgebra

Lgica

Algoritmo e

Metodologia

Linear

Computacional

Programao

Cientfica

54 Nilvanete

71 Elda

67 Thiago

11 Arivaldo

Metodologia

Lgica

Algoritmo e

lgebra

Cientfica

Computacional

Programao

Linear

11 Arivaldo

67 Thiago

71 Elda

54 Nilvanete

lgebra

Algoritmo e

Lgica

Metodologia

Linear

Programao

Computacional

Cientfica

11 Arivaldo

71 Elda

67 Thiago

54 Nilvanete

lgebra

Lgica

Algoritmo e

Metodologia

Linear

Computacional

Programao

Cientfica

Sexta
72 Michel
Clculo 1

72 Michel
Clculo 1

72 Michel
Clculo 1

72 Michel
Clculo 1

72 Michel
Clculo 1

Fonte: Pedroso, 2014

As restries tratadas na metodologia so as mencionadas seo 5.1


deste trabalho. Desta forma, observa-se que a distribuio das disciplinas para um
determinado dia da semana depende do professor que foi alocado para ela. Isso
implica dizer que a disciplina de lgebra Linear vai ficar com o professor que possui
a disponibilidade para lecion-la. Essa visualizao foi obtida em consulta direta na
base de dados e acrescentada ao Quadro 2.
Verificou-se, ainda, que existe professores que ficaram alocados para
determinado dia da semana, ou seja, o software verificou que existiu professores
que possuam maior preferncia para lecionar em determinados dias. Por exemplo,
o professor Michel possui maior prioridade de lecionar na sexta-feira, pois das cinco
permutaes ocorridas ele sempre foi alocado para esse dia. O Grfico 2 resume as
permutaes para cada professor.
Grfico 2: Grfico de permutao

39

Permutao dos Professores


6
5
4
3
2
1
0
Seg
11 Arivaldo

ter

qua

54 Nilvanete

67 Thiago

qui
71 Elda

sex
72 Michel

Fonte: Pedroso, 2014

5.5 Resultados
O software faz a organizao pela forma que foi programado. Em
contrapartida, a quantidade de professores alocados no BD no foi o suficiente para
distribuir todos eles diferentes para todos os perodos. Alm disso, existem
professores que lecionam matrias especficas para determinados perodos, como
exemplo do curso de cincias da computao e a matria de Clculo 1 para o
segundo perodo.
Considerando os testes realizados, verificou-se que o software ficou
limitado s informaes contidas no BD, pois a quantidade de professores que
estavam aptos para ministrar aulas no curso de Cincias da Computao era
pequena para aloca-los em todos os perodos de forma distinta. Nesse aspecto, a
forma como a base de dados estar alimentada apresenta significativa diferena
quando for realizada a organizao.
Mesmo com as peculiaridades do BD, o programa organiza de forma
dinmica os professores, dando resultados diferentes quando executado vrias
vezes conforme visto nos testes executados, ou seja, o sistema pega variadas
situaes para satisfazer o mesmo problema.

40

6 CONCLUSO
O aumento quantitativo de alunos que ingressam nas faculdades e
universidades, e o consequente aumento do corpo docente, fez com que fosse
necessria a utilizao de sistema para automatizar a gesto dos horrios dos
professores, utilizando os conceitos da programao por restrio.
O presente trabalho explicou as bases da programao restritiva e as
disciplinas que deram origem a ela. Tal utilizao deu-se devido ao fato dela ser um
paradigma especializado em restries, que facilitou a construo do software e fez
a organizao da forma mais correta possvel, sem a exigncia de esforos mais
complexos tanto na criao quanto na resoluo.
Ressaltou-se tambm uma biblioteca especfica de programao por
restrio, a Choco, como forma de resolver os impasses encontrados para elaborar
uma soluo s restries dos professores. Ela comprovou sua eficincia no
tratamento de restries, tendo como ponto forte sua simplicidade na fase da
implementao de inferncias e mtodos para solucionar as mesmas.
Como resultado, o software que foi exposto neste trabalho atendeu as
expectativas propostas uma vez que a organizao feita de forma automtica
buscando as informaes na base de dados para a distribuio de professores
conforme as particularidades existentes no problema: dias da semana, disciplinas e
turnos.
Como trabalhos futuros, sugerimos que sejam feitas atualizaes na base
de dados para poder aumentar as possibilidades do software com relao as
organizaes dos professores. Pretende-se ainda aprimorar o sistema para
incorporar outros cursos na organizao das grades de horrios destes e utilizar a
mesma metodologia organizacional para o problema de disponibilidade de
laboratrios para os professores.

41

REFERNCIAS
ACP Association for Constraint Programming. Disponvel em: <
http://www.a4cp.org/ >.
APT, Krzysztof R. Principles of Constraint Programming. [S.l.]. Cambridge. 2009.
BAPTISTA, Lus. Estudo preliminar de restarts para algoritmos de CSP.
Disponvel em:<
http://comum.rcaap.pt/bitstream/123456789/2093/1/Estudo%20preliminar....pdf >.
Acesso em 20 out. 2014.
BORIGA, Lect. Radu. Solving some optimization problems using choco library.
Disponvel em:< http://megabyte.utm.ro/en/articole/2008/Sti/sem_1/1Boriga.pdf >.
Acesso em 20 out. 2014.
CHOCO A Free and Open-Source Java Library for Constraint Programming.
Disponvel em:< http://choco-solver.org/ >.
EURODECISION Operational Research. Constraint Programming. Disponvel
em:< http://www.eurodecision.eu/constraint-programming >. Acesso em: 27 out.
2014.
FRUHWIRTH, Thom. HEROLD, Alexander. KUCHENHOFF, Volker. PROVOST,
Thierry Le. LIM, Pierre. MONFROY, Eric. WALLACE, Mark. Constraint logic
programming An informal Introduction. Disponvel em: <
http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=4055363F1227B18246380F
B7D90893B7?doi=10.1.1.27.5117&rep=rep1&type=pdf >. Acesso em: 25 out. 2014.
GANU, Hrishikesh. Constraint Programming. Disponvel em: <
https://www.informs.org/ORMS-Today/Public-Articles/August-Volume-38-Number4/Constraint-programming >. Acesso em: 25 out. 2014.
IBM. Mathematical Programming vs. Constraint Programming. Disponvel em:<
http://www-01.ibm.com/software/integration/optimization/cplex-cp-optimizer/mp-cp/ >.
Acesso em 20 out. 2014.
LUGER, George F. Inteligncia Artificial. 4. ed. Porto Alegre: Bookman. 2004.
MORENO, Ana Carolina. FAJARDO, Vanessa. Nmero de matrculas no ensino
superior cresce 81% em dez anos. Disponvel em: <
http://g1.globo.com/educacao/noticia/2013/10/numero-de-matriculas-no-ensinosuperior-cresce-81-em-dez-anos.html >. Acesso em 19 set. 2014.
NASCIMENTO, Rafael J. Oliveira do. Engenharia de software orientada a
agentes. Disponvel em: < http://www.devmedia.com.br/engenharia-de-softwareorientada-a-agentes/29238 >. Acesso em 20 out. 2014.
Publications by the Constraint Satisfaction and Optimization Group, University of
Essex. Disponvel em: < http://cswww.essex.ac.uk/CSP/papers.html >.

42

ROSSI, Francesca. BEEK, Peter Van. WALSH, Toby. Handbook of Constraint


Programming. [S.l]. Elsevier, 2006.
RUSSELL, Stuart. NORVIG, Peter. Inteligncia Artificial. 2. Ed. Traduo:
Vandenberg D. de Souza. So Paulo: Elsevier, 2004.
SANTOS, Rafael. Entendendo programao com restries atravs da resoluo de
sudokus. MundoJ Java de ponta a ponta, v.48. p. 33-41.
SUCUPIRA, Igor Ribeiro. Programao por propagao de restries: teoria e
aplicaes. Disponvel em: < http://www.ime.usp.br/~igorrs/ic/relatorio/relatorio.pdf
>. Acesso em 20 out. 2014.
SUENAGA, Marcio. NETTO, Marco A. S. Programao por restries. Disponvel
em: < http://grenoble.ime.usp.br/~gold/cursos/2005/mac5758/seminario-marciomarco.pdf >. Acesso em: 19 set. 2014.
The choco Team. CHOCO: an Open Source Java Constraint Programming
Library. Disponvel em:< http://www.emn.fr/z-info/choco-solver/uploads/pdf/chocopresentation.pdf >. Acesso em 19 set. 2014.
TURING, Alan M. Computing machinery and intelligence. Disponvel em:<
http://www.loebner.net/Prizef/TuringArticle.html >. Acesso em 19 set. 2014.

S-ar putea să vă placă și