Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Procura respetivamente todas as permutações, calculando o tempo de
- % atraso e tempo total - após isso, insere esses valores na funcao multi
- % criterio e normaliza os valores. Ordena depois pelo valor normalizado.
- funcao_multicriterio_final(M, LL):- findall(p(Valor, LOp),(permuta_tempo_atraso(M, LOp,TAtraso, TTotal), funcao_multicriterio(M, Valor, TTotal, TAtraso)),LP), sort(LP,LL).
- % Calcula o valor da normalização, tendo em conta o valor minimo e
- % maximo calculado com as heuristicas.
- funcao_multicriterio(M,Valor, TOc, TAtr):- h_tempo_atraso(M, _,TempoMinAtraso, _), h_m_tempo_ocupacao(M, _, TempoMinTotal), normalizar(TOc, TAtr, TempoMinTotal, 250, TempoMinAtraso, 274, Valor).
- % Normalizar os valores
- normalizar(TOc, TAtraso, TOcmin, TOCMax, TAtrmin, TAtrMax, Valor):- normalizarOc(TOc, TOcmin, TOCMax,R), Rtemp is 0.4*R, normalizarAtr(TAtraso, TAtrmin, TAtrMax,R1),R1Temp is 0.6*R1, Valor is Rtemp + R1Temp.
- % Normalizar valores atraso e ocupação.
- normalizarOc(TOc, _, TOc, 0):-!.
- normalizarOc(TOc, TOcmin, TOcMax, R):- R is ((TOc-TOcmin)/(TOcMax-TOc)).
- normalizarAtr(TAtraso, TAtrMin, _, R):-(TAtraso<TAtrMin),!, R is 0.
- normalizarAtr(TAtraso, _, TAtrMax, R):-(TAtraso>TAtrMax),!, R is 1.
- normalizarAtr(TAtraso, _, TAtraso, 0):-!.
- normalizarAtr(TAtraso, TAtrMin, TAtrMax, R):- R is ((TAtraso- TAtrMin)/(TAtrMax-TAtraso)).
Advertisement
Add Comment
Please, Sign In to add comment