Cuestiones de la práctica 7.


 

1. Indique qué tipo de conocimiento puede representar mediante un sistema de reglas. Señale así mismo por qué podemos hablar de procesos de razonamiento y de procesos inferenciales.

Una regla está formada por un conjunto de condiciones y de acciones. Las acciones se producirán si las condiciones se cumplen. Las reglas se activan si existe un hecho que lo satisfaga o instancias de las clases definidas por el usuario.
Podemos hablar de procesos inferenciales ya que existe un motor de inferencia que comprueba si se satisface el antecedente de la regla

2. Indique la relación que existe entre la base de conocimiento y la base de hechos.

En la base de conocimiento existe una serie de reglas, las cuales se activarán cuando se cumpla el antecedente de la regla. Para que se active necesita que exista un hecho o varios, los cuales se encuentran en la base de hechos.


3. ¿Debemos programar el motor de inferencia para que pueda razonar el sistema?

El motor de inferencia sabe en cada momento que es lo que tiene que hacer, es el que hace posible la ejecución del programa en CLIPS, es el encargado de, por ejemplo, en una regla, comprobar si existen los hechos del antecedente y en caso afirmativo, pasar el consecuente con la base de hechos (B.H)

4. Defina formalmente una regla. Defina los elementos básicos de que se compone una regla.

(defrule <nombre de la regla> <comentarios>
<Elementos
condicionales>
=>
<Consecuencia de la regla>

El nombre de la regla, es con el que se identifica.
Elementos condicionales (o parte izquierda) son los que se deben cumplir para ejecutar el consecuente
Un consecuente (o parte derecha) que se ejecutará si se satisface el antecedente.

Vemos un ejemplo:
(defrule estacion "pequeño ejemplo"
(hace calor)
(no llueve)
=>
(assert (es verano))
)



5. ¿Es posible definir dos reglas con el mismo nombre? ¿Qué ocurrirá si se hiciera?

Sí se puede definir dos reglas con el mismo nombre, pero lo que ocurrirá es que la regla ya existente quedaría eliminada, aún cuando, se cometa algún error en la definición de la nueva regla.


6. ¿Qué se entiende por elemento condicional del antecedente de una regla? ¿Qué relación existirá entre estos elementos condicionales y la base de afirmaciones o también denominada base de hechos?

El antecedente de la regla es la parte que se debe cumplir para que se active el consecuente de dicha regla. Para que se cumpla debe existir un hecho en la base de hechos que lo satisfaga.

7. ¿De qué elementos se compone el consecuente de una regla?

El consecuente de un regla se compone de una lista de acciones que se llevarán a cabo cuando en la base de hechos existan una serie de hechos que satisfagan el antecedente de la regla.
8. Explique el ciclo básico que tiene lugar mediante la activación de una regla

Una vez construida la base de conocimiento y se haya declarado la lista de hechos, se pueden ejecutar las reglas:
a) Si se dispara la última regla de la agenda que posee el foco y no existe una nueva agenda que reciba el control del sistema, la ejecución se detiene. En otro caso, el motor de inferencia selecciona la regla situada en la posición más alta de la agenda activa.
b) Las acciones de la parte derecha de la regla son seleccionadas para ser ejecutadas.
c) Las reglas pueden estar activadas o desactivadas. Las activadas se colocan en la agenda del módulo en el cual están definidas. Las desactivadas se suprimirán de la agenda.
d) Si se usa la prioridad dinámica, los valores de prioridad de todas las reglas en la agenda serán reevaluadas.

9. Escriba la sintaxis del elemento condicional de una regla

<elemento-condicional> ::= <EC-PATRON> |
<EC-CONDICIONAL-PATON-SIGNADO> |
<EC-NOT> |
<EC-AND> |
<EC-OR> |
<EC-LOGICAL> |
<EC-TEST> |
<EC-EXISTS> |
<EC-FORALL>
10. Describa las diferencias fundamentales entre el elemento condicional patrón y otros elementos condicionales.

El elemento condicional patrón contiene las restricciones para determinar si alguna entidad patrón satisface dicho patrón. El primer campo debe ser un símbolo y no se puede usar ninguna otra restricción. Un slot de campos simples puede sólo contener restricciones de un campo y esa restricción debe sólo ser capaz de emparejar con un campo simple. Un slot multicampo puede contener cualquier número de restricciones de campo.

11. Describa los elementos básicos que pueden formar parte de un elemento condicional patrón en el antecedente de una regla

Restricciones de campo:
Se usan para verificar si las cumple un campo simple o un slot de una entidad patrón.

Comodines:
Se usan en los elementos condicionales patrón para indicar que cualquiera que fuese el valor que ocupase su posición en la E.P. sería válido para que dicha E.P. satisfaga el emparejamiento con el patrón de la regla y por lo tanto, se la satisfaga.

Variables:
Se usan para almacenar el valor de un campo para que pueda usarse después.
12. Enumere todas las restricciones que pueden usarse en un elemento condicional patrón.

Restricción literal:
Se define con el valor exacto con el que deberá compararse el campo. Pueden ser valores constantes de tipo de datos tales como enteros, reales, símbolos, cadenas y nombres de instancias. Todas las restricciones literales deben ajustarse a sus correspondientes valores en las entidades patrón.

Restricción con conectores

Donde encontramos los conectores & (and), | (or) y ~ (not).

Restricción predicado
Restricción que hace uso de valores de retorno de una función predicado.
13. Señale los diferentes comodines que pueden aparecer en un elemento condicional patrón así como el papel que desempeña cada uno en el proceso de comparación de patrones que lleva a cabo el motor de inferencia.

Podemos distinguir dos comodines:


Comodín de campo simple:
Denotado por (?), empareja cualquier valor que se encuentre almacenado en la misma posición en la entidad patrón y en la base de hechos.

Comodín multicampo:
Denotado por ($?), emparejaría con cualquier número de cero o más campos que hubiese en una entidad patrón

14. Indique cuáles son las características fundamentales de un elemento condicional patrón

El primer campo debe ser un símbolo y no se puede usar ninguna otra restricción. Este campo sirve para determinar si el patrón debe compararse con un hecho ordenado o por el contrario, con una instancia de un objeto.
Un slot de campo simple puede contener restricciones de un campo y debe ser capaz de emparejar con un campo simple.
Un slot multicampo puede contener cualquier número de restricciones.

15. ¿Para qué se utiliza el primer campo de un elemento condicional patrón?

El primer campo de un elemento condicional patrón se emplea para determinar si el patrón debe compararse con un hecho ordenado o con una instancia de un objeto.


16. ¿Qué se entiende por patrón de tipo objeto?

Se entiende que el primer campo en un patrón ha sido object, el cual se reserva par indicar que es un patrón de tipo objeto.

17. Indique las diferencias sintácticas entre un elemento condicional patrón aplicable a un hecho ordenado y un elemento condicional patrón aplicable a un hecho definido a partir de una plantilla

El los hechos ordenados, simplemente hay que poner la lista de afirmaciones que queremos que se añadan en la base de hechos
Y mediante una plantilla, hay que definir primero la plantilla a emplear. Posteriormente pondremos la lista de afirmaciones pero deben conservar la estructura definida por la plantilla.


18. Señale la utilidad de los comodines y los diferentes tipos que existen

Comodines de campo simple (?):
Se empareja con cualquier valor único
Comodines de campo múltiple ($?):
Se empareja con cualquier número de cero o más campos que hubiese en una entidad patrón

19. Indique cuál es la utilidad de una variable y relaciones entre el uso de las variables en las reglas y los cuantificadores en lógica de primer orden

La utilidad es que se el puede asignar el valor del campo de la entidad patrón y posteriormente hacer uso de él.

20. Describa la sintaxis de los diferentes tipos de variables

<restricción> ::= <constante> | ? | $? |
<variable-de-campo-simple> |
<variable-de-campo-múltiple>

21. Discuta el alcance de las variables dentro de una regla

Las variables pueden ser utilizadas en una regla, tanto en el antecedente como en el consecuente. Supongamos que el antecedente de una regla tiene la siguiente forma:
(defrule regla
(edad ?x)

En este caso la variable simple ?x toma el valor de la edad que exista en la base de hechos. El consecuente como dijimos, también puede emplear variables, supongamos que tenemos:
=>
(assert (la edad de la persona es ?x))

De esta forma, hemos logrado que en la base de hechos aparezca tantos hechos de la forma (la edad de la persona es ?x) como hechos haya de la forma (edad ?x).
 

22. Describa las restricciones con conectores. Represente la sintaxis de una restricción que incluya restricciones con conectores, constantes y variables

Hay tres conectores que permiten unir restricciones y variables, son & (and) que se cumple si se satisface todas las restricciones, | (or) se cumplirá si se satisface alguna restricción, y ~ (not), se cumplirá si no se satisface la restricción.

Vemos un ejemplo:
(defrule ejemplo
(color ?x)
(colores ?x|~verde)
=>
(assert (color bueno))
)

23. Indique qué tiene de especial la restricción &

Que se deben cumplir todos las restricciones para que se cumpla la restricción general.

24. ¿Qué son y qué utilidad tienen las restricciones de funciones predicado?

Las restricciones de predicado permiten llamar a una función predicado durante el proceso de comparación de patrones. Se pueden usar para restringir un campo simple. La restricción puede ser por ejemplo, que una determinada variable sea un entero, o sea un número par…

25. Describa la sintaxis de una restricción en la que participen restricciones de funciones predicado

<término> ::= <constante> |
<variable-de-campo-simple> |
<variable-de-campo-múltiple> |
:<llamada-función>


26. Indique qué son y qué utilidad tiene las restricciones que hacen uso de los valores de retorno de una función

Consiste en usar el valor de retorno de una función externa para restringir los valores de un campo en un patrón. La utilidad que tiene consiste en permitir al usuario llamar a una función externa desde dentro del patrón.

27. Describa la sintaxis de las restricciones que hacen uso de los valores de retorno de una función.

<término> ::= <constante> |
<variable-de-campo-simple> |
<variable-de-campo-múltiple> |
: <llamada-función> |
= <llamada-función>

28. Discuta la comparación de patrones con objeto patrón

Las instancias definidas por el usuario se pueden usar en la parte izquierda de las reglas (antecedente) para la comparación de patrones. Los patrones sólo pueden compararse con objetos de clases que previamente hayan sido definidos y que estén dentro del alcance del módulo que se está procesando en el momento actual.

29. Describa la sintaxis del elemento condicional test y discuta su utilidad

<test-CE> ::= (test <function-call> )

El elemento condicional test se satisface si la llamada a la función da como resultado un valor non-FALSE. Un ejemplo de su utilidad lo encontramos cuando hacemos comparaciones matemáticas o complejas operaciones lógicas.

30. Describa y discuta la sintaxis de los elementos condicionales or, and y not.

or:
<or-CE> ::= (or <conditional-element> +)
Se debe cumplir alguno de los elementos condicionales.
and:
<EC-and> ::= (and <conditional-element> +)
Se deben cumplir todos y cada uno de los elementos condicionales
not:
<CE-not> ::= (not <conditional-element>)
No se debe cumplir el elemento condicional
31. Explique cómo funcionan los elementos condicionales exist, forall, logical.

exist proporciona un mecanismo para determinar si un grupo de elementos condicionales se satisfacen por al menos un conjunto de entidades patrón.

forall proporciona un mecanismo para determinar si se satisface un grupo de elementos condicionales especificados por cada ocurrencia de otro elemento condicional especificado.

logical permite "el mantenimiento de la verdad" de las entidades patrón creadas por reglas que utilizan el elemento condicional logica.
 


Volver a la pagina anterior
Cerrar Ventana