regelbaserede...

35
Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk Regelbaserede ekspertsystemer Opgaver

Upload: others

Post on 14-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig

Efterår 2003

Datalogiafdelingen, hus 42.1Roskilde Universitetscenter

Universitetsvej 1 Postboks 2604000 Roskilde

Telefon: 4674 2000Fax: 4674 3072

www.dat.ruc.dk

Regelbaserede ekspertsystemer

Opgaver

Page 2: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 2Efterår 2003

Opgave 1

• Lav et regelbaseret ekspertsystem. Vidensbasen er et lille ”bilen kan ikke starte” eksempel. Systemet skal fungere ved at stille spørgsmål til brugeren der kan svare med enten ”ja” eller ”nej”.

Page 3: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 3Efterår 2003

Opgave 1 - produktionsreglerstrøm(batteri) benzin tænding defect(starter) starte

Page 4: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 4Efterår 2003

Opgave 1 - produktionsreglerstrøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

Page 5: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 5Efterår 2003

Opgave 1 - produktionsreglerstrøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

Page 6: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 6Efterår 2003

Opgave 1 - produktionsreglerstrøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

Page 7: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 7Efterår 2003

Opgave 1 - produktionsreglerstrøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

(elektrisk(benzinpumpe) (strøm(benzinpumpe) stel(benzinpumpe)) ) (mekanisk(benzinpumpe) kører(benzinpumpe)) defekt(benzinpumpe)

Page 8: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 8Efterår 2003

Opgave 1 - produktionsregler

defekt(tændkabler) defekt(strømfordeler) tænding

strøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

(elektrisk(benzinpumpe) (strøm(benzinpumpe) stel(benzinpumpe)) ) (mekanisk(benzinpumpe) kører(benzinpumpe)) defekt(benzinpumpe)

Page 9: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 9Efterår 2003

Opgave 1 - eksempel

defekt(tændkabler) defekt(strømfordeler) tænding

strøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

(elektrisk(benzinpumpe) (strøm(benzinpumpe) stel(benzinpumpe)) ) (mekanisk(benzinpumpe) kører(benzinpumpe)) defekt(benzinpumpe)

Page 10: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 10Efterår 2003

Opgave 1 - eksempel

defekt(tændkabler) defekt(strømfordeler) tænding

strøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

(elektrisk(benzinpumpe) (strøm(benzinpumpe) stel(benzinpumpe)) ) (mekanisk(benzinpumpe) kører(benzinpumpe)) defekt(benzinpumpe)

Page 11: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 11Efterår 2003

Opgave 1 - eksempel

defekt(tændkabler) defekt(strømfordeler) tænding

strøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

(elektrisk(benzinpumpe) (strøm(benzinpumpe) stel(benzinpumpe)) ) (mekanisk(benzinpumpe) kører(benzinpumpe)) defekt(benzinpumpe)

Page 12: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 12Efterår 2003

Opgave 1 - eksempel

defekt(tændkabler) defekt(strømfordeler) tænding

strøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

(elektrisk(benzinpumpe) (strøm(benzinpumpe) stel(benzinpumpe)) ) (mekanisk(benzinpumpe) kører(benzinpumpe)) defekt(benzinpumpe)

Page 13: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 13Efterår 2003

Opgave 1 - eksempel

defekt(tændkabler) defekt(strømfordeler) tænding

strøm(batteri) benzin tænding defect(starter) starte

tom(tank) benzitryk benzin

defekt(benzinpumpe) stoppet(benzinfilter) stoppet(benzinslange) benzintryk

klikker(starter) kører(starter) defekt(starter)

(elektrisk(benzinpumpe) (strøm(benzinpumpe) stel(benzinpumpe)) ) (mekanisk(benzinpumpe) kører(benzinpumpe)) defekt(benzinpumpe)

Page 14: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 14Efterår 2003

Opgave 1 – graffisk afbildning

Page 15: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 15Efterår 2003

Opgave 1 – eksempel

Page 16: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 16Efterår 2003

Opgave 1 – eksempel

Page 17: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 17Efterår 2003

Opgave 1 – eksempel

Page 18: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 18Efterår 2003

Opgave 1 – eksempel

Kontroller tændkabler. Modstanden skal blive større, jo længere de er: Modstanden ligger typisk mellem 0,2 Kohm og 1,5 Kohm. Er tændkablerne i orden?

Page 19: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 19Efterår 2003

Opgave 1 - repræsentation

Page 20: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 20Efterår 2003

Opgave 1 - repræsentation

Node { id = 2; parent = starte; desc = strøm(batteri);}

Page 21: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 21Efterår 2003

Opgave 1 - repræsentation

Node { id = 6; parent = strøm(batteri); question = ”Er der ikke strøm på batteriet?”; recommendation = ”Lad batteriet op eller køb et nyt.”;}

Node { id = 2; parent = starte; desc = strøm(batteri);}

Page 22: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 22Efterår 2003

Opgave 1 - repræsentation

Node { id = 2; parent = starte; desc = strøm(batteri); question = null; recommendation = null;}

Node { id = 6; parent = strøm(batteri); desc = ”Spørgsmål om strøm på batteriet”; question = ”Er der ikke strøm på batteriet?”; recommendation = ”Lad batteriet op eller køb et nyt.”;}

Page 23: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 23Efterår 2003

Opgave 1 - repræsentation

Node

ID

PARENT

DESCRIPTION QUESTION

RECOMMENDATION

Node

id : intparent : intdesc : Stringquestion : Stringrecommendation : String

*

1

PRIORITY

strøm(batteri) benzin tænding defekt(starter) starte

Page 24: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 24Efterår 2003

Opgave 1 – dybde først søgning

Page 25: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 25Efterår 2003

Opgave 1 - inferensmaskineFunction SHELL(parentId) {

Select all childern where parent = parentIdwhile(nextChild) {

if(childHasQuestion) {answer = ask(question)if(answer = ”ja”) {

print recommendationexit

}}else

SHELL(childId)}

}Function ExpertSystem() {

SHELL(0)print ”Kunne ikke løse problemet!!!”;

}

Page 26: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 26Efterår 2003

Opgave 1 - inferensmaskineFunction SHELL(parentId) {

Select all childern where parent = parentIdwhile(netChild) {

if(childHasQuestion) {answer = ask(question)if(answer = ”ja”) {

print recommendationexit

}}else

SHELL(childId)}

}Function ExpertSystem() {

SHELL(0)print ”Kunne ikke løse problemet!!!”;

}

Page 27: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 27Efterår 2003

Opgave 1 - inferensmaskineFunction SHELL(parentId) {

Select all childern where parent = parentIdwhile(netChild) {

if(childHasQuestion) {answer = ask(question)if(answer = ”ja”) {

print recommendationexit

}}else

SHELL(childId)}

}Function ExpertSystem() {

SHELL(0)print ”Kunne ikke løse problemet!!!”;

}

Page 28: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 28Efterår 2003

Opgave 1 - inferensmaskineFunction SHELL(parentId) {

Select all childern where parent = parentIdwhile(netChild) {

if(childHasQuestion) {answer = ask(question)if(answer = ”ja”) {

print recommendationexit

}}else

SHELL(childId)}

}Function ExpertSystem() {

SHELL(0)print ”Kunne ikke løse problemet!!!”;

}

Page 29: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 29Efterår 2003

Opgave 1 - inferensmaskineFunction SHELL(parentId) {

Select all childern where parent = parentIdwhile(netChild) {

if(childHasQuestion) {answer = ask(question)if(answer = ”ja”) {

print recommendationexit

}}else

SHELL(childId)}

}Function ExpertSystem() {

SHELL(0)print ”Kunne ikke løse problemet!!!”;

}

Page 30: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 30Efterår 2003

Opgave 1 - inferensmaskineFunction SHELL(parentId) {

Select all childern where parent = parentIdwhile(netChild) {

if(childHasQuestion) {answer = ask(question)if(answer = ”ja”) {

print recommendationexit

}}else

SHELL(childId)}

}Function ExpertSystem() {

SHELL(0)print ”Kunne ikke løse problemet!!!”;

}

Page 31: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 31Efterår 2003

Opgave 1 - inferensmaskineFunction SHELL(parentId) {

Select all childern where parent = parentIdwhile(netChild) {

if(childHasQuestion) {answer = ask(question)if(answer = ”ja”) {

print recommendationexit

}}else

SHELL(childId)}

}Function ExpertSystem() {

SHELL(0)print ”Kunne ikke løse problemet!!!”;

}

Page 32: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 32Efterår 2003

Opgave 2

• Udvid funktionaliteten i ekspertsystemtet fra opgave 1, således at der også udskrives information om hvordan løsningen blev fundet. Det vil sige de knuder der er involveret for at bevise hypotesen starte.Eksempel:

Svar: Bilen kan ikke starte fordi tændkablerne er defekte.

(defekt(tændkabler) tænding starte)

Page 33: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 33Efterår 2003

Opgave 3

• En dybde først søgning direkte op mod databasen betyder at der åbnes en cursor for hvert niveau i bevistræet. Dette kan være problematisk hvis dybden i bevistræet er meget stor.Derfor kan der benyttes en søgning der er en blanding mellem dybde først og bredde først, således at der kun benyttes én cursor, uanset dybden.

• Tilføj denne ændring til ekspertsystemet fra opgave 2 (1).

Page 34: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 34Efterår 2003

Opgave 3 – bredde først søgning

Page 35: Regelbaserede ekspertsystemerakira.ruc.dk/~bulskov/undervisning/E2003/regelbaserede_ekspertsyst… · Henrik Bulskov Styltsvig Efterår 2003 Datalogiafdelingen, hus 42.1 Roskilde

Henrik Bulskov Styltsvig 35Efterår 2003

Opgave 3 – bredde/dybde søgning