• Nenhum resultado encontrado

HEURÍSTICA PARA ENCONTRAR UMA SOLUÇÃO VIÁVEL 101 Os objetos Aulas ou grupos de aulas simultâneas são ordenados de forma que a dife-

Os modelos heurísticos

7.2 HEURÍSTICA PARA ENCONTRAR UMA SOLUÇÃO VIÁVEL 101 Os objetos Aulas ou grupos de aulas simultâneas são ordenados de forma que a dife-

rença entre o número de horários possíveis e o número de encontros faltando alocar seja não-decrescente. Isto é, tentaremos alocar primeiro os encontros da Aula ou do grupo que tem menos possibilidades. Se há objetos com uma mesma diferença, sua ordem relativa é randômica.

O primeiro objeto Aula ou grupo, não em _ jaTestados, tem seus horários atualmente pos- síveis ordenados de forma não-decrescente quanto ao número de matérias que o disputam na turma, ou o menor número de matérias que o disputam entre as turmas do grupo. Isto porque os menos disputados são também os menos atualmente possíveis para encontros. Se há horários com um mesmo número de disputas, sua ordem relativa é randômica. São feitas as alocações para os horários nesta ordem até que seja satisfeita a demanda (total ou restante, devido solução inicial ou alocação estática) ou acabem os horários dh atualmente possíveis.

Caso acabem os horários dh atualmente possíveis sem que seja completada a demanda, percorre-se os horários na disponibilidade para os encontros da Aula ou grupo (_dispcmdh= 0 para m de c, ou para cada (c,m)jn∈ Gj, n = 1, . . ., |Gj|) numa ordem aleatória, averiguando a possibilidade de promover trocas capazes de liberar o horário para um encontro. Verificando ser possível para um dado horário, as trocas são feitas e é alocado um novo encontro neste. Continua-se a percorrer os horários até que seja completa a demanda ou seja verificado o último horário. Se é verificado o último horário sem que seja completa a demanda o objeto é guardado na lista _ jaTestados.

Encerra-se esta iteração. E tudo se repete na próxima: ordenação dos objetos faltando completar demanda, ordenação dos dh atualmente possíveis para o primeiro objeto não em _ jaTestados, alocação para os encontros do objeto Aula ou grupo na ordem destes horários atualmente possíveis e, caso necessário, trocas para liberar horários para alocação.

A nova ordenação é feita para refletir as alterações causadas pelas alocações promovidas para a Aula ou grupo da última iteração, e pelas alterações promovidas pelas trocas caso tenham sido usadas.

Como são feitas as trocas? As trocas são feitas mediante movimentos baseados no Grafo Híbrido e na solução parcial atual quase viável, como definido no Capítulo 6, mas não com movimentos seqüenciais. A verificação de um dh candidato se faz da seguinte forma. Primeiro tratemos o caso de uma Aula. Ora este dh pertence a disponibilidade dos encontros da Aula a, de m em c, e não está ocorrendo encontro de a neste, xcdh6= m, mas não pode ser considerado atualmente possível, logo:

• há um outro encontro mocorrendo nesta turma c; ou

• há um encontro ocorrendo numa turma crelacionada a c; ou

• o professor da Aula, pcm, já está ministrando algum encontro, seja de uma disciplina sua numa turma ou como substituto; ou

• o professor substituto da Aula, ps= fp(m, c), está ministrando algum encontro, seja de uma disciplina sua numa turma ou como substituto; ou ainda

Os únicos ítens que não ocorrem ao mesmo tempo são o primeiro e o segundo.

Em se tratando de um grupo Gj, o dh candidato pertence a disponibilidade dos encontros de todas as Aulas do grupo e não está ocorrendo neste horário encontros deste grupo. Assim temos semelhantes empecilhos:

• há um outro encontro mocorrendo em alguma turma c, para alguma Aula do grupo,

(c, m) ∈ Gj; ou

• há um encontro ocorrendo numa turma crelacionada a alguma turma c, para algum

(c, m) ∈ Gj; ou

• algum professor pcm de alguma Aula do grupo, (c,m) ∈ Gj, está ministrando algum encontro, seja de uma disciplina sua numa turma ou como substituto; ou

• algum professor substituto ps = fp(m, c) de alguma Aula do grupo está ministrando al- gum encontro, seja de uma disciplina sua numa turma ou como substituto; ou ainda • alguma sala especial scm, requerida por alguma Aula do grupo, está ocupada por algum

encontro.

Os movimentos são escolhidos para desfazer estes empecilhos que impedem que dh seja atualmente possível. A busca por estes movimentos é feita na ordem dos ítens, e cada novo movimento escolhido deve manter a liberação promovida pelos movimentos anteriores além das características já atendidas sem necessidade de intervenção. Se para algum ítem não existe um tal movimento que desfaça o empecilho correspondente sem promover novos empecilhos relacionados a ítens anteriores, então a busca para este dh para, e os movimentos já realizados são desfeitos, aplicados novamente na ordem inversa.

Seja GH o Grafo Híbrido associado ao problema, e seja S a solução parcial atual quase viável. Os movimentos mov(dh,dh, T ) definidos no subgrafo GH(dh, dh, S ) com T ∈

T (dh, dh, S ) mantém a quase viabilidade. Isto é, as oito primeiras restrições para viabi- lidade e mais a restrição quanto a grupos de aulas simultâneas.

Para corrigir o primeiro ítem num horário dh, por exemplo no caso de uma Aula, m de

c, procura-se por um movimento mov(dh, dh, T ), com dhtal que xcdh′ = −2 e o encontro

de matualmente alocado em dh para a turma c pertença a T , e

cm∈ T . Assim garantimos

que teremos, após a aplicação do movimento, xcdh = −2. Consequentemente, xcdh= m′.

Semelhantes buscas são feitas para corrigir o segundo ítem, quanto às turmas relacionadas. Para garantir que um professor envolvido não esteja trabalhando em dh, é preciso encontrar um movimento mov(dh,dh, T ), com dhtal que o encontro de p atualmente alocado em dh

pertença a T , digamos ecm∈ T , e nenhum outro encontro seu pertença a T , ∀(c′′, m′′) de p,

(c′′, m′′) 6= (c, m), xc′′dh6= m′′.

E para garantir que a sala especial s requerida seja desocupada, buscamos por um movi- mento mov(dh,dh, T ), com dhtal que o encontro que atualmente ocupa s em dh pertença

a T , digamos ecm∈ T , e nenhum outro encontro que a requer pertença a T , ∀(c′′, m′′) de s,

(c′′, m′′) 6= (c, m), xc′′dh6= m′′.

Lembramos que um movimento encontrado para corrigir algum ítem só será aceito se man- ter a não satisfação dos ítens anteriores e das partes do ítem atual já verificadas.

7.2 HEURÍSTICA PARA ENCONTRAR UMA SOLUÇÃO VIÁVEL 103

Outline

Documentos relacionados