Pessoal,
após meses de estudo e implementações, disponibilizei no sourceForge um framework que permite modelar qualquer problema de satisfação de restriçoes (mais conhecidos como problemas combinatórios).
Batizei-o de JConstraints (constraints = restrições).
Como exemplo deste tipo de problemas, acredito que a maioria já conhece o problema das 9 rainhas que não podem se atacar em um tabuleiro de xadrez.
O wiki do site contém um tutorial bem completo com exemplos para que qualquer desenvolvedor possa começar a usar sem grandes dificuldades.
Link: https://sourceforge.net/projects/jconstraints/
Espero que gostem!!
Abraços!