CLIPS en het Rete-algoritme. Productieregels in CLIPS. Feiten. Productiesysteem (voorbeeld)

Vergelijkbare documenten
p. 1/39 Voorbeeld: R = {R 1 : if same(x,a) and same(y,b) then R 2 : if same(x,b) then add(u,f) fi, R 3 : if same(z,c) and same(w,d) then

Opgaven bij Hoofdstuk 3 - Productiesystemen

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. ( )4291, webpagina:

Automaten & Complexiteit (X )

Zelftest Inleiding Programmeren

Tussentijdse toets Expertsystemen

Het omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2.

Constraint satisfaction. Computationele Intelligentie. Voorbeelden. Een constraint satisfaction probleem. Constraint Satisfaction

Representatie & Zoeken

Thinking of Development

Petri-netten in Protos: wat moet je ermee?

Nederlandse samenvatting. Verschillende vormen van het visuele korte termijn geheugen en de interactie met aandacht

Geavanceerde Programmeertechnologie Les 4: Garbage Collec8on

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Info-books. Toegepaste Informatica. Deel 40 : Gegevensbeheer en algoritmen in Access HA40. Jos Gils Erik Goossens

Korte uitleg: Wat doet de shell met mijn commandoregel?

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Tiende college algoritmiek. 26 april Gretige algoritmen

Uitbreiding van de Model Specification Language (MSL) compiler. Thierry Cornelis

4EE11 Project Programmeren voor W. College 3, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Multi-core systemen. door Alexander Melchior

Hoofdstuk 13: Integer Lineair Programmeren

Programmeren in Java les 3

Tiende college algoritmiek. 14 april Gretige algoritmen

Ontwerp van Informatiesystemen

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Tentamen Compilers (2M220) 19 maart 2002, 9.00u-12.00u

Normaliseren versie 1.1

Manipulatie van onzekerheid in regels

Opgaven bij Hoofdstuk 4 - Frames en Overerving

Inleiding Programmeren 2

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Tentamen Bionformatica deel A(8C074), 18 januari 2007, u.

Stacks and queues. Hoofdstuk 6

Elfde college complexiteit. 23 april NP-volledigheid III

Tentamen Compilers (2IC25) 21 juni 2010, 9.00u-12.00u

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?

Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS

Temperatuur logger synchronisatie

Deel I Hoofdstuk 4: Modelleren van Toestand

TW2020 Optimalisering

Meer command-line utilities

definities recursieve datastructuren college 13 plaatjes soorten Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten

Model-gebaseerd Redeneren. Ervaringsregels. Medische diagnostiek: facialisparese. Gebruik van modellen. Probleemoplossen op grond van ervaringsregels:

Inleiding Programmeren 2

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

Tweede college algoritmiek. 12 februari Grafen en bomen

Programmeermethoden NA. Week 6: Lijsten

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

Logic for Computer Science

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Succes! Theo DʼHondt 13 juni 2010

Programmeermethoden NA

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser

Algoritmiek. 15 februari Grafen en bomen

Automaten & Complexiteit (X )

Local search. Han Hoogeveen. 21 november, 2011

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

rij karakters scanner rij tokens parser ontleedboom (filteren separatoren) (niet expliciet geconstrueerd) (+ add. inform.) (contextvrije analyse)

scc = b) CD AB

Cover Page. The handle holds various files of this Leiden University dissertation

Hoofdstuk 7: Werken met arrays

Syntax- (compile), runtime- en logische fouten Binaire operatoren

17 Operaties op bits Bitoperatoren en bitexpressies

Friendly Functions and Shared BDD s

Netwerkstroming. Algoritmiek

2WO12: Optimalisering in Netwerken

Deeltentamen Grammatica s en ontleden 22 december 2005

Oefententamen in2505-i Algoritmiek

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datastructuren en algoritmen voor CKI

Transparanten bij het vak Inleiding Adaptieve Systemen: Evolutionary Computation. f(s max ) f(s) s

TW2020 Optimalisering

Vakgroep CW KAHO Sint-Lieven

Genetische algoritmen in Java met JGAP

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Amorized Analysis en Union-Find Algoritmiek

Datastructuren en algoritmen voor CKI

Kleine cursus PHP5. Auteur: Raymond Moesker

1 Aanvulling cosy deeltijd

Virtueel Geheugen en demand paging (1)

Bioinformatica tentamen D1 voor 2MNW, 3I, 3PHAR op vrijdag 31 maart 2006 van uur in zaal Q105

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Software Mobiliteit. UAMS - 6 maart Theo D'Hondt Lab voor Pogrammeerkunde Vrije Universiteit Brussel

Tentamen Programmeren in C (EE1400)

Sequentiële Logica. Processoren 24 november 2014

Over binaire beslissingsdiagrammen naar Donald E. Knuth s The Art of Computer Programming, Volume 4

Optimalisering en Complexiteit, College 2. Han Hoogeveen, Utrecht University

Kennisrepresentatie. Vormen van kennisrepresentatie. Geschiedenis productiesystemen. Productieregelformalisme

Datastructuren Programmeeropdracht 2: Expressies. 1 Expressies. Deadlines. Woensdag 12 oktober 23:59, resp. woensdag 2 november 23:59.

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound

Transcriptie:

CLIPS en het Rete-algoritme CLIPS: acroniem voor C Language Integrated Production System Verwant aan OPS5 (Carnegie-Mellon University), en gebaseerd op ART (Artificial Reasoning Tool) Ontwikkeld door Lyndon B. Johnson Space Center van NASA Hybride taal: productieregels object-georiënteerd programmeren functioneel/procedureel programmeren Geïntegreerde ontwikkelomgeving JESS: Java-versie van regelgebaseerde deel van CLIPS Productieregels in CLIPS Representatie: object-attribuut-waarde representatie algemene patronen met locale variabelen productieregels feiten (integratie met object-georiënteerd programmeren mogelijk) Inferentie: bottom-up inferentie conflictresolutie Rete-algoritme (C. Forgy, voor OPS5) 1 2 Productiesysteem (voorbeeld) Object-declaratie = deftemplate construct (deftemplate verhuisd (slot naam) (slot naar-adres)) (deftemplate persoon (slot naam (type STRING)) (slot leeftijd (type INTEGER))) (deftemplate nieuw-adres (slot adres)) Productieregels: (defrule verhuizing (verhuisd (naam?naam)(naar-adres?adres)) (persoon (naam?naam)) (assert (nieuw-adres (adres?adres)))) 3 Feiten Initiële feitenverzameling: f-1 (persoon (naam Jan)) f-2 (persoon (naam Marco)) f-3 (verhuisd (naam Jan) (naar-adres Catharijne-singel-106)) f-4 (verhuisd (naam Marco) (naar-adres Neude-24)) (defrule verhuizing (verhuisd (naam?naam)(naar-adres?adres)) (persoon (naam?naam)) (assert (nieuw-adres (adres?adres)))) Na uitvoeren regel:... f-5 (nieuw-adres (adres Neude-24)) f-6 (nieuw-adres (adres Catharijne-singel-106)) 4

Bottom-up Inferentie proc Infer(fact-set, rule-base) applied-inst ; inst Select(rule-base, applied-inst, fact-set); while inst do instance ResolveConflicts(inst); Apply(instance); applied-inst applied-inst {instance}; inst Select(rule-base, applied-inst, fact-set) od end Rete-algoritme Efficiënte implementatie van bottom-up inferentie (Charles Forgy, Carnegie Mellon University) Motivering: bij meeste toepassingen wordt tot 90% van executietijd in beslag genomen door selectie en match operaties De feitenverzameling verandert slechts weinig tussen inferentiestappen: temporele redundantie inferentietoestand bewaren fact-set rule-base match select apply Recognise-act cycle Rete-algoritme niet geschikt voor niettemporeel redundante toepassingen (bijv. real-time systemen) 5 6 Basisideeën Retegraaf: one-input nodes Versnellen van matchen van feiten en condities: rete-graaf = compilatiegraaf van regels Ingang van retegraaf (deftemplate names/ objectknopen/klassenknopen) Bewaren van inferentietoestand door distributie van feiten over productieregels (retegraaf) feit feit (defrule one (object1...) (object2...) (defrule two (object1...) (object2...) (object3...) object1 object2 object3 one two 7 8

Retegraaf: two-input nodes Retegraaf: one-input nodes (vervolg) Testen op attribuut(slot)waarden in een conditie (defrule one (object1 (attribuut v)). (defrule two (object1 (attribuut v)). object1 one attribuut = v two Conjuncties èn negaties van condities worden afgebeeld op two-input nodes (defrule interpret (expressie (type bools) (naam?n)) (operator (naam?x) (expr?n)) (l-operand (naam?y) (expr?n)) expressie type = bools naam =?n two-input-node?n =?n operator consistent match naam =?x l-operand naam =?y expr =?n expr =?n two-input-node?n =?n 9 10 Tokens Distributie van Feitenverzameling De retegraaf wordt uitgebreid met geheugenknopen: Met laatste uitgaande pijl van een rij oneinput nodes wordt een α-geheugen geassocieerd. Deze bevat feiten die voldoen aan de tests van de voorgaande one-input nodes Met de uitgaande pijl van een two-input node wordt een β-geheugen geassocieerd. Deze bevat feiten die aan de tests van de twee inkomende pijlen, samen met de consistent matches, voldoen 11 Een token is een verzameling feiten, samen met een indicatie of een feit toegevoegd is of verwijderd: <label> <feit> +, met <label> ::= + feiten zijn toegevoegd - feiten zijn verwijderd Manipulatie van tokens: Een token wordt aan een α-geheugen toegevoegd, als aan alle tests voorafgaande aan de inkomende pijl voldaan is Als de tokens van de twee inkomende pijlen van een two-input node <label> L, resp. <label> R, is, en de matches zijn consistent, dan wordt: <label> LR aan het β-geheugen toegevoegd 12

Voorbeeld Retegraaf Vullen Retegraaf () () () () () () α α α β β?y b =?y c?y b =?y c 13 14 Toevoegen van Tokens Verwijderen van Tokens + a 2 + a 2 + a 2 + a 2 + a 2?y b =?yc?y b =?yc 15 16

Nadelen van Rete-algoritme Voordelen van Rete-algoritme Gegevens persisteren in de retegraaf tussen inferentiecycli consistente match wordt slechts eenmaal bepaald structureel gelijke conditie-elementen worden slechts eenmaal gerepresenteerd eenvoudig af te beelden op de architectuur van parallelle computers 17 Een β-geheugen kan het volledig cartesisch product van de inhouden van de bijbehorende α-geheugens bevatten Dit nadeel heeft het Treat-algoritme niet: Ontwikeld door Daniel Miranker (University of Texas at Austin): D.P. Miranker, Treat: a new and efficient match algorithm for AI production systems, London: Pitman, 1990. TREAT: Temporally REdundant Associative Tree algoritme, bedoeld voor: temporeel redundante toepassingen, voor parallelle machines met een boomvormig communicatienetwerk (Dado) Basisidee: geen β-geheugens, slechts de inhouden van de α-geheugens en de conflictset worden bewaard 18 Voorbeeld Treat-algoritme () () () () () () Toevoegen Feit bij Treat + a 2 a 2 a 2 a 2 dynamisch geheugen a 2 19 20

Verwijderen van Feit bij Treat Rete versus Treat Toevoegen van nieuwe feiten: Rete minder vergelijkingen dan Treat (Treat: dynamisch geconstrueerd β-geheugen) a 2 Verwijderen van feiten: Rete meer vergelijkingen dan Treat Parallelle implementatie, zoals Dado: Treat sneller dan Rete a 2 21 22