Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1...

48
Inteligencia Artificial 2 Curso 2000–2001 Tema 10: Aplicaciones de SBC en CLIPS Jos´ e A. Alonso Jim´ enez Miguel A. Guti´ errez Naranjo Francisco J. Mart´ ın Mateos Dpto. de Ciencias de la Computaci´on e Inteligencia Artificial Universidad de Sevilla IA2 2000–01 C c I a Aplicaciones de SBC en CLIPS 10.1

Transcript of Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1...

Page 1: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Inteligencia Artificial 2 Curso 2000–2001

Tema 10: Aplicaciones de SBCen CLIPS

Jose A. Alonso Jimenez

Miguel A. Gutierrez Naranjo

Francisco J. Martın Mateos

Dpto. de Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.1

Page 2: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Aplicaciones de SBC en CLIPS

x Busqueda

u Busqueda ciega

u Busqueda con heurıstica

u Busqueda con coste y heurıstica

x Sistemas de control

x Arboles de decision

x Bibliografıa:

u Giarratano, J.C. y Riley, G. “Expert Systems Princi-

ples and Programming (2nd ed.)” (PWS Pub. Co.,

1994)

* Cap. 12.3: “Decision Trees”

* Cap. 12.5: “A Monitoring Problem”

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.2

Page 3: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Esq

uem

agenera

lde

los

pro

ble

mas

de

busq

ueda

nodo

nodo

− A

plic

ar o

pera

dore

s−

Inic

ializ

ar d

atos

(− H

eurí

stic

a y

cost

e)

MA

IN

− R

econ

ocer

e

impr

imir

la

sol

ució

n

SOL

UC

ION

RE

STR

ICC

ION

ES

p

rohi

bido

s y

r

epet

idos

− E

limin

ar e

stad

os

IA2

2000

–01

CcI a

Aplica

cion

esde

SB

Cen

CLIP

S10

.3

Page 4: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda ciega

x Enunciadou La situacion inicial es

B B B V V V

u La situacion final es

B B BV V V

u Los movimientos permitidos consisten en desplazar

una ficha al hueco saltando, como maximo, sobre otras

dos.

x Modulo MAIN

(defmodule MAIN(export deftemplate nodo))

(deftemplate MAIN::nodo(multislot estado)(multislot camino))

(deffacts MAIN::nodo-inicial(nodo (estado B B B H V V V)

(camino "B B B H V V V")))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.4

Page 5: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda ciega

(defrule MAIN::movimiento-izquierda(nodo (estado $?x

H$?y&:(<= (length $?y) 2)?ficha$?z)

(camino $?movimientos))=>(bind $?nuevo-estado

(create$ $?x ?ficha $?y H $?z))(assert (nodo (estado $?nuevo-estado)

(camino $?movimientos(implode$ $?nuevo-estado)))))

(defrule MAIN::movimiento-derecha(nodo (estado $?x

?ficha$?y&:(<= (length $?y) 2)H$?z)

(camino $?movimientos))=>(bind $?nuevo-estado

(create$ $?x H $?y ?ficha $?z))(assert (nodo (estado $?nuevo-estado)

(camino $?movimientos(implode$ $?nuevo-estado)))))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.5

Page 6: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda ciega

x Modulo RESTRICCIONES

(defmodule RESTRICCIONES(import MAIN deftemplate nodo))

(defrule RESTRICCIONES::repeticion-de-nodo(declare (auto-focus TRUE))(nodo (estado $?actual)

(camino $?movimientos))?nodo <- (nodo (estado $?actual)

(camino $?movimientos ? $?))=>(retract ?nodo))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.6

Page 7: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda ciega

x Modulo SOLUCION

(defmodule SOLUCION(import MAIN deftemplate nodo))

(defrule SOLUCION::reconoce-solucion(declare (auto-focus TRUE))?nodo <- (nodo (estado V V V H B B B)

(camino $?estados))=>(retract ?nodo)(assert (solucion $?estados)))

(defrule SOLUCION::escribe-solucion(solucion $?estados)=>(bind ?longitud (length $?estados))(printout t "La solucion, de longitud " ?longitud

" es " crlf)(loop-for-count (?i 1 ?longitud)

(bind ?estado (nth ?i $?estados))(printout t ?estado crlf))

(retract *))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.7

Page 8: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda ciega

x Sesion con estadıstica

CLIPS> (load "fichas-1.clp")+%$**+*+**TRUECLIPS> (watch statistics)CLIPS> (reset)CLIPS> (run)La solucion, de longitud 83 es:B B B H V V VH B B B V V VB H B B V V VB B H B V V VB B V B H V V.............V B V V H B BV H V V B B BH V V V B B BV V H V B B BV V V H B B B238 rules fired Run time is 34.50 seconds.6.898550724637682 rules per second.43 mean number of facts (84 maximum).1 mean number of instances (1 maximum).103 mean number of activations (205 maximum).

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.8

Page 9: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica

x Heurıstica:u Definicion: La heurıstica de un estado es la suma de

piezas blancas situadas a la izquierda de cada una de

las piezas verdes.

u Ejemplo: La heurıstica del siguiente estado es 1+2+2

= 5.

BVB B V V

x Modulo MAIN

(defmodule MAIN(export deftemplate nodo))

(deftemplate MAIN::nodo(multislot estado)(multislot camino)(slot heuristica)(slot clase (default abierto)))

(defglobal MAIN?*estado-inicial* = (create$ B B B H V V V))

(defrule MAIN::inicial=>(assert (nodo (estado ?*estado-inicial*)

(camino (implode$ ?*estado-inicial*))(heuristica

(heuristica ?*estado-inicial*))(clase cerrado))))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.9

Page 10: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica

(deffunction MAIN::heuristica ($?estado)(bind ?resultado 0)(bind ?verdes 3)(loop-for-count (?i 1 7)

(bind ?ficha (nth ?i $?estado))(if (eq ?ficha B)

then (bind ?resultado(+ ?resultado ?verdes))

else (if (eq ?ficha V)then (bind ?verdes

(- ?verdes 1)))))?resultado)

(defrule MAIN::movimiento-izquierda(nodo (estado $?x H

$?y&:(<= (length $?y) 2)?ficha $?z)

(camino $?movimientos)(clase cerrado))

=>(bind $?nuevo-estado

(create$ $?x ?ficha $?y H $?z))(assert (nodo (estado $?nuevo-estado)

(camino $?movimientos(implode$ $?nuevo-estado))

(heuristica(heuristica $?nuevo-estado)))))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.10

Page 11: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica

(defrule MAIN::movimiento-derecha(nodo (estado $?x ?ficha

$?y&:(<= (length $?y) 2)H $?z)

(camino $?movimientos)(clase cerrado))

=>(bind $?nuevo-estado

(create$ $?x H $?y ?ficha $?z))(assert (nodo (estado $?nuevo-estado)

(camino $?movimientos(implode$ $?nuevo-estado))

(heuristica(heuristica $?nuevo-estado)))))

(defrule MAIN::pasa-el-mejor-a-cerrado(declare (salience -10))?nodo <- (nodo (clase abierto)

(heuristica ?h1))(not (nodo (clase abierto)

(heuristica ?h2&:(< ?h2 ?h1))))=>(modify ?nodo (clase cerrado)))

x Modulo RESTRICCIONES: Ningun cambio

x Modulo SOLUCION: Ningun cambio

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.11

Page 12: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica

x Sesion con estadıstica

CLIPS> (watch statistics)CLIPS> (reset)CLIPS> (run)La solucion, de longitud 15 es:B B B H V V VB B B V V V HB B B V V H VB B H V V B VB B V V H B VB H V V B B VB V V H B B VB V V V B B HB V V V B H BB V V V H B BB V V H V B BH V V B V B BV V H B V B BV V V B H B BV V V H B B B93 rules fired Run time is 1.83 seconds.50.7272727270043 rules per second.26 mean number of facts (49 maximum).1 mean number of instances (1 maximum).5 mean number of activations (12 maximum).

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.12

Page 13: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica y coste

x Coste de un nodo = numero de movimientos

x Modulo MAIN

(defmodule MAIN(export deftemplate nodo))

(deftemplate MAIN::nodo(multislot estado)(multislot camino)(slot heuristica)(slot coste)(slot clase (default abierto)))

(defglobal MAIN?*estado-inicial* = (create$ B B B H V V V))

(deffunction MAIN::heuristica ($?estado)(bind ?resultado 0)(bind ?verdes 3)(loop-for-count (?i 1 7)

(bind ?ficha (nth ?i $?estado))(if (eq ?ficha B)

then (bind ?resultado(+ ?resultado ?verdes))

else (if (eq ?ficha V)then (bind ?verdes

(- ?verdes 1)))))?resultado)

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.13

Page 14: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica y coste

(defrule MAIN::inicial=>(assert (nodo (estado ?*estado-inicial*)

(camino (implode$ ?*estado-inicial*))(heuristica

(heuristica ?*estado-inicial*))(coste 0)(clase cerrado))))

(defrule MAIN::movimiento-izquierda(nodo (estado $?x H

$?y&:(<= (length $?y) 2)?ficha $?z)

(camino $?movimientos)(coste ?coste)(clase cerrado))

=>(bind $?nuevo-estado

(create$ $?x ?ficha $?y H $?z))(assert (nodo (estado $?nuevo-estado)

(camino $?movimientos(implode$ $?nuevo-estado))

(coste (+ ?coste 1))(heuristica

(heuristica $?nuevo-estado)))))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.14

Page 15: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica y coste

(defrule MAIN::movimiento-derecha(nodo (estado $?x ?ficha

$?y&:(<= (length $?y) 2)H $?z)

(camino $?movimientos)(coste ?coste)(clase cerrado))

=>(bind $?nuevo-estado

(create$ $?x H $?y ?ficha $?z))(assert (nodo (estado $?nuevo-estado)

(camino $?movimientos(implode$ $?nuevo-estado))

(coste (+ ?coste 1))(heuristica

(heuristica $?nuevo-estado)))))

(defrule MAIN::pasa-el-mejor-a-cerrado(declare (salience -10))?nodo <- (nodo (clase abierto)

(heuristica ?h1)(coste ?c1))

(not (nodo (clase abierto)(heuristica ?h2&:(< ?h2 ?h1))))

(not (nodo (clase abierto) (heuristica ?h1)(coste ?c2&:(< ?c2 ?c1))))

=>(modify ?nodo (clase cerrado)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.15

Page 16: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica y coste

x Modulo RESTRICCIONES

(defmodule RESTRICCIONES(import MAIN deftemplate nodo))

(defrule RESTRICCIONES::repeticion-de-nodo(declare (auto-focus TRUE))(nodo (estado $?actual)

(coste ?coste-1))?nodo <- (nodo (estado $?actual)

(coste ?coste-2&:(> ?coste-2 ?coste-1)))=>(retract ?nodo))

x Modulo SOLUCION: Ningun cambio

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.16

Page 17: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Busqueda con heurıstica y coste

x Sesion con estadıstica

CLIPS> (load "fichas-3.clp")+%:!****+*+**TRUECLIPS> (watch statistics)CLIPS> (reset)CLIPS> (run)La solucion, de longitud 13 es:B B B H V V VB B B V V H VB B H V V B VB B V V H B VB H V V B B VB V V H B B VH V V B B B VV V H B B B VV V B H B B VV V B V B B HV V B V B H BV V H V B B BV V V H B B B120 rules fired Run time is 0.65 seconds.184.6153846170378 rules per second.25 mean number of facts (47 maximum).1 mean number of instances (1 maximum).5 mean number of activations (11 maximum).

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.17

Page 18: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Com

para

cion

de

solu

ciones S

olu

cion

1Solu

cion

2Solu

cion

3(h

eurı

stic

a)

(heurı

stic

ay

cost

e)

Longit

ud

de

laso

luci

on

83

15

13

Tie

mpo

(segundos)

34.5

01.8

30.6

5N

um

ero

de

dis

paro

s238

93

120

Num

ero

maxim

ode

hech

os

84

49

47

Num

ero

medio

de

hech

os

43

26

25

Num

ero

maxim

ode

act

ivaci

ones

205

12

11

Num

ero

medio

de

act

ivaci

ones

103

55

IA2

2000

–01

CcI a

Aplica

cion

esde

SB

Cen

CLIP

S10

.18

Page 19: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Problema del 8-puzzle

x Enunciado

Estado inicial Estado final

7 5

2 8 3

1 6 4 4

1 2 3

567

8

x Heurısticau Definicion: numero de piezas descolocadas

u Heurıstica del estado inicial: 4

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.19

Page 20: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

x Sistema formado por 4 dispositivos con sen-sores asociados:

Dispositivo D2 Sensor S3

Dispositivo D1

Sensor S1

Sensor S2

Dispositivo D3 Sensor S4

Dispositivo D4

Sensor S5

Sensor S6

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.20

Page 21: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

x Sensor:u Lımite Crıtico Alto

u Lımite Peligroso Alto

u Lımite Peligroso Bajo

u Lımite Crıtico Bajo

x Lımites asociados a los sensores:

Sensor LCA LPA LPB LCB N

S1 130 120 70 60 3c

S2 180 160 40 20 5c

S3 130 120 70 60 4c

S4 130 120 70 60 4c

S5 125 120 70 65 4c

S6 130 125 115 110 2c

x Dispositivos:

u Estado crıtico: Sensor asociado con Valor ≥ LCA o

Valor ≤ LCB. Desconectar dispositivo

u Estado peligroso: Sensor asociado con LCA > Valor ≥LPA o LPB ≥ Valor > LCB. Descontectar dispositivo

si la situacion se mantiene durante N ciclos.

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.21

Page 22: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

x Ciclo:u Leer datos de entrada

u Detectar estados de los dispositivos

u Realizar acciones

x Fuente de datos:u Hechos

u Sensores

u Usuario

u Fichero

x Final:u Todos los dispositivos desconectados

u Lımite de ciclos

x Valores de los sensores por ciclos:

Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6

S1 100 100 110 110 115 120

S2 110 120 125 130 130 135

S3 100 120 125 130 130 125

S4 120 120 120 125 130 135

S5 110 120 125 130 135 135

S6 115 120 125 135 130 135

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.22

Page 23: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sis

tem

as

de

contr

ol

xSesi

on

CLIPS>

(load

"monitor.clp")

...

CLIPS>

(run)

Ciclo

1-

Sensor

S6

en

peligroso-bajo

durante

1ciclos.

Ciclo

1-

Sensor

S4

en

peligroso-alto

durante

1ciclos.

Ciclo

2-

Sensor

S5

en

peligroso-alto

durante

1ciclos.

Ciclo

2-

Sensor

S4

en

peligroso-alto

durante

2ciclos.

Ciclo

2-

Sensor

S3

en

peligroso-alto

durante

1ciclos.

Ciclo

3-

Sensor

S6

en

peligroso-alto

durante

1ciclos.

Ciclo

3-

Sensor

S5

en

critico-alto.

Apagar

el

dispositivo

D4.

Ciclo

3-

Sensor

S4

en

peligroso-alto

durante

3ciclos.

Ciclo

3-

Sensor

S3

en

peligroso-alto

durante

2ciclos.

Ciclo

4-

Sensor

S4

en

peligroso-alto

durante

4ciclos.

Apagar

el

dispositivo

D3.

Ciclo

4-

Sensor

S3

en

critico-alto.

Apagar

el

dispositivo

D2.

Ciclo

6-

Sensor

S1

en

peligroso-alto

durante

1ciclos.

IA2

2000

–01

CcI a

Aplica

cion

esde

SB

Cen

CLIP

S10

.23

Page 24: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Esq

uem

adelsi

stem

ade

contr

ol

fuen

te−d

e−da

tos

disp

osit

ivo

− L

ectu

ra d

e lo

s va

lore

s

de

los

sens

ores

en

el

cic

lo a

ctua

l

EN

TR

AD

A

− In

icia

lizar

dat

os:

− C

ontr

ol d

e ci

clos

d

ispo

siti

vos

y se

nsor

es

MA

IN

rang

os

cicl

o

valo

r−ac

tual

dis

posi

tivo

dur

ació

n

sens

or

cic

lo

nuev

o−ci

clo

− A

visa

r so

bre

esta

dos

p

elig

roso

s−

Apa

gar

disp

osit

ivos

− In

dica

r nu

evo

cicl

o

AV

ISO

S

hist

oria

−sen

sor

− E

stab

lece

r el

est

ado

d

e lo

s se

nsor

es−

Mod

ific

ar la

his

tori

a

de

los

sens

ores

DE

TE

CC

ION

sens

or

cicl

o

IA2

2000

–01

CcI a

Aplica

cion

esde

SB

Cen

CLIP

S10

.24

Page 25: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

x Modulo MAIN

(defmodule MAIN(export deftemplate ?ALL))

(deftemplate MAIN::dispositivo(slot nombre)(slot estado

(default activo)))

(deffacts MAIN::informacion-dispositivos(dispositivo (nombre D1))(dispositivo (nombre D2))(dispositivo (nombre D3))(dispositivo (nombre D4)))

(deftemplate MAIN::sensor(slot nombre)(slot dispositivo-asociado))

(deffacts MAIN::informacion-sensores(sensor (nombre S1) (dispositivo-asociado D1))(sensor (nombre S2) (dispositivo-asociado D1))(sensor (nombre S3) (dispositivo-asociado D2))(sensor (nombre S4) (dispositivo-asociado D3))(sensor (nombre S5) (dispositivo-asociado D4))(sensor (nombre S6) (dispositivo-asociado D4)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.25

Page 26: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(deftemplate MAIN::rangos(slot nombre)(slot minimo-critico) (slot minimo-peligroso)(slot maximo-peligroso) (slot maximo-critico))

(deffacts MAIN::rangos-de-los-sensores(rangos (nombre S1) (minimo-critico 60)

(minimo-peligroso 70)(maximo-peligroso 120)(maximo-critico 130))

(rangos (nombre S2) (minimo-critico 20)(minimo-peligroso 40)(maximo-peligroso 160)(maximo-critico 180))

(rangos (nombre S3) (minimo-critico 60)(minimo-peligroso 70)(maximo-peligroso 120)(maximo-critico 130))

(rangos (nombre S4) (minimo-critico 60)(minimo-peligroso 70)(maximo-peligroso 120)(maximo-critico 130))

(rangos (nombre S5) (minimo-critico 65)(minimo-peligroso 70)(maximo-peligroso 120)(maximo-critico 125))

(rangos (nombre S6) (minimo-critico 110)(minimo-peligroso 115)(maximo-peligroso 125)(maximo-critico 130)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.26

Page 27: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(deftemplate MAIN::duracion(slot sensor)(slot tiempo))

(deffacts MAIN::duracion-sensores-en-estado-peligroso(duracion (sensor S1) (tiempo 3))(duracion (sensor S2) (tiempo 5))(duracion (sensor S3) (tiempo 4))(duracion (sensor S4) (tiempo 4))(duracion (sensor S5) (tiempo 4))(duracion (sensor S6) (tiempo 2)))

(deffacts MAIN::comienzo(fuente-de-datos hechos)(ciclo 0)(nuevo-ciclo 1))

(defrule MAIN::control?h1 <- (ciclo ?)?h2 <- (nuevo-ciclo ?nciclo&:(< ?nciclo 7))=>(retract ?h1 ?h2)(assert (ciclo ?nciclo))(focus ENTRADA DETECCION AVISOS))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.27

Page 28: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

x Modulo ENTRADA

(defmodule ENTRADA(import MAIN deftemplate dispositivo

sensorciclofuente-de-datos)

(export deftemplate valor-actual))

(deftemplate ENTRADA::valor-actual(slot sensor)(slot valor)(slot ciclo))

(deffacts ENTRADA::hechos-de-valores(hecho-de-datos S1 100 100 110 110 115 120)(hecho-de-datos S2 110 120 125 130 130 135)(hecho-de-datos S3 100 120 125 130 130 125)(hecho-de-datos S4 120 120 120 125 130 135)(hecho-de-datos S5 110 120 125 130 135 135)(hecho-de-datos S6 115 120 125 135 130 135))

(defrule ENTRADA::no-hay-dispositivos-encendidos(not (dispositivo (estado activo)))=>(printout t "Todos los dispositivos "

"estan apagados. " crlf)(halt))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.28

Page 29: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule ENTRADA::toma-datos-de-hechos(fuente-de-datos hechos)(ciclo ?ciclo)(sensor (nombre ?id)

(dispositivo-asociado ?dis))(dispositivo (nombre ?dis)

(estado activo))?h <- (hecho-de-datos ?id ?valor $?resto)(not (valor-actual (sensor ?id)

(ciclo ?ciclo)))=>(retract ?h)(assert (hecho-de-datos ?id ?resto))(assert (valor-actual (sensor ?id)

(valor ?valor)(ciclo ?ciclo))))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.29

Page 30: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule ENTRADA::toma-datos-del-sensor(fuente-de-datos sensores)(ciclo ?ciclo)(sensor (nombre ?id) (dispositivo-asociado ?dis))(dispositivo (nombre ?dis) (estado activo))=>(bind ?valor (toma-valor-del-sensor ?id))(assert (valor-actual (sensor ?id) (valor ?valor)

(ciclo ?ciclo))))

(defrule ENTRADA::toma-datos-del-usuario(fuente-de-datos usuario)(ciclo ?ciclo)(sensor (nombre ?id) (dispositivo-asociado ?dis))(dispositivo (nombre ?dis) (estado activo))=>(printout t "Introduce el valor para el sensor "

?id "." crlf)(bind ?valor (read))(if (not (numberp ?valor)) then (halt))(assert (valor-actual (sensor ?id) (valor ?valor)

(ciclo ?ciclo))))

(defrule ENTRADA::toma-datos-de-fichero(fuente-de-datos fichero)...)

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.30

Page 31: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

x Modulo DETECCION

(defmodule DETECCION(import MAIN deftemplate rangos

ciclo)(import ENTRADA deftemplate valor-actual)(export deftemplate historia-sensor))

(deftemplate DETECCION::estado-sensor(slot sensor)(slot estado)(slot valor)(slot ciclo))

(deftemplate DETECCION::historia-sensor(slot sensor)(slot estado)(slot valor)(slot ciclo-comienzo)(slot ciclo-final))

(deffacts DETECCION::historia-inicial(historia-sensor (sensor S1))(historia-sensor (sensor S2))(historia-sensor (sensor S3))(historia-sensor (sensor S4))(historia-sensor (sensor S5))(historia-sensor (sensor S6)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.31

Page 32: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule DETECCION::estado-normal(ciclo ?ciclo)(valor-actual (sensor ?id)

(valor ?valor)(ciclo ?ciclo))

(rangos (nombre ?id)(minimo-peligroso ?v1&:(> ?valor ?v1))(maximo-peligroso ?v2&:(< ?valor ?v2)))

=>(assert (estado-sensor (sensor ?id)

(estado normal)(valor ?valor)(ciclo ?ciclo))))

(defrule DETECCION::estado-peligroso-bajo(ciclo ?ciclo)(valor-actual (sensor ?id)

(valor ?valor)(ciclo ?ciclo))

(rangos (nombre ?id)(minimo-critico ?v1&:(> ?valor ?v1))(minimo-peligroso ?v2&:(<= ?valor ?v2)))

=>(assert (estado-sensor (sensor ?id)

(estado peligroso-bajo)(valor ?valor)(ciclo ?ciclo))))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.32

Page 33: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule DETECCION::estado-peligroso-alto(ciclo ?ciclo)(valor-actual (sensor ?id)

(valor ?valor)(ciclo ?ciclo))

(rangos (nombre ?id)(maximo-peligroso ?v1&:(>= ?valor ?v1))(maximo-critico ?v2&:(< ?valor ?v2)))

=>(assert (estado-sensor (sensor ?id)

(estado peligroso-alto)(valor ?valor)(ciclo ?ciclo))))

(defrule DETECCION::estado-critico-bajo(ciclo ?ciclo)(valor-actual (sensor ?id)

(valor ?valor)(ciclo ?ciclo))

(rangos (nombre ?id)(minimo-critico ?v1&:(<= ?valor ?v1)))

=>(assert (estado-sensor (sensor ?id)

(estado critico-bajo)(valor ?valor)(ciclo ?ciclo))))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.33

Page 34: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule DETECCION::estado-critico-alto(ciclo ?ciclo)(valor-actual (sensor ?id)

(valor ?valor)(ciclo ?ciclo))

(rangos (nombre ?id)(maximo-critico ?v1&:(>= ?valor ?v1)))

=>(assert (estado-sensor (sensor ?id)

(estado critico-alto)(valor ?valor)(ciclo ?ciclo))))

(defrule DETECCION::historia-no-cambia(ciclo ?ciclo)?h <- (historia-sensor

(sensor ?id)(estado ?estado)(ciclo-comienzo ?ini)(ciclo-final ?fin&=(- ?ciclo 1)))

(estado-sensor (sensor ?id)(estado ?estado)(valor ?valor)(ciclo ?ciclo))

=>(modify ?h (valor ?valor)

(ciclo-final ?ciclo)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.34

Page 35: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule DETECCION::historia-cambia(ciclo ?ciclo)?h <- (historia-sensor

(sensor ?id)(estado ?estado)(ciclo-comienzo ?ini)(ciclo-final ?fin&=(- ?ciclo 1)))

(estado-sensor (sensor ?id)(estado ?nuevo&~?estado)(valor ?valor)(ciclo ?ciclo))

=>(modify ?h (estado ?nuevo)

(valor ?valor)(ciclo-comienzo ?ciclo)(ciclo-final ?ciclo)))

(defrule DETECCION::elimina-hechos(ciclo ?ciclo)(or ?h <- (estado-sensor (ciclo ~?ciclo))

?h <- (valor-actual (ciclo ~?ciclo)))=>(retract ?h))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.35

Page 36: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

x Modulo AVISOS

(defmodule AVISOS(import MAIN deftemplate dispositivo

sensorduracionciclonuevo-ciclo)

(import DETECCION deftemplate historia-sensor))

(defrule AVISOS::inserta-nuevo-ciclo(ciclo ?ciclo)=>(assert (nuevo-ciclo (+ 1 ?ciclo))))

(defrule AVISOS::apaga-en-region-critica(ciclo ?ciclo)(historia-sensor

(sensor ?id)(estado ?estado&critico-bajo|critico-alto))

(sensor (nombre ?id)(dispositivo-asociado ?dis))

?h <- (dispositivo (nombre ?dis)(estado activo))

=>(printout t

"Ciclo " ?ciclo " - Sensor " ?id " en " ?estado"." crlf " Apagar el dispositivo " ?dis "." crlf)

(modify ?h (estado inactivo)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.36

Page 37: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule AVISOS::apaga-en-region-peligrosa(ciclo ?ciclo)(historia-sensor

(sensor ?id)(estado ?estado&peligroso-alto|peligroso-bajo)(ciclo-comienzo ?ini)(ciclo-final ?fin))

(duracion (sensor ?id)(tiempo ?tiempo&=(+ (- ?fin ?ini) 1)))

(sensor (nombre ?id)(dispositivo-asociado ?dis))

?h <- (dispositivo (nombre ?dis)(estado activo))

=>(printout t

"Ciclo " ?ciclo " - Sensor " ?id " en " ?estado" durante " (+ (- ?fin ?ini) 1) " ciclos." crlf" Apagar el dispositivo " ?dis "." crlf)

(modify ?h (estado inactivo)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.37

Page 38: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Sistemas de control

(defrule AVISOS::sensor-en-region-peligrosa(ciclo ?ciclo)(historia-sensor

(sensor ?id)(estado ?estado&peligroso-alto|peligroso-bajo)(ciclo-comienzo ?ini)(ciclo-final ?fin))

(duracion (sensor ?id)(tiempo ?tiempo

&:(< (+ (- ?fin ?ini) 1) ?tiempo)))(sensor (nombre ?id)

(dispositivo-asociado ?dis))(dispositivo (nombre ?dis)

(estado activo))=>(printout t

"Ciclo " ?ciclo " - Sensor " ?id " en " ?estado" durante " (+ (- ?fin ?ini) 1) " ciclos." crlf))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.38

Page 39: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Arboles de decision binarios

RATON ARDILLA

¿ Emite chillidos ?

¿ Tiene cuello largo ?

JIRAFA ¿ Tiene trompa ?

¿ Le gusta estar en el agua ?ELEFANTE

HIPOPOTAMO RINOCERONTE

¿ Es grande ?

CHESKO

SI NO

NOSI

NOSI

NOSI

SI

NO

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.39

Page 40: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Sesion: Clasificacion

CLIPS> (load "decision.clp")%%************TRUECLIPS> (reset)CLIPS> (run)- Es muy grande.? (si o no): si- Tiene un cuello largo.? (si o no): no- Tiene una trompa.? (si o no): siCreo que es un/a elefante¿Estoy en lo cierto.? (si o no): si

u Intentemos clasificar un gato

¿Lo intentamos de nuevo.? (si o no): si- Es muy grande.? (si o no): no- Emite chillidos.? (si o no): noCreo que es un/a ardilla¿Estoy en lo cierto.? (si o no): no

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.40

Page 41: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Sesion: Aprendizaje

¿Que animal es.?gato¿Que pregunta se debe contestar afirmativamente para

distinguir gato de ardilla.?Maulla.?Ahora ya puedo distinguir un/una gato

u El gato ya esta en la base de conocimiento

¿Lo intentamos de nuevo.? (si o no): si- Es muy grande.? (si o no): no- Emite chillidos.? (si o no): no- Maulla.? (si o no): siCreo que es un/a gato¿Estoy en lo cierto.? (si o no): si¿Lo intentamos de nuevo.? (si o no): noCLIPS>

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.41

Page 42: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Hojas del arbol de decision: Respuestas finales.

(deftemplate nodo-respuesta(slot nombre)(slot valor))

x Nodos internos del arbol de decision: Pregun-tas que conducen a la clasificacion

(deftemplate nodo-decision(slot nombre)(slot pregunta)(slot respuesta-si)(slot respuesta-no))

x Cargar datos de un archivo

(defrule inicializacion(not (nodo-decision (nombre raiz)))=>(load-facts "animales.dat")(assert (nodo-actual raiz)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.42

Page 43: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Representacion del ejemplo (animales.dat)

(nodo-decision (nombre raiz)(pregunta "Es muy grande.?")(respuesta-si nodo1) (respuesta-no nodo2))

(nodo-decision (nombre nodo1)(pregunta "Tiene un cuello largo.?")(respuesta-si nodo3) (respuesta-no nodo4))

(nodo-decision (nombre nodo2)(pregunta "Emite chillidos.?")(respuesta-si nodo5) (respuesta-no nodo6))

(nodo-respuesta (nombre nodo3) (valor jirafa))

(nodo-decision (nombre nodo4)(pregunta "Tiene una trompa.?")(respuesta-si nodo7) (respuesta-no nodo8))

(nodo-respuesta (nombre nodo5) (valor raton))

(nodo-respuesta (nombre nodo6) (valor ardilla))

(nodo-respuesta (nombre nodo7) (valor elefante))

(nodo-decision (nombre nodo8)(pregunta "Le gusta estar en el agua.?")(respuesta-si nodo9) (respuesta-no nodo10))

(nodo-respuesta (nombre nodo9) (valor hipopotamo))

(nodo-respuesta (nombre nodo10) (valor rinoceronte))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.43

Page 44: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Tratamiento de los nodos internos

(defrule pregunta-en-nodo-decision(nodo-actual ?nombre)(nodo-decision (nombre ?nombre)

(pregunta ?pregunta))(not (respuesta ?))=>(printout t "- " ?pregunta " (si o no): ")(assert (respuesta (read))))

x Respuesta incorrecta

(defrule respuesta-incorrecta?respuesta <- (respuesta ~si&~no)=>(retract ?respuesta)(printout t "Respuesta incorrecta." crlf))

x Respuesta afirmativa en los nodos internos

(defrule procesa-si-en-nodo-decision?nodo <- (nodo-actual ?nombre)(nodo-decision (nombre ?nombre)

(respuesta-si ?si))?respuesta <- (respuesta si)=>(retract ?nodo ?respuesta)(assert (nodo-actual ?si)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.44

Page 45: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Respuesta negativa en los nodos internos

(defrule procesa-no-en-nodo-decision?nodo <- (nodo-actual ?nombre)(nodo-decision (nombre ?nombre)

(respuesta-no ?no))?respuesta <- (respuesta no)=>(retract ?nodo ?respuesta)(assert (nodo-actual ?no)))

x Tratamiento de los nodos hoja

(defrule pregunta-en-nodo-respuesta(nodo-actual ?nombre)(nodo-respuesta (nombre ?nombre) (valor ?valor))(not (respuesta ?))=>(printout t "Creo que es un/a " ?valor crlf)(printout t "¿Estoy en lo cierto.? (si o no): ")(assert (respuesta (read))))

x Clasificacion satisfactoria

(defrule procesa-si-en-nodo-respuesta?nodo <- (nodo-actual ?nombre)(nodo-respuesta (nombre ?nombre))?respuesta <- (respuesta si)=>(retract ?nodo ?respuesta)(assert (pregunta-de-nuevo)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.45

Page 46: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Clasificacion incorrecta

(defrule procesa-no-en-nodo-respuesta?nodo <- (nodo-actual ?nombre)(nodo-respuesta (nombre ?nombre))?respuesta <- (respuesta no)=>(retract ?nodo ?respuesta)(assert (reemplaza-nodo-respuesta ?nombre)))

x ¿Quieres continuar?

(defrule pregunta-de-nuevo(pregunta-de-nuevo)(not (respuesta ?))=>(printout t "¿Lo intentamos de nuevo.? (si o no): ")(assert (respuesta (read))))

x Se vuelve a hacer una consulta

(defrule una-vez-mas?fase <- (pregunta-de-nuevo)?respuesta <- (respuesta si)=>(retract ?fase ?respuesta)(assert (nodo-actual raiz)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.46

Page 47: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Se salvan los datos

(defrule no-mas-por-favor?fase <- (pregunta-de-nuevo)?respuesta <- (respuesta no)=>(retract ?fase ?respuesta)(save-facts "animales.dat"))

x Aprendizaje y modificacion de los datos

u Arbol inicial:

CHESKORESPUESTAINCORRECTA

u Arbol modificado:

CHESKO

PREGUNTAPROPUESTA

RESPUESTAANTIGUA

RESPUESTANUEVA

SINO

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.47

Page 48: Tema 10: Aplicaciones de SBC en CLIPSjalonso/cursos/ia2-00/temas/tema-10.pdf · Sensor Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 S1 100 100 110 110 115 120 S2 110 120 125 130 130

Arboles de decision

x Aprendizaje y modificacion de los datos

(defrule aprende?h <- (reemplaza-nodo-respuesta ?nombre)?dato <- (nodo-respuesta (nombre ?nombre)

(valor ?valor))=>(retract ?h ?dato)(printout t "¿Que animal es.?" crlf)(bind ?animal (read))(printout t

"¿Que pregunta se debe contestar afirmativamente"" para distinguir " crlf)

(printout t " " ?animal " de " ?valor ".?" crlf)(bind ?pregunta (readline))(printout t

"Ahora ya puedo distinguir un/una " ?animal crlf)(bind ?nodo1 (gensym*))(bind ?nodo2 (gensym*))(assert

(nodo-respuesta (nombre ?nodo1) (valor ?animal))(nodo-respuesta (nombre ?nodo2) (valor ?valor))(nodo-decision

(nombre ?nombre) (pregunta ?pregunta)(respuesta-si ?nodo1) (respuesta-no ?nodo2))

(pregunta-de-nuevo)))

IA2 2000–01 CcIa Aplicaciones de SBC en CLIPS 10.48