Vinterväghållning och expertsystem – en kunskapsöversikt - VTI
Vinterväghållning och expertsystem – en kunskapsöversikt - VTI
Vinterväghållning och expertsystem – en kunskapsöversikt - VTI
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2 Expertsystem<br />
2.1 Allmänt<br />
Expertsystem är <strong>en</strong> del av vad datavärld<strong>en</strong> kallar för artificiell intellig<strong>en</strong>s (AI). AI<br />
har sitt ursprung långt tillbaka i tid<strong>en</strong> då man började tänka att d<strong>en</strong> mänskliga<br />
hjärnan arbetade som <strong>en</strong> maskin. Expertsystem eller kunskapssystem är datorsystem<br />
som försöker att efterlikna mänskliga experters metodik för problemlösning.<br />
Kapitlet är i huvudsak <strong>en</strong> översikt över <strong>expertsystem</strong>. Det gör inga anspråk på<br />
att vara heltäckande eller inkludera all d<strong>en</strong> s<strong>en</strong>aste teknik<strong>en</strong>.<br />
2.1.1 Historisk utveckling<br />
Det var först med datorns tillkomst som dessa tidiga tankar om AI kunde testas.<br />
Under 50-talet utvecklades <strong>en</strong>kla program för att t.ex. spela dam. År 1958<br />
utvecklade John McCarthy programspråket LISP, list programming, som blev det<br />
dominerande språket för AI-programmering (Russell & Norvig, 1995).<br />
Ett språk eller programspråk för programmering är <strong>en</strong> typ av program. Språk<strong>en</strong><br />
består av olika kommandon, regler <strong>och</strong> algoritmer. G<strong>en</strong>om att använda dessa<br />
byggst<strong>en</strong>ar tillsammans med eg<strong>en</strong> information kan man bygga program.<br />
Språket LISP är ett symbolspråk. Det är skapat för att hantera logiska resonemang<br />
<strong>och</strong> symboler. LISP klarar att hantera abstrakta resonemang. I konv<strong>en</strong>tionella<br />
språk, t.ex. C, är det inte lika <strong>en</strong>kelt, äv<strong>en</strong> om de kan hantera rekursion. LISP<br />
använder rekursion medan vanliga språk normalt använder iteration för<br />
problemlösning. Ett exempel på rekursion är om programmet söker efter ett värde<br />
på c <strong>och</strong> upptäcker att värdet på a är nödvändigt för att veta c så börjar programmet<br />
om med samma procedur, m<strong>en</strong> söker efter ett värde på a. Ett exempel på<br />
iteration är att programmet börjar med ett värde, t.ex. a, <strong>och</strong> gör <strong>en</strong> beräkning.<br />
Svaret, t.ex. b, används sedan som nytt ingångsvärde. När skillnad<strong>en</strong> mellan ingångsvärde<br />
<strong>och</strong> svar är mindre än ett bestämt värde slutar programmet att göra<br />
beräkningar <strong>och</strong> ger det sista värdet som svar.<br />
LISP program t<strong>en</strong>derar att bli mycket stora <strong>och</strong> därför översätts ofta LISPprogram<br />
till konv<strong>en</strong>tionella språk för att minska storlek<strong>en</strong> <strong>och</strong> öka exekveringshastighet<strong>en</strong>.<br />
Idag har LISP:s kod översatts till modernare språk som C++. D<strong>en</strong><br />
mesta programmering, inom <strong>expertsystem</strong>området, som sker idag är i moderna<br />
språk. Anledning<strong>en</strong> är att språk<strong>en</strong> ger mindre <strong>och</strong> snabbare program. Dessutom<br />
har dag<strong>en</strong>s programmerare mer utbildning på dessa än på LISP-liknande språk.<br />
Med ökad datorkraft <strong>och</strong> kunskap gick man vidare <strong>och</strong> 1968 utvecklades ett<br />
program för diagnostik av blodinfektioner, som heter MYCIN. MYCIN är baserat<br />
på expertintervjuer <strong>och</strong> inte <strong>en</strong> teoretisk modell. Programmet fungerade <strong>en</strong>ligt<br />
tester bättre än nyutexaminerade läkare.<br />
G<strong>en</strong>om att fler <strong>och</strong> fler <strong>expertsystem</strong> utvecklades som hanterade verkliga problem,<br />
ökade krav<strong>en</strong> på att kunskapsrepres<strong>en</strong>tation<strong>en</strong> i språk<strong>en</strong> skulle vara hanterbar.<br />
Med kunskapsrepres<strong>en</strong>tation<strong>en</strong> m<strong>en</strong>as d<strong>en</strong> form d<strong>en</strong> från expert<strong>en</strong> inhämtade<br />
kunskap<strong>en</strong> måste skrivas på för att programspråket ska kunna förstås. I LISP är<br />
det äv<strong>en</strong> för experter svårt att skriva om vanlig kunskap till <strong>en</strong> form som LISP kan<br />
förstå. Ett av de programspråk som utvecklades för att hantera detta är Prolog. Det<br />
är ett språk som bygger på grundläggande logiska resonemang <strong>och</strong> symbolhantering<br />
<strong>och</strong> använder bakåtlänkning, se kap. 2.2, för problemlösning. Prolog utvecklades<br />
av fransmann<strong>en</strong> Alain Colmerauer 1972.<br />
14 <strong>VTI</strong> meddelande 902