Hệ Cơ Sở Tri Thức
Tìm Hiểu Ngôn Ngữ JESS
Giải Quyết Bài Toán Đong Dầu
Giáo viên HD:
TS.Phạm Gia Tiến
Sinh Viên : Lê Duy Thanh
MSSV : B1310453
Khoa học máy tính K39
1
Nội dung báo cáo
1.Sơ lược về JESS.
2. Giới thiệu một số function và xây dựng (JESS Constructs) .
3. Bài toán đong dầu .
2
Phần 1 : Sơ lược về JESS
3
Giới thiệu về JESS
Jess (Java Expert System Shell) ra đời năm 1995.
Jess là một động cơ quy tắc được viết và phát triển trên
nền tảng Java.
Jess sử dụng một phiên bản nâng cao của thuật toán
RETE để xử lý các quy định.
4
Giới thiệu về JESS
Jess là một công cụ để xây dựng hệ thống chuyên gia.
Cấu trúc dữ liệu cơ bản là danh sách.
Tri thức được biểu diễn theo dạng IF-THEN
5
Giới thiệu về JESS
-Ký hiệu :
+ Gồm ký tự chữ cái,chữ số và ký hiệu
:$*=+/<>_?#.
-Số :
+Kiểu float,long,integer,
+ vd : 3 4. 5.643 5654L
6
Giới thiệu về JESS
-Chuỗi :
+Nằm trong cặp “”
+ vd: “kieu chuoi”
-Danh sách :
+Nằm trong cặp ()
+ vd : (“danh sach”)
(+ 12 (-1 2))
7
Giới thiệu về JESS
-Chú thích :
+ Chú thích 1 dòng ;
Và chú thích nhiều dòng /* */
+vd :
;chu thich mot dong
/*chu
thich
Nhieu
Dong*/
8
Giới thiệu về JESS
-Biến :
+cú pháp: ?tenbien
Vd: ?soluong
?x
9
$multifield
+Có thể chứa một danh sách các biến như kiểu mảng trong C
+Tên bắt đầu bằng $
+Chiều dài danh sách : length$ tenbien
+Truy xuất các phần tử : (nth$ ?i ?m)
Trong đó:
?i là vị trí trong danh sách.
?m là $multifield
10
Giới thiệu về JESS
-Biến toàn cục :
+Khởi tạo: (defglobal [?<global-name> = <value>]+)
+vd :
(defglobal ?*x* = 3)
(defglobal ?*tong* = 0)
11
Giới thiệu về JESS
-Điều khiển luồng:
+if,for,while
+vd:
(while (> ?i 0)
(printout t ?i crlf)
(-- ?i))
(if (> ?x 100) then
(printout t "X is big" crlf)
)
12
Giới thiệu về JESS
Phần 2 : Giới thiệu một số hàm và xây
dựng (JESS Constructs) trong JESS
13
Giới thiệu về JESS
-Hàm :
+Cú pháp:
(deffunction <function-name> [<doc-comment>]
(
*)<expr>* [<return-specifier>])
+vd:
(deffunction binhphuong (?a )
(return (* ?a ?a))
)
14
Giới thiệu về JESS
printout (in lên màn hình)
+vd :
(printout t “in len man hinh” crlf)
crlf : kí hiệu xuống hàng mới.
15
Giới thiệu về JESS
watch all,facts :
+Hiển thị các thực thi cụ thể của
JESS trong console.
+Hỗ trợ tìm lỗi khi viết chương trình.
+Hiển thị id tương ứng của fact.
16
Giới thiệu về JESS
17
Giới thiệu về JESS
deftemplate (tạo mẫu) :
+Cú pháp đầy đủ :
(deftemplate template-name [extends template-name]
["Documentation comment"] [(declare (slot-specific TRUE |
FALSE)
(backchain-reactive TRUE | FALSE)
(from-class class name)
(include-variables TRUE | FALSE)
(ordered TRUE | FALSE))]
(slot | multislot slot-name
([(type ANY | INTEGER | FLOAT |
NUMBER | SYMBOL | STRING |
LEXEME | OBJECT | LONG)]
[(default default value)]
[(defaultdynamic expression)]
[(allowed-values expression+)])*)
*Phần trong [ ] là tùy chọn không bắt buộc
18
Giới thiệu về JESS
assert (khẳng định/tạo sự kiện mới):
+Sau khi tạo mẫu,ta có thể tạo sự kiện từ mẫu đó.
19
Giới thiệu về JESS
+vd cho defftemplate và assert:
20
Giới thiệu về JESS
Unordered facts (sự kiện không có thứ tự)
+Thứ tự các khai báo không quan trọng,JESS sẽ tự sắp
xếp lại cho tương ứng dựa vào tên slot khi định nghĩa
defftemplate
+Nếu không khai báo cụ thể các giá trị của slot,JESS sẽ
dùng giá trị mặc định hoặc là nil.
21
Giới thiệu về JESS
22
Giới thiệu về JESS
retract (xóa sự kiện)
+Xóa dựa vào id hoặc tên đại diện
cho fact đó
+cú pháp:
(retract <expression>+) Hoặc (retractstring <string>)
23
Giới thiệu về JESS
24
Giới thiệu về JESS
bind (phép gán)
+vd: gán sự kiện thời tiết đã tạo cho biến tt
25