Tải bản đầy đủ (.ppt) (24 trang)

BÁO cáo hệ cơ sở TRI THỨC đề tài NGÔN NGữ JESS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (640.5 KB, 24 trang )

BÁO CÁO
HỆ CƠ SỞ TRI THỨC
ĐỀ TÀI: NGÔN NGữ JESS
NỘ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
SƠ 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.
SƠ 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
SƠ ĐỒ KIẾN TRÚC JESS
WORKIN
G
MEMORY
RULE
BASE
INFERENC
E ENGINE
PATTER
MATCHER
AGENDA
EXECUTION
ENGINE
CÁC KHÁI NIệM CƠ BảN
atom
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
lists đơn vị cơ bản của cú pháp trong Jess( a b c),
variables
variables (?) + atoms : ?x
multivariable
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
global variable : ?*x* or ?*all-values*

BIẾN VÀ DANH SÁCH

Tất cả là danh sách trong Jess

Ví dụ: cộng 2 số

(bind ?x 2) ; assign x = 2

(bind ?y 3) ; assign y = 3

(bind ?result (+ ?x ?y)) ; find
sum
DANH SÁCH HỢP LỆ TRONG JESS

(a b c) ; list of tokens

(1 2 3) ; list of integers

(+ 2 3) ; an expression

(“hello world!”) ; a string

(foo ?x ?y) ; a function call
HÀM
Hà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
BIểU DIễN Sự KIệN TRONG JESS
(Bộ NHớ LÀM VIệC)

Sự kiện trong Jess được biểu diễn bằng bộ ba: O-A-V (Đối tượng
– Thuộc tính – Giá trị)

Một đối tượng có thể có một hoặc nhiều thuộc tính với các kiểu
giá trị khác nhau

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
LẬP LUẬN KHẲNG ĐỊNH

Cơ sở lập luận lưu trữ các điều
kiện ban đầu
;; Asserting a new
“pattern” fact.
(printout t “enter
pattern name:” crlf)
(bind ?x getinput)
(assert pattern (name ?
x))
LẬP LUẬN MỜ

Lập luận mờ không sắp xếp
các lập luận có vùng tương
ứng với các thuộc tính của

JavaBean

defclass – tạo ra
1deftemplate từ 1 bean.

definstance – thêm 1
bean vào bộ nhớ làm việc.
BIỂ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.
ĐỘ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
Độ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)
=>
(assert (mortal ?X)))
Jess> (watch facts)
Jess> (run)
==> f-1 (MAIN::mortal Socrates) 1
ĐỘ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.
JESS 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
ĐIỀU KHIỂN LUỒNG

Thường gặp

foreach

if/then/else

while

Đặc trưng Jess

apply

build

eval

progn
DEFTEMPLATE

Được sử dụng để định nghĩa cơ sở lập luận
(deftemplate

pattern “a design pattern.”
(slot name)
(slot type (default “creation”))
(slot intent)
(slot solution))
LUẬ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>
CÚ 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
(defrule report-error
(error-is-present)
=>

(printout t “there is an error”
crlf))

PHỨC TẠP
Sử dụng các ràng buộc trong mô hình quy tắc
;; a more useful error handler
(defrule report-err
?err <- (is-error (msg ?msg))
=>
(printout t "error was: " ?msg
crlf)
(retract ?err))
MẪ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

Vị từ
Cấu trúc và điều khiển

Salience

Modules

Defquery

Dây chuyền lùi
AGENDA


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
GIẢ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.
Ư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
CảM ƠN THầY VÀ CÁC BạN ĐÃ LắNG
NGHE!

×