13
CLIPS from Facts to Objects Representando el conocimiento del problema

CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

CLIPS from Facts to Objects

Representando el conocimiento del problema

Page 2: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Creando Hechos Ordenados • Asertamos Han Solo como un hecho

de tipo sw-card

(assert

(sw-card

501 ;Number

6 ; BuildCost

“Han Solo” ;Name

Both ; SideSymbol

50 ;Speed

4 ;Power

5 ;Health

Character ;Type

) )

<Fact-1>

Page 3: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Operaciones con hecho ordenados

• Visualización de hechos (facts)

f-0 (initial-fact)

f-1 (sw-card 501 6 "Han Solo" Both 50 4 5 Character)

• Eliminar hechos (retract 1) (retract *)

• Consulta de hechos [12.9.12 Fact-set Queries and Distributed Actions]

Page 4: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Definición de Hechos No-Ordenados

• Definimos el tipo de dato: sw-card (deftemplate sw-card “carta de SW-JCC” (slot Number) (slot Player) (slot BuildCost) (slot Name) (slot SideSymbol) (slot Speed) (slot Power) (slot Health) (slot Type) )

Page 5: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Creando Hechos No-Ordenados

• Asertamos Han Solo como un hecho de tipo sw-card

(assert (sw-card (Number 501) (BuildCost 6) (Name "Han Solo") (SideSymbol Both) (Speed 50) (Power 4) (Health 5) (Type Character) ) ) ¿Y si ejecuto un (reset) ? Queda eliminado

Page 6: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Hechos no-ordenados INICIALES (similar en hechos ordenados)

• Definimos los hechos iniciales • De mano no se asertan (deffacts sw-inicial "cartas iniciales" (sw-card (Number 501) (BuildCost 6) (Name "Han Solo") (SideSymbol Both) (Speed 50) (Power 4) (Health 5) (Type Character) ) ) ¿Y si ejecuto un (reset) ? Se regeneran los hechos iniciales

Page 7: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Operaciones con hechos No-ordenados

• Mostrar plantilla / Listar plantillas / Borrar plantilla (ppdeftemplate sw-card) (list-deftemplates) (undeftemplate sw-card)

• Visualización/Eliminar hechos – Como con hechos ordenados

• Modificar campos de un hecho (modify 1 (Name “Indiana Jones") ) HECHO REGENERADO: Índice 2

• Consulta de hechos – Basic Programming Guide (bpg.pdf)

• 12.9.12 Fact-set Queries and Distributed Actions

– Desde las premisas de las reglas • (Siguientes sesiones)

Page 8: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

POO: Definiendo una clase

• Definimos la clase: sw-card (defclass sw-card "carta de SW-JCC" (is-a USER) (slot Number) (slot Player) (slot BuildCost) (slot Name) (slot SideSymbol) (slot Speed) (slot Power) (slot Health) (slot Type) )

• Definimos la plantilla : sw-card (deftemplate sw-card "carta de SW-JCC" (slot Number) (slot Player) (slot BuildCost) (slot Name) (slot SideSymbol) (slot Speed) (slot Power) (slot Health) (slot Type)

)

Page 9: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

COOL: CLIPS Object Oriented Language

Page 10: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

POO: Definiendo una clase

• Definimos la clase: SW <rol> ::= (role concrete | abstract) <rol-en-patrones-de-reglas > ::= (pattern-match reactive | non-reactive) <slot> ::= (slot <nombre> <faceta>*) | (single-slot <nombre> <faceta>*) | (multislot <nombre> <faceta>*) <documentación-método> ::= (message-handler <nombre> [<handler-type>]) <handler-type> ::= primary | around | before | after

(defclass <nombre> [<comentario>] (is-a <nombre-superclase>+) [<rol>] [<rol-en-patrones-de-reglas>] <slot>* <documentación-método>* )

Page 11: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Facetas de un slot

• (slot <nombre> <faceta>*) <default-faceta> ::=

(default ?DERIVE | ?NONE | <expression>*) |

(default-dynamic <expression>*)

<storage-faceta> ::= (storage local | shared)

<access-faceta> ::= (access read-write | read-only | initialize-only)

<propagation-faceta> ::= (propagation inherit | no-inherit)

<source-faceta> ::= (source exclusive | composite)

<pattern-match-faceta> ::= (pattern-match reactive | non-reactive)

<visibility-faceta> ::= (visibility private | public)

<create-accessor-faceta> ::= (create-accessor ?NONE | read | write | read-write)

<override-message-faceta> ::= (override-message ?DEFAULT | <message-nombre>)

Page 12: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

POO: Definiendo una clase (defclass Card "carta del juego Star Wars - JCC"

(is-a USER)

(role abstract)

(slot Number (access initialize-only) (visibility public))

(slot Player (access initialize-only) (visibility public))

(slot BuildCost (access initialize-only) (visibility public))

(slot Name (access initialize-only) (visibility public))

(slot SideSymbol (access initialize-only) (visibility public))

(slot Speed (access initialize-only) (visibility public))

(slot Power (access initialize-only) (visibility public))

(slot Health (access initialize-only) (visibility public))

(slot Type (access initialize-only) (visibility public))

)

(defmessage-handler Card imprime-descripcion()

; Produce: una descripcion de la carta por la salida estandar

(printout t ?self:Name " (BC:" ?self:BuildCost " Spd:" ?self:Speed " Pow:" ?self:Power " Hea:" ?self:Health " Typ:" ?self:Type ")")

)

Page 13: CLIPS from Facts to Objectsdi002.edv.uniovi.es/~puente/files/sesion1.pdf · Operaciones con hecho ordenados •Visualización de hechos (facts) f-0 (initial-fact) f-1 (sw-card 501

Creando Una instancia e Invocando métodos

• Creamos la instancia Han Solo de la clase sw-card

(make-instance [han_solo_01] of sw-card (Number 501) (BuildCost 6) (Name "Han Solo") (SideSymbol Both) (Speed 50) (Power 4) (Health 5) (Type Character) ) • Invocamos métodos de la instancia (send [han_solo_01] print) (send [han_solo_01] get-Speed) (send [han_solo_01] put-Speed 70) (send [han_solo_01] delete)