• Nenhum resultado encontrado

3.4 Metaheurísticas

3.4.1 Busca Tabu

3.4.1.1 Um Algoritmo de Busca Tabu para o Problema

Nesta seção será apresentado o algoritmo de melhoramento de quadros de ho-rários BT-PPTC[60], implementado para o PPTC. O método implementa a idéia da metaheurística Busca Tabu de utilização de memórias de curto e longo prazo para o direcionamento de métodos de busca local. Nesse sentido, a composição de diferentes tipos de memórias relacionadas ao PPTC é estudada.

Representação e avaliação de soluções:

A solução é armazenada em uma matriz Q|P|×|D|×|H|, onde qpdh indica se o professorpno diadno períodohestá com alguma atividade letiva em alguma turma (qpdh ∈ {1, . . . ,|T|}) ou está ocioso (qpdh = 0). Como exemplo, uma solução parcial é mostrada na Figura 3.9, onde células com × indicam indis-ponibilidade do professor. Como observado em [61], apesar dessa representação ser menos compacta do que uma matriz que armazena as alocações em função

Professor\Período 1 2 3 4 5 · · · |D| × |H|

1 1 0 0 2 2 · · ·

2 0 × × 0 1 · · ·

3 × × 1 0 3 · · ·

4 0 1 0 1 0 · · ·

5 0 0 2 3 × · · ·

Figura 3.9: Fragmento de um quadro de horários gerado

das turmas, ela facilita a computação da função objetivo - mais ligada às prefe-rências dos professores. Conitos na agenda de diferentes professores, ou seja, a ocorrência de mais de um professor lecionando para a mesma turma no mesmo período, são permitidos e penalizados na função objetivo, com pesos signican-temente maiores do que os pesos atribuídos às restrições fracas. Desse modo, a função objetivo apresentada na seção 2.3.1 é complementada por uma medida de distância da factibilidade. Optou-se por considerar soluções infactíveis dada a diculdade de geração rápida de soluções que satisfaçam todas as restrições fortes e também porque nos métodos de busca local apresentados na seqüência a consideração de apenas soluções factíveis restringiria muito a existência de movimentos válidos. Penaliza-se com peso ω o número de professores em con-ito em cada período, ou seja, dado que em um dia d e período h existam c professores lecionando para uma dada turmat, a função objetivo será acrescida do valor max{c1,0} ×ω. O mesmo peso ω é aplicado para penalizar cada ocorrência de períodos de inatividade na agenda das turmas. Finalmente, cada aula que extrapola o limite diário professor×turma é penalizada com pesoδ. O algoritmo BT-PPTC:

O algoritmo BT-PPTC (Algoritmo 2) parte de um quadro de horáriosQe a cada iteração explora toda a vizinhançaN(Q)para selecionar o próximo movimento m. A denição de movimento aqui utilizada é a mesma de [61] e envolve a troca de dois valores no quadro de horários de um professorp∈P nas posições (d1, h1) e(d2, h2)sendo que qpd1h1 6=qpd2h2 e d1× |H|+h1 < d2× |H|+h2. A complexidade de tempo de exploração de N(Q)é O(|P| ·(|D| · |H|)2·EV) ondeEV é a complexidade de tempo de avaliação de cada vizinho, o que pode ser feito de forma eciente considerando somente as mudanças na agenda do professorpe a possível mudança no número de conitos em(d1, h1)e(d2, h2). Em (Algoritmo 2), denota-se por a aplicação do movimento.

Sempre que um movimento m for selecionado, esse será mantido na lista tabu por validadeT abu(m)iterações. Para dicultar a ocorrência de ciclagem, a implementação proposta não utiliza um valor xo paravalidadeT abu(m), mas seleciona de modo aleatório entre uma faixa de valores próximos a um valor central (validT abu), com desvio permitido controlado pelo parâmetroϕ∈[0,1]

(linha 21). Como critério de aspiração considera-se a melhora com relação à melhor solução conhecida. A atribuição de um movimento válido para a variável melhorMov (linha 6) é necessária visto que não há garantias que a condição da linha 13 será verdadeira em pelo menos uma das iterações do laço das linhas 7-18. Isso pode ser vericado considerando a execução de muitas iterações da busca tabu comvalidT abu=e um quadro de horários inicial ótimo.

CAPÍTULO 3. HEURÍSTICAS PARA PROG. DE HORÁRIOS 34 Como a memória de curto prazo não é suciente para prevenir que o processo de busca que preso em determinadas regiões do espaço de busca [40], alguma estratégia de diversicação deve ser empregada. No método proposto a memória de longo prazo é utilizada para guiar o procedimento de diversicação. Com essa estratégia pretende-se evitar a perda de informação decorrente do reinício aleatório, bem como diminuir o risco de que áreas já visitadas do espaço de busca sejam novamente exploradas.

Dois tipos de memórias de longo prazo são propostas, o primeiro tipo ar-mazena medidas de transição, contando a freqüência de movimentos envolvendo cada professor×turma, já o segundo tipo armazena medidas de residência, con-tando o número de iterações que cada aula permaneceu em determinado dia e período. A cada movimento feito a memória de longo prazo é atualizada (linha 19), sendo reinicializada sempre que a solução incumbente for renovada (linha 25).Enquanto o processo de diversicação estiver ativo a informação das memó-rias de longo prazo será utilizada para guiar a seleção de movimentos, de modo que movimentos em quadros de horários de professores onde poucas mudanças foram feitas ou movimentos fazendo alocações ainda não experimentadas serão encorajados, por exemplo. Isso é feito através da incorporação de penalidades na avaliação de movimentos. Nos parágrafos seguintes a computação dessas penalidades será detalhada.

Memória de Longo Prazo baseada em Transição: nesse tipo de me-mória as medidas de transição são armazenadas em uma matrizM´|P|×|T|onde

´

mpt indica quantos movimentos foram realizados envolvendo o professor pe a turmat. Usando esses valores, as taxas de transição´tptsão calculadas:

´tpt= m´pt

max{m´pt|p∈P, t∈T}

Uma vez que um movimento pode envolver duas aulas ou uma aula e um período livre, a penalidade p´pa1a2 relacionada com um movimento na agenda de um professorp, nas posições (d1, h1) e (d2, h2) com conteúdos a1 =qpd1h1 e

Memória de Longo Prazo baseada em Residência: nesse tipo de me-mória medidas de residência são armazenadas em uma matrizM`|P|×|T|×|D|×|H|1

sendo que m`ptdh indica quantas iterações no decorrer da busca contaram com alguma aula do professor ppara a turma t no dia d no períodoh. Apesar de ser uma matriz com 4 dimensões, deve-se observar que a mesma é, em geral, bastante esparsa, de modo que implementações ecientes a tornam bastante prática para os problemas considerados nesse trabalho. Computa-se a taxa de residênciar`ptdh como:

`

rptdh= m`ptdh

max{m`ptdh|p∈P, t∈T, d∈D, h∈H}

1Essa estrutura é ligeiramente diferente de [60]. Como se observou em experimentos preliminares, resultados semelhantes foram obtidos comparando-se com a implemen-tação prévia, sendo que a estrutura aqui utilizada é mais compacta.

Desse modo, computa-se a penalidadep`ptdh de alocação de alguma aula do professorppara a turmatno diade períodohcomo:

`

pptdh= `rptdh×f(Q)

Para movimentos envolvendo duas aulas no quadro de horários de um dado professor a penalidade considerada será a média das penalidades das aulas en-volvidas.

A estratégia de diversicação é aplicada sempre que sinais de entrincheira-mento regional são detectados. Nesse caso, o número de iterações sem melhora é avaliado antes do início da estratégia de diversicação. O número de iterações sem melhora necessários para ativar a diversicação (ativDiv) e o número de ite-rações que a diversicação cará ativada (itDiv) são parâmetros do algoritmo.

O processo é cíclico e reinicia sempre que um múltiplo ativDiv iterações sem melhora são processadas. Movimentos realizados nessa fase podem ser vistos como movimentos de inuência [40], uma vez que o seu objetivo é modicar a solução de um modo inuente (não aleatório). O cálculo da penalidade utili-zada na diversicação (linha 10) pode considerar uma das (ou ambas) memórias de longo prazo.

CAPÍTULO 3. HEURÍSTICAS PARA PROG. DE HORÁRIOS 36

Entrada: Q,ativDiv,itDiv,validTabu, ϕ Saída: Q

Q←Q;ListaTabu← ∅;

1

semMelhora←0;it←0;

2 inicialize memória de longo prazo;

3

sesemMelhoramodativDiv<itDiv e it≥ativDiv então

9 calculepenalidade para o movimentom;

10

atualize memória de longo prazo ;

19

Q←Q⊕melhorMov;

20

validadeTabu(melhorMov)←

21

random(bvalidTabu−ϕ×validTabuc,dvalidTabu+ϕ×validTabue) +it ; atualizeListaTabu;

reinicialize memória de longo prazo;

25

até critério de parada atingido ;

29

Algoritmo 2: Algoritmo BT-PPTC