Ć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
1
•
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:
2
•
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
3
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
4
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"
5
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
6
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:
7
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
8