Al parecer hice bien en elegir la librería GPJ para este proyecto, a pesar de que esté en desarrollo y no esté bien acabada. GPJ es funcionalmente completa, aunque ciertas cosas como el manejo de errores podrían estar mejor. El principal problema es la documentación, es realmente complicado meterse en profundidad en la librería, y ha llevado mucho tiempo manejarla.

Por el contrario, JLP ofrece un acabado muy fino, y un manejo más sencillo de la librería, además de una documentación para la API y un manual muy completos. En poco tiempo he sido capaz de echarla a andar. Tiene muy buena pinta, aunque al estar tirando de SWI-Prolog, no creo que funcione bien cuando múltiples agentes empiecen a abrir muchas conexiones simultáneas en paralelo, que es la idea de esta extensión.

Dentro de la extensión desarrollada, están implementadas las primitivas para interactuar con SWI-Prolog desde NetLogo, aunque están deshabilitadas, ya que no ha sido posible hacerlo funcionar. Pero ahí están para cuando se resuelvan los problemas de conexión:

<Boolean> netprologo:run-query-jpl <llamada Prolog>

<llamada Prolog> <Boolean> netprologo:run-next-jpl <>

<> <List/String/Number> netprologo:dereference-var-jpl <nombreVar>

Pruebas realizadas en máquina con Windows de 64-bits:

Usando la instalación de SWI-Prolog de 64-bits, jre y jdk de 64-bits: EXITO desde Java. Falla al usarlo en NetLogo ya que no hay versión de 64-bits, y NetLogo usa el jre de 32-bits.

Usando la instalación de SWI-Prolog de 32-bits, jre y jdk de 32-bits: FRACASO desde Java y por tanto desde NetLogo. El problema está en la configuración del entorno de ejecución de SWI-Prolog. Creo que el problema está en el PATH-HOME, aunque supuestamente las variables de entorno del sistema las he configurado correctamente. Con el entorno de 64-bits funcionaba.

Pruebas realizadas en máquina con Windows de 32-bits:

Usando la instalación de SWI-Prolog de 32-bits, jre y jdk de 32-bits: FRACASO desde Java y por tanto desde NetLogo. Pensaba que al usar una maquina de 32-bits y el entorno de 32-bits funcionaría, igual que lo hizo el entorno de 64-bits en la máquina de 64-bits, pero NO. Ocurre lo mismo que en la prueba anterior, con el entorno de 32-bits.

Parece que el problema, es que aunque las variables de entorno estén correctamente introducidas, no es capaz de localizar los componentes necesarios. Buscando en foros he leído cosas sobre como configurar “programáticamente” el entorno, dentro de la api JPL, pero esto no era trivial, y no he tenido tiempo de realizar más pruebas.

Pero bueno como GPJ funciona correctamente, de momento no corre prisa. Los únicos problemas que he tenido con GPJ es que la pila se desborda antes que en SWI-Prolog.