Вы находитесь на странице: 1из 33

DEFTEMPLATE

INTRODUCCIN:
Hechos ordenados y no ordenados Una plantilla se puede considerar como un molde de hechos, definen patrones que seguirn hechos de un mismo tipo. Se definen slots cada uno con sus diferentes propiedades y/o restricciones.

ESTRUCTURA:
(deftemplate persona (slot dni (default ?NONE)) (slot nombre) (slot edad (type INTEGER)(range 1 13)) (multislot fecha_nacimiento) )

VALORES POR DEFECTO:


Podemos asignar un valor por defecto que se asignar cuando instanciemos un dato sin necesidad de que le proporciones un dato inicial.

(assert(persona (dni 18647596)(nombre Juan)))


Tenemos default y default-dynamic.

DEFAULT (ESTTICOS):
Este tipo de default, el valor por defecto que se le va a asignar a un slot se define en el momento en que se crea la plantilla, una vez creada la plantilla quedo definido el valor por defecto del slot y este se asignar sin cambiar en todas las inserciones (assert) que se hagan. (default ?DERIVE | ?NONE | <expresin>*)

?DERIVE: Este es el tipo de default esttico que esta definido en todos los campos si es que no se a definido que tipo de valor por defecto tendrn.
(deftemplate persona (slot nombre (default ?Derive)) (slot edad (type integer) )

Ej.: (deftemplate ejemplo (slot a) ; (slot a (type SYMBOL)) (slot b (type INTEGER)) (slot c (allowed-values rojo verde azul)) (multislot d) (multislot e (cardinality 2 2)(type FLOAT) (range 3.5 10.0) ) (slot f (type STRING)) )

Si introducimos un hecho en la MT sin dar ningn valor a ninguno de sus slots:

(assert(ejemplo ))
Obtendramos que los valores de los campos del hecho son: (ejemplo (a nil) (b 0) (c rojo) (d) (e 3.5 3.5)(f ))

?NONE: Este tipo de default esttico hace que en el campo el que se haya definido necesariamente a la hora de ingresar (assert) tiene que tener algn valor, no puede obviarse es campo ya que si se hace eso te botar error.
(deftemplate persona (slot dni (default ?NONE)) (slot nombre) )

Si introducimos un hecho sin introducir un campo dni: (assert(persona))

valor en el

Entonces la salida del clips sera: CLIPS> (assert (persona)) [TMPLTRHS1] Slot dni requires a value because of its (default ?NONE) attribute.

Valores Definidos:
En este tipo de default esttico, el valor por defecto que nuestro campo nosotros lo definimos. (deftemplate producto (slot nombre (default ?NONE)) (slot tipo (allowed-values comestible no_comestible)(default comestible)) (slot stock(type integer)(range 0 1000)(default 10) ) ) tendr

DEFAULT-DYNAMIC:
Este tipo de default, el valor por defecto que se le va a asignar a un slot se define en el momento en que se va a crear el hecho, una vez creado el hecho quedo definido el valor por defecto del slot y este variar cada vez que se asigne un nuevo hecho. (default-dynamic <expresin>*)

Ejemplo:
(deftemplate producto (slot codigo (default-dynamic gensym)) (slot nombre (default ?NONE)) (slot precio (type integer) (slot area (type STRING)) ) Si introducimos un hecho en la MT sin dar ningn valor a sus slots excepto el de nombre: (assert (producto (nombre TV)))

Entonces al listar los hechos veremos que los valores por defecto que se asignaron fueron lo siguientes:

(producto (codigo gen2) (nombre "tv") (precio 0) (area ""))


Si volvemos a ingresar otro hecho:
(assert (producto (nombre TV))) Entonces:

(producto (codigo gen1) (nombre "tv") (precio 0) (area "")) (producto (codigo gen2) (nombre "dvd") (precio 0) (area ""))

RESTRICCIONES PREDETERMINADAS DE COINCIDENCIA DE PATRONES


Para slots que no han sido definidos en la parte izquierda de la regla (LHS) se van a definir esos slots, respetando el nmero de campos de ese slot. En si esos son los slot que no han sido nombrados en el patrn. LHS => RHS

Ejemplo: (deftemplate objeto (slot marca) (slot precio) (slot codigo) (multislot areas) ) (defrule regla (objeto(marca ?m)(precio ?p)) (objeto(marca ?m)(precio 20)) => (printout t "hola") )

Se pueden establecer restricciones en los atributos en la definicin de plantillas (deftemplate). Restricciones estticas. En este caso la posible violacin de la restriccin se chequea cuando se carga un programa CLIPS.

Restricciones dinmicas. En este caso la posible violacin de la restriccin se chequea cuando un programa CLIPS esta ejecutndose.

Se hace referencia a los atributos que tendra la casilla, entendiendo como las restricciones referentes tanto a los valores por defecto de las casillas, <atrib-por-defecto>, como al tipo de datos, rango y cardinalidad que pueden almacenar , <restricciones-atributo>

Tipos de Atributos.
Especica el tipo de valor que puede almacenarse en la casilla que se restringe. (deftemplate alumno "Relacion alumno" (slot nombre (type STRING)) (slot apellido (type STRING)) (slot codigo (type ?VARIABLE)) (slot color-ojos (type SYMBOL)) (slot edad (type INTEGER)) )

Definicin de restricciones sobre el tipo de datos en las casillas

CLIPS> ( assert ( alumno (nombre "carlos"))) <Fact-2> CLIPS> ( assert ( alumno (codigo 2h))) <Fact-3> CLIPS> ( assert ( alumno (codigo "cod"))) <Fact-4>

Se utilizan para enumerar los valores permitidos para un campo concreto

(deftemplate trabajador "Relacion trabajador" (slot nombre (type STRING)) (slot apellido (type STRING)) (slot codigo (type ?VARIABLE)) (slot peso(allowed-numbers 20 25.9)) (slot color-ojos (type SYMBOL)) (slot edad (type INTEGER)) ))

CLIPS> ( assert (trabajador ( peso 2)))


[CSTRNCHK1] A literal slot value found in the assert command does not match the allowed values for slot peso. CLIPS> ( assert (trabajador (peso 25.9))) <Fact-2>

OBS:

( deftemplate s1(slot valor(allowed-values 1 2 3))) ( deftemplate s2(slot valor(allowed-symbols pepe juan)))


( deftemplate s2(slot valor ( type symbol) (allowed-symbols pepe juan)))

CLIPS> ( assert(s2(valor la)))


[CSTRNCHK1] A literal slot value found in the assert command does not match the allowed values for slot valor. CLIPS> ( assert(s2(valor 4))) <Fact-9>

Cuando los atributos son numricos conviene, en ocasiones, establecer sus valores mximo y mnimo

* Si no existe alguno de los limites puede utilizarse como valor el smbolo ?VARIABLE * Si se utiliza la palabra ?VARIABLE como valor mnimo, entonces el limite inferior toma el valor , y si se utiliza como valor mximo, dicho limite toma el valor +. * Si se utiliza la restriccin de rango, no pueden utilizarse las restricciones allowed-integers, allowed-floats, allowed-numbers y allowed-values.

En ocasiones puede que deseamos que el usuario introduzca una cantidad limite de valores en una casilla multicampo.

* Si se utiliza la palabra clave ?VARIABLE como primer limite, entonces la cardinalidad mnima es cero. Si se utiliza la palabra clave ?VARIABLE como segundo limite, entonces la cardinalidad mxima es + * Si no se especifica la cardinalidad de un atributo se supone que se opto por introducir ?VARIABLE en ambos limites.

( deftemplate medico "datos de un medico" (slot nombre (type STRING)(default ?NONE)) (slot edad (type INTEGER) (range 0 ?VARIABLE)) (slot sexo(allowed-values hombre mujer)) (multislot guardias (type INTEGER) (range 1 31) (cardinality 0 4)) )
CLIPS> ( assert(medico)) [TMPLTRHS1] Slot nombre requires a value because of its (default ?NONE) attribute. CLIPS> ( assert(medico(nombre "carlos"))) <Fact-1> CLIPS> ( assert(medico(nombre "Maria")(edad 24)(sexo mujer)(guardias 4 5 8 12))) <Fact-2>

NOTA: CLIPS realiza por defecto comprobaciones de tipo estaticas ( es decir en el momento de leer las expresiones correspondientes). Pero tambien puede realizarlos de forma dinamica ( en tiempo de ejecucion) esto se puede manipular utilizando las instrucciones: get-static-constraint-checking set-static-constraint-checking < valor> get-dynamic-constraint-checking set-dynamic-constraint-checking <valor>

DEFFACTS

DEFFACTS
La orden (deffacts) es una alternativa a (assert) para afirmar hechos. Deffacts se entiende como el conjunto de hechos iniciales que se disponen al comenzar el problema. Sintaxis (deffacts <nombre-definicin> [<comentario>] <hecho>*)

Donde: <nombre-de-la-definicion> <comentario> <hecho>

--> Un simbolo --> Un string

COMO USARLO?
Modo usual de utilizar deffacts es: 1. 2. 3. Declarar tantos hechos iniciales como deseemos con uno o varios deffacts. Ejecutar reset para usar los hecho previamente declarados. Ejecutar mas comandos de CLIPS.

EJEMPLO
CLIPS> (clear) CLIPS> (deffacts paseo "Algunos hechos sobre el paseo" (estado paseando) ;Hecho para ser insertado (tipo-de-paseo largo)) ;Hecho para ser insertado CLIPS> (reset) ;Hace que los hechos deffactssean insertados CLIPS> (facts) f-0 (initial-fact) f-1 (estado paseando) f-2 (tipo-de-paseo largo) Fora totalof3facts. CLIPS>

VISUALIZACION DE HECHOS
(ppdeffacts <nombre-deffacts>)

(list-deffacts)

BORRADO DE HECHOS
Para borrar hechos definidos previamente se utiliza el destructor undeffacts que tiene la Sintaxis: (undeffacts <nombre-de-la-definicion>)
Donde <nombre-de-la-definicion> ::= *|Un simbolo utilizado previamente por un deffacts

No debe confundir retract con undeffacts. El primero lo que hace es eliminar un hecho de la memoria de trabajo. El segundo no elimina nada de la memoria de trabajo. Solo dice que en el caso de que reinicie (despues de un reset) no se vuelvan a afirmar los hechos que se construyeron con <nombre-de-la-definicion>.

Вам также может понравиться

  • Manual de Halliburton para Configurar WITS
    Manual de Halliburton para Configurar WITS
    Документ22 страницы
    Manual de Halliburton para Configurar WITS
    Freddy Quintero
    Оценок пока нет
  • Avance
    Avance
    Документ12 страниц
    Avance
    Julio Shinyeok
    Оценок пока нет
  • Diseno de Sistemas 2013 II
    Diseno de Sistemas 2013 II
    Документ7 страниц
    Diseno de Sistemas 2013 II
    Julio Shinyeok
    Оценок пока нет
  • Avance
    Avance
    Документ12 страниц
    Avance
    Julio Shinyeok
    Оценок пока нет
  • Libro Investigacion Operativa1
    Libro Investigacion Operativa1
    Документ186 страниц
    Libro Investigacion Operativa1
    Pelayo Terrazas Trillo
    Оценок пока нет
  • Ok
    Ok
    Документ2 страницы
    Ok
    Julio Shinyeok
    Оценок пока нет
  • Ok IA
    Ok IA
    Документ1 страница
    Ok IA
    Julio Shinyeok
    Оценок пока нет
  • Arquisonido
    Arquisonido
    Документ4 страницы
    Arquisonido
    Julio Shinyeok
    Оценок пока нет
  • Ejercicios PLSQL
    Ejercicios PLSQL
    Документ3 страницы
    Ejercicios PLSQL
    Julio Shinyeok
    Оценок пока нет
  • Ejercicios PLSQL
    Ejercicios PLSQL
    Документ3 страницы
    Ejercicios PLSQL
    Julio Shinyeok
    Оценок пока нет
  • Diagrama Dependencias
    Diagrama Dependencias
    Документ1 страница
    Diagrama Dependencias
    Julio Shinyeok
    Оценок пока нет
  • 1er Infome Proyecto AlgoritmicaIIIultimo
    1er Infome Proyecto AlgoritmicaIIIultimo
    Документ16 страниц
    1er Infome Proyecto AlgoritmicaIIIultimo
    Julio Shinyeok
    Оценок пока нет
  • Cubo Led
    Cubo Led
    Документ6 страниц
    Cubo Led
    Erick Velasco
    Оценок пока нет
  • Diseno Sistemas Digitales VHDL
    Diseno Sistemas Digitales VHDL
    Документ270 страниц
    Diseno Sistemas Digitales VHDL
    Harold David Gil Muñoz
    Оценок пока нет
  • Unidad III
    Unidad III
    Документ24 страницы
    Unidad III
    Axel Steven Contreras Lòpez
    Оценок пока нет
  • TV Queen QTV
    TV Queen QTV
    Документ10 страниц
    TV Queen QTV
    maria ardiles
    Оценок пока нет
  • Cuadro Tier Niveles Seguridad
    Cuadro Tier Niveles Seguridad
    Документ3 страницы
    Cuadro Tier Niveles Seguridad
    ileana
    Оценок пока нет
  • Catalogo UPS SOCOMEC - Itys
    Catalogo UPS SOCOMEC - Itys
    Документ2 страницы
    Catalogo UPS SOCOMEC - Itys
    Rgnaval Astillero
    Оценок пока нет
  • Electronica 2
    Electronica 2
    Документ2 страницы
    Electronica 2
    wrjona
    Оценок пока нет
  • Micro
    Micro
    Документ2 страницы
    Micro
    Victor Joel Rotvik
    Оценок пока нет
  • Práctica 3 - Encendido de Un LED Secuencial
    Práctica 3 - Encendido de Un LED Secuencial
    Документ6 страниц
    Práctica 3 - Encendido de Un LED Secuencial
    Tatiana Romero Feijoo
    Оценок пока нет
  • JAVA
    JAVA
    Документ5 страниц
    JAVA
    Enric Bosch Giménez
    Оценок пока нет
  • Ejemplo de Patrón Estrategia
    Ejemplo de Patrón Estrategia
    Документ12 страниц
    Ejemplo de Patrón Estrategia
    ALESSANDRO DEL PIERO VILLANUEVA RAMIREZ
    Оценок пока нет
  • Definición de UML
    Definición de UML
    Документ38 страниц
    Definición de UML
    Joseph Miguel Angel panta reyes
    Оценок пока нет
  • Opmanager 12
    Opmanager 12
    Документ38 страниц
    Opmanager 12
    juan fernando cadena lopez
    Оценок пока нет
  • P10 Ase
    P10 Ase
    Документ5 страниц
    P10 Ase
    Daysi Chivita
    Оценок пока нет
  • Sig-Pr20-Fo2-Memoria Descriptiva - 220654 Franquicias Tottus
    Sig-Pr20-Fo2-Memoria Descriptiva - 220654 Franquicias Tottus
    Документ6 страниц
    Sig-Pr20-Fo2-Memoria Descriptiva - 220654 Franquicias Tottus
    Jean Carlos Mariño
    Оценок пока нет
  • Manual de Usuario JBL Northridge
    Manual de Usuario JBL Northridge
    Документ8 страниц
    Manual de Usuario JBL Northridge
    Arturo sagastegui
    Оценок пока нет
  • ADA 1 - Raiza Rodriguez
    ADA 1 - Raiza Rodriguez
    Документ15 страниц
    ADA 1 - Raiza Rodriguez
    Veronica Herrera
    Оценок пока нет
  • Conoce300 - Pascal Con Free Pascal - Listas y Colecciones - Creando y Manejando Colecciones
    Conoce300 - Pascal Con Free Pascal - Listas y Colecciones - Creando y Manejando Colecciones
    Документ8 страниц
    Conoce300 - Pascal Con Free Pascal - Listas y Colecciones - Creando y Manejando Colecciones
    Eduardo S. Piña
    Оценок пока нет
  • DSP Sem 03-04 - Aplicaciones Industriales Del DSP
    DSP Sem 03-04 - Aplicaciones Industriales Del DSP
    Документ73 страницы
    DSP Sem 03-04 - Aplicaciones Industriales Del DSP
    Veneno Veinte
    Оценок пока нет
  • Licitacion Instrumentos
    Licitacion Instrumentos
    Документ8 страниц
    Licitacion Instrumentos
    Jazz Kun
    Оценок пока нет
  • Segundo Aporte1
    Segundo Aporte1
    Документ4 страницы
    Segundo Aporte1
    andre alvarado
    Оценок пока нет
  • 001 - Sistemas de Control
    001 - Sistemas de Control
    Документ33 страницы
    001 - Sistemas de Control
    Adrian Aguilar
    Оценок пока нет
  • C LabRC - PIA
    C LabRC - PIA
    Документ5 страниц
    C LabRC - PIA
    Francisco Espinoza
    Оценок пока нет
  • Catalo PyC 2019 2
    Catalo PyC 2019 2
    Документ11 страниц
    Catalo PyC 2019 2
    hfeh
    Оценок пока нет
  • Cronometro Con LCD
    Cronometro Con LCD
    Документ4 страницы
    Cronometro Con LCD
    Andrea Trigo Flores
    Оценок пока нет
  • Circuito Integrado
    Circuito Integrado
    Документ16 страниц
    Circuito Integrado
    rd20081587
    100% (1)
  • Research Laptop Batteries
    Research Laptop Batteries
    Документ2 страницы
    Research Laptop Batteries
    PeliHD
    Оценок пока нет
  • Formato Ot 3.02.11.28
    Formato Ot 3.02.11.28
    Документ8 страниц
    Formato Ot 3.02.11.28
    Diana Alejandra Godoy
    Оценок пока нет
  • Paradigmas y Lenguajes de Programación Ii
    Paradigmas y Lenguajes de Programación Ii
    Документ5 страниц
    Paradigmas y Lenguajes de Programación Ii
    Bruno S Antúnez
    Оценок пока нет