Systemy ekspertowe. Realizacja systemów ekspertowych z wykorzystaniem pakietu Sphinx. Część szósta.

Podobne dokumenty
Metody realizacji systemów ekspertowych w środowisku systemu PC-Shell

Systemy ekspertowe Część siódma Realizacja dziedzinowego systemu ekspertowego Roman Simiński

Systemy ekspertowe Część siódma Realizacja dziedzinowego systemu ekspertowego Roman Simiński

Podstawowe definicje Z czego składa się system ekspertowy? Wnioskowanie: wprzód, wstecz, mieszane

Systemy eksperowe. Agnieszka Nowak Brzezińska Wykład I

Systemy ekspertowe i sztuczna inteligencja. dr Agnieszka Nowak Brzezioska

Opracował: mgr inż. Marcin Olech

Opis podstawowych funkcji PC- SHELLa

Systemy ekspertowe. Wnioskowanie w systemach regułowych. Część piąta. Autor Roman Simiński.

Systemy ekspertowe. Sprawozdanie I. Tworzenie bazy wiedzy w systemie PC- Shell. Wykonali: Wiktor Wielgus Łukasz Nowak

Systemy ekspertowe. PC-Shell. Sprawozdanie z bazy wiedzy

PRZEWODNIK PO PRZEDMIOCIE

Sprawozdanie 1 z PC-Shell a. Baza Wiedzy: Wybór śniadania

Podstawy programowania w języku C i C++

Systemy ekspertowe : program PCShell

Podstawy programowania

PRZEWODNIK PO PRZEDMIOCIE

Wprowadzenie do programowania w języku C

Podstawy programowania w języku C++

Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY.

PODSTAWY BAZ DANYCH. 19. Perspektywy baz danych. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Język programowania PASCAL

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

PRZEWODNIK PO PRZEDMIOCIE WYKŁAD ĆWICZENIA LABORATORIUM PROJEKT SEMINARIUM

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Podstawy programowania w języku C++

Programowanie w języku C++

Podstawy programowania

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Języki programowania deklaratywnego

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Programowanie w języku C++

PRZEWODNIK PO PRZEDMIOCIE

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna

Podstawy programowania w języku C++

Systemy ekspertowe. Krzysztof Patan

Systemy ekspertowe. Generowanie reguł minimalnych. Część czwarta. Autor Roman Simiński.

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Wprowadzenie do teorii systemów ekspertowych

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Podstawy programowania w języku C++

Podstawy programowania w języku C++

1 Podstawy c++ w pigułce.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

PRZEWODNIK PO PRZEDMIOCIE

Wprowadzenie do programowanie obiektowego w języku C++

Wykład I. Wprowadzenie do baz danych

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Podstawy programowania w języku C++

Systemy uczące się wykład 2

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Podstawy programowania

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

INŻYNIERIA OPROGRAMOWANIA

KARTA MODUŁU KSZTAŁCENIA

Podstawy programowania w języku C++

KARTA KURSU. Wstęp do programowania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

STUDIA NIESTACJONARNE I STOPNIA Przedmioty kierunkowe

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P).

Technologie informacyjne - wykład 12 -

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

PRZEWODNIK PO PRZEDMIOCIE

5 Moduył do wyboru II *[zobacz opis poniżej] 4 Projektowanie i konfiguracja sieci komputerowych Z

Roman Mocek Zabrze Opracowanie zbiorcze ze źródeł Scholaris i CKE

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Systemy eksperckie. Plan wykładu Wprowadzenie do sztucznej inteligencji. Wnioski z prób automatycznego wnioskowania w rachunku predykatów

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Zmienne, stałe i operatory

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

WYKORZYSTANIE SYSTEMÓW EKSPERTOWYCH DO OCENY FUNKCJONOWANIA PRZEDSIĘBIORSTW

Prezentacja specjalności Inżynieria Systemów Informatycznych

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Rozdział 3. ROZWÓJ APLIKACJI CENTRALNEJ

ECDL Podstawy programowania Sylabus - wersja 1.0

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Pakiety podprogramów Dynamiczny SQL

Wprowadzenie do programowania w języku C

Podstawy programowania

Pytania sprawdzające wiedzę z programowania C++

SZTUCZNA INTELIGENCJA

PRZEWODNIK PO PRZEDMIOCIE

Okręgowa Komisja Egzaminacyjna w Krakowie 1

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Transkrypt:

Część szósta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Realizacja systemów ekspertowych z wykorzystaniem pakietu Sphinx Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

System ekspertowy jako system z bazą wiedzy System ekspertowy i inżynieria wiedzy Systemy ekspertowe są programami umożliwiającymi rozwiązywania problemów w sposób przypominający postępowanie eksperta lub specjalisty z pewnej, zwykle wąsko określonej dziedziny. Pod pojęciem systemu ekspertowego należy rozumieć zatem taki program komputerowy, który, działając w oparciu o posiadaną szczegółową wiedzę, potrafi wyciągać wnioski oraz sugerować decyzje, rozwiązując specjalistyczne problemy w sposób zbliżony do tego, w jaki czynią to istoty inteligentne. Problem konstruowania systemów ekspertowych należy do dziedziny nauki, jaką jest inżynieria wiedzy. Obejmuje ona również takie zagadnienia, jak pozyskiwanie wiedzy, jej strukturalizacja oraz kodyfikację i weryfikację, dopasowywanie odpowiednich metod wnioskowania oraz mechanizmów wyjaśnień. System ekspertowy to nazwa określająca jego funkcjonalność i zakres stosowalności. Systemy ekspertowe są najczęściej realizowane w technologii systemów z bazą wiedzy. Copyright Roman Simiński Strona : 2

System ekspertowy jako system z bazą wiedzy Ogólne właściwości systemów ekspertowych Systemy ekspertowe: są narzędziem kodyfikacji wiedzy eksperckiej, mają zdolność rozwiązywania problemów specjalistycznych, w których duża rolę odgrywa doświadczenie a wiedza ekspercka jest dobrem rzadkim i kosztownym. zwiększają dostępność ekspertyzy, zapewniają możliwość prowadzenia jednolitej polityki przez centralę firm mających wiele oddziałów, poziom ekspertyzy jest stabilny - jej jakość nie zależy od warunków zewnętrznych i czasu pracy systemu, jawna reprezentacja wiedzy w postaci zrozumiałej dla użytkownika końcowego, zdolność do objaśniania znalezionych przez system rozwiązań, możliwość przyrostowej budowy i pielęgnacji bazy wiedzy. Copyright Roman Simiński Strona : 3

System ekspertowy jako system z bazą wiedzy Inżynieria wiedzy i akwizycja wiedzy Proces realizacji systemów ekspertowych różni się od procesu realizacji klasycznych systemów informatycznych. W przypadku tych ostatnich, kompleksowo rozumiany proces realizacji systemu jest przedmiotem inżynierii programowania. W przypadku systemów ekspertowych mówi się o inżynierii wiedzy: Inżynieria wiedzy (ang. knowledge engineering) to dziedzina sztucznej inteligencji zajmująca się projektowaniem i realizacją systemów ekspertowych. Jednym z kluczowych elementów inżynierii wiedzy jest akwizycja wiedzy. Przyjmijmy następującą jej definicję: Akwizycja wiedzy (ang. knowledge acquisition, knowledge elicitation) to proces pozyskiwania, gromadzenia i strukturalizowania wiedzy dziedzinowej niezbędnej do realizacji baz wiedzy systemu ekspertowego. Copyright Roman Simiński Strona : 4

System ekspertowy jako system z bazą wiedzy Narzędzia i role uczestników procesu realizacji systemu ekspertowego testuje i ocenia Twórca narzędzi AI implementuje Ekspert dziedzinowy Baza wiedzy Narzędzia do budowy SE pozyskuje wiedzę Inżynier wiedzy projektuje, buduje, testuje i rozszerza System Ekspertowy Użytkownik systemu Copyright Roman Simiński Strona : 5

System ekspertowy jako system z bazą wiedzy Inkrementacyjny model cyklu rozwojowego systemu ekspertowego Wstępna analiza i definicja dziedziny problemu Wybór i analiza podzbioru dziedziny, realizacja wstępnego prototypu SE Testowanie systemu Inżynieria wiedzy Rozszerzenie dziedziny, pozyskanie dodatkowej wiedzy, rozszerzenie systemu Nie Czy system spełnia wymagania? Tak Wdrożenie systemu Copyright Roman Simiński Strona : 6

i system szkieletowy PC-Shell Ogólne właściwości pakietu Sphinx jest zintegrowanym pakietem oprogramowania z zakresu sztucznej inteligencji. Przeznaczony jest do realizacji inteligentnych aplikacji wykorzystujących technologię systemów ekspertowych oraz sieci neuronowych. Pakiet jest dziedzinowo niezależny, typowe zastosowania ukierunkowane są na zagadnienia związane ze wspomaganiem podejmowania decyzji, klasyfikacją, diagnostyką, analizą danych. Pakiet składa się z trzech podstawowych systemów: PC Shell szkieletowy system ekspertowy, CAKE system spomagający realizację baz wiedzy, Neuronix symulator sieci neuronowych. Copyright Roman Simiński Strona : 7

i system szkieletowy PC-Shell Rola elementów pakietu Sphinx CAKE Plik Edycja Przegląd Uprawnienia Pomoc Neuronix reguła 001 reguła 002 reguła 003 reguła 004 reguła 005 reguła 006 Definiowanie struktury i parametrów sieci, uczenie, generacja pliku opisu sieci Dialog przegląd = nie if typ = odrzutowy, brak_awarii, sprawny_technicznie; Tekst wyjaśnień dla atrybutu SAMOLOT Dialog Definicja SN 111011010110 111010101111 010100111010 111111111100 110101111011 Ekspercka BW 101010101010 101011011010 110110101011 110100011101 011111000100 Projekt Uprawnienia Hasła Użytkownicy Binarna Baza Wiedzy Co To? 110110101011 110100011101 Metafory 101010101010 101011011010 110110101011 110100011101 011111000100 PC-Shell Wnioskowanie Zarządzanie źródłami Ocena stanu techniczego Dialog Podaj typ samolotu Dialogi Grafika Dźwięk Wyjaśnienia: - Dlaczego? - Jak? śmigłowy turbośmigłowy odrzutowy OK Dlaczego Co to? Wyjaśnienia: - Co To Jest? - Metafory? Dziedzinowy system ekspertowy Copyright Roman Simiński Strona : 8

i system szkieletowy PC-Shell Właściwości systemu PC-Shell Podstawowym elementem pakietu Sphinx jest szkieletowy system ekspertowy PC Shell, posiadający właściwości hybrydowe, wykorzystujący elementy architektury tablicowej. Bazy wiedzy systemu zapisywane są przy użyciu języka opisu bazy wiedzy Sphinx, integrującego w sobie deklaratywny język reprezentacji wiedzy oraz imperatywny język programowania strukturalnego. Baza wiedzy zapisywana jest w postaci pliku (lub plików) tekstowych poddawanych procesowi translacji na początku każdej sesji konsultacyjnej Copyright Roman Simiński Strona : 9

i system szkieletowy PC-Shell Właściwości systemu Neuronix System Neuronix przeznaczony jest do tworzenia samodzielnych aplikacji neuronowych lub neuronowych źródeł wiedzy, które mogą wchodzić w skład hybrydowych aplikacji systemu PC-Shell. W środowisku systemu Neuronix realizuje się proces definiowania sieci struktury, parametrów oraz przeprowadza się proces trenowania sieci neuronowej. Właściwości systemu CAKE Zadaniem system CAKE jest wspomaganie procesu realizacji dziedzinowych baz wiedzy dla systemu PC Shell. System CAKE oferuje możliwość edycji baz wiedzy bez konieczności bezpośredniego pisania w języku Sphinx, zapewniając wygodny podsystem komunikacji z użytkownikiem, oferując mechanizmy kontroli i weryfikacji wprowadzanych informacji. Copyright Roman Simiński Strona : 10

Architektura Baza STRUKTURA wiedzy SYSTEMU PC-Shell Bazy wyjaśnień Translator języka opisu bazy wiedzy Sterowanie Edytor bazy wiedzy Moduł przeglądu bazy wiedzy Moduł wnioskowania Moduł objaśnień Podsystem komunikacji z użytkownikiem Copyright Roman Simiński Strona : 11

Struktura bazy wiedzy systemu PC Shell Struktura bazy wiedzy knowledge base nazwa sources opis_plików facets opis_faset rules opis_reguł facts opis_faktów control program Opis funkcji bloków bazy wiedzy Definicja plików zawierających źródła wiedzy: ekspercka baza wiedzy, definicja sieci neuronowej, baza wyjaśnień. Definicja atrybutów - ich typów i właściwości, ustalenie wartości przełączników sterujących wnioskowaniem. Blok opisu reguł zapisanych w postaci klauzul Horna. Blok opisu faktów zapisanych w postaci trójek Obiekt-Atrybut-Wartość. Blok programu - sterowanie wnioskowaniem i aktywacją źródeł, pozyskiwanie i wstępne przetwarzanie danych, dostęp do plików baz danych, dynamiczna wymiana danych itp. Copyright Roman Simiński Strona : 12

Blok deklaracji źródeł wiedzy Format opisu źródła: nazwa_źródła : type { kb metaphor what_is neural_net }; file łańcuch_znaków; gdzie type służy do specyfikacji typu źródła, jednego z poniższych: kb - eksperckie bazy wiedzy, neural_net - sieci neuronowe, metaphor - bazy danych zawierające wyjaśnienia typu metafory, what_is - bazy danych zawierające wyjaśnienia typu co to jest, natomiast file łańcuch_znaków określa plik, w którym przechowywane jest źródło wiedzy. Copyright Roman Simiński Strona : 13

Przykładowa deklaracja bloku źródeł sources decyzja_kredytowa : type kb file "c:\\bazy\\bw\\decyzja.zw"; prognoza_finansowa : type neural_net file "c:\\bazy\\sieci\\prognoza.def"; metafory : type metaphor file "c: \\bazy\\bw\\kredyt.dbm"; coto : type what_is file "c: \\bazy\\bw\\kredyt.dbw"; Copyright Roman Simiński Strona : 14

Ogólna struktura bloku faset Fasetami określa się tu zbiór deklaracji odnoszących się do wybranych atrybutów. Blok faset zawiera wykaz wszystkich atrybutów używanych w bazie wiedzy, wraz z przypisanymi do nich fasetami. facets opis_faset opis_faset: atrybut1 [ deklaracje_faset 1 ]; - atrybutn [ deklaracje_faset n ]; Copyright Roman Simiński Strona : 15

Przykład definicji atrybutu z fasetami facets end temperatura_ciała : query "Podaj temperaturę ciała:"; unit "st. C"; val range < 36, 42 >; param { NORMALNA = 36.7, STAN_PODGOR = 37.5 }; Copyright Roman Simiński Strona : 16

Rodzaje faset opisujących atrybuty ask- określa czy system może stawiać pytania dotyczące danego atrybutu. System zadaje pytania jedynie w sytuacji, gdy nie potrafi potwierdzić warunku reguły lub hipotezy wykorzystując fakty i reguły zawarte w bazie wiedzy. query - umożliwia zdefiniowanie przez użytkownika własnej treści zapytań o wartość atrybutu, generowanych przez system. unit - umożliwia zadeklarowanie jednostki miary, w której wyrażane są wartości danego atrybutu, podczas wyświetlania informacji zawierającej dany atrybut, dodatkowo - po wartości - będzie pojawiał się tekst zadeklarowany jako jednostka_miary. Copyright Roman Simiński Strona : 17

Rodzaje faset opisujących atrybuty val - określa zbiór dopuszczalnych wartości danego atrybutu. Wartości mogą być numeryczne lub symboliczne. Do określenia dozwolonych lub niedozwolonych wartości służą następujące deklaracje związane z fasetą val : oneof, someof, range, except; param - faseta ta umożliwia zadeklarowanie tzw. zmiennych parametrycznych i przypisanie im wartości domyślnych; picture, sound, video - fasety te umożliwiają związanie plików multimedialnych z atrybutem lub jego wartościami. Rysunek jest automatycznie pokazywany, np. gdy pojawia się zapytanie dotyczące atrybutu z którym związany jest rysunek. Dźwięk i animację można odtworzyć po wybraniu odpowiedniego przycisku. Copyright Roman Simiński Strona : 18

Przykład wykorzystania faset query i picture matowa_powierzchnia_kapelusza: query "Czy powierzchnia skórki kapelusza jest matowa?" picture "grzyb22.bmp"; Copyright Roman Simiński Strona : 19

Przykład wykorzystania faset val i video figura : val oneof { "sześcian", "prostopadłościan", "ostrosłup", "graniastosłup", "nieprawidłowa" } video { "sześcian.avi", "prostopadłościan.avi", "ostrosłup.avi", "", "nieprawidłowa.avi" }; Copyright Roman Simiński Strona : 20

Przykłady definicji atrybutów z użyciem faset kolor_nadwozia : query "Proszę podać kolor nadwozia samochodu:" ; val oneof { "biały", "czerwony", "niebieski" }; pojemność_silnika : query "Proszę podać pojemność silnika:" ; unit "cm sześć."; val except { < MIN, 600 ), ( 5000, MAX > }; grzyb : val oneof { "pieczarka", "muchomor", "maślak" } picture { "piecz.bmp", "muchomor.bmp","maslak.bmp"}; sound { "ok.bmp", "alarm.bmp", "ok.bmp" }; ilość_pamięci_ram : query "Podaj przewidywaną ilość pamięci RAM:"; unit "MB"; val range < 128, 2048 > Copyright Roman Simiński Strona : 21

Bloki opisu faktów Blok opisu faktów pozwala na wprowadzenie do treści bazy wiedzy zbioru faktów. facts opis_faktów opis_faktu: trójka_oaw; lub not trójka_oaw; Przykłady faktów: facts temperatura_ciała( kowalski ) = 37.5; kolor_nadwozia = "biały"; pojemnosc_silnika = 2500; grzyb = "maślak"; Copyright Roman Simiński Strona : 22

Bloki opisu faktów Blok opisu reguł zawiera listę reguł. Każda z reguł formalnie stanowi odpowiednik klauzuli Horna. Konkluzje reguł zapisywane są w postaci trójek Obiekt-Atrybut-Wartość, warunki dodatkowo mogą przyjąć formę wyrażenia relacyjnego lub instrukcji przypisania (więcej informacji na temat dwóch ostatnich postaci warunków zawiera dokumentacja systemu). W aktualnej wersji języka, reguły mogą posiadać warunki koniunkcyjne jak i połączone operatorem alternatywy, dodatkowo warunki mogą być grupowane w warunki złożone za pomocą notacji nawiasowej. Copyright Roman Simiński Strona : 23

Bloki opisu reguł rules opis_reguł opis_reguły_prostej (klauzula Horna): konkluzja if warunek 1, warunek 2,..., warunek N ; opis_reguły_złożonej: konkluzja if warunek 1, warunek 2,..., warunek N ; [ numer_reguły : ] konkluzja 1 if warunek 1 & warunek 2 &...& warunek n ; [ numer_reguły : ] konkluzja 2 if warunek 1 warunek 2 &...& warunek n ; Operatorowi logicznemu AND odpowiada znak, lub &. Operatorowi logicznemu OR odpowiada znak Copyright Roman Simiński Strona : 24

Przykłady reguł prostych typmodemu = "Zoltrix 56000 Cobra Voice V.90 PCI" if producentmodemu = "Zoltrix" & jakimodem = "modem wewnętrzny" & szybkośćmodemu = "56000"; typdrukarki = "Hewlett-Packard Desk Jet 1120C" if rodzajdrukarki = "drukarka atramentowa", producentdrukarki = "Hewlett-Packard", zastosowaniedrukarki = "wydruk tekstu i rysunków", jakośćwydruku = "jak najlepsza"; ryzyko_rozwoju_choroby_wieńcowej = "wysokie" if skłonności_dziedziczne_choroby_wieńcowej = "występują" & miażdżyca_tętnic_wieńcowych = "występuje"; gatunek = "DOOM METAL" if instrument = "gitara elektryczna", rytm = "umiarkowany", rodzaj_wokalu = "mroczny, ponury", klimat = "ponury", tempo = "wolne"; Copyright Roman Simiński Strona : 25

Przykłady reguł złożonych ryzyko_ubezpieczeniowe = umiarkowane if ( rodzaj_zabezpieczenia = autoalarm rodzaj_zabezpieczenia = blokada skrzyni biegów ) & ( miejsce_postoju = garaż miejsce_postoju = parking strzeżony ); rodzaj_sterownika = SCSI if ( przeznaczenie = serwer sieciowy przeznaczenie = stacja graficzna przeznaczenie = wspomaganie projektowania ) & dozwolony_koszt = wysoki & ilość_współpracujących_urządzań = duża ; Copyright Roman Simiński Strona : 26

Numeracja reguł udostępnia dwa rodzaje numeracji reguł: użytkownika (jawna) i automatyczną (niejawna). Numeracja użytkownika tworzona jest przez inżyniera wiedzy w opisie bazy wiedzy. Każda reguła powinna otrzymać numer, będący jej jednoznacznym identyfikatorem w obrębie całej bazy wiedzy, uwzględniając również ewentualne źródła wiedzy. Numery reguł muszą być liczbami z przedziału 0-9999. System zakłada, że jeśli pierwsza w kolejności reguła ma numer jawny, to pozostałe reguły muszą mieć również przypisane numery. I odwrotnie, jeśli pierwsza reguła nie ma numeru, to żadna z reguł w danej bazie wiedzy nie może mieć przypisanego przez użytkownika numeru. Złamanie którejś z tych zasad spowoduje błąd w czasie translacji bazy wiedzy. Jeśli inżynier wiedzy nie nada jawnej numeracji regułom to system automatycznie przypisze wszystkim regułom w bazie wiedzy numery, zgodne z ich kolejnością w tekście źródłowym bazy wiedzy. Zaleca się stosowanie jawnej numeracji. W przypadku aplikacji z bazami wiedzy ujętymi w formie źródeł wiedzy, jawna numeracja jest obowiązkowa. Copyright Roman Simiński Strona : 27

Blok sterowania Blok sterujący zawierać może klasyczny program algorytmiczny. Programista ma do dyspozycji bogaty zestaw typów danych oraz instrukcji. Można również definiować własne podprogramy, również rekurencyjne. Program składa się ze zbioru instrukcji zawartych w bloku control. W ten sposób zachowana została zasada wyraźnego rozdzielenia wiedzy eksperckiej oraz tzw. sterowania. Copyright Roman Simiński Strona : 28

Blok sterowania typy danych Język oferuje następujące typy danych : całkowite (int, longint), rzeczywiste (float, double), tablicowe (jedno i dwuwymiarowe), rekordowe. Przykłady deklaracji zmiennych: int Zmienna1; char C1, C2, STR, Lancuch_znakowy; float X, Y,Z, Srednia; float TAB1[10], TAB2[5,10]; Copyright Roman Simiński Strona : 29

Blok sterowania ogólny podział instrukcji Dostępny zestaw instrukcji programowania obejmuje zarówno klasyczne instrukcje takie jak instrukcje iteracyjne, warunkowe, dostępu do plików, obsługi ekranu, aż do wyspecjalizowanych instrukcji sterujących wnioskowaniem, operujących na bazach wiedzy, zarządzających źródłami. Instrukcje można podzielić na następujące grupy: instrukcje sterujące wykonaniem programu, instrukcje inicjujące i sterujące procesem wnioskowania, instrukcje operujące na bazie wiedzy, instrukcje podsystemu komunikacji z użytkownikiem, instrukcje symulatora sieci neuronowej, instrukcje związane z parametryzacją baz wiedzy, instrukcje obsługujące dostęp do plików, instrukcje obsługujące dostęp do baz danych, instrukcje dotyczące dynamicznej wymiany danych. Copyright Roman Simiński Strona : 30

Blok instrukcji przykład prostej sekwencji uruchamiającej wnioskowanie char Text1, Text2, Text3; run; createappwindow; Text1 := "Nazwa aplikacji"; Text2 := "Informacje dodatkowe\nautor programu\nwydawca"; Text3 := " 2006, Autor/Firma"; vignette( Text1, Text2, Text3 ); goal( atrybut_celu=x ); Copyright Roman Simiński Strona : 31

Blok instrukcji przykład iteracyjnej sesji wnioskowania int Odp; char Text1, Text2, Text3; run; createappwindow; Text1 := "Nazwa aplikacji"; Text2 := "Informacje dodatkowe\nautor programu\nwydawca"; Text3 := " 2006, Autor/Firma"; vignette( Text1, Text2, Text3 ); Odp := 1; while( Odp == 1 ) begin delnewfacts; goal( atrybut_celu=x ); confirmbox( 0, 0, "", "Kontynuować konsultacje?", Odp ); Copyright Roman Simiński Strona : 32

Blok instrukcji przykład iteracyjnej sesji wnioskowania char Text1, Text2, Text3; run; Text1 := "Nazwa aplikacji"; Text2 := "Informacje dodatkowe\nautor programu\nwydawca"; Text3 := " 2006, Autor/Firma"; createappwindow; setappwintitle( Text1 ); vignette( Text1, Text2, Text3 ); menu "Menu" 1. "Wspomaganie doboru procesora" 2. "Wspomaganie doboru ilości pamięci" 3. "Koniec" case 1: delnewfacts; goal( procesor=x ); case 2: delnewfacts; goal( pamiec=x ); case 3: exit; Copyright Roman Simiński Strona : 33

Blok instrukcji przykład programowania imperatywnego knowledge base silnia control long K, S, N; int Odp; char STR, Tekst; run; createappwindow; precision( 1, 0 ); Odp := 1; while( Odp == 1 ) begin neditbox( 0, 0, 0, 12, "Podaj liczbę n dla n!", N ); S := 1; for K := 1 to N step 1 begin S := S * K; ntos( S, STR ); Tekst := "Wartość n! = "; strcat( Tekst, STR ); messagebox( 0, 0, "Komunikat", Tekst ); confirmbox( 0, 0, "KONTYNUOWAĆ?", "", Odp ); Copyright Roman Simiński Strona : 34

Blok instrukcji przykład programowania imperatywnego knowledge base nazwa control record Complex begin double R, U; // r - część rzeczywista, u - urojona function addcomplex( record Complex L1, record Complex L2, record Complex &Result ) begin Result.R := L1.R + L2.R; Result.U := L1.U + L2.U; run; record Complex R1, R2, R3; R1.R := 1; R1.U := 2; R2.R := 1; R2.U := -1; addcomplex( R1, R2, R3 ); Copyright Roman Simiński Strona : 35