Dariusz Roterman Grupa IO2 Rok II Informatyka Inżynierska Systemy ekspertowe Sprawozdanie 1 z PC-Shell a Baza Wiedzy: Wybór śniadania
1. Opis systemu System został stworzony w celu pomocy w wyborze śniadania. Rano kiedy ogranicza nas czas a następny autobus odjeżdża za 20 min nie ma czasu na zastanawianie się nad tym co zrobid sobie na śniadanie. System pozwoli zaoszczędzid na czasie niezdecydowanym osobom i wybrad odpowiednie dla nich śniadanie. 2.Baza wiedzy knowledge base porannesniadanie facets single yes; czystudent: query "Czy jestes studentem:" val oneof { "tak", "nie" }; lubizdrowo: query "Czy lubisz jesc zdrowo:" val oneof { "tak", "nie" }; dieta: smak: query "Jaka stosujesz diete:" val oneof { "odchudzam sie", "chce przytyc","chce pozostac przy aktualnej wadze" }; query "Jakie wolisz sniadanie:" val oneof { "na slono", "na slodko", "na ostro"}; tolerancjalaktozy: query "Czy tolerujesz laktoze:" val oneof { "tak", "nie"}; sniadanie: ask no; // Określa czy system może stawiad pytania dotyczące danego atrybutu rules 01: sniadanie = "owsianka" if lubizdrowo = "tak", (dieta = "chce pozostac przy aktualnej wadze" dieta = "chce przytyc"), smak = "na slodko", tolerancjalaktozy = "tak"; 02: sniadanie = "salatka" if dieta = "odchudzam sie"; 03: sniadanie = "kanapki z wedlina" if dieta = "chce pozostac przy aktualnej wadze", smak = "na slono";
04: sniadanie = "hamburger" if lubizdrowo = "nie", dieta = "chce przytyc", smak = "na slono"; 05: sniadanie = "platki sniadaniowe z mlekiem" if dieta = "chce pozostac przy aktualnej wadze", smak = "na slodko", tolerancjalaktozy = "tak"; 06: sniadanie = "ostry kebab" if lubizdrowo = "nie", dieta = "chce przytyc", smak = "na ostro"; 07: sniadanie = "kanapki z chlebem" if czystudent="tak"; control run; char S1, S2, S3; S1 := "Wybor sniadania"; S2 := "System doradczy wspomagajacy wybor sniadania"; S3 := "Roterman Dariusz"; vignette( S1, S2, S3 ); setappwintitle("przeglad sniadan"); addsolution( yes ); int Odp; Odp:=1; menu "Menu" 1. "Wybor sniadania" 2. "Exit" case 1: while (Odp==1) begin goal("sniadanie=sniadanie"); confirmbox( 0, 0, "Kontynuacja","Chcesz ponownie wybrad", Odp ); delnewfacts; case 2: exit;
Baza wiedzy zawiera: Blok fasets w którym znajdują się atrybuty, wraz z deklaracją zbioru wartości dla każdego atrybutu, oraz pytao skierowanych do użytkownika, które mają określid te wartości. Blok rulet określający reguły składające się z konkluzji oraz części warunkowej. Blok control odpowiadający za interfejs użytkownika oraz wszczęcie wnioskowania, w tym przypadku funkcja goal (wnioskowanie w tył) Przykład Załóżmy, że nasz użytkownik nie jest studentem, lubi odżywiad się zdrowo, pasuje mu aktualna waga, preferuje słodkie śniadania oraz toleruje laktozę. Proces wnioskowania w narzędziu PC-shell oparty na naszej bazie wiedzy będzie wyglądał następująco: Na początku pokazany zostanie ekran informacyjny, po kliknieciu OK należy wybrad opcje wybór sniadania z menu, wtedy aplikacja przejdzie do zadawania użytkownikowi pytao.
Pierwsze pytanie jakie zada system dotyczy tego czy użytkownik jest studentem, zgodnie z zamierzeniami klikamy nie. Warto nadmienid iż jeżeli na to pytanie odpowiemy tak system od razu wywnioskuje, że naszym śniadaniem powinny byd kanapki z chlebem (eksperci twierdzą że to doskonały posiłek dla studenta). Następnie zostajemy zapytani o to czy lubimy jeśd zdrowo, odpowiadamy, że tak W tym momencie zapytani o stosowaną przez nas dietę wybieramy, że chcemy zostad przy aktualnej wadze. Warto wspomnied, że równie dobrze moglibyśmy odpowiedzied na to pytanie chce przytyd, a wynik wnioskowania byłby taki sam
Zapytani o to jakie wolimy śniadanie wybieramy na słodko Ostatnie pytanie ma na celu wyeliminowanie posilkow mlecznych z propozycji. Odpowiadamy iż tolerujemy laktoze
System jako śniadanie zaoferował zgodnie z preferencjami użytkownika owsianke. Wnioski PC-Shell jest przyjaznym narzędziem wykorzystywanym przy tworzeniu systemów exportowych. Umożliwia odczyt baz wiedzy w formacie tekstowym narzucając dosyd prostą składnie, dodatkowo poszczególne źródła mogą znajdowad się w osobnych plikach, co jest przydatne przy rozbudowanych bazach. Bardzo przydatną opcją jest możliwośd śledzenia wnioskowania poprzez zadawanie pytao jak oraz dlaczego.