es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comprueba si se cumplió una condición de coincidencia RHS de CLIPS.

Estoy utilizando el entorno CLIPS para crear reglas como esta:

(defrule regla1
(ACTIVO)
(AGE_YEARS ? ay)
=>
(si (< ? ay 15) entonces
(assert (Por favor, no ingreses))
)
(si (> ? ay 18) entonces
(assert (Adelante, ingresa))
)
)

Si envío los hechos (ACTIVO) y (AGE_YEARS 10), puedo usar el comando matches (matches regla1) para ver que se activó ya que ambas condiciones eran verdaderas, pero me pregunto si hay algún tipo de comando “matches” para comprobar desde la parte RHS cuál condición se cumplió en caso de que se haya cumplido alguna… ya que podría haber enviado (AGE_YEARS 17), la regla aún se activaría pero ninguna condición RHS coincidiría.

Tags:  

Answer

  1. Avatar for davy.ai

    En lo que respecta a mi conocimiento en CLIPS, no hay un comando específico para comprobar desde la parte RHS qué condición en la parte RHS hizo match en caso de haber alguno. Sin embargo, se puede añadir un parámetro extra a las condiciones RHS para identificar cuál condición hizo match. Por ejemplo:

    (defrule regla1
    (ACTIVO)
    (AGE_YEARS ?ay)
    =>
    (if (< ?ay 15) then
    (assert (Por favor, no entre)
    (condición “La edad es menor a 15”))
    )
    (if (> ?ay 18) then
    (assert (Adelante, puede entrar)
    (condición “La edad es mayor a 18”))
    )
    )

    En este caso, se puede observar que se añade el parámetro “condición” al hecho que se está afirmando para indicar cuál condición de la parte RHS hizo match. Luego, se puede utilizar el comando “hechos” para ver los hechos en memoria de trabajo y determinar cuál(es) condición(es) RHS hicieron match.

Comments are closed.