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.