Zadanie z CLIPSa - systemy regułowe

  1. (język CLIPS) Zapoznaj się z językiem i systemem CLIPSa, np. przeczytaj oficjalny tutorial dostępny w necie, oraz tutaj.

    Inny tutorial, napisany przez mojego kolegę z Uniwersytetu Przyrodniczego po polsku, jest dostępny tutaj.

    Uwaga: tutoriale, tu wymienione i inne, mają w większości na celu prezentację języka i jego elementów. Większość z nich nie przedstawia dobrego podejścia metodologicznego budowy systemów eksperckich. Trochę uwag metodologicznych zawartych jest poniżej.

  2. (interpretery) Istnieją dwa znane interpretery CLIPSa. Starszy, o nazwie CLIPS, oryginalny program z NASA, obecnie dostępny jako open-source, napisany w C i bardzo slabo ale nadal utrzymywany. Da się go wbudować w inny system jako moduł sztucznej inteligencji, jak również da się z niego wywoływać obce funkcje. Istnieje wersja windowsowa typu IDE z okienkowym edytorem i mini systemem uruchomieniowym.

    Drugi, nowszy interpreter, o nazwie JESS, napisany w Javie i zapewniającym integrację w programach Javy, jest produktem komercyjnym. Dostępna jest 30-dniowa wersja darmowa typu „demo”.

  3. (wybór tematu) Wybierz jakieś przykładowe zagadnienie, które można będzie rozwiązywać za pomocą regułowej bazy wiedzy. Najlepiej, wybierz dziedzinę, w której jesteś ekspertem, albo coś czym jesteś zafascynowany, hobby, albo przynajmniej temat na który posiadasz sporą wiedzę, i na jej bazie mógłbyś/mogłabyś doradzać innym. Na przykład:

    Jeśli nie potrafisz lub nie chcesz użyć dziedziny, z której jesteś rzeczywistym ekspertem, to temat zadania może dotyczyć jakiejś jedynie powierzchownie znanej Ci dziedziny, a wiedza być zaczerpnięta z dobrego podręcznika z tego obszaru. Wtedy scenariusze zadań rozwiązywanych przez zbudowany system muszą być szczególnie starannie i realistycznie opracowane (również na podstawie podręcznika), żeby dało się ocenić wartość odpowiedzi i zakres kompetencji systemu, zarówno ich „szerokość” jak i głębokość.

    Inną możliwością jest znalezienie jakiegoś rzeczywistego eksperta, i nawiązanie z nim współpracy do realizacji zadania. Ekspertem może być kolega, mama, albo (nawet) młodszy brat. Jeśli posiada wiedzę i doświadczenie, dzięki którym może pomóc drugiej osobie rozwiązać jej problem, to jest ekspertem.

    Uwaga: trzymaj się z dala od doradztwa przy kupowaniu samochodu. Kupowanie samochodow ma w sobie coś co nie poddaje się fachowemu doradztwu. To dotyczy wyboru marki i modelu. Jeśli jednak posiadasz wiedzę, która pozwala wybrać np. konkretny silnik dla danego modelu Forda lub Vokswagena, to taka wiedza jest cenna, i wiele osób chętnie z niej skorzysta.

  4. (zadanie do wykonania) Napisz system ekspercki w CLIPSie w postaci zbioru reguł, faktów inicjalizacyjnych, stałych, funkcji pomocniczych, itp. Celem systemu powinno być rozwiązywanie konkretnych instancji problemów z danej dziedziny. Uruchom, przetestuj na jakichś bardzo prostych przykładach problemów, potem spróbuj rozwiązać przykłady trudniejsze.

    Pamiętaj, system ekspercki nie musi rozwiązać poprawnie wszystkich przykładów. Podobnie jak człowiek, może nie znaleźć rozwiązania, lub się pomylić. Prototypowy system napisany w ciągu kilku dni, na pewno będzie miał luki i będzie się czasem mylił. Jeśli system myli się dlatego, że brakuje mu odpowiednich reguł (wiedzy), to wszystko jest w porządku, nie musisz doprowadzić go do stanu kompletności i 100\% perfekcji. Natomiast jeśli system posiada właściwe reguły, ale nie używa ich poprawnie, wtedy coś jest źle w programie, i musisz dalej pracować.

    Program tego typu musi powstawać iteracyjnie, w cyklach pisania i testowania. Nie zwlekaj z testowaniem. Po napisaniu kilku reguł odnoszących się do jakiejś części zagadnienia, przetestuj je na odpowiednich przykładach. Rozwijaj system aby uzupełnić go o wiedzę, którą uważasz za niezbędną w zakresie tego (mikroskopijnego) projektu.

  5. (uwagi metodologiczne) Przestrzegaj następujących zasad (warto przeczytać i zweryfikować te zasady kilka razy w trakcie pisania programu):