Procesamiento de restricciones de prólogo: cuadrados de embalaje
Estoy tratando de resolver un problema de procesamiento de restricciones en el prólogo.
Necesito empacar 4 cuadrados de 5x5,4x4,3x3 y 2x2 en una cuadrícula de 10x10. Ellos no pueden superponerse.
Mis variables se ven así:
Name: SqX(i), i=1..10, domain: 1..10
Donde X es 5,4,3 o 2. El índice i representa la fila, el dominio, la columna en la cuadrícula.
Mis primeras restricciones intentan definir el ancho y alto de los cuadrados. Lo formulo como tal:
Constraint: SqX(i) > SqX(j)-X /\ i>j-X, range: i>0 /\ j>0
Para que los puntos posibles se limiten a estar dentro de X filas y columnas entre sí. Sin embargo, Prolog se detiene en estas restricciones y da el siguiente resultado:
Adding constraint "(Sq5_I > Sq5_J-5) /\ (I>J-5)" for values:
I=1, J=1,
I=1, J=2,
I=1, J=3,
I=1, J=4,
I=1, J=5,
I=1, J=6,
=======================[ End Solutions ]=======================
Así que se detiene allí, ni siquiera revisando los otros cuadrados. Probablemente mis restricciones son demasiado estrictas, pero no puedo ver por qué o cómo. ¿Alguna sugerencia?