Thông tin tài liệu
BÁO CÁO HỆ CƠ SỞ TRI THỨC NGÔN NGỮ JESS - BÀI TOÁN HẬU Lâm Quang Tường B1304520 MỤC LỤC Sơ lược Jess Biểu diễn tri thức Động suy diễn Giải xung đột Bài toán quân hậu Java Expert System Shell • Ra đời vào năm 1995 viết hoàn toàn Java dựa tảng Clips Ernest Friedman-Hill Sandia National Laboratories Canada • Jess gọi hàm API Java ngược lại • Jess sử dụng cú pháp giống Lisp =>biểu diễn danh sách • Jess ngôn ngữ không thủ tục biểu diễn tri thức dựa luật sinh • Có thể truy cập JavaBean Scripting Java with Jess (import javax.swing.*) (import java.awt.*) (import java.awt.event.*) (set-reset-globals FALSE) (defglobal ?*frame* = (new JFrame "Hello You")) (defglobal ?*button* = (new JButton "Click it")) (?*frame* setSize 500 300) ((?*frame* getContentPane) add ?*button*) (?*frame* setVisible TRUE) The Jess API Được tổ chức gói (packages), 64 lớp (classes) • jess - động suy diễn “guts” • jess.awt – GUI wrappers • jess.factory – cho phép mở rộng xâm nhập vào bên jess Using the Jess API… Rete engine = new Rete(); Bean testbean = new Bean(); engine.definstance("bean", testbean, false); engine.defclass("bean", "Bean", null, false); testbean.setName("test"); engine.eval("(facts)"); defclass – tạo deftemplate từ bean definstance – thêm bean vào nhớ làm việc KHÁI NIỆM CƠ BẢN atom số + kí hiệu (chuỗi ký tự) $*=+/_?#, comments (;) atom đặc biệt nil, true, false lists đơn vị cú pháp 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* BIỂU DIỄN SỰ KIỆN TRONG JESS (BỘ NHỚ LÀM VIỆC) • Sự kiện Jess biểu diễn ba: O-A-V (Đối tượng – Thuộc tính – Giá trị) • Một đối tượng có nhiều thuộc tính với kiểu giá trị khác • Một thuộc tính có hay nhiều giá trị Chúng gọi kiện đơn trị (single -valued) hay đa trị (multi-valued) => Linh động việc biểu diễn tri thức cần thiết DEFTEMPLATE • Được sử dụng để định nghĩa sở lập luận (khuôn) (deftemplate pattern “a design pattern.” (slot name) (slot type (default “creation”)) (slot intent) (slot solution)) DEFRULE LHS RHS • LHS chứa kiện để định quy tắc kích hoạt (điều kiện) để so khớp với nhớ làm việc • RHS bao gồm lời gọi hàm Jess> (defrule welcome-toddlers "Give a special greeting to young children" (person {age < 3}) => (printout t "Hello, little one!" crlf)) RETE • Độ phức tạp O(RFP) R số luật, P số kiện rules, F số quy tắc nhớ làm việc • Xây dựng mạng nút, nút đại diện cho nhiều kiểm tra điều kiện LHS luật • Sự kiện thêm xóa khỏi WM xử lý qua mạng đặt vào nút mạng thêm vào RETE • Một mạng RETE bao gồm: ‾ One-input nodes ‾ Two-input ( “join” nodes) ‾ Memory nodes ‾ Terminal nodes • Mỗi nút nhận input từ nút gửi output trở xuống nút • One-input node: kiểm tra quan hệ bên kiện nhờ vào biến (khởi tạo từ nút) • Join nodes kiểm tra mối quan hệ kiện nhờ vào liên hệ biến (khởi tạo từ nút) (watch compilations) (view) RETE • Một join node kiểm tra pattern • • • • Có vài biến dùng nhiều pattern không? Nếu có chúng có giá trị không? Có ràng buộc cho biến không? Kiểm tra điều kiện lưu vào memory node chuyển sang node • • Nếu sai chờ đợi kiện Nếu đến kiện cuối join node thành công luật kích hoạt chuyển sang agenda BACKWARD CHAINING Jess> (deftemplate factorial (declare (ordered TRUE) (backchain-reactive TRUE))) Jess> (do-backward-chaining factorial) Jess> (defrule print-factorial-10 (factorial 10 ?r1) => (printout t "The factorial of 10 is " ?r1 crlf)) BACKWARD CHAINING • Khi tương hợp mẫu với suy diễn lui khởi động lại template, ghi lại quy tắc chèn thêm số quy tắc đặc biệt vào bên LHS thêm vào WM (need-factorial 10 nil) • Phần đầu kiện thêm vào “need-” • Khi luật reset không so khớp với kiện BACKWARD CHAINING • Không có luật kích hoạt • Jess thấy rule-1 kích hoạt có kiện foo thích hợp => sinh yêu cầu (need-foo nil nil) • So khớp LHS create-foo khai hỏa cần kiện bar =>sinh yêu cầu (need-bar nil nil) • So khớp LHS create-bar =>khai hỏa sinh (bar C D) => khai hỏa create-foo sinh (foo A B) =>khai hỏa rule-1 AGENDA (bộ thông dịch) • Chứa luật mà vế trái thỏa mãn • Jess thực hành động bên phải luật ưu tiên cao Quá trình tiếp tục không kích hoạt gặp lệnh dừng lại jess> (agenda) [activation: main::duck f-0 ; time=2 ; salience=0] for a total of activations • Mỗi luật khai hỏa lần SALIENCE (ĐỘ ƯU TIÊN) • Mỗi quy tắc có độ ưu tiên Mặc định salience = zero • Quy tắc kích hoạt có độ ưu tiên cao khai hỏa trước • Để ràng buộc quy tắc khai hỏa hay cuối ta khai báo: Jess> (defrule example-6 (declare (salience -100)) (command exit-when-idle) => (printout t "exiting " crlf)) SALIENCE (ĐỘ ƯU TIÊN) • Gía trị salience số nguyên, biến toàn cục lời gọi hàm • (set-salience-evaluation (when-defined | when-activated | every-cycle)) để thay đổi thiết lập • when-defined : mặc định, xác định độ ưu tiên quy tắc lần khai báo • when-activated: xác định lại độ ưu tiên trước vào agenda • every-cycle: quy tắc xác định lại sau quy tắc khai hỏa CONFLICT RESOLUTION STRATEGY • Depth (LIFO): Các luật kích hoạt đặt luật có độ ưu tiên (salience) • Breadth (FIFO): đặt luật có độ ưu tiên • (set-strategy (depth | breadth)) mặc định depth LIFO FIFO GIẢI QUYẾT BÀI TOÁN HẬU THUẬT TOÁN • Bước 1: Mô tả bàn cờ Khởi tạo tên hậu số thứ tự cột nó, số thứ tự hàng khởi tạo 1, 2, • Bước 2: Khởi tạo bàn cờ 8*8 tìm tất trạng thái quân hậu • Bước 3: Tạo ràng buộc Vị trí hàng cột khác với vị trí hậu lại (8 fact) Vị trí hàng quân hậu cộng thêm k thuộc [1,7] phải khác vị trí hàng quân hậu hàng k (kiểm tra đường chéo) LỜI GIẢI • Bài toán tám quân hậu có 92 lời giải khác • Nếu không phân biệt lời giải ảnh qua phép đối xứng, phép quay bàn cờ chúng có 12 lời giải đơn vị [...]... nodes) ‾ Memory nodes ‾ Terminal nodes • Mỗi nút nhận input từ nút trên và gửi output trở xuống nút dưới • One-input node: kiểm tra quan hệ bên trong sự kiện nhờ vào các biến và hằng (khởi tạo từ 1 nút) • Join nodes kiểm tra mối quan hệ giữa các sự kiện nhờ vào sự liên hệ giữa các biến (khởi tạo từ 2 nút) (watch compilations) (view) RETE • Một join node kiểm tra 2 pattern • • • • Có 1 vài biến được dùng... có thể khai báo: Jess> (defrule example-6 (declare (salience -100)) (command exit-when-idle) => (printout t "exiting " crlf)) SALIENCE (ĐỘ ƯU TIÊN) • Gía trị salience có thể là số nguyên, biến toàn cục hoặc lời gọi hàm • (set-salience-evaluation (when-defined | when-activated | every-cycle)) để thay đổi các thiết lập • when-defined : mặc định, xác định độ ưu tiên của quy tắc 1 lần khi khai báo • when-activated:... hoặc chỉnh sửa fact • Agenda có thể bị thay đổi trong quá trình thực thi=> khai hỏa 1 lần MÔ HÌNH HOẠT ĐỘNG CỦA JESS INFERENCE ENGINE WORKING MEMORY PATTER MATCHER EXECUTION ENGINE RULE BASE AGENDA ĐỘNG CƠ SUY DIỄN • Tìm đường đi đến lời giải • Pattern matching (tương hợp mẫu): so khớp các mẫu • Agenda: chọn quy tắc khai hỏa • Công cụ thực thi: Khai hỏa quy tắc Quá trình suy diễn So khớp các điều kiện
Ngày đăng: 14/11/2016, 13:26
Xem thêm: BÁO cáo hệ cơ sở TRI THỨC, BÁO cáo hệ cơ sở TRI THỨC