Thănh phần bín phải luật right-member

Một phần của tài liệu GIÁO TRÌNH HỆ CHUYÊN GIA (Trang 108 - 110)

II. Hệ SảN XUấT OPS5

b.Thănh phần bín phải luật right-member

Phần bín trâi không trực tiếp lăm thay đổi giâ trị trong bộ nhớ lăm việc WM, mă chỉ khi câc thănh phần giâ trị của nó đê được so khớp phù hợp với câc sự kiện tồn tại trong WM, câc thănh phần của phần bín phải sẽđược thực hiện.

Phần bín phải luật có thể khởi tạo, xóa bỏ hay sửa đổi câc giâ trị dữ liệu trong WM. OPS5 có tất cả 15 hăm mô tả sự hoạt động của phần bín phải luật.

Người ta phđn biệt 5 kiểu hăm như sau :

1. Câc hăm liín quan đến bộ nhớ lăm việc WM, lăm thay đổi cơ sở sự kiện fb :

make Khởi tạo câc giâ trị mới văo WM.

modify Sửa đổi câc giâ trị mă tồn tại trong WM.

remove Xóa bỏ câc giâ trị vă câc thănh phần trong WM.

2. Câc hăm thao tâc văo-ra vă truy cập tệp :

write Nhập dữ liệu lă một chuỗi ký tự vă/hoặc một biến.

accept Nhập văo một “từ” dữ liệu lă một số hoặc lă một ký hiệu.

Hệ chuyín gia MYCIN vă ngôn ngữ OPS5 109

default Tạo đường dẫn văo-ra

(hầu hết câc shell OPS5 tựđộng mặc định thiết bị văo-ra).

Openline Mở vă gân một tín cho tệp dữ liệu để tham chiếu sau đó.

Closefile Đóng một tệp đê mở.

3. Câc hăm tính toân số học, liín kết biến - giâ trị vă gọi hăm ngoại vi :

compute Thực hiện câc phĩp toân số học.

genatom Tạo một phần tử hay một ký hiệu mới.

litval Trả về giâ trị của một thuộc tính trong WM.

bind Gân giâ trị cho biến.

cbind Gân một giâ trị trong WM cho một biến.

substr Trả về một chuỗi (xđu) con.

call Gọi một chương trình con từ bín ngoăi văo shell OPS5.

4. Điều khiển mô tơ suy diễn :

halt Dừng mây suy diễn vă dừng chương trình.

5. Tạo câc luật mới :

build Tạo một luật mới trong chương trình.

II.2.4.Cơ s s kin (fb)

Mỗi phần tử của fb lă một vec tơ gồm 127 thănh phần, mỗi thănh phần chỉ có thể nhận một giâ trị nguyín tử (số hoặc ký hiệu). Thănh phần đầu tiín nhất thiết phải lă tín của một lớp đối tượng.

Trong giai đoạn khai bâo, OPS5 gân cho mỗi thuộc tính một giâ trị lă một số nguyín từ 2..127với vai trò lă chỉ số (index) đểđược tham chiếu đến (bởi lệnh vĩ mô $litbind) mă không thay đổi được. Giâ trị năy có tính toăn cục (global) vă không thuộc về một lớp năo. Khi một thuộc tính được khai bâo trong nhiều lớp sẽ tương ứng với một chỉ số duy nhất chung cho tất cả câc lớp năy. Thuật toân gân phải thõa mên câc điều kiện sau :

• Một thuộc tính vectơ có chỉ số lớn nhất trong tất cả câc lớp chứa nó : giả sửj lă giâ trị (adsbygoogle = window.adsbygoogle || []).push({});

thuộc tính vectơ, thì câc thănh phần j , j+1, ..., 127 sẽ tương ứng với câc giâ trị của thuộc tính vectơ.

• Cùng một lớp, câc thuộc tính được gân câc giâ trị phđn biệt.

Câc thănh phần của một sự kiện mặc nhiín bằng nil trừ thănh phần đầu tiín lă tín của lớp, lă những thuộc tính một câch tường minh được gân giâ trị khi tạo mới hay thay đổi một sự

kiện. Giâ trị của một thuộc tính nhận được bằng câch đânh chỉ số (indexation) lín vectơ

tương ứng với sự kiện. Ký tự ↑ lă một ký hiệu đânh chỉ số. Sau ↑ lă một số nguyín trong khoảng từ 2 đến 127, hay lă một tín thuộc tính kết hợp với nó một câch trực tiếp. Nếu ↑ vắng mặt , OPS5 xem như chỉ số tương ứng năy được tăng lín một (increment) để truy cập đến thănh phần tiếp theo. Chẳng hạn ba điều kiện sau đđy :

( tool ↑ name <tool-name> ↑ size <tool-size> ) ( tool ↑ 3 <tool-name> ↑ 4 <tool-size> ) ( tool ↑ name <tool-name> <tool-size> )

lă tương đương, nếu câc thuộc tính name vă size được gân câc giâ trị nguyín lă 3 vă 4 tương

ứng. Nếu thănh phần thứ hai không được gân (nil) , thì ta nhận được điều kiện tương đương khâc như sau :

110 Hệ chuyín gia

( tool nil <tool-name> <tool-size> )

Khi căi đặt một hệ chuyín gia, người ta thường gặp những bất lợi liín quan đến tính hiệu quả của một cơ sở sự kiện fb, chẳng hạn :

• Câc sự kiện lă một danh sâch phẳng (plate list) không có cấu trúc.

• Câc biến chỉ có thểđược gân giâ trị lă nguyín tử (hay lă câc sự kiện đầy đủ nếu đó lă tín của một điều kiện). Người ta phải sử dụng nhiều biến để thu nhận nhiều giâ trị gân cho một thuộc tính vectơ.

• Tính toăn cục của câc thuộc tính : sự nhầm lẫn câc thuộc tính giữa câc lớp lă một sai sót nguy hiểm vì OPS5 không cảnh bâo gì. Để trânh sai sót, câc thuộc tính của câc lớp cần được đặt tín phđn biệt. Câc tín thuộc tính năy sẽ giúp tiếp cận đến câc thănh phần của câc sự kiện một câch tường minh. Chú ý nhớ sử dụng dấu ↑ để tín thuộc tính (đứng ngay sau dấu năy) lấy giâ trị lă phần tử tiếp theo tín thuộc tính.

Cơ sở sự kiện được khởi động bởi một dêy câc lệnh make, chẳng hạn:

( make tool ↑ name englishkey ↑ position rack-A ↑ size 21 ) ( make tool ↑ name pipekey↑ position cupboard hook- 45 )

( make tool ↑ name crowbars ↑ position settled localcoordinate 124 66 )

Chú ý rằng câc thuộc tính vă câc thănh phần thuộc tính vectơ của một lớp không phải đê

được định nghĩa hết cho mỗi sự kiện.

Mỗi sự kiện của fb được lưu giữ thời điểm tạo ra nhờ một bộ đếm khởi động bắt đầu từ

giâ trị 1 vă tăng lín 1 mỗi lần một sự kiện mới được tạo ra, hay có sự thay đổi sự kiện. Như

vậy, mỗi sự kiện được đặt tương ứng với một số thứ tự vă người sử dụng có thể chỉđịnh nó. Chẳng hạn, lệnh :

(remove 1 3)

loại bỏ câc sự kiện 1 vă 3 của fb. Lệnh (wm) cho phĩp xem nội dung của fb.

II.2.5.B nh lăm vic

Bộ nhớ lăm việc WM lă nơi lưu trữ câc giâ trị sự kiện. Mỗi sự kiện trong WM được gọi lă một phần tử nhớ vận hănh (working memory element). Bộ nhớ lăm việc được truy cập vă hoạt động với những khả năng như sau :

• Người sử dụng có thể lưu trữ câc phần tử nhớ vận hănh trong suốt quâ trình soạn thảo chương trình OPS5.

• Người sử dụng có thể thím, xóa bỏ hoặc sửa đổi câc sự kiện của WM trong khi chương trình vẫn đang thực hiện.

• Mây suy diễn tiến hănh so khớp câc thănh phần bín trâi luật đang xĩt với câc phần tử

nhớ vận hănh. (adsbygoogle = window.adsbygoogle || []).push({});

• Trong quâ trình gỡ rối (debugging), người sử dụng có thể xem nội dung của WM nhờ hệ

thống tương tâc của OPS5 (interactive shell), lệnh (wm).

a. Cu trúc b nh lăm vic

Bộ nhớ lăm việc của OPS5 có cấu trúc tương tựbản ghi (record) trong câc ngôn ngữ lập trình quen thuộc như Pascal, C, ... Tuy nhiín, cấu trúc của OPS5 đơn giản hơn do mỗi trường có thể chứa bất kỳ kiểu dữ liệu năo được xâc định tại thời điểm gân giâ trị. Trong khi đó, Pascal hay C bị hạn chế bởi việc gân kiểu dữ liệu ban đầu. Ngôn ngữ OPS5 yíu cầu câc phần tử nhớ vận hănh phải được khai bâo trong phần đầu tiín của chương trình nhờ lệnh literalize.

Một phần của tài liệu GIÁO TRÌNH HỆ CHUYÊN GIA (Trang 108 - 110)