AgroLógica
motor SWI-Prolog 9.0.4

Sistema experto · Programación lógica · Unitrópico

La ventana de siembra,
demostrada paso a paso.

AgroLógica cruza clima, suelo y temporada para calcular cuándo sembrar en el Casanare — y entrega cada recomendación como una respuesta computada: con su árbol de derivación SLD, su traza de puertos y su justificación agronómica. Nada de cajas negras: un razonamiento que el productor puede auditar.

  • 8 cultivos
  • 3 zonas agroecológicas
  • 12 meses del calendario llanero
  • 4 niveles de conocimiento

01 · Consulta

Defina el escenario

Elija cultivo y predio. Puede ajustar el análisis de suelo — los hechos del predio se cargan con la petición y viven solo durante ella (thread_local + setup_call_cleanup/3).

Análisis de suelo del predio

La consulta viaja a la pasarela Node.js y de ahí al motor SWI-Prolog en la interfaz de loopback.

02 · Respuesta computada

La derivación, en vivo

Cuatro paneles sincronizados sobre la misma derivación: la consola enumera soluciones bajo demanda —replicando el retroceso—, el árbol y la traza muestran el cálculo, y la justificación lo traduce al lenguaje del productor.

Consola de consulta

backtracking bajo demanda

Ranking de ventanas

Árbol de derivación SLD

clic en un nodo → detalle y unificador

hoja de éxito → una respuesta computada hoja de fallo → la rama no aporta respuesta \+ negación por fallo

Traza · modelo de caja

Call / Exit / Redo / Fail

Justificación agronómica

en lenguaje del productor

Ejecute una consulta para ver la justificación.

03 · Pregunta contrafactual

Simulador de prácticas de manejo

Cuando un cultivo no tiene ventana, la respuesta útil no es el rechazo sino la ruta para habilitarlo: manejo_habilitante/4 combina negación por fallo con las prácticas aplicadas y responde qué intervención abre el calendario.

Prácticas a simular

Ejemplo: maíz tecnificado en El Triunfo (altillanura, Al 48 %) no tiene ventana; con encalado pasa a 4 meses viables. Actívelo y compruébelo.

05 · Bajo el capó

Cómo razona el motor

El dominio se expresa en cláusulas de Horn: “un cultivo es apto si la lluvia del ciclo está en su rango y el suelo tolera su acidez y no existe riesgo”. La consulta del productor entra por el Nivel 4 y la resolución SLD desciende hasta los hechos.

  1. Nivel 4 · Decisiónventana_siembra/4 · mejores_ventanas/3 · ventana_con_manejo/5
  2. Nivel 3 · Restricciónsin_riesgo/3 · riesgo/3 — negación por fallo
  3. Nivel 2 · Aptitudaptitud_climatica/4 · aptitud_edafica/2 · lluvia_acumulada/4 (recursión)
  4. Nivel 1 · Hechoscultivo/1 · req_lluvia/3 · lluvia_mes/3 · suelo_ph/2 · 17 predicados

El componente distintivo es el metaintérprete: un intérprete de Prolog escrito en Prolog que resuelve la consulta y, a la vez, construye el árbol de la derivación. La explicación no es un módulo aparte: es un subproducto del cálculo.

nucleo.pl · metaintérprete
% Metainterprete: resuelve y devuelve el arbol
resolver(true, exito) :- !.
resolver((A,B), y(TA,TB)) :- !,
    resolver(A,TA), resolver(B,TB).
resolver(\+ A, nafd(A)) :- !, \+ A.
resolver(M, nodo(M,Sub)) :-
    transparente(M), !,   % predicado del dominio
    clause(M, Cuerpo),    % se abre la clausula
    resolver(Cuerpo, Sub).
resolver(M, hecho(M)) :- call(M).
despliegue
# El motor jamás se publica a Internet
nginx (TLS) ─→ Node.js :3129 ─→ SWI-Prolog
                    │            127.0.0.1:4129
                    └─ caché por cultivo + suelo