Prolog manual ou rotulagem personalizada

Atualmente, estou escrevendo um solucionador para um problema de planejamento de piso no Prolog e tenho alguns problemas com a parte de rotulagem.

O problema atual é que minhas restrições são postadas, mas quando inicio a rotulagem, leva uma eternidade para encontrar uma solução. Eu gostaria de trazer algumas heurísticas.

Minha pergunta é: como rotulo minhas variáveis manualmente? Receio que depois de definir uma variável clpfd como esta:

X in Xinf..Xsup

e restringi-lo, se eu fizer algo como:

    fd_sup(X, Xmax),
    X = Xmax,
...

no meu rótulo personalizado, não usarei a capacidade de retorno do Prolog para testar os outros valores do domínio de X. Estou errado ?

Além disso, existe uma maneira mais inteligente de rotular minhas variáveis do que escrever procedimentos de rotulagem personalizados? Minha idéia de heurística consistiria em tentar extremos de um domínio variável alternativamente (como max (X), min (X), max (X-1), min (X-1) etc ...)

Espero que possa me ajudar :)

questionAnswers(5)

yourAnswerToTheQuestion