OPIS PRODUKTU EXSYS CORVID
OPIS PRODUKTU EXSYS CORVID Spis Treści
2
SPIS TREŚCI
EXSYS CORVID – PRZEGLĄD. ........................................................................................... 3
CZYM JEST CORVID? ............................................................................................................... 3
STRUKTURA OBIEKTOWA ........................................................................................................ 3
BLOKI LOGICZNE ..................................................................................................................... 3
JAVA RUNTIME APPLET DELIVERY ......................................................................................... 4
PIERWSZE PODEJŚCIE, CZYLI JAK WYGLĄDA? ....................................................... 5
OKNO GŁÓWNE PROGRAMU ..................................................................................................... 5
MENU ...................................................................................................................................... 5
File ..................................................................................................................................... 5
Windows ............................................................................................................................. 6
Run ..................................................................................................................................... 6
PASEK NARZĘDZIOWY (TOOLBAR) ........................................................................................... 6
CO POTRAFI CORVID? ........................................................................................................ 8
INTERPRETATOR REGUŁ ........................................................................................................... 8
ZMIENNE ................................................................................................................................. 8
Typy .................................................................................................................................... 9
Dodawanie ....................................................................................................................... 10
Ustawianie parametrów zmiennych ................................................................................. 11
Właściwości i metody zmiennych. .................................................................................... 14
BLOKI LOGICZNE ................................................................................................................... 15
Dodawanie nowego bloku logicznego .............................................................................. 15
Wyrażenia i operatory ...................................................................................................... 15
Dodawanie węzłów w drzewie logicznym ........................................................................ 16
BLOKI KOMEND ..................................................................................................................... 16
Dodawanie bloku komend ................................................................................................ 17
Wyrażenia warunkowe oraz pętle .................................................................................... 17
Komendy ........................................................................................................................... 17
SPRAWDZANIE I URUCHAMIANIE SYSTEMU ............................................................................ 18
BUDOWA PROSTEGO SYSTEMU EKSPERTOWEGO W EXSYS CORVID ............ 20
ZACZYNAMY – ZMIENNE ....................................................................................................... 22
TWORZENIE BAZY FAKTÓW – ORGANIZACJA BLOKÓW LOGICZNYCH ..................................... 25
KONTROLA DZIAŁANIA SYSTEMU – PROJEKTOWANIE BLOKÓW POLECEŃ .............................. 32
PODSUMOWANIE ......................................... BŁĄD! NIE ZDEFINIOWANO ZAKŁADKI.
ZAŁĄCZNIKI .................................................. BŁĄD! NIE ZDEFINIOWANO ZAKŁADKI.
OPIS PRODUKTU EXSYS CORVID EXSYS Corvid – przegląd.
3
EXSYS CORVID – PRZEGLĄD.
Podczas pracy korzystałem z jedynego dostępnego źródła na temat produktu, mianowicie z
obszernego „Podręcznika użytkownika” dostarczanego wraz z systemem, w pliku „CORVID
Manual.pdf”. Kontaktowałem się też z pracownikami działu public relations firmy EXSYS
Inc., którzy szybko i zwięźle odpowiadali na moje pytania i wątpliwości.
Czym jest Corvid?
Szkieletowy system ekspertowy EXSYS Corvid jest produktem firmy EXSYS Inc., będącej
wcześniej częścią korporacji Multi Logic. Program ten powstał w wyniku zapotrzebowania na
wiedzę ekspercką w Internecie. Przy tworzeniu aplikacji wykorzystano doświadczenie
uzyskane podczas pisania programu EXSYS Developer oraz wcześniejszych wersji systemów
szkieletowych serii EXSYS (np. EXSYS Pro. rozwijany jeszcze przez Multi Logic).
EXSYS Corvid jest narzędziem przeznaczonym do szybkiego tworzenia systemów
eksperckich na stronach HTML. Jego funkcjonalność jest zdeterminowana trzema nowymi
rozwiązaniami, które według producenta mają zrewolucjonizować tworzenie systemów
ekspertowych w sieci. Są to: struktura obiektowa (ang. object structure), bloki logiczne (ang.
Logic Blocks) oraz aplety Java.
Struktura obiektowa
Struktura obiektowa to nic innego jak obiektowe podejście do zmiennych przy zachowaniu
podejścia strukturalnego w projektowaniu systemów decyzyjnych. Corvid wykorzystuje
znany z Visual Basic’a model programowania. Czyli połączenie obiektowości z podejściem
strukturalnym.
Bloki logiczne
W poprzednich wersjach EXSYS logika była reprezentowana przez drzewa logiczne i
indywidualne reguły IF/THEN. Niestety dużo systemów wymaga wielu drzew decyzyjnych,
co przysparza kłopotów przy organizacji logiki. Bloki logiczne wprowadzone w EXSYS
Corvid mają za zadanie wspomóc projektanta systemu właśnie przy organizacji logiki. Mogą
OPIS PRODUKTU EXSYS CORVID EXSYS Corvid – przegląd.
4
nimi być jakiekolwiek zestawy reguł lub cała baza wiedzy. Pozwala to na uporządkowanie
wiedzy w bloki, które zachowują się jak obiekty.
Java Runtime Applet Delivery
Corvid pozwala na przesyłanie systemu poprzez aplety Javy, natomiast komunikacja z
użytkownikiem realizowana jest poprzez strony HTML. Aplikacje tworzone w Corvidzie
przesyłane są w ok. 100kB apletach. Twórca systemu ekspertowego wybiera tylko pytanie i
sposób jego zadania. Korzystając z możliwości HTML’a wyniki wnioskowania można
umieszczać w odpowiednio sformatowany sposób, dzięki czemu system staje się
czytelniejszy.
Aplet Corvid’a zapewnia funkcjonalność dla większości systemów. Jeśli jednak zajdzie
potrzeba na dodanie nowej funkcji to istnieje możliwość komunikowania się z innymi
apletami na stronie. Jeśli chodzi o pobieranie lub obliczanie danych dostępnych tylko z
serwera, to można wykorzystać skrypty CGI, ASP i JSP.
Funkcjonalność sieciowa jest najmocniejszą stroną tego produktu wykorzystywaną przez
największe firmy.
OPIS PRODUKTU EXSYS CORVID Pierwsze podejście, czyli jak wygląda?
5
PIERWSZE PODEJŚCIE, CZYLI JAK WYGLĄDA?
Okno główne programu
Rys. 1 Okno główne programu EXSYS Corvid.
Menu
Menu zawiera pięć sekcji: File, Windows, Run, Register, Help, z czego trzy pierwsze
związane z kontrolą tworzonego systemu ekspertowego, zaś dwie ostatnie odnoszą się do
rejestracji programu i pomocy (tymi grupami menu nie będziemy zajmować się w opisie).
File
Grupa File zawiera następujące polecenia:
New
Open
Close
Save
Save as...
Proprieties
Page setup
Pulpit roboczy programu
Menu
Toolbar
Bieżąca data i czas
OPIS PRODUKTU EXSYS CORVID Pierwsze podejście, czyli jak wygląda?
6
Exit
Większość opcji dla użytkowników systemu Windows jest jasna i nie wymaga wyjaśnień.
Windows
Grupa Windows zawiera polecenia:
Logic Block – otwiera okno edycji bloków logicznych
Rule View – określa czy przy otwieraniu okna edycji bloków logicznych ma pojawić
się widok reguł.
Command Block – otwiera okno edycji bloków poleceń.
Where – otwiera okno poszukiwania zmiennych w systemie.
Set RESULT Default – otwiera okno, w którym możemy ustawić wygląd jaki mają
przybrać wyniki.
Run
Grupa Run zawiera takie opcje jak:
Start Run – uruchamia system w przeglądarce Corvid’a
Set Starting Cmd Block – otwiera okno, w którym określamy, od którego bloku
komend ma się zacząć wykonywanie systemu.
Reorder Logic Blocks – otwiera okno, w którym możemy zmienić kolejność bloków
logicznych.
Check System – sprawdza system i wypisuje ewentualne wady.
Pasek narzędziowy (toolbar)
Na pasku dostępnych jest dziewięć najczęściej używanych poleceń, które mają swoje
odpowiedniki w menu. Kolejno od lewej mamy:
Otwórz plik (File/Open)
Zapisz plik (File/Save)
Otwórz okno edycji bloków logicznych (Windows/Logic Block)
Otwórz okno edycji bloków poleceń (Windows/Command Blocks)
Otwórz okno edycji zmiennych (Windows/Variables)
Uruchom system w przeglądarce Crovid’a (Run/Start Run)
OPIS PRODUKTU EXSYS CORVID Pierwsze podejście, czyli jak wygląda?
7
Drukuj system (File/Print)
Właściwości (File/Properties)
Pomoc (Help/Contents)
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
8
CO POTRAFI CORVID?
Interpretator reguł
Wartościowanie zmiennych przeprowadzane jest domyślnie metodą wnioskowania wstecz, co
można zmienić bez większego problemu. Jeśli chodzi o algorytm działania interpretatora to
panowie z działu technicznego firmy EXSYS Inc. odpowiedzieli, iż jest on zastrzeżony i tylko
do wglądu przez pracowników. Dlatego jedno z najbardziej interesujących mnie pytań
pozostaje otworem. Apropo algorytmu, udało mi się jedynie dowiedzieć, iż reguła aktywna
jest pierwszą wolną regułą. Mogę tylko powiedzieć, że z moich dotychczasowych wojaży z
programem nie zauważyłem żadnych anomalii we wnioskowaniu.
Zmienne
Jak zazwyczaj w programowaniu tak i tu zmienne odgrywają zasadniczą rolę. System
zarządzania zmiennymi mimo tego, że jest rozbudowany nie traci na przejrzystości. Dlatego
tworzenie i edytowanie zmiennych należy do przyjemnych, jeśli ktoś lubi pracować myszką.
Mnie osobiście widmo ciągłego klikania przeraziło niezmiernie, na szczęście nie jest to tak
bardzo uciążliwe. Zmienne w Corvid’zie używane są do:
definiowania logiki w blokach logicznych
przechowywania danych użytkownika w czasie działania systemu
definiowania w jaki sposób system ma działać.
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
9
Typy
W Corvid’zie wyróżniamy siedem typów zmiennych.
Tabela 1 Typy zmiennych w EXSYS Corvid.
Typ zmiennej Funkcja
Static List Lista wyboru, której wartości znane są już podczas tworzenia systemu
ekspertowego.
Dynamic List
Lista wyboru, której wartości ustalane są podczas działania systemu.
Wartości listy mogą pochodzić ze źródeł zewnętrznych lub być ustalane
przez logikę systemu. Listy dynamiczne mogą być używane w połączeniu z
arkuszami kalkulacyjnymi do odpowiedniego ograniczenia wartości.
Numeric Wartość liczbowa, która może być używana we wzorach lub wyrażeniach
warunkowych.
String Jakikolwiek ciąg znaków.
Date Data najczęściej używana do porównań.
Collection
Kolekcja – lista wartości. Operatory pozwalają na dodawanie, wyrzucanie
elementów listy. Jakikolwiek napis lub zmienna może być dodana do
kolekcji.
Confidence Zmienna, której może być przypisany stopień pewności.
Wszystkie zmienne w opisywanym programie mają swoje właściwości i metody, które można
na nich wykonywać (patrz rozdz. „Właściwości i metody zmiennych”). Natomiast kiedy i
gdzie używać zmiennych danego rodzaju stanie się jaśniejsze podczas budowania bloków
logicznych (patrz rozdz. „Bloki logiczne” oraz „Tworzenie bazy faktów – organizacja bloków
logicznych”).
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
10
Dodawanie
Zmienne dodawane są za pomocą okna dialogowego „Variables”. Powyższe okno dialogowe
dostępne jest w menu (Windows/Variables) lub na pasku narzędziowym.
Rys. 2 Okno dialogowe „Variables”.
Aby dodać nową zmienną klikamy „New” i pojawia się okno dialogowe „New Variable”, w
którym wpisujemy nazwę zmiennej i wybieramy typ.
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
11
Rys. 3 Okno dialogowe „New Variable”.
Zmienne posiadają nazwę oraz powiązany ze sobą tekst (ang. prompt), który będzie użyty do
pobrania danych od użytkownika. Dopuszczalnymi nazwami są te składające się tylko i
wyłącznie ze znaków: a-z, A-Z, 0-9 oraz _%#$. Spacja jest niedopuszczalna w nazwie
zmiennej i będzie zamieniana na „_”.
Zmienne mogą być sortowane ze względu na nazwę bądź typ. Natomiast nazwy zmiennych
mogą być zmieniane w każdym momencie tworzenia systemu. Corvid zadba o to by nazwa
została zmieniona wszędzie, gdzie występuje w kodzie.
Ustawianie parametrów zmiennych
Opcje dla zmiennych ustawiamy w dwóch grupach zakładek dostępnych na prawo od listy
zmiennych. Górny zestaw zakładek pozwala na ustawienie parametrów dostępnych we
wszystkich zmiennych. Natomiast każda z dolnych pozwala na ustawienie parametrów
charakterystycznych tylko dla danego typu zmiennych.
Dostępne ustawienia wraz z przykładami zastosowań zmiennych opiszę pokrótce, ponieważ
szczegółowy i bardzo wyczerpujący opis znaleźć można w dokumentacji do produktu.
Prompt (tekst zachęty)
Wszystkie zmienne posiadają tę właściwość, która stanowi o tekście wyświetlanym podczas
pobierania wartości zmiennej od użytkownika i reprezentacji jej w raportach. Dostępne
ustawienia dotyczą: głównego tekstu zachęty oraz alternatywnych tekstów zachęty.
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
12
Main Prompt, czyli główny tekst zachęty, powinien opisywać zmienną. De facto może on być
dowolnym tekstem jaki sobie wymyślimy ale trzymanie się zasady opisu zmiennej pozwoli
nam uniknąć przykrych niespodzianek w estetyce sytemu. Np. nazwa zmiennej to
[TEMP_POMPY_A], a tekst zachęty „Temperatura pompy A mierzona termometrem
elektronicznym w stopniach Celsjusza”. Jeśli dana zmienna będzie używana tylko wewnątrz
systemu to użytkownik nigdy nie zobaczy jej tekstu zachęty. Jednak gdy nastąpi potrzeba
zapytania o temperaturę pompy A, to system wraz z polem tekstowym do wprowadzenia
temperatury wyświetli tekst zachęty: „Temperatura pompy A mierzona termometrem
elektronicznym w stopniach Celsjusza”.
Główny tekst zachęty może być pobierany z zewnętrznej bazy danych. Istnieje także
możliwość dodania tzw. Alternate Prompts, czyli dodatkowych tekstów zachęty dla systemów
przeznaczonych do użytku międzynarodowego lub dla użytkowników o różnym stopniu
wiedzy na dany temat.
To Be
Najczęściej można ustalić wartość zmiennej poprzez bardzo krótkie reguły, które mąciłyby
tylko ogólny wgląd w widok logiki systemu. Dlatego dla zmiennych można wprowadzać
pojedyncze reguły, które zostaną uruchomione, gdy zajdzie potrzeba ustalenia wartości
zmiennej.
Reguły powinny być krótkie, gdyż najprawdopodobniej, jeśli reguła jest długa to ma być
zawarta w bloku logicznym.
Options
Jest to zakładka z różnorodnymi parametrami, które warunkują zachowanie zmiennej, kiedy
jej wartość musi być wywnioskowana, pobierana, wyświetlana lub inicjalizowana. Jedne z
najczęściej używanych opcji to: Maximum Number of Values that can be Assigned oraz Final
Results Display Flag, które oznaczają odpowiednio: maksymalną liczbę wartości, które mogą
być przypisane dla zmiennych typu List oraz czy wyświetlać zmienną na stronie wynikowej.
Link
Zakładka Link pozwala na wstawienie adresu URL, do którego ma się odwoływać tekst
zachęty.
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
13
Ask With
Jeśli wartość zmiennej nie może być w żaden sposób ustalona w trakcie działania systemu. To
trzeba się o nią zapytać użytkownika. Sposób przedstawiania pytań jest ustalany właśnie w tej
zakładce. Do wyboru mamy standardowe kontrolki Windows plus Image Map, możemy także
sformatować tekst i umieścić go w odpowiednim miejscu na stronie.
Also Ask
Czasami zachodzi potrzeba zadania pytania o kilka zmiennych na jednej stronie wystarczy
tylko ustalić, które i wybrać na zakładce Also Ask.
Static List
Tutaj nadajemy wartości dla wszystkich możliwości wyboru z listy. Oczywiście pobranie
wartości z bazy danych jest dopuszczalne oraz, podobnie jak w przypadku tekstu zachęty
możemy wprowadzić wartości alternatywne dla każdego punktu listy.
Dynamic List
Wartości dla listy dynamicznej możemy nadać na trzy sposoby:
użyć arkusza kalkulacyjnego
użyć zmiennej typu Collection
użyć pliku tekstowego pod adresem URL
za pomocą zewnętrznego apletu
Continuous
Do kontrolowania zmiennych typów Date, String, Numeric służy zakładka Continous.
Dla typu Numeric możemy ustawić górną i dolną granicę wprowadzonej liczby oraz nie
dopuścić do wprowadzania liczb rzeczywistych.
Dla typu String możemy określić maskę wprowadzania. Akceptowalne znaki w masce
wprowadzania znajdują się w poniższej tabeli.
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
14
Tabela 2 Znaki możliwe do używania w maskach wprowadzania.
Maska Znaczenie
? Jakikolwiek jeden znak.
* Reszta napisu.
Znak Ten sam znak
# Cyfra 0-9.
{abc} Jeden ze znaków w {}.
{X-Z} Jeden ze znaków z zakresu podanego w {}.
Wprowadzoną datę można kontrolować na dwa sposoby. Pozwolić na wprowadzenie daty nie
starszej niż ileś dni wstecz lub/i pozwolić na wprowadzanie daty nie więcej naprzód niż ileś
dni.
Collection
Typ Collection posiada opcje kontroli przepełnienia, inicjalizacji wartości z pliku, .
Confidence
Posiadamy możliwość ograniczenia wartości wprowadzanych zmiennych typu Confidence.
Dostępne jest także zaokrąglanie do wartości całkowitej. Oraz obliczenie wartości stopnia
pewności przez zastosowanie z góry ustalonych wzorów.
Jak widać kontrola zmiennych jest ograniczona przez opcje programu i trudno nam będzie
zmusić Corvid’a by na przykład zmienił typ zmiennej w czasie działania systemu. Dostępne
są tylko opcje z zakładek, fakt że jest ich dużo nie stanowi jeszcze o tym, że można ze
zmiennymi zrobić wszystko czego dusza zapragnie.
Właściwości i metody zmiennych.
Wszystkie zmienne w systemie mają oprócz wartości także inne właściwości oraz metody,
które można na nich wykonywać. Korzystamy z tego udogodnienia w znany, z innych
języków programowania sposób, czyli:
[nazwa_zmiennej.(właściwość/metoda)]
Sprawne użycie tej możliwości pozwoli zaoszczędzić masę czasu podczas tworzenia systemu.
Pominę tu dokładny opis, gdyż wszystko wyjaśnione jest w „Podręczniku użytkownika
EXSYS Corvid”1.
1 Corvid Manual.PDF
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
15
Bloki logiczne
Porządek w projektowaniu jest bardzo ważny, chyba że akurat zależy nam na zagmatwaniu
np. ze względów bezpieczeństwa. Ale zazwyczaj chcemy wiedzieć, co się dzieje w projekcie.
Dlatego EXSYS wprowadził pojęcie bloków logicznych, które pozwalają na lepszą kontrolę
tworzonego systemu. Reguły w blokach reprezentowane są jako drzewa logiczne, co pomaga
przy analizowaniu wszystkich możliwych przypadków wartości zmiennych.
Bloki logiczne pomagają na etapie konstruowania reguł dla systemu. Programista sam ustala,
co ma stanowić dany blok, nie ma żadnych zasad, które by określały sposób dzielenia reguł w
bloki. Jednak reguły w bloku powinny być powiązane w logiczny sposób np. zawierać ten
sam węzeł korzenia drzewa logicznego lub ułatwiać programiście nawigację po logice
projektowanego systemu.
Dodawanie nowego bloku logicznego
Otwieramy okno edycji bloku logicznego (Windows/Logic Block) i od razu mamy utworzony
nowy blok. Możemy, co najwyżej, zmienić jego nazwę klikając Edit Name.
Wyrażenia i operatory
Aby tworzyć reguły w blokach potrzebne są nam pewne zasady ich kreacji. Dlatego poniżej
przedstawiam wyrażenia akceptowalne w Corvid’zie:
liczby (także w formie 1.2e3), trzeba tylko zwrócić uwagę, że E jest stałą
matematyczną „e”
nawiasy ()
operatory matematyczne w kolejności wykonywania ^, *, /, +, -
operatory logiczne <, <=, >, =>, !=, =, !, |, &
nazwy funkcji wbudowanych z argumentami w nawiasach
Operatory logiczne są tymi znanymi z C i C++ oprócz | i &, które znaczą odpowiednio sumę
logiczną oraz iloczyn logiczny dwóch wyrażeń. Pisząc wyrażenia musimy pamiętać o tym, iż
wszelkie nazwy zmiennych umieszczamy w nawiasach kwadratowych []. Oto przykłady
wyrażeń akceptowalnych przez Corvid’a:
[ZAMIEN] = 10
([A]+[B] = COS([X])) & ([A]!=[B])
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
16
Do tworzenia wyrażeń opartych na łańcuchach znaków możemy używać operatorów
logicznych podanych powyżej. Zasady działania nie odbiegają w niczym od zasad znanych z
Turbo Pascal’a. Z tym wyjątkiem ze operator <> jest zastąpiony przez !=.
Dodawanie węzłów w drzewie logicznym
Węzły IF w drzewie logicznym reprezentowane są poprzez prostokąt (lub znaki grupujące),
natomiast węzły THEN poprzez strzałki. Do dodawania węzła IF służą przyciski z grupy IF.
Dzięki nim możemy dodawać węzeł IF w dowolnym miejscu w drzewie. Węzły Then
dodajemy za pomocą przycisków grupy Then. Klikając którykolwiek z guzików z obu grup
otwieramy okno edycji węzłów, w którym kontrolujemy jak ma wyglądać każdy z węzłów
drzewa. Możemy tu wybrać zmienną, której chcemy nadać wartość lub ją testować. Jeśli
mamy gotowy warunek lub przypisanie, klikamy Add to List i po zatwierdzeniu mamy
utworzony węzeł w drzewie.
Jedną z ciekawych cech opisywanego systemu szkieletowego jest to, że w drzewie logicznym
pod THEN możemy podpiąć IF. Przydaje się to w sytuacjach gdy musielibyśmy dla każdego
bardziej zagłębionego IF wpisać tę samą regułę THEN.
Bloki komend
Same zmienne i reguły nie czynią jeszcze systemu tworzonego w EXSYS Corvid w pełni
działającym. Trzeba jeszcze systemowi powiedzieć co ma z tym wszystkim robić, które bloki
logiczne kiedy odpalać, czy może odpalić jeden blok logiczny kilka razy dla zmieniających
się zmiennych. To można zrobić właśnie w bloku komend. Tworzymy tam programy, które
wykorzystują logikę zawartą wcześniej w blokach logicznych.
Dla użytkowników bez przygotowania programistycznego mam dobrą wiadomość najczęściej
używaną komendą będzie DERIVE CONF, która mówi Corvid’owi, że w drodze
wnioskowania ma nadać wartości wszystkim zmiennym typu Confidence. Dodatkowo można
określić jak mają być sformatowane wyniki. Ogólnie mogę powiedzieć, że wszystko co
chcieliśmy zrobić, a nie mogliśmy tego zrobić poprzez ustawienie właściwości zmiennych lub
poprzez odpowiednie zaprojektowanie bloków logicznych można zrobić tutaj.
Programowanie w Corvid’zie nie jest podobne do czegokolwiek co do tej pory widziałem.
Program składa się z węzłów komend, podobnie jak drzewo logiczne składa się z węzłów IF i
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
17
THEN. Jednak wygląda to przejrzyście i jest łatwe do opanowania. Dostępne są pętle,
wyrażenia warunkowe oraz stos komend kontrolujących wykonanie programu.
Dodawanie bloku komend
Dodanie nowego bloku komend wiąże się, podobnie jak w bloku logicznym z otworzeniem
okna dialogowego Logic Block poprzez wybranie z menu Windows/Logic Block. Możemy
także zmienić nazwę klikając Edit Name.
Wyrażenia warunkowe oraz pętle
Każdy choćby najprostszy język programowania musi obsługiwać w jakikolwiek sposób
wyrażenia warunkowe. Większość programistów nie wyobraża sobie programu bez instrukcji
IF. W Corvid’zie oczywiście nie pominięto tej instrukcji dostępna jest ona w grupie opcji
Control w oknie Logic Block pod przyciskiem IF. Po kliknięciu powyższego otwiera się okno
edycji Add to Block znane już z obsługi bloków logicznych. W nim możemy tworzyć
wyrażenia Boolowskie.
W systemie szkieletowym firmy EXSYS dostępne są także pętle typu WHILE oraz FOR.
Dostępne są one podobnie jak instrukcja IF pod odpowiednimi przyciskami w grupie opcji
Control. Po wybraniu While otwiera się, tak jak w przypadku IF okno Add to Block, w którym
określamy warunek powtarzania pętli. Czyli dopóki warunek jest prawdziwy pętla WHILE się
wykonuje.
Gdy klikniemy For, otworzy się nam okienko FOR command, w którym określamy przedział
działania pętli, zmienną która służy kontrolowaniu oraz krok, o który ma się zmieniać
zmienna. Dodatkową możliwością jest wykonywanie pętli dla każdego elementu zmiennej
typu Collection (kolekcji).
Komendy
Oczywiście same pętle i instrukcje warunkowe nie tworzą złożonych programów, dobrym
pomysłem jest jeszcze mieć co wykonywać w pętli lub co wykonywać jeśli. Dlatego w grupie
opcji Command możemy dodawać rozkazy, które trzeba wykonać, aby system działał jak
należy. Po kliknięciu jednego z przycisków w tej grupie ukazuje się nam okno tworzenia
komend Commands. Dodawać i edytować możemy komendy dotyczące:
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
18
zmiennych (zakładka Variables)
bloków (Blocks)
czyszczenia wartości zmiennych, np. kiedy chcemy jakieś bloki logiczne uruchomić
kilka razy w trakcie działania sytemu (Reset)
wywoływania: zewnętrznych apletów, zapisywania do pliku, odczytywania wartości z
adresu URL, wywołania skryptu CGI (External)
kontrolowania wykonania systemu za pomocą: GOTO (idz do bloku), dodaj/usuń
bloki z metody wnioskowania wstecz, czekaj przez określonyczas (Control)
formatowania okna wyników (Results)
wprowadzenia strony tytułowej (Title)
tworzenia raportów na serwerze (Report)
Wszystkie powyższe zakładki pozwalają na stworzenie programu bez wklepywania kodu.
Oczywiście, gdy znamy nazwy komend możemy je wpisywać ręcznie. Po wybraniu któregoś
z przycisków z grupy Command możemy wpisać w oknie edycji komend Commands w polu
tekstowym Command: nazwę komendy. Jest jednak kilka ograniczeń. Nie możemy wpisać
np. po komendzie RESULTS formatowania poszczególnych partii okna wyników. Niestety
technicy z EXSYS nie obmyślili żadnego języka, ani nie przyjęli żadnego standardu, który by
mógł wspomóc żmudne klikanie. No cóż pozostaje klikać.
Sprawdzanie i uruchamianie systemu
Jeśli ktoś uważa się za doskonałego to znaczy, że nie jest człowiekiem. Człowiek błędy
popełnia i najlepiej się uczy na swoich. Dlatego system szkieletowy firmy EXSYS Inc. byłby
niczym bez sprawdzania pomyłek, jakie zrobiliśmy w systemie. Ta opcja jest jedną z
ciekawszych w Corvid’zie. Sprawdzanie całego systemu wykonuje się poprzez wywołanie z
menu opcji Run/Check System. Po wywołaniu tej opcji zostanie wyświetlone okno z
ewentualnymi błędami lub ostrzeżeniami. Checker sprawdza zarówno błędy logiczne oraz
syntaktyczne. Ostrzega nas np. przed zbyt dużą ilością zmiennych, czy też nie rozpatrzeniem
wszystkich możliwych przypadków reguł.
Dodatkowo podczas tworzenia reguł i komend sprawdzana jest ich syntaktyka, dlatego nie
możemy np. przypisać zmiennej Numeric wartości tekstowej.
OPIS PRODUKTU EXSYS CORVID Co potrafi Corvid?
19
Uruchamianie systemu odbywa się poprzez wybrania z menu Run/Start Run. Otwierana jest
wtedy przeglądarka www z widoczną stroną startową systemu. Podczas uruchomienia
tworzona jest dynamicznie strona HTML oraz plik CVR, który jest używany przez Corvid
Java Runtime i powinien być przeniesiony na serwer z systemem ekspertowym. Na serwerze
powinien znaleźć się także aplet Corvid Runtime Java.
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
20
BUDOWA PROSTEGO SYSTEMU EKSPERTOWEGO W
EXSYS CORVID
Wcześniejszy suchy opis funkcji EXSYS Corvid’a byłby niczym bez konkretnego przykładu.
Za takowy posłuży nam problem blondynek i żarówki. Czyli co zrobić, gdy zrobi się ciemno?
Założenia są proste poinformować domowniczki o przyczynach egipskich ciemności i
zaproponować rozwiązanie problemu mając na uwadze to, iż blondynki muszą oszczędzać z
powodu jakiejś dziury lub budżetu.
Ekspert z dziedziny elektryki określił następujące warunki na przypadek zgaśnięcia żarówki:
Wymieniamy żarówkę, jeśli jest przepalona.
Żarówka jest przepalona, jeśli inne światła w pokoju się świecą.
Jeśli inne światła w pokoju się nie świecą, to mogły wyskoczyć bezpieczniki.
Jeśli wyskoczyły bezpieczniki, to trzeba je ustawić w odpowiedniej pozycji.
Jeśli inne światła w domu się nie świecą, to najprawdopodobniej brak prądu.
Jeśli brak prądu, to zadzwoń do elektrowni i spytaj, co się dzieje.
Blondynki muszą oszczędzać na energii, więc same zakładają, iż jeśli żarówka się przepali to
żarówki powyżej 75W wymieniają na żarówki 75W, a do 75W na takie, jakie były. Czyli:
Jeśli wymieniamy żarówkę i żarówka ma powyżej 75W, to dodajemy do listy
zakupów żarówkę 75W.
Jeśli wymieniamy żarówkę i żarówka ma do 75W, to dodajemy do listy zakupów
żarówkę o takiej mocy, jaka była wcześniej.
Niektóre z wyżej wymienionych reguł da się pominąć. Poniżej przedstawiam wcześniej
określone przez ekspertów (w dziedzinie elektryki i oszczędzania) reguły jako IF/THEN:
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
21
Tabela 3 Reguły IF/THEN do przykładowego systemu dla blondynek.
Niebieskim zaznaczono zmienne typu Static List,
czerwonym – Numeric,
zielonym – Confidence,
fioletowym – Collection,
brązowym – wartości, jakie przyjmują zmienne typu Static List
Lp Reguła IF/THEN
1
IF:
Żarówka zgasła
AND: Inne światła w pokoju świecą
THEN:
Zmień żarówkę. Użyj żarówki o mocy nowej żarówki W.:
2
IF:
Żarówka zgasła
AND: Inne światła w pokoju zgasły
AND: Inne światła w domu świecą
THEN:
Sprawdź czy nie wyskoczyły bezpieczniki
3
IF:
Żarówka zgasła
AND: Inne światła w pokoju zgasły
AND: Inne światła w domu zgasły
THEN:
Zadzwoń do elektrowni i zgłoś awarię
4
IF:
Żarówka świeci
THEN:
Nie rób nic
5
IF:
Zmień żarówkę
AND: Moc żarówki zużytej > 75
THEN:
Moc żarówki nowej = 75
Dodaj do listy zakupów żarówkę o mocy żarówki nowej
6
IF:
Zmień żarówkę
AND: Moc żarówki zużytej <= 75
THEN:
Moc żarówki nowej = moc żarówki zużytej
Dodaj do listy zakupów żarówkę o mocy żarówki nowej
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
22
Zaczynamy – zmienne
1. Zaczynamy od uruchomienia systemu szkieletowego EXSYS Corvid.
2. Wybieramy z File/New, wprowadzamy nazwę dla pliku systemu i klikamy Save. Od
razu wyskakuje okno Variables.
3. Klikamy w oknie Variables przycisk New. Wyskakuje okno New Variables.
4. Pierwszą zmienną będzie żarówka, o którą pytamy. Czyli w polu tekstowym
wpisujemy ZAROWA.
5. Zmienna przyjmuje dwie wartości świeci i zgasła, dlatego będzie typu Static List,
więc wybieramy tę opcję i klikamy OK.
6. Zmieniamy tekst zachęty na „Żarówka” (pojawia się, gdy pytamy o wartość
zmiennej).
7. Teraz ustalamy pierwszą wartość, jaką może przyjmować zmienna. Jako Short Text
wpisujemy „zgasła”, to samo wpisujemy w polu Full Text.
4
5
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
23
8. Klikamy przycisk >
9. Postępujemy analogicznie jak w punkcie 7 tylko, że wstawiamy wartość „świeci”.
10. ZAROWA może przyjąć na raz jedną z wartości, więc zaznaczmy na zakładce
Options w grupie opcji Maximum Number of Values that can be assigned wartość
SINGLE Value.
11. Tworzymy zmienną typu Static List o nazwie SWIATLA_W_POKOJU tekście
zachęty „Inne światła w pokoju” i dwóch wartościach „świecą” oraz „zgasły” i
zaznaczamy, iż zmienna może przyjmować tylko jedną wartość.
6
7
8
10
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
24
12. Tworzymy zmienną typu Static List o nazwie SWIATLA_W_DOMU tekście zachęty
„Inne światła w domu” i dwóch wartościach „świecą” oraz „zgasły” i zaznaczamy, iż
zmienna może przyjmować tylko jedną wartość.
13. Następnie tworzymy zmienną typu Confidence i nadajemy jej nazwę
ZMIEN_ZAROWE.
14. Tekst zachęty będzie wyświetlany jako wynik, więc w zakładce Prompt zmieniamy
Main Prompt na „Zmień żarówkę”.
15. Teraz tworzymy zmienną typu Confidence o nazwie ROB_NIC i tekście zachęty: „Nie
rób nic”.
16. Następnie zmienną typu Confidence o nazwie SPRAWDZ_BEZPIECZNIKI i tekście
zachęty: „Sprawdź czy nie wyskoczyły bezpieczniki”.
17. Zmienną Confidence ZADZWON_DO_ELEKTROWNI, tekst zachęty: „Zadzwoń do
elektrowni i zgłoś awarię”.
18. Następnym krokiem będzie stworzenie zmiennych do przechowywania wartości mocy
żarówek. Tworzymy zmienne typu Numeric o nazwach MOC_ZUZYTEJ,
MOC_NOWEJ i tekście zachęty: „Moc żarówki zużytej”, „Moc żarówki nowej”.
19. Ostatnim krokiem w tworzeniu zmiennych będzie utworzenie zmiennej do
przechowywania listy zakupów typu Collection LISTA_ZAKUPOW, tekst zachęty:
„Lista zakupów”.
W ten oto sposób wszystkie zmienne potrzebne do działania systemu wymiany żarówki są
stworzone. Klikamy Done i gotowe. Pozostaje tylko jeszcze jedna uwaga na temat wartości
zmiennych, mianowicie możemy odnieść się do nich praktycznie w każdym miejscu w
systemie umieszczając nazwę zmiennej w [[]]. Spróbujmy na przykład do tekstu zachęty
zmiennej ZMIEN_ZAROWE dodać informację o mocy żarówki, którą należy wstawić. Za
istniejącym promptem dopisujemy: „. Użyj żarówki o mocy [[MOC_NOWEJ]]W.” To byłoby
na tyle jeśli chodzi o zmienne.
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
25
Tworzenie bazy faktów – organizacja bloków logicznych
Wymiana żarówki nie jest zbyt skomplikowaną sprawą, dlatego też nasz system podzielimy
na tylko dwa bloki logiczne. Pierwszy dotyczyć będzie tego czy żarówka powinna być
rzeczywiście wymieniona (reguły 1-4 z Tabeli 3). Drugi zajmie się oszczędnością energii w
mieszkaniu i będzie wskazywał żarówkę odpowiedniej mocy do wstawienia. Przystąpmy do
zaprojektowania tych bloków.
1. Otwieramy okno edycji bloków logicznych Windows/Logic Block. Nowy blok
logiczny jest nazwany „Logic Block 1”, zmieńmy tę nazwę na bardziej przejrzystą.
2. Klikamy przycisk Edit Name i wpisujemy: „Wymiana zarowki”.
3. Klikamy Add.
4. W ten sposób otwiera się okno dialogowe edycji reguł. Na razie stworzymy dwa
węzły: „IF Żarówka zgasła”, „IF Żarówka świeci” dla reguł 1-4 z Tabeli 3.
Z listy zmiennych wybieramy zmienną ZAROWA.
5. Z listy wartości zmiennej wybieramy „zgasła”.
6. Klikamy Add to List.
3
16
2
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
26
7. Następnie z listy wartości zmiennej wybieramy „świeci”.
8. Klikamy Add to List.
9. Klikamy Done.
10. Utworzyliśmy dwa węzły dla reguł o zawierających w sobie status żarówki. Teraz
musimy utworzyć w drzewie logicznym węzły IF reguł 1-3 z Tabeli 3, zawierające
wszystkie wartości zmiennej SWIATLA_W_POKOJU dla ZAROWA=zgasła.
Zaznaczamy w tym celu węzeł ZAROWA=zgasła.
4
5
6 i 8
7
9
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
27
11. W grupie Add klikamy Below. W ten sposób dodajemy węzły w drzewie logicznym
pod wybranym węzłem.
12. Wybieramy zmienną SWIATLA_W_POKOJU.
10
11
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
28
13. Klikamy Add Each Individually i Done.
14. Następnym krokiem będzie utworzenie węzłów reguł zawierających wartości
zmiennej SWIATLA_W_DOMU (reguły 2-3 Tabela 3). Jak widać wartość zmiennej
ma być sprawdzana tylko wtedy, kiedy SWIATLA_W_POKOJU=zgasły. Dlatego
zaznaczamy węzeł, w którym SWIATLA_W_POKOJU=zgasły i dla zmiennej
SWIATLA_W_DOMU powtarzamy kroki 12 i 13.
15. Następnie zajmiemy się tym, co system ma robić, gdy spełnione są warunki z drzewa
logicznego. Weźmy pod lupę regułę 1 z Tabeli 3. W drzewie logicznym wybieramy
SWIATLA_W_POKOJU=świecą.
12
13
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
29
16. Ustawimy teraz wartość zmiennej ZMIEN_ZAROWE na 10. Tak naprawdę to mamy
ją ustawić na jakąkolwiek wartość różną od 0. W grupie Then klikamy Variable.
17. Wybieramy zmienną ZMIEN_ZAROWE.
18. Na zakładce Expression w polu tekstowym po znaku = wpisujemy 10.
15
16
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
30
19. Klikamy Add to List i Done. Zauważmy, że kolor czerwonej ramki zmienił się na
zielony, co oznacza, że reguła IF/THEN jest kompletna.
20. Skompletujmy teraz regułę 2 z Tabeli 3, czyli przypiszemy zmiennej
SPRAWDZ_BEZPIECZNIKI wartość 10. Wybieramy węzeł
SWIATLA_W_DOMU=świecą.
21. W oknie Add to Block wybieramy zmienną SPRAWDZ_BEZPIECZNIKI i wpisujemy
po znaku = liczbę 10. Klikamy Add to List i Done.
22. Uzupełnienie reguły 3 z Tabeli 3 będzie wyglądało następująco. Zaznaczamy
SWIATLA_W_DOMU=zgasły, klikamy Variable, ustawiamy wartość zmiennej
ZADZWON_DO_ELEKTROWNI na 10.
23. Dochodzimy do ostatniej reguły w tym bloku logicznym, którą uzupełniamy o człon
THEN w taki sposób, że wartość zmiennej ROB_NIC na 10.
24. W oknie Logic Block klikamy Done. W ten sposób blok logiczny „Wymiana żarówki”
jest kompletny.
25. Kolejny blok to „Moc żarówki”. Otwieramy okno edycji bloków logicznych
(Windows/Logic Block).
17
18
19
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
31
26. Zmieniamy nazwę (Edit Name) na „Moc żarówki”.
27. Moc żarówki określamy tylko wtedy, gdy chcemy ją wymienić, czyli gdy
ZMIEN_ZAROWE=10. Dodajemy IF, gdzie warunkiem jest ZMIEN_ZAROWE=10.
28. Następnie dodajemy węzły dotyczące sprawdzenia mocy żarówki zużytej. Klikamy w
grupie If/And przycisk Below.
29. Wybieramy zmienną MOC_ZUZYTEJ.
30. W oknie edycji wyrażenia Boolowskiego (Boolean Test Expression) wpisujemy:
„>75”.
31. Klikamy Add to List.
32. Ponownie wybieramy zmienną MOC_ZUZYTEJ i dodajemy do wyrażenia „<=75”.
Ponownie Add to List, a na koniec Done.
33. Zajmiemy się teraz dodawaniem podpowiadaniem jakiej mocy żarówki powinne być
wkręcane. Dla żarówek o mocy większej niż 75W będzie wyglądało to tak: musimy
najpierw przypisać odpowiednią wartość dla zmiennej MOC_NOWEJ. W tym celu
zaznaczamy węzeł, gdzie MOC_ZUZYTEJ>75, w grupie Then klikamy Variable,
wybieramy zmienną MOC_NOWEJ, w polu edycji po znaku = wpisujemy 75 i
klikamy Add to List i Done.
34. Podobnie postępujemy, jeśli chodzi o tworzenie węzła THEN, dla żarówek o mocy
mniejszej bądź równej 75W. Zaznaczamy węzeł MOC_ZUZYTEJ<=75, klikamy
Variable, wybieramy zmienną MOC_NOWEJ.
35. Tu następuje zmiana sposobu działania. Wartość zmiennej MOC_ZUZYTEJ dla
zmiennej MOC_NOWEJ możemy przypisać na dwa sposoby: albo wpisać nazwę
zmiennej ręcznie, albo wybrać ją z listy. Aby wybrać zmienną z listy klikamy przycisk
Variables i wybieramy zmienną MOC_ZUZYTEJ z listy. Add to List i Done.
36. Dodawanie do listy zakupów powinno być realizowane tylko w przypadku, gdy
wymieniamy żarówkę. W bieżącym bloku logicznym zaznaczamy najpierw węzeł
MOC_ZUZYTEJ>75. Dodajemy THEN jako operacje na zmiennych (Variable).
37. Z listy zmiennych wybieramy LISTA_ZAKUPOW.
38. Do listy zakupów chcemy dodawać elementy, dlatego zaznaczamy opcję Add Item.
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
32
39. Rozwija się nam pole tekstowe, w które wpisujemy tekst, który chcemy dodać do listy
zakupów. Wpiszmy: „Żarówka o mocy [[MOC_NOWEJ]]W”. Klikamy Add to List i
Done.
40. Kroki 36-39 powtarzamy dla węzła MOC_ZUZYTEJ<=75.
Logikę systemu wymiany żarówki mamy stworzoną. Wszystko ma działać według reguł 1-6 z
Tabeli 3.
Kontrola działania systemu – projektowanie bloków poleceń
Skoro mamy zmienne i reguły, to co nas ma zatrzymać przed uruchomieniem systemu?
Niestety reguły i zmienne to nie wszystko, musimy powiedzieć Corvid’owi jak ma
uruchamiać nasz system. Dlatego teraz zaprojektujemy blok komend.
1. Otwieramy okno edycji bloków komend (Windows/Command Block)
2. Naszym oczom ukazuje się okno z dodanym blokiem o nazwie „Command Block 1”.
Klikamy Add, co otwiera okno budowania komend.
3. W blokach logicznych używaliśmy zmiennych Confidence (stopień pewności),
dlatego żeby system używał naszych bloków logicznych do określenia stopnia
pewności wszystkich zmiennych typu Confidence. W zakładce Variables ustawiamy
następujące wartości: Derive a value from TO BE and Logic Blocks oraz All
Confidence Variables. W polu tekstowym Command wyświetliła się nam komenda,
którą zostawiamy w spokoju.
4. Klikamy OK.
5. Komenda DERIVE CONF użyje bloków logicznych do określenia wartości
zmiennych typu Confidence. Zachodzi jeszcze potrzeba wyświetlenia wyników
wnioskowania. W tym celu dodajemy kolejny fragment programu w bloki komend
klikając Add Below.
6. Przechodzimy do zakładki Results.
7. Ustawiamy domyślny ekran wyświetlania zmiennych zaznaczając opcję Display
Default Result Screen. (W tym momencie możemy uruchomić już system, jednak
wygląd wyników pozostawiałby wiele do życzenia.) Ciskamy przycisk Edit
znajdujący się tuż pod dużym oknem tekstowym.
OPIS PRODUKTU EXSYS CORVID Budowa prostego systemu ekspertowego...
33
8. Nie chcemy, żeby były wyświetlane wartość zmiennych typu Confidence, chcemy
żeby wyświetlane były tylko teksty zachęty. W oknie Display Commands w grupie
opcji Build wybieramy opcję Variables.
9. Następnie na zakładce Format wybieramy opcję Prompt only – no value.
10. Nadajmy jakiś inny wygląd dla tekstów zachęty zmiennych Confidence. Zmieniamy
rozmiar czcionki na 15 i pogrubiamy – w polu tekstowym Size wpisujemy „15”, a w
polu kombi Style wybieramy Bold. Klikamy OK.
11. Tak spreparowaną komendę edycji dodajemy do listy komend wciskając przycisk Add.
12. Następnie dodamy do wyników listę zakupów. Jako nową regułę formatowania
wyników dodajemy pusty wiersz. W grupie opcji Build zaznaczamy opcję Text.
13. Klikamy przycisk Add. I mamy pusty wiersz do oddzielenia listy zakupów.
14. Analogicznie jak w punktach 12 i 13 dodajemy tekst: „Lista zakupów”, przy czym
nadajemy mu postać kursywy – Edit na zakładce Format i tam zaznaczamy Style i
wybieramy Italic.
15. Wreszcie wypisujemy listę poprzez zaznaczenie opcji Variables i wybranie z pola
kombi zmiennej LISTA_ZAKUPÓW. Klikamy Add i OK, w nastepnym oknie też OK,
a w oknie edycji bloków logicznych Done.
Opracowaliśmy właśnie wygląd i działanie systemu. Działa on sprawnie, aby się o tym
przekonać uruchamiamy go poleceniem Run/Start Run. Wreszcie potrzeba tylko jednej
blondynki do wymiany żarówki.
OPIS PRODUKTU EXSYS CORVID Błąd! Nie można odnaleźć źródła odwołania.
34
Top Related