You are on page 1of 29

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN




Đề Tài:

Tư vấn tử vi
Giảng viên hướng dẫn: ThS. Nguyễn Thanh Hùng
Lớp: Khoa Học Máy Tính 1 – K5

Nhóm thực hiện: Nhóm 8

Hà Nội, tháng 11 năm 2012


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
............................................................................................. ............................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
............................................................................................................

Hà Nội, ngày tháng năm 2013


Giảng viên
Th.S Trần Thanh Hùng
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

MỤC LỤC

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN.......................................................................2


MỤC LỤC................................................................................................................................3
Giới thiệu sơ lược nội dung sẽ trình bày:................................................................................3
LỜI NÓI ĐẦU..........................................................................................................................4
BẢNG PHÂN CÔNG CÔNG VIỆC TRONG NHÓM.........................................................5
NỘI DUNG CHI TIẾT ĐỀ TÀI...............................................................................................6
I. GIỚI THIỆU ĐỀ TÀI VÀ GIAI ĐOẠN THU THẬP TRI THỨC CHUYÊN GIA. 6
1) Trình bày tên đề tài và mục đích đề tài...................................................................7
Tên của đề tài:...................................................................................................................7
Mục đích đề tài:................................................................................................................7
Các yêu cầu xây dựng:.....................................................................................................7
2) Phát biểu bài toán.....................................................................................................7
a) Định nghĩa các “Số con người”............................................................................8
3) Xây dựng cơ sở tri thức............................................................................................9
a) Quy ước..................................................................................................................9
b) Sơ đồ suy diễn và các luật...................................................................................11
II. PHÂN TÍCH BÀI TOÁN..............................................................................................12
1) Mô tả bài toán..........................................................................................................12
2) Hướng giải quyết.....................................................................................................12
3) Cấu trúc dữ liệu.......................................................................................................13
a) Biểu diễn các sự kiện...........................................................................................13
b) Biểu diễn các luật.................................................................................................14
c) Biểu diễn danh sách các sự kiện.........................................................................15
d) Biểu diễn danh sách các luật..............................................................................16
4) Thuật toán................................................................................................................16
III. THIẾT KẾ CHƯƠNG TRÌNH DEMO....................................................................19
1) Ngôn ngữ và các công cụ........................................................................................19
2) Cài đặt......................................................................................................................20
3) Một số giao diện chính và kết quả chạy chương trình.........................................20
4) Đánh giá và hướng phát triển................................................................................24
Hướng phát triển của đề tài:..........................................................................................25
MỘT SỐ TÀI LIỆU THAM KHẢO....................................................................................26
LỜI KẾT.................................................................................................................................27

Giới thiệu sơ lược nội dung sẽ trình bày:

Trang 4/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Cấu trúc đề tài gồm 3 mục chính được đánh số I đến III, đi từ việc giới
thiệu đề tài và mục đích đề tài đến hướng giải quyết chính và cuối cùng là chi
tiết cài đặt chương trình Demo của nhóm.
Ngoài ra phần đầu đề tài là “giới thiệu sơ lược nội dung đề tài” và phần
cuối là “Một số tài liệu tham khảo” được nhóm sử dụng.
Một nội dung quan trong của đề tài là phần thuật toán sử dụng và chi tiết
cài đặt thuật toán của nhóm.
Đề tài với mục đích demo là chính giúp chúng ta hiểu được vai trò quan
trọng của việc xây dựng các hệ chuyên gia, và công dụng hữu ích của chúng
cho con người, hiểu được các bước cơ bản để hiện thực hóa một hệ chuyên gia.
Sau đây là nội dung chi tiết của đề tài, mọi ý kiến đóng góp xin gửi về
nhóm thực hiện Nhóm 8 Lớp KHMT1 - K5 Trường ĐH Công Nghiệp Hà Nội.

LỜI NÓI ĐẦU


Trang 5/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Ngày nay, công nghệ thông tin là lĩnh vực không thể thiếu trong đời sống
con người. Hầu như trong mọi ngành, mọi lĩnh vực công nghệ thông tin đều có
mặt. Các sản phẩm phần mền tạo ra đã phục vụ và đem lại không ít lợi ích về
mặt kinh tế như các phần mền quản lý, thương mại điện tử, các dịch vụ mạng
truyền thống v.v…. Đặc biệt các sản phẩm của công nghệ thông tin ngày nay
còn đóng vai trò như một chuyên gia trong mọi lĩnh vực, nó đã giải quyết được
rất nhiều vấn đề thường ngày mà người bình thường không thể làm được. Các
hệ chuyên gia này chẩn đoán hay đưa ra các quyết định từ tập các giả thiết đầu
vào.

Trong cuộc sống hằng ngày, có rất nhiều người muốn biết trước số mình
sau này sướng hay khổ, giàu hay nghèo hoặc một số người dùng bói toán để
giảm stress... Cho nên yêu cầu của con người chúng ta cần có một hệ chuyên
gia giúp họ dự đoán tương lai của mình như thế nào.

Cũng xuất phát từ yêu cầu đó, chúng tôi chọn đề tài “Tư Vấn Tử Vi”.

Mọi sự đóng góp ý kiến xin liên hệ nhóm 8, lớp KHMT1 - K5, trường
ĐH Công Nghiệp Hà Nội.

Nhóm SV thực hiện: Nhóm 8 lớp KHMT1 - K5


Đào Ngọc Luân
Phùng Minh Tuân
Vũ Hoàng Tuấn

Hà Nội, ngày 23 tháng 8 năm 2013

Trang 6/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

BẢNG PHÂN CÔNG CÔNG VIỆC TRONG


NHÓM
STT Họ và tên Công việc Thời gian Tiến độ

1 Đào Ngọc Luân I đến III 07/2013 100%

2 Phùng Minh Tuân I đến III 07/2013 100%

3 Vũ Hoàng Tuấn I đến III 07/2013 100%

Trong thời gian thực hiện đề tài, nhóm đã họp mặt nhiều lần để bàn luận
và góp ý lẫn nhau giúp hoàn thiện đề tài. Các cuộc họp của nhóm xoay quanh
các mục đích nghiên cứu của đề tài và bàn luận về phương pháp từ việc thu thập
tài liệu đến việc nên lấy phần nào của tài liệu đưa vào bài… Chúng em xin trân
thành cảm ơn sự giúp đỡ nhiệt tình từ phía các thầy cô giáo khoa Công Nghệ
Thông Tin trường ĐH Công Nghiệp Hà Nội đã giúp đỡ chúng em trong việc
cung cấp tài liệu và hướng dẫn đọc hiểu tài liệu và gỡ bỏ những vướng mắc gặp
phải. Chúng em cũng xin trân thành cảm ơn thầy Trần Thanh Hùng đã tận tình
chỉ bảo, giúp đỡ chúng em để chúng em không đi sai hướng và hoàn thành tốt
đề tài.
Hoạt động của nhóm theo hướng tất cả các thành viên cùng nghiên cứu
chung các vấn đề khó, khi có vướng mắc hay phát hiện điều mới thì cùng nhau
tranh luận để tìm ra hướng giải quyết thích hợp.
Kết quả nhận được sau các cuộc họp của nhóm là sự thành công trong
công việc của nhóm. Nhóm đã hoàn thiện việc xây dựng mục đích đề tài, đề
cương vắn tắt các nội dung cần triển khai và bàn giao công việc cụ thể cho các

Trang 7/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

thành viên. Bằng sự lỗ lực thật sự của bản thân các thành viên trong nhóm cuối
cùng nhóm đã hoàn thiện đề tài tốt đẹp.

NỘI DUNG CHI TIẾT ĐỀ TÀI

I. GIỚI THIỆU ĐỀ TÀI VÀ GIAI ĐOẠN THU THẬP TRI


THỨC CHUYÊN GIA

1) Trình bày tên đề tài và mục đích đề tài

Tên của đề tài:

Xây dựng demo shệ chuyên gia Tư vấn tử vi.

Mục đích đề tài:

Hệ chuyên gia xây dựng được phải có khả năng dự đoán tương lai của
một người nào đo

Các yêu cầu xây dựng:

Cần dự đoán tương lại và hiện tại một cách chuẩn xác , giải thích rõ ràng,
giao diện cần có tính hướng người sử dụng …

2) Phát biểu bài toán

Bài toán là một hệ chuyên gia được xây dựng nhằm dự đoán tương lai
của người sử dụng nó hoặc nó có thể giúp con người phần nào giảm đi áp lực
khi gặp một vấn đề khó giải quyết nào đó. Với mong muốn một phần nào đó có
thể tư vấn cho người sử dụng hệ thống biết tương lai mình như thế nào, số mình
sướng hay khổ… , chương trình có thể đưa ra các lời khuyên hoặc nhận xét về

Trang 8/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

con người bạn .Người sử dụng chỉ cần trả lời đúng hoặc sai các câu hỏi về nhận
dạng, hoặc dấu vết trên người của mình trên hệ thống và từ đó hệ thống sẽ đưa
ra các nhận xét hoặc lời khuyên cho người dùng

Ví dụ: người dùng sẽ nhận được câu dự đoán là “số bạn xung túc”
nếu tất cả các đặc điểm sau: dáng vóc cao, nốt ruồi ở mặt, bàn tay dài,trán cao,
trán rộng. đều được người dùng cung cấp là “True” (Đúng).

Để làm được các yêu cầu trên thì hệ thống cần có một cơ sở tri
thức về các triệu chứng (hay các sự kiện cụ thể được thu thập từ người dùng),
các luật suy diễn cụ thể cho tử vi dựa trên các đặc điểm về hình dáng được cung
cấp. Với tính chất demo là chính nhóm chúng em xây dựng hệ chuyên gia để dự
đoán 9 loại “số” con người khác nhau mà khi các thầy bói thường hay phán là :
“số đào hoa”, số phát đạt”, sô sung túc”, “số lận đận”, số bình an”, số nghèo
khổ”, “số thọ lâu”, số phú quý”, “bệnh thủy đậu”. Tương ứng với các “số” đó
thì có các đặc điểm về hình dáng con người tương ứng.

Sau đây sẽ là định nghĩa chi tiết về các “số của con người”, các đặc điểm
hình dáng của con người hay gặp và các nhận xét mà chương trình đưa ra.

a) Định nghĩa các “Số con người”

- Một người có thể được gọi là “Số sung túc” khi người đó có
những đặc điểm hình dáng như: “dáng vóc cao”, “nốt ruồi ở
mặt”, “Bàn tay dài”, “trán cao”, “trán rộng”.

- Một người có thể được gọi là “Số đào hoa” khi người đó có
những đặc điểm hình dáng như: “dáng vóc cao”, “nốt ruồi ở
mặt”, “nốt ruồi ở tay”, “bàn tay vuông”, “bàn tay ít đường chỉ”.

Trang 9/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

- Một người có thể được gọi là “Số nghèo khổ” khi người đó có
những đặc điểm hình dáng như: “có mạt trái xoan”, “gò má
cao”, “bàn tay ngắn” , “bàn tay vuông”..

- Một người có thể được gọi là “Số lận đận” khi người đó có
những đặc điểm hình dáng như: Có mặt trái xoan”, “gò má
thấp”, “trán cao”, “trán rộng”.

- Một người có thể được gọi là “Số thọ” khi người đó có những
đặc điểm hình dáng như: “dáng vóc cao”, “nốt ruồi ở mặt”, “nốt
ruồi ở chân”, “cổ tròn”,“gò má cao””.

- Một người có thể được gọi là “Số bình an” khi người đó có
những đặc điểm hình dáng như: “Dáng vóc cao”, “nốt ruồi ở
tay”, “bàn tay vuông”.

- Một người có thể được gọi là “Số tài giỏi” khi người đó có
những đặc điểm hình dáng như: “Dáng vóc cao”, “trán cao”,
“bàn tay dài”.

- Một người có thể được gọi là “Số phát đạt” khi người đó có
những đặc điểm hình dáng như: “trán rộng”, “cổ tròn”, “nốt
ruồi ở mặt”, “bàn tay dài”.

- Một người bị coi là mắc “bệnh thủy đậu” khi người đó có các
triệu chứng như: “sốt”, “da nổi đỏ”, “mụn nước trên da”.

3) Xây dựng cơ sở tri thức

a) Quy ước

- Quy ước “Số con người”:

Trang 10/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

o “Số đào hoa” : đặt là ‘1’

o “Số phát đạt”: đặt là ‘2’

o “Số sung túc”: đặt là ‘3’

o “Số lận đận ”: đặt là ‘4’

o “Số bình an”: đặt là ‘5’

o “Số nghèo khổ”: đặt là ‘6’

o “Số thọ”: đặt là ‘7’

o “Số phú quý”: đặt là ‘8’

o “Số tài giỏi”: đặt là ‘9’

- Quy ước các đặc điểm hình dạng:

o “dáng vóc cao”: đặt là ‘a’

o “nốt ruồi ở mặt”: đặt là ‘b’

o “nốt ruồi ở tay”: đặt là ‘d’

o “nốt ruồi ở chân”: đặt là ‘e’

o “nốt ruồi ở vai”: đặt là ‘f’

o “bàn tay ngắn”: đặt là ‘g’

o “Bàn tay dài”: đặt là ‘h’

o “Bàn tay vuông”: đặt là ‘i’

Trang 11/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

o “Bàn tay ít đường chỉ ”: đặt là ‘j’

o “trán cao”: đặt là ‘k’

o “trán thấp”: đặt là ‘l’

o “trán rộng”: đặt là ‘m’

o “Cổ cao”: đặt là ‘n’

o “Cổ thấp”: đặt là ‘o’

o “Cổ tròn”: đặt là ‘p’

o “Có mặt trái xoan”: đặt là ‘r’

o “Có mặt bầu dục”: đặt là ‘s’

o “Gò má cao”: đặt là ‘t’

o “Gò má thấp”: đặt là ‘u’

b) Sơ đồ suy diễn và các luật

Từ các quy ước trên ta có được sơ đồ suy diễn như sau:

Trang 12/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Từ sơ đồ suy diễn trên ta có được tập 9 luật như sau: (dấu ^ biểu thị
cho phép hội)

- Luật 1: a^b^c->5

- Luật 2: a^b^d->6

- Luật 3: a^b^e^f^g->1

- Luật 4: a^o^y->9

- Luật 5: a^o^u^p->8

- Luật 6: f^h^r^g^x->2

- Luật 7: f^h^t^i^j->4

- Luật 8: k^l^m->3

Trang 13/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

- Luật 9: n^u^q->7

II. PHÂN TÍCH BÀI TOÁN

1) Mô tả bài toán

Bài toán đặt ra khi xây dựng hệ chuyên gia Dự đoán về căn số tương lai
con người:

- Thu nhận các sự kiện do người dùng cung cấp miêu tả các triệu
chứng mà họ gặp phải.

- Áp dụng các luật có sẵn từ việc làm việc với các chuyên gia từ
trước, được lưu trong một file dạng *.txt, để đưa ra dự đoán và
nhận xét hợp lý.

2) Hướng giải quyết

Các bước xây dựng hệ chuyên gia dự đoán “Số con người”:

- Xây dựng cấu trúc dữ liệu biểu diễn được các triệu chứng khác
nhau và chỉ rõ giá trị của nó là:

o True (đúng, người dùng có đặc điểm hình dáng đó)

o False (sai, người dùng có đặc điểm hình dáng đó)

 Xây dựng: một lớp các sự kiện “SuKien” biểu diễn các đặc điểm hình dáng
là các mệnh đề có giá trị “True” hoặc “False”.

- Xây dựng cấu trúc dữ liệu lưu trữ cơ sở tri thức của hệ chuyên
gia để sử dụng trong suy luận và đưa ra được tư vấn

Trang 14/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

 Lựa chọn của nhóm: xây dựng tập các luật sản xuất tổ chức trong một file
*.txt.

- Xây dựng thuật toán có thể để tiến hành suy diễn từ tập các sự
kiện được cung cấp bởi người dùng và tập các luật (Rules) có sẵn
trong cơ sở tri thức để xác định được bệnh mà người dùng gặp
phải và từ đó đưa ra nhận xét hợp lý.

 Lựa chọn của nhóm: sử dụng tư tưởng chính của thuật toán suy diễn tiến để
suy diễn, nghĩa là “lập luận từ các sự kiện, sự việc “tiền đề” để rút ra kết luận”
(Trích Giáo trình Hệ chuyên gia, ĐH Đà Nẵng).

3) Cấu trúc dữ liệu

a) Biểu diễn các sự kiện

Các sự kiện cho ta biết rằng người dùng có hay không bị các đặc điểm
hình dáng tùy vào giá trị của sự kiện là True hay False do người dùng cung cấp
qua giao diện người dùng.

Mỗi sự kiện trong chương trình sẽ là một đối tượng trong lớp “SuKien”,
có:

- Các biến thành viên:

o private char tenSuKien; // tên của sự kiện

o private string textSuKien;

/* đoạn text mô tả đặc điểm hình dáng mà sự kiện biểu diễn, chẳng hạn sự kiện
có text là “dang voc cao” sẽ chứa giá trị của đặc điểm hình dáng “dáng vóc
cao” */

Trang 15/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

o private Boolean giaTriSuKien;

// giá trị của sự kiện cho biết người dùng có hay không bị triệu chứng

- Các thuộc tính và các phương thức:

(Xin xem chi tiết trong class SuKien trong chương trình Demo kèm theo)

b) Biểu diễn các luật

Các luật là các tri thức chuyên gia được biểu diễn sao cho việc sử dụng
luật cho ta kết quả là dự đoán người dùng có “Số như thế nào đó”.

Các luật trong chương trình được biểu diễn theo cấu trúc gồm:

- Phần trái luật: (hay còn gọi là bộ khởi động) chứa danh sách các
sự kiện cần có để luật được áp dụng và các toán tử ^(hội),
@(tuyển) , ~(phủ định).

- Phần phải luật: chứa sự kiện biểu diễn các loại bệnh (cụ thể trong
chương trình là các bệnh từ 1 đến 9)

- Khi phần trái luật được thỏa mãn (nhận giá trị logic bằng True)
thì luật được khởi động và phần phải luật được áp dụng, nói cách
khác là người dùng “có số ” như thế nào đó ở vế phải luật.

Cụ thể trong chương trình mỗi luật sẽ là một đối tượng thể hiện của lớp
“Luat” gồm có:

- Các biến thành viên:

o private char tenLuat;// tên của luật

o private string traiLuat;// phần trái luật

Trang 16/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

o private string phaiLuat;// phần phải luật

o private string thanLuat;

// gồm phần trái luật và phần phải luật và dấu ngăn cách “->” giữa chúng

- Các thuộc tính và phương thức:

(Xin xem chi tiết trong class Luat trong chương trình Demo kèm theo)
Các luật trong chương trình sẽ được lưu trữ dưới dạng các xâu trong một
file *.txt (Luat.txt) trong thư mục Debug của chương trình.

c) Biểu diễn danh sách các sự kiện

Danh sách các sự kiện là một mảng một chiều với mỗi phần tử của nó là
một đối tượng sự kiện. Danh sách này được dùng để duyệt qua các sự kiện được
cung cấp bởi người dùng từ đó có được câu trả lời là: liệu có hay không luật nào
đó trong tập cơ sở luật được khởi động và áp dụng.

Cụ thể trong chương trình danh sách sự kiện được biểu diễn là một lớp
gồm có:

- Các biến thành viên:

o private int soSuKien;// số các sự kiện trong danh sách

o private SuKien[] dsSuKien;

// mảng môt chiều lưu trữ danh sách các sự kiện

- Các thuộc tính và phương thức:

(Xin xem chi tiết trong class DanhSachSuKien trong chương trình Demo
kèm theo)

Trang 17/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

d) Biểu diễn danh sách các luật

Tương tự danh sách sự kiện, danh sách luật này là một mảng một chiều
biểu diễn cho tập các luật có trong cơ sở tri thức của chương trình. Danh sách
này dùng để duyệt qua các luật và cho biết loại bệnh mà người dùng mắc phải
theo đúng luật.

Cụ thể trong chương trình danh sách luật được biểu diễn là một lớp gồm
có:

- Các biến thành viên:

o private int soLuat;// số các luật có trong danh sách luật

o private Luat[] dsLuat;// mảng một chiều lưu trữ các luật

- Các thuộc tính và phương thức:

(Xin xem chi tiết trong class DanhSachLuat trong chương trình Demo kèm
theo)

4) Thuật toán

Với chi tiết phần mô tả bài toán, cấu trúc dữ liệu như trên, sau đây sẽ là
thuật toán mà nhóm sử dụng để xây dựng hệ chuyên gia của mình.

Điều đầu tiên cần khẳng định:

- Các sự kiện sẽ được thu nạp từ người dùng theo cách thức là:
“chuyên gia” hỏi , “người dùng” trả lời bằng cách xác nhận sự
kiện “chuyên gia” hỏi là đúng hay sai (True or False).

Trang 18/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

- Khi nhận được thông tin từ “người dùng” thì “chuyên gia” sẽ sử
dụng các “suy luận logic” theo thuật toán để xác định bệnh mà
người dùng mắc phải.

- Việc hỏi sẽ dừng trong 2 trường hợp:

o Xác nhận được người dùng có “số” như thế nào đó bằng cách
sử dụng luật nào đó trong cớ sở luật đã có.

o Đã duyệt qua tất cả các sự kiện hoặc các luật mà không có luật
nào được áp dụng (chưa có luật xây dựng cho danh sách sự kiện
mà người dùng cung cấp).

Cụ thể cách giải quyết của nhóm là:

- Sử dụng tư tưởng của thuật toán suy diễn tiến để suy luận logic
tại mỗi bước.

- Cụ thể là coi mỗi lần “chuyên gia” hỏi và “người dùng” trả lời là
một bước lặp của vòng While (điều kiện dừng chưa thỏa).

- Khi đó thuật toán cụ thể sẽ như sau:

Sử dụng 3 danh sách là: dsLuatDaHoi (danh sách các luật đã được
chuyên gia hỏi rồi) và dsLuatCoTheHoi (danh sách các luật còn có thể hỏi,
chưa bị phủ định bởi người dùng), dsLuatChuaHoi (danh sách các luật chưa
được hỏi tới). Thuật toán gồm 3 bước cụ thể như sau:

Bước 1: Khởi tạo

Khởi tạo danh sách sự kiện ban đầu sẽ là danh sách mà tất cả các sự kiện
đều có giá trị là False (sai) (người dùng không có nhận xét nào về “số” của

Trang 19/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

mình).

Load danh sách luật từ cơ sở tri thức. dsLuatDaHoi = {rỗng},


dsLuatCoTheHoi = dsLuatChuaHoi = {danh sách luật có trong cơ sở tri thức}

Bước 2: Thu thập giá trị sự kiện và suy luận

Hỏi người dùng về một sự kiện nào đó theo một nguyên tắc nào đó.

Nếu sự kiện được trả lời là True (Đúng):

- Duyệt qua các tất cả các luật có trong danh sách luật mà có sự
kiện đang hỏi (nằm bên vế trái luật) xem nếu luật đó là luật “đã
được hỏi rồi” thì đưa nó vào dsLuatDaHoi

- dsLuatCoTheHoi sẽ là danh sách các luật có chứa sự kiện đang


xét.

- dsLuatChuaHoi không thay đổi.

Nếu sự kiện được trả lời là False (Sai)

- Các luật trong cơ sở tri thức mà có chứa sự kiện đang xét (nằm
bên vế trái luật) sẽ được đưa vào dsLuatDaHoi và được loại bỏ
khỏi dsLuatChuaHoi.

- dsLuatCoTheHoi được gán bằng dsLuatChuaHoi.

Bước 3: Điều kiện dừng

Lặp lại bước 2 cho đến khi 1 trong 2 trường hợp sau sảy ra

- Có luật được áp dụng: thì kết luận người dùng mắc bệnh tương
ứng mà luật biểu diễn và thông báo cho người dùng.

Trang 20/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

- Không có luật nào được áp dụng cả (hay nói cách khác tập luật
đang xét bị rỗng), thông báo ra cho người dùng biết
(dsLuatCoTheHoi = {rỗng}).

III. THIẾT KẾ CHƯƠNG TRÌNH DEMO

1) Ngôn ngữ và các công cụ

Nhóm sử dụng ngôn ngữ C# để xây dựng chương trình của mình.

Sử dụng công cụ là Visual Studio C# 2010, cơ sở tri thức là tập luật và


tập sự kiện được lưu trữ trong 2 file dạng *.txt là “Luat.txt” và “SuKien.txt”,
được đặt sẵn trong thư mục Debug của Project. Trong 2 file này các luật và sự
kiện được trình bày theo đúng quy cách sau:

- Tập luật trong “Luat.txt”:

o Con số đầu tiên lưu trữ số lượng luật, sau đó là dấu ‘:’ (dấu hai
chấm) để ngăn cách với phần tiếp theo.

o Tiếp theo là các ký tự biểu diễn cho tên của luật trong tập luật,
giữa tên các luật được ngăn cách nhau bởi dấu ‘,’ (dấu phẩy),
sau đó là dấu ‘;’ (dấu chấm phẩy) để ngăn cách với phần tiếp
theo.

o Tiếp theo là chi tiết phần thân luật, mỗi thân luật được ngăn
cách với nhau bằng dấu ‘,’(dấu phẩy).

o Kết thúc file bằng dấu ‘.’ (dấu chấm).

- Với tập sự kiện trong file “SuKien.txt”: tương tự cách tổ chức


của file “Luat.txt” cũng gồm 3 phần, giữa các phần được ngăn

Trang 21/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

cách nhau bằng dấu ‘;’, kết thúc file bằng dấu ‘.’, các thành phần
trong mỗi phần ngăn cách nhau bằng dấu ‘,’.

o Số đầu tiên lưu trữ số các sự kiện có trong danh sách sự kiện,
sau đó là dấu ‘:’ ngăn cách với phần 2.

o Phần 2 là danh sách tên của các sự kiện.

o Phần 3 là danh sách phần text của luật hay chính là phần xâu
biểu diễn cho triệu chứng mà sự kiện cần xác nhận.

2) Cài đặt

Cụ thể các modul chính đã được cài đặt trong chương trình gồm:

- Sự kiện click vào nút “Đúng” trong form “TƯ VẤN”.

- Sự kiện click vào nút “Sai” trong form “TƯ VẤN”.

- Class “MaySuyDien” chứa các phương thức cho phép sử lý các


sự kiện, các luật, các danh sách sự kiện, các danh sách luật, tìm ra
sự kiện cần hỏi, xuất tư vấn cho người dùng…

Chi tiết các modul mời xem trong chương trình Demo kèm theo của
nhóm.

3) Một số giao diện chính và kết quả chạy chương trình

Lưu ý: Để chạy được chương trình yêu cầu là phải có các file *.txt lưu
trữ luật (Luat.txt) và sự kiện (SuKien.txt) được đặt sẵn trong thư mục Debug
của Project “He chuyen gia” kèm theo.

Sau đây là hướng dẫn cụ thể các bước sử dụng chương trình:

Trang 22/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Bước 1: Khởi động chương trình

Để khởi động chương trình bạn vào thư mục Debug của Project “He
chuyen gia” kèm theo bài báo cáo, rồi click đúp vào file “He chuyen gia.exe”.
Giao diện WindowsForm khởi động đầu hiện ra là form “Main” giống như sau:

Khi đó dưới khay hệ thống, gần đồng hồ sẽ xuất hiện một biểu tượng nhỏ
của chương trình (biểu tượng được sử dụng là biểu tượng của bói toán mà các
thầy bói hay dùng).

Bước 2: Bắt đầu phiên tư vấn

Để bắt đầu một phiên tư vấn chúng ta có 3 cách:

- tại giao diện form “Main” click chuột trái vào menu “TƯ VẤN”.

Khi đó cửa sổ “TƯ VẤN” sẽ hiện ra như sau:

Trang 23/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Thao tác có thể làm trong 1 phiên tư vấn cụ thể như sau:

- Trả lời các câu hỏi từ hệ thống bằng cách xác nhận qua hai nút

và .

- Sau khi tìm ra bệnh của bạn hệ thống sẽ tư vấn cho bạn như thế
này: (Xem hình bên trang kế)

- Sau khi nhận được tư vấn bạn có thể lưu phiên làm việc lại bằng

cách nhấn nút . Khi đó chương trình yêu cầu bạn


chọn nơi lưu trữ file “Tư vấn” như sau:

- Tại giao diện này bạn cũng có thể chọn chọn nút để
mở form “QuanLyLuat” và thực hiện các thao tác với form
“QuanLyLuat” sẽ được trình bày bên dưới.

Trang 24/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Bước 3: Quản lý luật và sự kiện

Để mở tiến hành quản lý các luật và sự kiện cụ thể bạn có các cách sau:

- Tương tự việc mở form “TƯ VẤN” , với việc chọn lệnh là


“QUẢN LÝ LUẬT”.

Giao diện form “QUẢN LÝ LUẬT” hiện ra như sau:

Trang 25/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Thao tác cụ thể trong quản lý luật và sự kiện:

- Load sự kiện mới vào “rBoxSK”: click chọn menu “Tùy Chọn/
Load Sự Kiện”.

- Load luật mới vào “rBoxLuat”: click chọn menu “Tùy Chọn/
Load Luật”.

Bước 4: Trợ giúp

Tại giao diện bất kỳ trong chương trình, khi bạn cần thông tin trợ giúp từ
nhóm hãy nhấn “alt+g”.

Kết quả khi chạy chương trình: Với 9 luật suy diễn và 20 đặc điểm hình
dáng tương ứng 9 “số con người” chương trình đã đưa ra các tư vấn chính xác
cho người dùng.

4) Đánh giá và hướng phát triển

Chương trình có thể dự đoán được “số con người” với những đặc điểm
hình dáng cho trước. Và với “số con người” vừa dự đoán được chương trình có

Trang 26/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

thể đưa ra một số lời khuyên và nhận xét giúp con người sống tốt đẹp hơn.

Chương trình sử dụng các cấu trúc dữ liệu kiểu mảng một chiều để lưu
trữ các luật, các sự kiện vốn là các cấu trúc dữ liệu quen thuộc và dễ cài đặt, dễ
sử dụng và cũng khá hiệu quả trong việc biểu diễn dữ liệu. Thuật giải có độ
phức tạp O(n) (n là số các đặc điểm hình dáng được duyệt qua) có thể chấp
nhận được và là thuật giải hữu hạn các bước lặp.

Chương trình chạy tốt và đưa ra các tư vấn chính xác cho người dùng tùy
theo các sự kiện từ việc xác nhận các đặc điểm hình dáng của người dùng sau
một số lượng các “giao tiếp” (giữa người dùng và hệ thống) nhất định.

Hướng phát triển của đề tài:

Nếu có thể, chương trình có thể được phát triển theo hướng dự đoán
tương lai cho những đối tượng khác nhau, lứa tuổi khác nhau để việc dự đoán
đưa ra các nhận xét cho người sử dụng có thể được chính xác hơn, cụ thể hơn.
Với đúng ý tưởng và cách thức xây dựng như trên, chương trình có thể
phát triển hơn trong việc tăng số lượng luật và sự kiện để có thể dự đoán thêm
cho tương lai con người chuẩn xác hơn.

MỘT SỐ TÀI LIỆU THAM KHẢO

Trang 27/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

- Giáo trình Hệ Chuyên Gia, PGS.TS. Phan Huy Khánh, ĐH Đà Nẵng.

- Địa chỉ một số website tham khảo và download tài liệu:

http://it4student.com/forum/he-chuyen-gia/

http://hauionline.com/showthread.php?t=41888&page=2?
1.55.218.168#allowed

v.v…

LỜI KẾT

Trang 28/ 29
BTL Nhập Môn Hệ Chuyên Gia Nhóm 8 Lớp KHMT1-K5

Trong thời gian có hạn, bằng sự lỗ lực của nhóm và sự hướng dẫn giúp
đỡ nhiệt tình từ các thầy cô giáo đặc biệt là thầy Trần Thanh Hùng và các bạn
trong lớp Khmt1-K5 cuối cùng nhóm chúng em cũng đã hoàn thành được bài
tập lớn của mình một cách tốt đẹp. Với đề tài này chúng em đã tích lũy được
thêm nhiều kiến thức cũng như những kỹ năng mới mẻ đó là thành quả lớn nhất
mà chúng em nhận được. Vì vậy chúng em xin trân trọng gửi lời cảm ơn đến
các thầy cô và các bạn đã giúp đỡ chúng em hoàn thành đề tài này.

Trang 29/ 29

You might also like