1
Systemy ekspertowe
Ć
wiczenie laboratoryjne 2
Budowa aplikacji pozwalaj
ą
cej na wybór wariantu lokaty oszcz
ę
dno
ś
ci z wykorzystaniem
Cake
Program b
ę
dzie doradzał jak ulokowa
ć
oszcz
ę
dno
ś
ci (lokata w banku, obligacje, akcje,
fundusz powierniczy, nieruchomo
ś
ci).
Decyzja o sposobie inwestowania zale
ż
y od typu klienta oraz stanu maj
ą
tkowego.
Typ klienta okre
ś
limy na podstawie kwoty do zainwestowania i wieku.
Typ klienta
Wiek
Kwota
A
do 35 lat
do 30000
B
powy
ż
ej 35
do 30000
C
do 35 lat
powy
ż
ej 30000
D
powy
ż
ej 35
powy
ż
ej 30000
Stan maj
ą
tkowy oceniany jest na podstawie dochodu na osob
ę
i poziomu spłaty
dotychczasowych kredytów.
Ostateczna decyzja o ulokowaniu oszcz
ę
dno
ś
ci b
ę
dzie równie
ż
zale
ż
ała od skłonno
ś
ci
klienta do podejmowania ryzyka.
1. Budowa drzewa decyzyjnego obrazuj
ą
cego problem
2. Okre
ś
lenie atrybutów i ich warto
ś
ci
3. Projektowanie struktury aplikacji w systemie Cake
z menu Plik wybra
ć
Nowy, zaznaczy
ć
Aplikacja b
ę
dzie zawiera
ć
ź
ródła wiedzy
4. Okno wła
ś
ciwo
ś
ci aplikacji – Zakładka OPIS
nazwa aplikacji:
ć
wiczenie_2
Przycisk Zmiana nazwy pliku: poda
ć
now
ą
nazw
ę
pliku (np. imi
ę
_nazwisko_
ć
w2)
opis aplikacji: Przykładowa aplikacja do wyboru lokaty oszcz
ę
dno
ś
ci
5. Okno wła
ś
ciwo
ś
ci aplikacji – Zakładka
Ź
RÓDŁA
Doda
ć
ź
ródło wiedzy – przycisk Dodaj/Dodaj nowe
ź
ródło
Nowe
ź
ródło wiedzy b
ę
dzie: eksperck
ą
baz
ą
wiedzy
Posiada
ć
b
ę
dzie nazw
ę
: stan_maj
ą
tkowy_? (? – nr kolejny grupy np. 1)
Zostanie zapisane w pliku: stan_maj
ą
tkowy_?
Przycisk Dalej
W podobny sposób doda
ć
pozostałe dwa
ż
ródła
o nazwie: typ_klienta_?, zapisane w pliku: typ_klienta_?
o nazwie: inwestycje_?, zapisane w pliku: inwestycje_?
6.
Na zakładce FASETY (okno wła
ś
ciwo
ś
ci aplikacji) utworzy
ć
atrybut globalny (przycisk
Dodaj) wybieraj
ą
c typ warto
ś
ci: val oneof – symboliczny
Okno Edycji wła
ś
ciwo
ś
ci atrybutu:
- Zakładka Ogólne
•
nazwa atrybutu: inwestycje
2
•
Faseta Ask=True: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: zaznaczy
ć
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy inwestycje
Je
ż
eli aplikacja posiada
ź
ródła wiedzy, dla atrybutów o charakterze globalnym okre
ś
la si
ę
ich
"zakres widoczno
ś
ci", czyli list
ę
ź
ródeł, w których mog
ą
wyst
ę
powa
ć
odwołania do danego
atrybutu. Atrybut lokata b
ę
dzie „widoczny” w
ź
ródle wiedzy o nazwie inwestycje.
Rys. 1. Okno wła
ś
ciwo
ś
ci atrybutu Inwestycje: Zakładka Ogólne
- Zakładka Warto
ś
ci – doda
ć
po kolei warto
ś
ci (przycisk Dodaj)
•
Nazwa warto
ś
ci: lokata w banku (akceptacja poprzez Wyj
ś
cie)
•
Nazwa warto
ś
ci: akcje
•
Nazwa warto
ś
ci: obligacje
•
Nazwa warto
ś
ci: fundusz powierniczy
•
Nazwa warto
ś
ci: nieruchomo
ś
ci
- Zaakceptowanie zmian i zamkni
ę
cie okna Edycji wła
ś
ciwo
ś
ci atrybutu poprzez
przycisk Wyj
ś
cie
Rys. 2. Warto
ś
ci atrybutu Inwestycje
7. Na zakładce FASETY (okno wła
ś
ciwo
ś
ci aplikacji) doda
ć
pozostałe atrybuty wybieraj
ą
c
typ warto
ś
ci: val oneof – symboliczny
Okno Edycji wła
ś
ciwo
ś
ci atrybutu stan_maj
ą
tkowy:
3
- Zakładka Ogólne
•
nazwa atrybutu: stan_maj
ą
tkowy
•
Faseta Ask=True: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: zaznaczy
ć
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy
stan_maj
ą
tkowy i inwestycje
- Zakładka Warto
ś
ci – doda
ć
po kolei warto
ś
ci (przycisk Dodaj)
•
Nazwa warto
ś
ci: dobry
•
Nazwa warto
ś
ci: zły
Okno Edycji wła
ś
ciwo
ś
ci atrybutu typ_klienta:
- Zakładka Ogólne
•
nazwa atrybutu: typ_klienta
•
Faseta Ask=True: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: zaznaczy
ć
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy
typ_klienta i inwestycje
- Zakładka Warto
ś
ci – doda
ć
po kolei warto
ś
ci
•
Nazwa warto
ś
ci: A
•
Nazwa warto
ś
ci: B
•
Nazwa warto
ś
ci: C
•
Nazwa warto
ś
ci: D
Okno Edycji wła
ś
ciwo
ś
ci atrybutu ryzyko:
- Zakładka Ogólne
•
nazwa atrybutu: ryzyko
•
Faseta Ask=True: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: pozostawi
ć
nie zaznaczone
•
faseta Query: CZY KLIENT LUBI PODEJMOWA
Ć
RYZYKO:
Faseta query umo
ż
liwia zdefiniowanie przez u
ż
ytkownika tre
ś
ci zapyta
ń
w odniesieniu do
wybranych atrybutów lub w odniesieniu do wybranych warto
ś
ci atrybutu.
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy
inwestycje
- Zakładka Warto
ś
ci – doda
ć
po kolei warto
ś
ci
•
Nazwa warto
ś
ci: tak
•
Nazwa warto
ś
ci: nie
Okno Edycji wła
ś
ciwo
ś
ci atrybutu dochód_na_osob
ę
:
- Zakładka Ogólne
•
nazwa atrybutu: dochód_na_osob
ę
•
Faseta Ask=True: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: pozostawi
ć
nie zaznaczone
•
faseta Query:
OKRE
Ś
L DOCHÓD NA OSOB
Ę
:
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy
stan_maj
ą
tkowy
- Zakładka Warto
ś
ci – doda
ć
po kolei warto
ś
ci
4
•
Nazwa warto
ś
ci: poni
ż
ej_
ś
redniej_krajowej
•
Nazwa warto
ś
ci: powy
ż
ej_
ś
redniej_krajowej
Okno Edycji wła
ś
ciwo
ś
ci atrybutu dotychczasowe_kredyty:
- Zakładka Ogólne
•
nazwa atrybutu: dotychczasowe_kredyty
•
Faseta Ask=True: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: pozostawi
ć
nie zaznaczone
•
faseta Query:
PODAJ POZIOM SPŁATY DOTYCHCZASOWYCH
KREDYTÓW:
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy
stan_maj
ą
tkowy
- Zakładka Warto
ś
ci – doda
ć
po kolei warto
ś
ci
•
Nazwa warto
ś
ci: spłacone
•
Nazwa warto
ś
ci: niespłacone
8. Na zakładce Fasety w oknie wła
ś
ciwo
ś
ci aplikacji doda
ć
po kolei dwa atrybuty (przycisk
Dodaj) wybieraj
ą
c typ warto
ś
ci: ranges – z przedziałami dozwolonymi
Okno Edycji wła
ś
ciwo
ś
ci atrybutu wiek_klienta:
- Zakładka Ogólne
•
Nazwa atrybutu: wiek_klienta
•
Faseta Ask=True: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: pozostawi
ć
puste
•
faseta Query:
PODAJ WIEK KLIENTA:
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy
typ_klienta
- Zakładka Przedziały– doda
ć
przedział (przycisk Dodaj):
•
Od warto
ś
ci: 18
•
Do warto
ś
ci: 70
Okno Edycji wła
ś
ciwo
ś
ci atrybutu kwota_do_zainwestowania:
- Zakładka Ogólne
•
Nazwa atrybutu: kwota_do_zainwestowania
•
Faseta Ask=Yes: zaznaczy
ć
•
Faseta Single=Yes: zaznaczy
ć
•
Atrybut decyzyjny: pozostawi
ć
puste
•
faseta Query:
PODAJ KWOT
Ę
DO ZAINWESTOWANIA:
KREDYTÓW:
•
przycisk Dopisz
ź
ródło do listy: wybra
ć
z listy
ź
ródło wiedzy
typ_klienta
- Zakładka Przedziały– doda
ć
przedział (przycisk Dodaj):
•
Od warto
ś
ci: 3000
•
Do warto
ś
ci: 200000
5
Rys. 3. Atrybuty w oknie wła
ś
ciwo
ś
ci aplikacji (zakładka Fasety)
9. Wyedytowa
ć
ź
ródło wiedzy inwestycje (okno wła
ś
ciwo
ś
ci aplikacji – Zakładka
Ź
ródła/przycisk Zmie
ń
) i na zakładce REGUŁY (w oknie wła
ś
ciwo
ś
ci eksperckiego
ź
ródła
wiedzy) wprowadzi
ć
po kolei nast
ę
puj
ą
ce reguły (przycisk Dodaj):
Reguła nr 1:
•
Konkluzja:
inwestycje = „akcje”
(przycisk Wstaw/przycisk Atrybut/wybór atrybutu i warto
ś
ci z listy/akceptacja
poprzez przycisk OK)
•
Lista warunków:
typ_klienta = "A", ryzyko = "tak"
(warunki dodajemy po kolei poprzez przycisk Dodaj/ Nowym warunkiem
b
ę
dzie trójka Obiekt-Atrybut-Warto
ść
/przycisk Atrybut/wybór atrybutu i
warto
ś
ci z listy)
W podobny sposób doda
ć
pozostałe reguły:
2. inwestycje = "obligacje" if typ_klienta = "A", ryzyko = "nie"
3. inwestycje = "fundusz powierniczy" if typ_klienta = "B", ryzyko = "tak"
4. inwestycje = "lokata w banku" if typ_klienta = "B", ryzyko = "nie"
5. inwestycje = "akcje" if typ_klienta = "C", stan_maj
ą
tkowy = "dobry", ryzyko =
"tak"
6. inwestycje = "fundusz powierniczy" if typ_klienta = "C", stan_maj
ą
tkowy =
"dobry", ryzyko = "nie"
7. inwestycje = "fundusz powierniczy" if typ_klienta = "C", stan_maj
ą
tkowy =
"zły"
8.
inwestycje = "akcje" if typ_klienta = "D", stan_maj
ą
tkowy = "dobry", ryzyko =
"tak"
9. inwestycje = "nieruchomo
ś
ci" if typ_klienta = "D", stan_maj
ą
tkowy =
"dobry", ryzyko = "nie"
10. inwestycje = "fundusz powierniczy" if typ_klienta = "D", stan_maj
ą
tkowy =
"zły"
6
Rys. 4. Reguły w eksperckim
ź
ródle wiedzy
10. Wyedytowa
ć
ź
ródło wiedzy stan_maj
ą
tkowy i na zakładce REGUŁY wprowadzi
ć
po kolei
nast
ę
puj
ą
ce reguły:
1.
stan_maj
ą
tkowy = „dobry”
if
dochód_na_osob
ę
= "powy
ż
ej
ś
redniej
krajowej", dotychczasowe_kredyty = "spłacone"
2.
stan_maj
ą
tkowy = "zły" if dochód_na_osob
ę
= "powy
ż
ej
ś
redniej
krajowej", dotychczasowe_kredyty = "niespłacone"
3.
stan_maj
ą
tkowy = "zły" if dochód_na_osob
ę
= "poni
ż
ej
ś
redniej
krajowej"
11. Wyedytowa
ć
ź
ródło wiedzy typ_klienta (okno wła
ś
ciwo
ś
ci aplikacji – Zakładka
Ź
ródła/przycisk Zmie
ń
) i na zakładce REGUŁY (w oknie wła
ś
ciwo
ś
ci eksperckiego
ź
ródła
wiedzy) wprowadzi
ć
reguły (przycisk Dodaj):
Reguła nr 1:
typ klienta = „A”
if
wiek_klienta = X, X < 35,
kwota_do_zainwestowania
= Y, Y < 30000
Sposób wprowadzania warunku
wiek_klienta = X
w oknie wła
ś
ciwo
ś
ci reguły:
a) przycisk Dodaj
b) nowym warunkiem b
ę
dzie: trójka Obiekt-Atrybut-Warto
ść
c) przycisk Atrybut
d) wybór atrybutu z listy – wiek_klienta
e) okno Edycji warto
ś
ci numerycznej: bez wpisywania warto
ś
ci Anulowa
ć
f) okno Relacje: wybra
ć
znak równo
ś
ci „=”
g) przycisk Zmienna: wprowadzi
ć
nazw
ę
nowej zmiennej X
h) akceptacja poprzez przycisk OK
Sposób wprowadzania warunku
X < 35
w oknie wła
ś
ciwo
ś
ci reguły:
a) przycisk Dodaj
b) nowym warunkiem b
ę
dzie: wyra
ż
enie relacyjne
i) lewy argument – przycisk Zmienna: wybra
ć
nazw
ę
zmiennej X
c) prawy argument – przycisk z kalkulatorem: wpisa
ć
liczb
ę
(np. 35)
d) wybra
ć
znak „<” z dost
ę
pnych przycisków opcji
e) akceptacja poprzez przycisk OK
7
Sposób wprowadzania warunku
kwota_do_zainwestowania
= Y
w oknie wła
ś
ciwo
ś
ci reguły:
j) przycisk Dodaj
k) nowym warunkiem b
ę
dzie: trójka Obiekt-Atrybut-Warto
ść
l) przycisk Atrybut
m) wybór atrybutu i warto
ś
ci z listy – kwota_do_zainwestowania
n) okno Edycji warto
ś
ci numerycznej: bez wpisywania warto
ś
ci Anulowa
ć
o) okno Relacje: wybra
ć
znak równo
ś
ci „=”
p) przycisk Zmienna: wprowadzi
ć
nazw
ę
nowej zmiennej Y
q) akceptacja poprzez przycisk OK.
Sposób wprowadzania warunku
Y < 30000
w oknie wła
ś
ciwo
ś
ci reguły:
f) przycisk Dodaj
g) nowym warunkiem b
ę
dzie: wyra
ż
enie relacyjne
r) lewy argument – przycisk Zmienna: wybra
ć
nazw
ę
zmiennej Y
h) prawy argument – przycisk z kalkulatorem: wpisa
ć
liczb
ę
(np. 30000)
i) wybra
ć
znak „<” z dost
ę
pnych przycisków opcji
j) akceptacja poprzez przycisk OK
W podobny sposób doda
ć
pozostałe reguły:
2.
typ_klienta = "B" if wiek_klienta = X, X>35, kwota_do_zainwestowania = Y, Y<30000
3.
typ_klienta = "C" if wiek_klienta = X, X<35, kwota_do_zainwestowania = Y, Y>30000
4.
typ_klienta = "D" if wiek_klienta = X, X>35, kwota_do_zainwestowania = Y, Y>30000
12. Modyfikacja bloku steruj
ą
cego
na zakładce PROGRAM w oknie wła
ś
ciwo
ś
ci aplikacji wybra
ć
przycisk Edycja
bloku sterowania
z listy rozwijalnej wybra
ć
– Okno aplikacji, winieta, p
ę
tla główna i
zaakceptowa
ć
przyciskiem Zastosuj
poprawi
ć
kod bloku steruj
ą
cego według przykładu poni
ż
ej i zapisa
ć
przyciskiem z dyskietk
ą
sprowadzanie poprawno
ś
ci wprowadzanego kodu – przycisk błyskawicy
int Odp;
char S1, S2, S3;
run;
createAppWindow;
S1 := "LOKATA_OSZCZ
Ę
DNO
Ś
CI";
S2 := "DEMONSTRACYJNY SYSTEM DO WYBORU LOKATY OSZCZ
Ę
DNO
Ś
CI";
S3 := "POLITECHNIKA
Ś
WI
Ę
TOKRZYSKA";
vignette( S1, S2, S3 );
menu "Wybór lokaty oszcz
ę
dno
ś
ci"
1. "Wybór lokaty oszcz
ę
dno
ś
ci"
2. "Wyj
ś
cie"
case 1:
8
solutionWin ( no);
Odp := 1;
while( Odp == 1 )
begin
setSysText( problem, "Ocena stanu maj
ą
tkowego" );
solve( stan_maj
ą
tkowy_?, "stan_maj
ą
tkowy = OCENA_STANU_MAJ
Ą
TKOWEGO" );
setSysText( problem, "Ocena typu klienta" );
solve( typ_klienta_?, "typ_klienta = WYBÓR_TYPU_KLIENTA" );
solutionWin( yes );
setSysText( problem, "Wybór lokaty oszcz
ę
dno
ś
ci" );
solve(inwestycje_?, "inwestycje = DECYZJA_LOKATY_OSZCZ
Ę
DNOSCI" );
confirmBox( 0, 0, "Kontynuowa
ć
konsultacje?", "Naci
ś
nij 'OK' je
ś
li tak, 'ANULUJ' je
ś
li
nie", Odp );
delNewFacts;
solutionWin( no );
end;
solutionWin( yes );
case 2:
exit;
end;
end
13. Zamkn
ąć
okno edycji bloku sterowania
14. W oknie wła
ś
ciwo
ś
ci aplikacji przej
ść
do zakładki Opis i wybra
ć
Podgl
ą
d tekstu
ź
ródłowego
-
opcja Zapisz ze
ź
ródłami wiedzy odznaczona!
-
wybra
ć
przycisk z dyskietk
ą
i poda
ć
now
ą
nazw
ę
pliku (np.
imi
ę
_nazwisko_
ć
w2_wersja2) i zapisa
ć
15. Edytowa
ć
po kolei ka
ż
de
ź
ródło (przycisk Zmie
ń
) i wybra
ć
Podgl
ą
d tekstu
ź
ródłowego
-
wybra
ć
przycisk z dyskietk
ą
i poda
ć
now
ą
nazw
ę
ź
ródła (np.
imi
ę
_nazwisko_nazwa_
ż
ródła_wersja2) i zapisa
ć
16. Sprawdzi
ć
działanie aplikacji w PC-Shell