Tải bản đầy đủ (.doc) (27 trang)

he chuyen gia nhan dang loai vat

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 (725.62 KB, 27 trang )

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

BÀI TẬP LỚN
MÔN: HỆ CHUYÊN GIA
Đề tài: Nhận dạng loài vật
GV hướng dẫn: ThS. Lê Thị Thủy
Lớp: CĐ-ĐH Khoa Học Máy Tính 1_K10
Nhóm:

Thân Quang Định
Lương Phương Đông

Hà Nội, 2016


LỜI NÓI ĐẦU
Ngày nay không ai có thể phủ nhận vai trò cực kỳ quan trọng của máy tính trong
nghiên cứu khoa học kỹ thuật cũng như đời sống. Máy tính đã làm được những điều
kỳ diệu và giải được những vấn đề tưởng chừng như nan giải. Càng ngày càng có
nhiều người tự hỏi, liệu máy tính có khả năng suy nghĩ như con người hay chưa,
chúng ta không trả lời câu hỏi đấy. Thay vào đó, chúng ta sẽ nêu ra những khác biệt
chủ yếu giữa cách làm việc của máy tính và bộ óc con người.
Một máy tính dù có mạnh đến đâu đi nữa, đều phải làm việc theo một chương trình
chính xác đã được hoạch định sẵn bởi các chuyên gia. Bài toán càng phức tạp thì việc
lập trình càng công phu. Trong khi đó người làm việc bằng cách học hỏi và rèn
luyện ,khi làm việc con người có khả năng liên tưởng,kết nối sự việc này với sự việc
khác và quan trọng hơn hết họ có thể sáng tạo.
Do khả năng liên tưởng, con người có thể dễ dàng làm nhiều điều mà việc lập trình
máy tính đòi hỏi mất nhiều công sức. Chẳng hạn như việc chuẩn đoán bệnh. Một
chuyên gia có thể phấn đoán được bênh nhân đó mắc bệnh gì. Một người bình thường


cũng có thể đoán nhận được bệnh đó là bệnh gì thông qua học hỏi. Nhưng thật khó
dạy cho máy tính làm được những việc ấy. Từ lâu các nhà khoa học đã nhận thấy
những ưu điểm của bộ óc con người và tìm cách bắt chước để thực hiện trên những
máy tính, tạo cho nó có khả năng nhận biết, chuẩn đoán như các chuyên gia.Các
phương pháp suy diễn đã ra đời từ nỗ lực đó. Nó thực sự được chú ý nhanh chóng trở
thành một hướng nghiên cứu đầy triển vọng trong mục đích xây dựng các máy thông
minh tiến gần tới trí tuệ con người. Đặc biệt là lĩnh vực chuẩn đoán, hệ chuyên gia.
Và bây giờ chúng ta sẽ đi tìm hiểu về việc làm sao mà máy tính có thể phán đoán,
tư duy như con người, với mức độ chinh xác cao đã được kiểm chứng.

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 2


MỤC LỤC
....................................................................................................................................................1
LỜI NÓI ĐẦU.............................................................................................................................2
MỤC LỤC...................................................................................................................................3
CHƯƠNG 1: TỔNG QUAN VỀ HỆ CHUYÊN GIA....................................................................4
1.HỆ CHUYÊN GIA LÀ GÌ?....................................................................................................4
2.THÀNH PHẦN CỦA HỆ CHUYÊN GIA...............................................................................6
3.LỊCH SỬ PHÁT TRIỂN HỆ CHUYÊN GIA..........................................................................7
4.ĐẶC TRƯNG VÀ ƯU ĐIỂM HỆ CHUYÊN GIA..................................................................9
5.LĨNH VỰC ỨNG DỤNG....................................................................................................11
CHƯƠNG 2 XÂY DỰNG HỆ CHUYÊN GIA NHẬN DẠNG LOÀI VẬT...................................13
1.SUY DIỄN TIẾN TRONG HỆ CHUYÊN GIA....................................................................13
2.XÂY DỰNG HỆ CHUYÊN GIA NHẬN DẠNG LOÀI VẬT.................................................14
1.1 Giới thiệu hệ chuyên gia nhận dạng loài vật..............................................................14
1.2 Giao diện chương trình...............................................................................................14

a.Form sự kiện..................................................................................................................15
b.Form luật........................................................................................................................20
c.Class Luật......................................................................................................................24
d.Class sự kiện.................................................................................................................24
KẾT LUẬN................................................................................................................................26
TÀI LIỆU THAM KHẢO............................................................................................................27

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 3


CHƯƠNG 1: TỔNG QUAN VỀ HỆ CHUYÊN GIA
1. HỆ CHUYÊN GIA LÀ GÌ?
Theo E.Feigenbaum: Hệ chuyên gia (Expert System) là một chương trình máy
tính thông minh sử dụng tri thức (Knowledge) và các thủ tục suy luận (inference
procedures) để giải những bài toán tương đối khó khăn đòi hỏi những chuyên gia
mới giải được.
Chuyên gia là một hệ thống tin học có thể mô phỏng (emulates) năng lực quyết
đoán (decision) và hành động (making abilily) của một chuyên gia (con người). Hệ
chuyên gia là một trong những lĩnh vực ứng dụng của trí tuệ nhân tạo (Artificial
Intelligence) như hình dưới đây.

Hình 1.1 Một số lĩnh vực ứng dụng của trí tuệ nhân tạo
Hệ chuyên gia sử dụng các tri thức của những chuyên gia để giải quyết các vấn
đề (bài toán) khác nhau thuộc mọi lĩnh vực.
Tri thức (knowledge) trong hệ chuyên gia phản ánh sự tinh thông được tích tụ từ
sách vở, tạp chí, từ các chuyên gia hay các nhà bác học. Các thuật ngữ hệ chuyên
gia, hệ thống dựa trên tri thức (knowledge-based system) hay hệ chuyên gia dựa
trên tri thức (knowledge-based expert system) thường có cùng nghĩa.

Một hệ chuyên gia bao gồm ba thành phần chính: là cơ sở tri thức (knowledge
based), máy suy diễn hay mô tơ suy diễn (inference engine) và hệ thống giao tiếp
với người sử dụng (user interface). Cơ sở tri thức chứa các tri thức để từ đó ,máy
suy diễn tạo ra câu trả lời cho người sử dụng thông qua hệ thống giao tiếp.

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 4


Người sử dụng (user) cung cấp các sự kiện (facts) là những gì đã biết, đã có thật
hay những thông tin có ích cho hệ chuyên gia và nhận được những câu trả lời là
những lời khuyên hay những gợi ý đúng đắn (expertise).
Hoạt động của một hệ chuyên gia dựa trên tri thức được minh họa như sau:

Hình 1.2 Hoạt động của hệ chuyên gia
Mỗi hệ chuyên gia chỉ đặc trưng cho một lĩnh vực vấn đề (problem domain) nào
đó,như y học,tài chính,khoa học hay công nghệ,vv…,mà không phải cho bất cứ
một lĩnh vực vấn đề nào.
Tri thức chuyên gia để giải quyết một vấn đề đặc trưng được gọi là lĩnh vực tri
thức(knowledge domain).

Hình 1.3 Quan hệ giữa các lĩnh vực vấn đề và lĩnh vực tri thức.

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 5


Ví dụ: hệ chuyên gia về lĩnh vực y học để phát hiện các căn bệnh lây nhiễm sẽ

có nhiều tri thức về một số triệu chứng lây bệnh ,lĩnh vực tri thức y học bao gồm
các căn bệnh ,triệu chứng và chữa trị.
Chú ý rằng lĩnh vực tri thức hoàn toàn nằm trong lĩnh vực vấn đề .Phần bên
ngoài lĩnh vực tri thức nói lên rằng không phải là tri thức cho mọi vấn đề.
Tùy theo yêu cầu của người sử dụng mà có nhiều cách nhìn nhận khác nhau về
một hệ chuyên gia.
Người sử dụng

Vấn đề đặt ra

Người quản trị

Tôi có thể dùng nó để làm gì?

Kỹ thuật viên

Làm cách nào để tôi vận hành nó tốt nhất

Nhà nghiên cứu

Làm sao để tôi có thể mở rông nó?

Người sử dụng

Nó sẽ giúp tôi cái gì?
Nó có rắc rối và tốn kém không?
Nó có đáng tin cậy không?

2. THÀNH PHẦN CỦA HỆ CHUYÊN GIA
Hệ chuyên gia có các thành phần cơ bản sau:

Bộ giao diện người – máy (User Interface): thực hiện giao tiếp giữa HCG và
người sử dụng. Bộ này nhận các thông tin từ người sử dụng và đưa ra các câu
trả lời, các lời khuyên, các giải thích về lĩnh vực đó.
Môtơ suy diễn (Inference Engice): HCG mô hình hóa cách lập luận của con
người với module động cơ suy diễn. HCG chứa động cơ suy diễn để tiến hành
các suy diễn nhằm tạo ra các tri thức mới dựa trên các sự kiện, tri thức trong
vùng nhớ làm việc và trong cơ sở tri thức. Hai kiểu suy diễn chính trong động
cơ suy diễn là suy diễn tiến và suy diễn lùi.
Cơ sở tri thức (Knowledge Base): lưu trữ, biễu diễn các tri thức mà hệ đảm
nhận, làm cơ sở cho hoạt động của hệ. CSTT bao gồm cơ sở sự kiện (facts) và
cơ sở luật (rules).
Bộ giải thích (Explantion System): Trả lời hai câu hỏi là tại sao (why) và bằng
cách nào (how) khi có yêu cầu từ người sử dụng.

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 6


Bộ tiếp nhân tri thức (Knowledge Editor): Làm nhiệm vụ thu nhận tri thức từ
chuyên gia con nguời, từ kỹ sư xử lý tri thức và người sử dụng thông qua các
yêu cầu và lưu trữ vào cơ sở tri thức.
Vùng nhớ làm việc (Working Memory): chứa các sự kiện liên quan được phát
hiện trong quá trình đưa ra kết luận. Bộ nhớ làm việc tương đương với bộ nhớ
ngắn hạn (Short – Term Memory) trong mô hình giải vấn đề của con người.

Hình 1.4 Các thành phần của hệ chuyên gia
3. LỊCH SỬ PHÁT TRIỂN HỆ CHUYÊN GIA
Sau đây là một số sự kiện quan trọng trong lịch sử phát triểu HCG:
Năm


Các sự kiện

1943 Dịch vụ bưu điện, mô hình neural của Mc Culloch and Pitts Model.
1954 Thuật toán Markov điều kiện thực thi các luật.
1956 Hội thảo Dartmouth, lý luận logic, tìm kiếm nghiệm suy (heuristic

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 7


search), thống nhất thuật ngữ trí tuệ nhân tạo.
1957 Rosenblatt phát minh khả năng nhận thức, Newell, Shaw và Simon đề
suất giải bài toán tổng quát (GPS: Genenal Problem Solver ).
1958 Mc Carthy đề xuất ngôn ngữ trí tuệ nhân tạo LISA( LISA AI language).
1962 Nguyên lý Rosenblatt’s về chức năng thần kinh trong nhận thức
(Rosenblatt’s Principles of Neurodynamicdynamics on Perceptions).
1965 Phương pháp hợp giải Robinson. Ứng dụng logic mờ (fuzzy logic) trong
suy luận về các đối tượng mờ (fuzzy object) của Zadeh. Xây dựng hệ
chuyên gia đầu tiên về nha khoa DENDRAL (Feigenbaum,Buchanan,et.al)
1968 Mạng ngữ nghĩa (semantic nets), mô hình bộ nhớ kết hợp (asociative
memory model) của Quillian.
1969 Hệ chuyên gia về toán học MACSYMA (Martin and Moses).
1970 Ứng dụng ngôn ngữ PROLOG(Colmerauser,Roussell,et,al.)
1973 Hệ chuyên gia MYCIN về chuẩn trị y học (Shortli ffe,et,al.)
1975 Lý thuyết khung (frames), biểu diễn tri thức (knowledge reresentation )
(Mínky)
1976 Toán nhân tạo (AM: Artificial Mathematician) (Lenat). Lý thuyết
Dempster-Shafer về tính hiển nhiên của lập luận không chắc chắn

(Dempster-Shafer theory of Evidence for reason ubder uncertainty).Ứng
dụng hệ chuyên gia PROSPECTOR trong khai thác hầm mỏ (Duda,Har).
1977 Sử dụng ngôn ngữ chuyên gia OPS( OPS expert system shell ) trong hệ
chuyên gia XCON/R1 (Forgy).
1979 Thuật toán mạng về so khớp nhanh (rete algorithm for fast pattern
matching) của Forgy; thương mại hóa các ứng dụng về trí tuệ nhân tạo.
1980 Ký hiệu học (symbolics), Xây dựng các máy LISP (LISP machines) từ
LMI.
1982 Hệ chuyên gia về toán học (SMP math system ) ; mạng nơ-ron Hopfield
(Hopfield neural net ); dự án xây dựng máy tính thông minh thế hệ 5 tại
nhật bản (Japanese Fifth Generation Project to develop intelligent
computers).
1983 Bộ công cụ phục vụ hệ chuyên gia KEE (KEE expert system tool )
(intrlli Corp ).

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 8


1985 Bộ công cụ phục vụ hệ chuyên gia CLIPS (CLIPS expert system tool
(NASA).
4. ĐẶC TRƯNG VÀ ƯU ĐIỂM HỆ CHUYÊN GIA
Đặc trưng của một hệ chuyên gia:
-

Tách tri thức khỏi điều khiển:

Thông thường một chương trình truyền thống thì khối điều khiển và tri thức gắn liền
với nhau. Điều này gây ra khó khăn khi phát triển và thay đổi chương trình.

Trong HCG, cơ sở tri trức và môtơ suy diễn độc lập với nhau. Điều này giúp việc phát
triển và bảo trì HCG được thuận lợi hơn.
-

Có tri thức chuyên gia:

Một đặc tính quan trọng của tri thức được sử dụng trong HCG đó là tri thức của
chuyên gia. Các tri thức này được thu nhận và mã hóa trong HCG. Nó bao gồm tri
thức lĩnh vực và kỹ năng giải quyết bài toán của chuyên gia.
Thuật ngữ chuyên gia để chỉ một người có kỹ năng giỏi và giải quyết bài toán đạt hiệu
quả cao. Họ có thể là bác sỹ, nhà kinh tế…
-

Tập trung nguồn chuyên gia:

Hầu hết các chuyên gia có kỹ năng giỏi giải quyết bài toán thuộc lĩnh vực của họ. Tuy
nhiên các chuyên gia có thể không giải quyết được các bài toán không thuộc lĩnh vực
của họ. HCG cũng tương tự như vậy, nó chỉ tinh thông các vấn đề được huấn luyện,
còn các vấn đề bên ngoài nó khó có khả năng giải quyết.
-

Lập luận dựa trên các ký hiệu:

HCG biểu diễn tri thức ở dạng ký hiệu, ta có thể sử dụng ký hiệu để biểu diễn nhiều
dạng tri thức khác nhau. Chẳng hạn như các sự kiện, luật…
-

Lập luận may rủi:

Các chuyên gia tinh thông trong việc sử dụng các kinh nghiệm của họ để giải quyết

bài toán đang xét một cách hiệu quả. Bằng các kinh nghiệm mà họ hiểu vấn đề qua
thực tế và giữ nó dưới dạng may rủi. Các dạng may rủi điển hình khi chuyên gia giải
quyết vấn đề trong các trường hợp:
o Với vấn đề hỏng hóc xe, luôn kiểm tra hệ thống điện đầu tiên.
o Hiếm khi người ta mặc áo bông trong ngày hè.
o Nếu gặp ung bướu thì luôn kiểm tra lịch sử gia đình bệnh nhân.
-

Khả năng giải quyết vấn đề bị hạn chế:

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 9


Trước khi dự án HCG bắt đầu, ta phải xác định xem vấn đề có thể giải được hay
không. Điều này có thể gây ngạc nhiên cho người mới bắt đầu tiếp xúc với HCG bởi
vì họ thấy rằng TTNT có thể giải được bài toán bất kì. Nếu không có chuyên gia để
giải vấn đề thì ta cũng khó có hy vọng HCG giải tốt hơn.
-

Độ phức tạp của bài toán:

Các bài toán nên có độ phức tạp lập luận không quá dễ dàng và cũng không quá khó.
Nói chung nếu nhiệm vụ quá dễ và chỉ cần HCG giải trong ít phút thì khó có thể đánh
giá được công sức của HCG. Vấn đề không quá phức tạp đến mức gây ra tình trạng
không quản lý nổi ở tầm của chuyên gia. Nếu vấn đề có độ phức tạp lớn thì cố gắng
chia thành các bài toán nhỏ hơn, mỗi bài toán con này ta có thể giải bằng HCG.
-


Chấp nhận sai lầm:

Người ta coi HCG giải quyết vấn đề như chuyên gia, tức là chấp nhận hệ thống có thể
sai lầm. Do HCG có thể mắc sai lầm, khi đó ta có thể thấy rằng chương trình truyền
thống có ưu thế hơn HCG. Tuy nhiên so sánh tổng thể người ta thấy rằng trong một số
trường hợp HCG có lời giải sai lầm mang tính người hơn do xử lý các thông tin không
chính xác, thậm chí mâu thuẫn nhau.
Một số lý do HCG được phát triển để thay thế các chuyên gia là:
• Hiệu quả cao (high performance). Khả năng trả lời và mức độ tinh thông
bằng hoặc cao hơn so với chuyên gia trong cùng lĩnh vực.
• Thời gian trả lời thỏa đáng (adequate response time). Thời gian trả lời hợp
lý, bằng hoặc nhanh hơn so với chuyên gia để đi đến cùng một quyết định.
Hệ chuyên gia là một hệ thống thời gian thực(real time system ).
• Độ tin cậy cao ( good reliability). Không thể xảy ra sự cố hoặc giảm sút
độ tin cậy khi sử dụng .
• Dễ hiểu (understandable). Hệ chuyên gia giải thích các bước suy luận một
cách dễ hiểu và nhất quán, không giống như cách trả lời bí ẩn của các hộp
đen (black box).
• HCG thay thế chuyên gia tại những nơi xa, nguy hiểm.
• Việc tự động hóa công việc trong dây chuyền cần đến HCG mà con người
đáp ứng được.
• HCG không những trợ giúp người bình thường mà còn hỗ trợ chuyên gia.
• Dùng lại các tri thức chuyên gia khi chuyên gia không còn nhớ được.
Những ưu điểm của hệ chuyên gia:
• Phổ cập (increased availability). Là sản phẩm chuyên gia, được phát triển
không ngừng với hiệu quả sử dụng là không phủ nhận.
• Giảm giá thành (reduced cost).

Xây dựng hệ chuyên gia nhận dạng loài vật


Page 10


• Giảm rủi ro (reduced dangers). Giúp con người tránh được trong các môi
trường rủi ro nguy hiểm.
• Tính thường trực (permanance ). Bất kể lúc nào cũng có thể khai thác sử
dụng, trong khi con người có thể mệt mỏi, nghỉ ngơi hay vắng mặt.
• Đa lĩnh vực (multiple expertise). Chuyên gia về nhiều lĩnh vực khác nhau
và được khai thác đồng thời bất kể thời gian sử dụng.
• Độ tin cậy (increased relialility). Luôn đảm bảo độ tin cậy khi khai thác.
• Khả năng giảng giải (explanation ). Câu trả lời và mức độ tinh thông được
giảng giải rõ ràng, chi tiết, dễ hiểu.
• Khả năng trả lời (fast reponse). Trả lời theo thời gian thực, khách quan.
• Tính ổn định, suy luận có lý và đầy đủ mọi lúc mọi nơi (steady, une
motional, and complete response at all times).
• Trợ giúp thông minh như một người hướng dẫn (intelligent – tutor).
• Có thể truy cập như một cơ sở dữ liêu thông minh (intelligent database ).
5. LĨNH VỰC ỨNG DỤNG
Cho đến nay, hàng trăm hệ chuyên gia đã được xây dựng và đã được báo cáo thường
xuyên trong các tạp chí, sách báo và hội thảo khoa học. Ngoài ra HCG cũng được sử
dụng trong các công ty, các tổ chức quân sự mà không được công bố vì lý do bảo mật.
Bảng dưới đây liệt kê một số lĩnh vực ứng dụng HCG
Lĩnh vực

Ứng dụng phát triển

Cấu hình (Configuration)

Tập hợp thích đáng những thành phần của hệ thống
theo cách riêng


Chẩn đoán (Diagnosis)

Lập luận dựa trên chứng cứ quan sát được

Truyền đạt (Instruction)

Dạy học kiểu thông minh sao cho sinh viên có thể
hỏi vì sao (why), như nào (how), cái gì (what if)
giống như hỏi một thầy giáo.

Giải thích (Interpretation)

Giải thích dữ liệu thu nhận được

Kiểm tra (Monitoring)

So sánh dữ liệu thu lượm được với dữ liệu chuyên
môn để đánh giá hiệu quá

Lập kế hoạch (Planning)

Lập kế hoạch sản xuất theo yêu cầu

Dự đoán (Prognosis)

Dự đoán một kết quả từ một tình huống xảy ra

Chữa trị (Remedy)


Chỉ định cách thụ lý một vấn đề

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 11


Điều khiển (Control)

Điều khiển một quá trình, đòi hỏi diễn giải, chẩn
đoán, kiểm tra, lập kế hoạch, dự đoán và chữa trị

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 12


CHƯƠNG 2 XÂY DỰNG HỆ CHUYÊN GIA NHẬN
DẠNG LOÀI VẬT
1. SUY DIỄN TIẾN TRONG HỆ CHUYÊN GIA
Có nhiều phương pháp tổng quát để suy luận trong các chiến lược giải quyết các
vấn đề của hệ chuyên gia. Những phương pháp hay gặp là suy diễn tiến (forward
chaining ), suy diễn lùi (backward chaining) và phối hợp hai phương pháp này (mixed
chaining). Những phương pháp khác là phân tích phương tiện (means-end analysis ),
rút gọn vấn đề (problem reduction), quay lui (backtracking), kiểm tra lập kế hoạch
(plan-geenerate-test), lập kế hoạch phân cấp (heirachical planning)…
Sau đây sẽ giới thiệu về phương pháp suy luận theo suy diễn tiến:
Suy diễn tiến (forward charning) là lập luận từ các sự kiện, sự việc để rút ra các kết
luận.
Ví dụ: Nếu thấy trời mưa trước khi ra khỏi nhà (sự kiện) thì phải lấy áo mưa (kết

luận).
Trong phương pháp này, người sử dụng cung cấp các sự kiện cho hệ chuyên gia để
hệ thống (máy suy diễn) tìm cách rút ra các kết luận có thể. Kết luận được xem là
những thuộc tính có thể được gán giá trị. Trong số những kết luận này, có thể có
những kết luận làm người sử dụng quan tâm, một số khác không nói lên điều gì, một
số khác có thể vắng mặt.
Các sự kiện thường có dạng :
Atthibute = value
Lần lượt các sự kiện trong cơ sở tri thức được chọn và hệ thống xem xét tất cả các
luât mà các sự kiện này xuất hiện như là tiên đề. Theo nguyên tắc lập luận trên, hệ
thống sẽ lấy ra những luật thỏa mãn. Sau khi gán giá trị cho các thuộc tính thuộc kết
luận tương ứng, người ta nói rằng các sự kiện đã được thỏa mãn. Các thuộc tính được
gán giá trị sẽ là một phần của kết quả chuyên gia. Sau khi mọi sự kiện đã được xem
xét, kết quả được xuất ra cho người sử dụng.

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 13


2. XÂY DỰNG HỆ CHUYÊN GIA NHẬN DẠNG LOÀI VẬT
1.1 Giới thiệu hệ chuyên gia nhận dạng loài vật
Hệ chuyên gia nhận dạng loài vật trợ giúp người xác định được loài vật thông
qua đặc tính của chúng. Hệ thống sẽ dựa trên đặc tính của các loài động vật
như sinh đẻ, cách thức hoạt động, giá tri của chúng với con người, vv…
1.2 Giao diện chương trình
Giao diện chính chương trình

Giao diện form luật


Xây dựng hệ chuyên gia nhận dạng loài vật

Page 14


Giao diện form sự kiện

a. Form sự kiện
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.IO;

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 15


using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HCG_NHOM8
{
public partial class frmSuKien : Form
{
SuKien_BUS sk_bus = new SuKien_BUS();
Luat_BUS l_bus = new Luat_BUS();
static int vt;
static String imFileName="";
static String imSource="";
String path = Path.GetFullPath(".");//duong dan
public frmSuKien()
{
InitializeComponent();
getPath();
}
public void getPath()
{
path = path.Substring(0, path.LastIndexOf(@"\"));
path = path.Substring(0, path.LastIndexOf(@"\"));
path += @"\" + "Image" + @"\";
}
private void btthoat_Click(object sender, EventArgs e)
{
this.Close();
}
private void frmSuKien_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 0;
sk_bus.load(listView1);
btthem.Enabled = true;

btsua.Enabled = false;
btxoa.Enabled = false;
btluu.Enabled = true;
bthuy.Enabled = true;
btthoat.Enabled = true;
}
private void btthem_Click(object sender, EventArgs e)
{
txtTenSK.Text = "";
txtNgunghia.Text = "";
btthem.Enabled = true;
btsua.Enabled = false;
btxoa.Enabled = false;
btluu.Enabled = true;
bthuy.Enabled = true;
btthoat.Enabled = true;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
txtTenSK.Text = "a"+(sk_bus.findMaxIndex("a")+1);
txtNgunghia.Text = "";
ptAnh.Visible = false;

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 16



}

listView1.Items.Clear();
sk_bus.showWithFindWord(listView1, "a");
break;
case 1:
txtTenSK.Text = "b" + (sk_bus.findMaxIndex("b") + 1);
txtNgunghia.Text = "";
ptAnh.Visible = false;
listView1.Items.Clear();
sk_bus.showWithFindWord(listView1, "b");
break;
case 2:
//MessageBox.Show
txtTenSK.Text = "c" + (sk_bus.findMaxIndex("c") + 1);
txtNgunghia.Text = "";
ptAnh.Visible = true;
listView1.Items.Clear();
sk_bus.showWithFindWord(listView1, "c");
break;

}
private void btluu_Click(object sender, EventArgs e)
{
int n = comboBox1.SelectedIndex;
if (!txtNgunghia.Text.Trim().Equals(""))
{
SuKien sukien = new SuKien();
sukien.Mask = txtTenSK.Text.Trim();

sukien.Tensukien = txtNgunghia.Text.Trim();
if (sukien.Mask.IndexOf("a") >= 0 || sukien.Mask.IndexOf("b") >= 0)
{
sukien.Source = "";
if (MessageBox.Show("Bạn muốn Thêm Sự Kiện Này?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
sk_bus.them(sukien);
comboBox1_SelectedIndexChanged(sender, e);
}
}
else
if (sukien.Mask.IndexOf("c") >= 0)// trả về chỉ số đầu tiền chuỗi
{
if (ptAnh.ImageLocation != null)
if (!File.Exists(imFileName))
{
File.Copy(imSource, imFileName);
sukien.Source = imSource.Substring(imSource.LastIndexOf(@"\") + 1);
if (MessageBox.Show("Bạn muốn Thêm Sự Kiện Này?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
sk_bus.them(sukien);
comboBox1_SelectedIndexChanged(sender, e);
}
}
else MessageBox.Show("Ảnh Đã Tồn Tại!", "Thông Báo");
else if (ptAnh.ImageLocation == null)
{
sukien.Source = "";

if (MessageBox.Show("Bạn muốn Thêm Sự Kiện Này?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 17


{
sk_bus.them(sukien);
comboBox1_SelectedIndexChanged(sender, e);
}

}

}

}
}
else MessageBox.Show("Bạn Chưa Điền Đủ Thông Tin!","Thông Báo!");

private void bthuy_Click(object sender, EventArgs e)
{
comboBox1_SelectedIndexChanged(sender, e);
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void listView1_ItemSelectionChanged(object sender,
ListViewItemSelectionChangedEventArgs e)

{
btthem.Enabled = true;
btsua.Enabled = true;
btxoa.Enabled = true;
btluu.Enabled = false;
bthuy.Enabled = false;
btthoat.Enabled = true;
vt = e.ItemIndex;
txtTenSK.Text = listView1.Items[vt].SubItems[0].Text;
txtNgunghia.Text = listView1.Items[vt].SubItems[1].Text;
//MessageBox.Show();
switch (listView1.Items[vt].SubItems[0].Text.Trim()[0])
{
case 'a':
comboBox1.SelectedIndex = 0;
break;
case 'b':
comboBox1.SelectedIndex = 1;
//getPath();
//ptAnh.ImageLocation =path+ sk_bus.findSource(txtTenSK.Text.Trim());
break;
case 'c':
comboBox1.SelectedIndex = 2;
getPath();
ptAnh.ImageLocation =path+ sk_bus.findSource(txtTenSK.Text.Trim());
break;
}

}


private void btsua_Click(object sender, EventArgs e)
{
int n = comboBox1.SelectedIndex;
if (!txtNgunghia.Text.Trim().Equals(""))
{
SuKien sukien = new SuKien();
sukien.Mask = txtTenSK.Text.Trim();
sukien.Tensukien = txtNgunghia.Text.Trim();
if (sukien.Mask.IndexOf("a") >= 0 || sukien.Mask.IndexOf("b") >= 0)
{

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 18


sukien.Source = "";
if (MessageBox.Show("Bạn muốn sua su kien?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
sk_bus.sua(sukien);
comboBox1_SelectedIndexChanged(sender, e);
btthem.Enabled = true;
btsua.Enabled = false;
btxoa.Enabled = false;
btluu.Enabled = true;
bthuy.Enabled = true;
btthoat.Enabled = true;
}
}

else
{
if (!File.Exists(imFileName))
{
File.Copy(imSource, imFileName);
sukien.Source = imSource.Substring(imSource.LastIndexOf(@"\") + 1);
if (MessageBox.Show("Bạn muốn sua su kien?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
sk_bus.sua(sukien);
comboBox1_SelectedIndexChanged(sender, e);
btthem.Enabled = true;
btsua.Enabled = false;
btxoa.Enabled = false;
btluu.Enabled = true;
bthuy.Enabled = true;
btthoat.Enabled = true;
}
}
else MessageBox.Show("Ảnh Đã Tồn Tại!", "Thông Báo");
}
}
}
private void btxoa_Click(object sender, EventArgs e)
{
int n = comboBox1.SelectedIndex;
if (!txtNgunghia.Text.Trim().Equals(""))
{
SuKien sukien = new SuKien();
sukien.Mask = txtTenSK.Text.Trim();

sukien.Tensukien = txtNgunghia.Text.Trim();
if (MessageBox.Show("Bạn muốn Xóa Sự Kiện?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
sk_bus.xoa(sukien);
comboBox1_SelectedIndexChanged(sender, e);
btthem.Enabled = true;
btsua.Enabled = false;
btxoa.Enabled = false;
btluu.Enabled = true;
bthuy.Enabled = true;
btthoat.Enabled = true;
}
}
}

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 19


private void ptAnh_Click(object sender, EventArgs e)
{
MessageBox.Show(Path.GetFullPath("."));
OpenFileDialog open = new OpenFileDialog();
open.Filter = open.Filter = "JPG file (*.jpg)|*.jpg|All File (*.*)|*.*";
open.FilterIndex = 1;
open.RestoreDirectory = true;
if (open.ShowDialog() == DialogResult.OK)
{

ptAnh.ImageLocation = open.FileName;
path+= open.FileName.Substring(open.FileName.LastIndexOf(@"\") + 1);
imSource = open.FileName;
imFileName = path;
}
}
}

}

b. Form luật
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;

namespace HCG_NHOM8

{
public partial class frmLuat : Form
{
Luat_BUS l_bus = new Luat_BUS();
SuKien_BUS sk_bus = new SuKien_BUS();
static int vt;
static String vtrai = "";
static String txtClick="";
static int vtListRuller;
public frmLuat()
{
InitializeComponent();
}
private void btthoat_Click(object sender, EventArgs e)
{
this.Close();
}
public void load()
{
l_bus.load(listLuat);
sk_bus.load(listSukien);
btthem.Enabled = true;
btsua.Enabled = false;
btxoa.Enabled = false;
btluu.Enabled = true;
bthuy.Enabled = true;
btthoat.Enabled = true;
}
private void frmLuat_Load(object sender, EventArgs e)


Xây dựng hệ chuyên gia nhận dạng loài vật

Page 20


{
load();
}
private void btthem_Click(object sender, EventArgs e)
{
txtVT.Text = "";
txtVP.Text = "";
btthem.Enabled = true;
btsua.Enabled = false;
btxoa.Enabled = false;
btluu.Enabled = true;
bthuy.Enabled = true;
btthoat.Enabled = true;
}
private void listSukien_ItemSelectionChanged(object sender,
ListViewItemSelectionChangedEventArgs e)
{
vt = e.ItemIndex;
}
private void btvetrai_Click(object sender, EventArgs e)
{
if (txtVT.Text.Equals(""))
txtVT.Text += listSukien.Items[vt].SubItems[0].Text;
else txtVT.Text += "^" + listSukien.Items[vt].SubItems[0].Text;
}

private void bthuychon_Click(object sender, EventArgs e)
{
switch(txtClick)
{
case "VT":
{
String t = txtVT.Text;
if (!t.Equals(""))
{
if (t.IndexOf("^") >= 0)
{
t = t.Substring(0, t.LastIndexOf("^"));
txtVT.Text = t;
}
else if (t.IndexOf("^") < 0)
txtVT.Text = "";
}
}
break;
case "VP":
{
txtVP.Text = "";
}
break;
}
}
private void listSukien_SelectedIndexChanged(object sender, EventArgs e)
{
}


Xây dựng hệ chuyên gia nhận dạng loài vật

Page 21


private void btluu_Click(object sender, EventArgs e)
{
if (!txtVP.Text.Trim().Equals("") || !txtVT.Text.Trim().Equals(""))
{
Luat luat = new Luat();
luat.Maluat = "r" + (l_bus.findMaxIndexMaluat() + 1);
luat.Vetrai = txtVT.Text.Trim();
luat.Vephai = txtVP.Text.Trim();
if (MessageBox.Show("Bạn muốn Thêm Luật?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
l_bus.them(luat);
listLuat.Items.Clear();
load();
}
}
else MessageBox.Show("Bạn chưa Chọn Đủ Dữ Liệu");
}
private void btvephai_Click(object sender, EventArgs e)
{
if (txtVP.Text.Trim().Equals(""))
{
String t = listSukien.Items[vt].SubItems[0].Text;
if (t.Trim().IndexOf("a") < 0)
txtVP.Text = t;

else MessageBox.Show("Không Thể Thêm Vào Vế Phải","Thông Báo");
}
else
MessageBox.Show("Không Thể Thêm Vào Vế Phải Nữa!","Thông Báo!");
}
private void listLuat_ItemSelectionChanged(object sender,
ListViewItemSelectionChangedEventArgs e)
{
vtListRuller = e.ItemIndex;
String luat=listLuat.Items[vtListRuller].SubItems[1].Text.Trim();
txtVT.Text = luat.Substring(0,luat.IndexOf("->"));
txtVP.Text = luat.Substring(luat.IndexOf("->")+2);
btthem.Enabled = true;
btsua.Enabled = true;
btxoa.Enabled = true;
btluu.Enabled = false;
bthuy.Enabled = false;
btthoat.Enabled = true;
}
//
private void btsua_Click(object sender, EventArgs e)
{
if (!txtVP.Text.Trim().Equals("") || !txtVT.Text.Trim().Equals(""))
{
Luat luat = new Luat();
luat.Maluat = listLuat.Items[vtListRuller].SubItems[0].Text.Trim();
luat.Vetrai = txtVT.Text.Trim();
luat.Vephai = txtVP.Text.Trim();
if (MessageBox.Show("Bạn Muốn Sửa Luật?", "Xác nhận",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{
l_bus.sua(luat);
listLuat.Items.Clear();

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 22


load();
}

}

}
else MessageBox.Show("Bạn Chưa Chọn Đủ Dữ Liệu!","Thông Báo!");
txtVP.Text = "";
txtVT.Text = "";

private void txtVT_Click(object sender, EventArgs e)
{
txtClick = "VT";
}
private void txtVP_Click(object sender, EventArgs e)
{
txtClick = "VP";
}
private void bthuy_Click(object sender, EventArgs e)
{
}

private void btxoa_Click(object sender, EventArgs e)
{
Luat luat = new Luat();
luat.Maluat = listLuat.Items[vtListRuller].SubItems[0].Text.Trim();
if (MessageBox.Show("Bạn muốn Xóa Luật?", "Xác nhận", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
l_bus.xoa(luat);
listLuat.Items.Clear();
load();
}
txtVP.Text = "";
txtVT.Text = "";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
listSukien.Items.Clear();
sk_bus.showWithFindWord(listSukien, "a");
break;
case 1:
listSukien.Items.Clear();
sk_bus.showWithFindWord(listSukien, "b");
break;
case 2:
listSukien.Items.Clear();
sk_bus.showWithFindWord(listSukien, "c");
break;

}
}
private void listLuat_SelectedIndexChanged(object sender, EventArgs e)
{
}

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 23


}
}

c. Class Luật
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace HCG_NHOM8
{
class Luat

{
String maluat, vephai, vetrai;
public String Vetrai
{
get { return vetrai; }
set { vetrai = value; }
}
public String Vephai
{
get { return vephai; }
set { vephai = value; }
}
public String Maluat
{
get { return maluat; }
set { maluat = value; }
}
}
}

d. Class sự kiện
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;

System.Text;
System.Threading.Tasks;

namespace HCG_NHOM8
{
class SuKien
{
String mask, tensukien, source;
public String Source
{
get { return source; }
set { source = value; }
}
public String Tensukien
{

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 24


}

get { return tensukien; }
set { tensukien = value; }

public String Mask
{
get { return mask; }
set { mask = value; }

}
}
}

Xây dựng hệ chuyên gia nhận dạng loài vật

Page 25


×