Báo cáo Jess(Java Expert System Shell)

24
BÁO CÁO HỆ CƠ SỞ TRI THỨC ĐỀ TÀI: NGÔN NGữ JESS

description

 

Transcript of Báo cáo Jess(Java Expert System Shell)

Page 1: Báo cáo Jess(Java Expert System Shell)

BÁO CÁO HỆ CƠ SỞ TRI THỨC

ĐỀ TÀI: NGÔN NGữ JESS

Page 2: Báo cáo Jess(Java Expert System Shell)

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

Page 3: Báo cáo Jess(Java Expert System Shell)

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.

Page 4: Báo cáo Jess(Java Expert System Shell)

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

Page 5: Báo cáo Jess(Java Expert System Shell)

SƠ ĐỒ KIẾN TRÚC JESS

WORKING

MEMORY

RULE BASE

INFERENCE ENGINE

PATTER MATCHER

AGENDA

EXECUTIONENGINE

Page 6: Báo cáo Jess(Java Expert System Shell)

CÁC KHÁI NIệM CƠ BảN

atomatom 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

listslists đơn vị cơ bản của cú pháp trong Jess( a b c),

variablesvariables (?) + atoms : ?x

multivariablemultivariable $+ variable: $?y

(defrule example

(grocery-list $?list) => (printout t "i need to buy " $?list crlf))

jess> (assert (grocery-list eggs milk bacon))

global variableglobal variable : ?*x* or ?*all-values*

Page 7: Báo cáo Jess(Java Expert System Shell)

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

Page 8: Báo cáo Jess(Java Expert System Shell)

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

Page 9: Báo cáo Jess(Java Expert System Shell)

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

Page 10: Báo cáo Jess(Java Expert System Shell)

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.

Page 11: Báo cáo Jess(Java Expert System Shell)

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.

Page 12: Báo cáo Jess(Java Expert System Shell)

ĐỘNG CƠ SUY DIỄNPattern 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

Page 13: Báo cáo Jess(Java Expert System Shell)

ĐộNG CƠ SUY DIỄNJess 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

Page 14: Báo cáo Jess(Java Expert System Shell)

ĐỘNG CƠ SUY DIỄNSuy 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.

Page 15: Báo cáo Jess(Java Expert System Shell)

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

Page 16: Báo cáo Jess(Java Expert System Shell)

ĐIỀU KHIỂN LUỒNG

• Thường gặp

foreach

if/then/else

while

•Đặc trưng Jess

apply

build

eval

progn

Page 17: Báo cáo Jess(Java Expert System Shell)

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))

Page 18: Báo cáo Jess(Java Expert System Shell)

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>

Page 19: Báo cáo Jess(Java Expert System Shell)

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))

Page 20: Báo cáo Jess(Java Expert System Shell)

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

Page 21: Báo cáo Jess(Java Expert System Shell)

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

Page 22: Báo cáo Jess(Java Expert System Shell)

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.

Page 23: Báo cáo Jess(Java Expert System Shell)

Ư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

Page 24: Báo cáo Jess(Java Expert System Shell)

CảM ƠN THầY VÀ CÁC BạN ĐÃ LắNG

NGHE!