Chúng được gọi là các sự kiện đơn trị single -valued hay đa trị multi-valued => Linh động trong việc biểu diễn các tri thức cần thiết... Agenda: Thứ tự quy tắc được khai hỏa Công cụ thực
Trang 1BÁO CÁO
HỆ CƠ SỞ TRI THỨC
ĐỀ TÀI: NGÔN NGữ JESS
Trang 2NỘI DUNG TRÌNH BÀY
• Sơ lược về Jess
• Biểu diễn tri thức
• Động cơ suy diễn
• Giải quyết xung đột
Trang 3SƠ LƯỢC VỀ JESS
• Jess là viết tắt của Java Expert System Shell
• Jess là một công cụ quy tắc ra đời vào năm 1995 được viết hoàn toàn bằng Java dựa trên nền tảng của Clip bởi Ernest Friedman-Hill tại Sandia National Laboratories ở Canada
• Jess thích hợp với Java: có thể gọi hàm API Java từ Jess và ngược lại.
• Jess là một phiên bản nâng cao của thuật toán RETE.
Trang 4SƠ LƯỢC VỀ JESS
Jess là một công cụ hệ thống chuyên gia bởi vì nó là một môi trường hoàn chỉnh cho phát triển hệ thống chuyên gia bao gồm: một trình soạn thảo tích hợp và một công cụ gỡ rối
Jess sử dụng cú pháp giống như Lisp sử dụng dấu ngoặc đơn thay dấu phân cách
Cấu trúc dữ liệu cơ bản là danh sách
Có thể truy cập JavaBean
Tri thức được biểu diễn theo dạng IF-THEN
Trang 5SƠ ĐỒ KIẾN TRÚC JESS
AGENDA
EXECUTION ENGINE
Trang 6CÁC KHÁI NIệM CƠ BảN
atom ký tự, số và $*=+/<>_?# Trường hợp ngoại lệ số, chuỗi ký tự, comments (;)
3 atom đặc biệt là nil, true, false
lists đơn vị cơ bản của cú pháp trong Jess( a b c),
variables (?) + atoms : ?x
multivariable $+ variable: $?y
(defrule example (grocery-list $? list) => (printout t "i need to buy " $? list crlf))
jess> (assert (grocery-list eggs milk bacon)) global variable : ?*x* or ?*all-values*
Trang 7• (“hello world!”) ; a string
• (foo ?x ?y) ; a function call
Trang 8Hàm là một đoạn mã thực thi xác định bởi một tên cụ thể, mà trả về
một giá trị hữu ích hoặc thực hiện một hiệu ứng phụ hữu ích
( deffunction get-input()
“get user input from console.”
//được người dùng nhập vào từ giao diện điều khiển
( bind ?s (read))
( return ?s))
( printout )// lệnh xuất ra
Trang 9BIểU DIễN Sự KIệN TRONG JESS
• Một thuộc tính cũng có thể có một hay nhiều giá trị Chúng được gọi
là các sự kiện đơn trị (single -valued) hay đa trị (multi-valued)
=> Linh động trong việc biểu diễn các tri thức cần thiết
Trang 10LẬP LUẬN KHẲNG ĐỊNH
• Cơ sở lập luận lưu trữ các điều
kiện ban đầu
• defclass – tạo ra 1deftemplate từ 1 bean.
• definstance – thêm 1 bean vào bộ nhớ làm việc.
Trang 11BIỂU DIỄN TRI THỨC
Luật/Quy tắc: chủ yếu dành cho kiến thức heuristic dựa trên kinh nghiệm
Hàm: dành cho kiến thức thủ tục
Lập trình hướng đối tượng: chủ yếu dành cho kiến thức thủ tục Các tính năng được hỗ trợ: lớp, thông điệp xử lý, trừu tượng, đóng gói, thừa kế và đa hình
Trang 12ĐỘNG CƠ SUY DIỄN
Pattern matcher(tương hợp mẫu): quyết định quy tắc nào/khi nào để khai hỏa.
Agenda: Thứ tự quy tắc được khai hỏa
Công cụ thực thi: Khai hỏa quy tắc và thực thi code
QUÁ TRÌNH SUY DIỄN
So khớp các điều kiện với các quy tắc
Chọn quy tắc để khai hỏa
Thực thi các hành động liên quan đến quy tắc
Trang 13ĐộNG CƠ SUY DIỄN
Jess hỗ trợ 2 cơ chế suy diễn là suy diễn tiến và suy diễn lùi
Trên thực tế thì suy diễn tiến được sử dụng phổ biến hơn
Suy diễn tiến
o Khi tất cả các tiền đề được thỏa thì hành động sẽ được kích hoạt
Ví dụ:
Jess> (assert (human Socrates))
Jess> (defrule mortal (human ?X)
Trang 14ĐỘNG CƠ SUY DIỄN
Suy diễn lùi
o Phương pháp suy diễn lùi không tường minh cho người lập trình.
Chỉ có các luật đặc biệt được định nghĩa mới sử dụng được suy diễn lùi.
Thường được dùng để kéo dữ liệu vào Jess từ một cơ sở dữ liệu yêu cầu.
Để sử dụng cơ chế suy diễn lùi trong Jess trước tiên phải khai báo các mẫu sự kiện
để phản ứng suy diễn lùi sử dụng hàm do-backward-chaining.
Khai báo các luật sau cho phù hợp với các sự kiện.
Khá phức tạp.
Trang 15JESS LÀM VIỆC NHƯ THẾ NÀO?
• Jess so khớp sự kiện trên cơ sở quy tắc
• Các quy tắc chứa các lời gọi hàm thao tác trên cơ sở thực tế and/or khác Java code
• So khớp các mẫu
• Một tập các nút kết nối lại = bộ nhớ làm việc
Trang 16ĐIỀU KHIỂN LUỒNG
Trang 18LUẬT/ QUY TẮC
• Là những cơ sở tri thức của hệ thống có thể thực hiện hành động dựa trên nội dung của sự kiện
• Khai hỏa chỉ một lần trên tập các cơ sở lập luận
• Sử dụng mô hình ràng buộc để phù hợp cơ sở lập luận
• Sử dụng nhanh hơn câu lệnh If<điều kiện>-Then<Hành động>
Trang 19CÚ PHÁP ĐỂ BIỂU DIỄN QUY TẮC
• Luật/ quy tắc có “tay trái” (LHS) và “tay phải” (RHS)
• LHS chứa các cơ sở lập luận phù hợp với vùng nhất định
• RHS chứa các lời gọi hàm
• ĐƠN GIẢN
• Kiểm tra trạng thái bộ nhớ làm việc
;; a not very useful error handler
Sử dụng các ràng buộc trong mô hình quy tắc
;; a more useful error handler
Trang 20MẪU VÀ CÔNG CỤ ĐIỀU KHIỂN
Matching
•Literal / ràng buộc biến
•Kiểm tra điều kiện Logic
Trang 21• Chứa tập các quy tắc ưu tiên
• Jess thực hiện các hành động ở bên phải của các ưu tiên cao nhất Quá trình này tiếp tục cho đến khi không được kích hoạt hoặc gặp 1 lệnh dừng lại.
jess> (agenda) [activation: main::duck f-0 ; time=2 ; salience=0]
for a total of 1 activations.
jess>
• Mỗi luật chỉ được khai hỏa 1 lần
Trang 22GIẢI QUYẾT XUNG ĐỘT
Jess cung cấp 2 chế độ khác nhau để giải quyết xung đột :
• Độ sâu(LIFO): các luật gần nhất sẽ được “khai hỏa” trước.
• Chiều rộng(FIFO): các luật được “khai hỏa” theo một trật tự
nó được kích hoạt.
Trang 23ƯU NHƯợC ĐIểM
Ưu điểm
• Dễ dàng mở rộng với các lệnh mới
• Dễ học và sử dụng
• Jess nhanh hơn một số hệ thống shell chuyên gia viết bằng C
• Jess có môi trường mã Java JESS call Java
Nhược điểm
• Đòi hỏi không gian bộ nhớ lớn
Trang 24CảM ƠN THầY VÀ CÁC BạN ĐÃ LắNG
NGHE!