Em đã xây dựng một chương trình môphỏng một chuyên gia, có khả năng nhận biết các biển báo giao thông, bằngcách hỏi người sử dụng thông tin về biển báo đó.. Chương trình sẽthông báo kết
Trang 1LỜI CÁM ƠN
Em xin chân thành cảm ơn PGS.TS Đỗ Văn Nhơn đã tận tình truyền thụcho chúng em những kiến thức về Phương pháp toán trong tin học Tuy thờigian học không nhiều nhưng chúng em đã học hỏi được từ thầy những kiếnthức cơ bản của môn học
Vì thời gian có hạn và kiến thức còn hạn chế nên bài thu hoạch chắcchắn còn những khiếm khuyết Em rất mong thầy lượng thứ và hướng dẫn đểchúng em có thể hoàn thiện tốt hơn
Kính chúc thầy và gia đình sức khoẻ dồi dào Chúc thầy thành công hơnnữa trên con đường khoa học và trong công tác giảng dạy
Hồ Chí Minh, ngày 25 tháng 12 năm 2010
Học viên : Hoàng Lê Nhật Anh
Trang 2MỤC LỤC
CHƯƠNG I GIỚI THIỆU 3
I.1 Đặt vấn đề 3
I.2 Mục đích, yêu cầu khi thực hiện đề tài 4
I.3 Các bước thực hiện 4
I.4 Kết quả dự kiến 4
CHƯƠNG II CƠ SỞ LÝ THUYẾT 5
II.1 Hệ chuyên gia 5
II.1.1 Định nghĩa hệ chuyên gia 5
II.1.2 Hoạt động của hệ chuyên gia 5
II.1.3 Những thành phần cơ bản của một hệ chuyên gia 6
II.1.4 Biểu diễn tri thức trong hệ chuyên gia 7
II.2 UML 8
II.2.1 Lý thuyết UML 8
II.2.2 Các quy ước trong UML 9
II.2.3 Các sơ đồ trong UML 10
CHƯƠNG III PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 11
III.1 Thông tin về các loại biển báo 11
III.2 Mô hình Usecase 15
III.3 Biểu đồ tuần tự 15
III.4 Biểu đồ hoạt động 16
CHƯƠNG IV XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ THỰC HIỆN 18
IV.1 Xây dựng hệ chuyên gia với Prolog 18
IV.2 Thiết kế chương trình 18
IV.3 Xây dựng tập các sự kiện và luật 21
IV.4 Một số thủ tục sử dụng trong chương trình 26
IV.5 Demo Chương trình 27
28
KẾT LUẬN 29
Các kết quả đạt được 29
Công việc chưa thực hiện được 29
Hướng phát triển 29
Tài liệu tham khảo 30
Trang 3CHƯƠNG I GIỚI THIỆU
- Máy tính và vấn đề giải quyết tình huống của con người
Ban đầu máy tính được thiết kế chỉ với mục đích đơn giản là giúp conngười tính toán trên phép tính số học đối với các con số Nhưng với sự pháttriển nhanh theo từng ngày, máy tính không còn là một công cụ tính toán đơngiản nữa mà nó trở thành một công cụ đa tiện ích, từ giải quyết công việckinh doanh, buôn bán, trao đổi thông tin đến vui chơi giải trí…Máy tính trởnên thông minh hơn khi người ta xây dựng các chương trình mô phỏng trí tuệcon người hay còn gọi là trí tuệ nhân tạo Các chương trình này có khả năngsuy nghĩ, giải quyết các vấn đề giống như một chuyên gia (expert) thuộc vềmột lĩnh vực nào đó
- Xây dựng hệ chuyên gia về nhận biết biển báo giao thông.
Khi tham gia giao thông trên đường nhất là đường có nhiều phương tiệnqua lại, thì chúng ta thường thấy rằng có rất nhiều biển báo được cắm ở haibên nhằm chỉ dẫn cho người điều khiển phương tiện cách thực hiện đúng luậtgiao thông tại nơi quy định, sao cho bảo đảm sự an toàn tuyệt đối đối vớimình và mọi người Nhưng có một điều là có rất nhiều người tham gia giaothông khi gặp các biển báo, họ không biết biển báo này là biển báo gì, cáchthực hiện các chỉ dẫn như thế nào cho đúng luật Vì vậy, có rất nhiều tai nạn
Trang 4giao thông xẩy ra khi người tham gia giao thông không thực hiện đúng luậttại nơi có đặt biển báo, làm thiệt hại về người và của
Với những kiến thức về Hệ chuyên gia, Logic học, Lập trình Prolog cũngnhư các kiến thức liên quan khác Em đã xây dựng một chương trình môphỏng một chuyên gia, có khả năng nhận biết các biển báo giao thông, bằngcách hỏi người sử dụng thông tin về biển báo đó
I.2 Mục đích, yêu cầu khi thực hiện đề tài
- Mục đích của đề tài: Từ những hiểu biết vốn có và tìm hiểu qua phương
tiện truyền thông đài, báo, internet … về biển báo giao thông Một cơ sở dữliệu đã được xây dựng bao gồm các luật để nhận biết hình dáng, đặc điểm,tên của các biển báo Từ đó xây dựng chương trình giao tiếp có khả năng tiếpnhận các sự kiện (facts) mà người dùng cung cấp Sau khi xử lý các sự kiệnbằng cách sử những thông tin được lưu trong cơ sở dữ liệu Chương trình sẽthông báo kết quả lên màn hình, về tên biển báo giao thông, và hướng dẫncho người sử dụng biết trong quá trình tham gia giao thông cần phải xử lýnhư thế nào khi gặp biển báo này
I.3 Các bước thực hiện
Xây dựng cơ sở luật và cơ sở sự kiện, từ đó xây dựng một cơ sở dữ liệucủa chương trình
Tìm giải pháp xử lý các luật và sự kiện để trả lời câu hỏi mà người dùngđặt ra
Xây dựng giao diện để nhập dữ liệu đầu vào và hiện thông tin trả lời saukhi xử lý
I.4 Kết quả dự kiến
Chương trình có thể cung cấp thông tin về các loại biển báo giao thông từ
Trang 5CHƯƠNG II CƠ SỞ LÝ THUYẾT
II.1 Hệ chuyên gia
II.1.1 Định nghĩa hệ chuyên gia
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 và các thủ tục suy luận để giải những bài toán khó đòi hỏinhững chuyên gia mới làm được
Hệ chuyên gia là một trong những ứng dụng thuộc lĩnh vực trí tuệ nhântạo Là hệ thống có thể mô phỏng năng lực quyết đoán và hành động của mộtchuyên gia
Hệ chuyên gia sử dụng các tri thức của những chuyên gia để giải quyếtcác vấn đề khác nhau thuộc mọi lĩnh vực
II.1.2 Hoạt động của hệ chuyên gia
Một hệ chuyên gia gồm ba thành phần chính là cơ sở tri thức (knowledgebase), máy 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ễntạo ra câu trả lời cho người sử dụng qua hệ thống giao tiếp
Hoạt động của hệ chuyên gia dựa trên tri thức
Hình 1 Hoạt động của hệ chuyên gia.
Máy suy diễn
Người sử dụng (User)
Trang 6Mỗi hệ chuyên gia chỉ đặc trưng cho một lĩnh vực vấn đề nào đó như yhọc, tài chính, khoa học hay công nghệ,…mà không phải cho bất cứ một lĩnhvực nào.
II.1.3 Những thành phần cơ bản của một hệ chuyên gia
- Cơ sở tri thức là nền tảng của hệ chuyên gia
Biểu diễn tri thức trong lĩnh vực cần xử lý
Có nhiều phương pháp biểu diễn tri thức, phổ biến nhất là theo luật
Trong phần cơ sở tri thức thì tri thức được mô tả bao gồm các đối tượng cóliên quan, trong nhiều trường hợp cần thiết thì cơ sở tri thức này lưu giữ cácchiến lược giải quyết bài toán và các vấn đề liên quan đến nó
Hình 2 Thành phần của hệ chuyên gia
- Máy suy diễn
Là bộ phận quan trọng của hệ chuyên gia, máy suy diễn là một cơ chếlập luận được cài đặt trọng hệ chuyên gia để giải quyết các vấn đề cụ thể Bộ
Máy suy diễn
Bộ nhớ làm việc
Bộ nhớ làm việc
Giao diện người sử dụng
Trang 7suy diễn theo các phương pháp mà nó đã định Có thể thấy rằng là máy suydiễn cũng là hạt nhân trong hệ chuyên gia.
- Hệ thống giao tiếp
Còn gọi là bộ đối thoại làm nhiệm vụ giao tiếp giữa hệ chuyên gia vàngười sử dụng Thành phần này là tri thức từ người sử dụng như các câu hỏi,các yêu cầu mà trong nhiều trường hợp là các đề nghị người sử dụng cânthiệp vào từng nơi tiếp xúc Giao diện đưa ra các kết luận, lời giải thích chongười sử dụng Lí do quan trọng chính vì sự can thiệp để tiến tới độ xử lý
- Lịch công việc (agenda) Danh sách các luật ưu tiên do máy suy diễn tạo ra
thỏa mãn các sự kiện, các đối tượng có mặt trong bộ nhớ làm việc
- Bộ nhớ làm việc (working memory) Cơ sở dữ liệu toàn cục chứa các sự
kiện phục vụ cho các luật
- Khả năng giải thích (explaination facility) Giải nghĩa cách lập luận của hệ
thống cho người sử dụng
- Khả năng thu nhận tri thức (Aquisition facility) Cho phép người sử dụng
bổ sung các tri thức vào hệ thống một cách tự động thay vì tiếp nhận tri thứcbằng cách mã hóa tri thức một cách tường minh Khả năng thu nhận tri thức
là yếu tố mặc nhiên của nhiều hệ chuyên gia
II.1.4 Biểu diễn tri thức trong hệ chuyên gia
Tri thức của một hệ chuyên gia có thể được biểu diễn theo nhiều cáchkhác nhau Thông thường có một số cách sau
- Biểu diễn tri thức bằng luật sản xuất: Các luật sản xuất thường được viếtdưới dạng IF THEN, có hai dạng như sau:
IF <điều kiện> THEN <hành động>
Hoặc
IF <điều kiện> THEN <kết luận> DO <hanh động>
Trang 8- Biểu diễn tri thức nhờ mệnh đề logic
- Biểu diễn tri thức nhờ mạng ngữ nghĩa
- Biểu diễn tri thức nhờ ngôn ngữ nhân tạo
Ngoài ra, còn có thể sử dụng các cách sau để biêu diễn tri thức:
- Biểu diễn theo cặp đôi Thuộc tinh- Giá trị (Attribute-Value Pairs).
Màu nền-Xanh
- Biểu diễn nhờ bộ ba Đối tượng-Thuộc tính-Giá trị (O-A-V:
Object-Atribute-Value Triples)
Biển báo-Màu nền-Xanh
- Biểu diễn theo kiểu bản ghi (Records)
- Biểu diễn theo dạng khung (Frames)
II.2 UML
II.2.1 Lý thuyết UML
UML là một ngôn ngữ bao gồm một bảng từ vựng và các quy tắc để kết hợpcác từ vựng đó phục vụ cho mục đích giao tiếp Một ngôn ngữ dùng cho việc lập
mô hình là ngôn ngữ mà bảng từ vựng( các ký hiệu) và các quy tắc của nó tậptrung vào việc thể hiện về mặt khái niệm cũng như vật lý của một hệ thống
Mô hình hoá mang lại sự hiểu biết về một hệ thống Một mô hình không thểgiúp chúng ta hiểu rõ một hệ thống, thường là phải xây dựng một số mô hình xét
từ những góc độ khác nhau Các mô hình này có quan hệ với nhau
Oject Shape ColorBiển
#1
Trang 9UML sẽ cho ta biết cách tạo ra và đọc hiểu được một mô hình được cấu trúctốt, nhưng nó không cho ta biết những mô hình nào nên tạo ra và khi nào tạo rachúng Đó là nhiệm vụ của quy trình phát triển phần mềm.
II.2.2 Các quy ước trong UML
- Actor (tác nhân)
Bất cứ vật gì tương tác với hệ thống được xem như một Actor Nó có thể cónhiều vai trò, và Actor không cần phải là một người hoặc một User, mà có thể làbất cứ vật gì tương tác với hệ thống
- Use Case (UC):
Use Case mô tả ai đó sử dụng hệ thống như thế nào, mô tả tương tác giữangười sử dụng với hệ thống phần mềm để thực hiện các thao tác giải quyếtcông việc cụ thể nào đó Use Case không cho biết hệ thống làm việc bêntrong như thế nào Nó không phải là thiết kế, cũng không phải là kế hoạch càiđặt, nó là một phần của vấn đề cần giải quyết Tiến trình của hệ thống đượcchia nhỏ thành các Use Case để có thể nhận ra từng bộ phận của nó một cách
rõ ràng và để nhiều người có thể cùng xử lý
Use Case là nền tảng của phân tích hệ thống Việc tìm ra đầy đủ các UCđảm bảo rằng hệ thống sẽ xây dựng đáp ứng mọi nhu cầu của người sử dụng.Mỗi UC là tập hành động Mỗi hành động là cái gì đó mà hệ thống làm, nó làhạt nhân được hệ thống thực hiện hoàn toàn hay không thực hiện phần nào
Trang 10II.2.3 Các sơ đồ trong UML
- Sơ đồ trường hợp sử dụng Use Case diagram
Use Case diagram là sơ đồ cung cấp một cách nhìn tổng quan nhất về toàn
bộ hệ thống Trong đó bao gồm tất cả các tác nhân (Actor) và các trường hợp
sử dụng (Use Case) có liên quan đến hệ thống Sơ đồ này được cấu tạo từ bayếu tố chính là Actor (tác nhân), trường hợp sử dụng (Use Case), các quan hệ
- Biểu đồ trình tự (sequence diagram)
Biểu đồ trình tự là biểu đồ tương tác theo trật tự thời gian của các giao tiếpbằng thông điệp giữa các đối tượng, biểu đồ được đọc từ đỉnh xuống đáy MỗiUse Case có nhiều luồng dữ liệu Mỗi biểu đồ trình tự biểu diễn một luồng dữliệu
Biểu đồ trình tự bao gồm các phần tử để biểu diễn đối tượng, thông điệp
và thời gian
Đối tượng trong biểu đồ được biểu diễn bằng hình chữ nhật, trong hìnhchữ nhật là tên của nó Thời gian được biểu diễn bằng đường gạch gạch theophương thẳng đứng (gọi là chu kỳ sống của đối tượng), bắt đầu từ đỉnh và kếtthúc tại đáy biểu đồ Hình chữ nhật dọc theo chu kỳ sống được gọi là hoạtđộng Hoạt động biểu diễn thời gian thực thi một hành động tương ứng
Thông điệp được vẽ bằng mũi tên đóng đi từ chu kỳ sống của đối tượngnày đến chu kỳ sống của đối tượng khác Trên mũi tên là tên thông điệp
- Biểu đồ hoạt động
Biểu đồ hoạt động là một phương tiện mô tả các dòng công việc
Như một công cụ phân tích, nó mô tả các dòng nghiệp vụ với nhiều mức độ chi tiết khác nhau Ở mức thiết kế, biểu đồ hoạt động được dùng để mô tả chi tiết bên trong một thao tác
Trang 11CHƯƠNG III PHÂN TÍCH VÀ THIẾT KẾ HỆ
THỐNG
III.1 Thông tin về các loại biển báo
Hình 3: Biển báo cấm
Trang 12Hình 4: Biển báo nguy hiểm
Trang 13Hình 5: Biển chỉ dẫn
Trang 14Hình 6: Biển hiệu lệnh
Từ các hình dạng của các loại biển báo, ta có thể thiết kế hệ thống như sau:
Hệ thống gồm có tác nhân là Người sử dụng và Hệ chuyên gia
Người sử dụng cần tư vấn về các loại biển báo từ Hệ chuyên gia, và sẽ nhận được
sự tư vấn thông qua việc trả lời các câu hỏi
Trang 15III.2 Mô hình Usecase
Hình 7: Mô hình Usecase của hệ thống
III.3 Biểu đồ tuần tự
Biểu đồ tuần tự thể hiện các bước thực hiện cơ bản của người sử dụng cần sự tư vấn về các loại Biển báo từ Hệ chuyên gia
Trang 16Hình 8: Biều đồ tuần tự của việc tư vấn
III.4 Biểu đồ hoạt động
Biểu đồ hoạt động thể hiện trình tự các hoạt động diễn ra giữa người sử dụng và
Hệ chuyên gia trong quá trình hỏi
Trang 17Hình 9: Biểu đồ hoạt động của hoạt động tư vấn về biển báo
Trang 18CHƯƠNG IV XÂY DỰNG CHƯƠNG TRÌNH VÀ
KẾT QUẢ THỰC HIỆN
IV.1 Xây dựng hệ chuyên gia với Prolog.
- Giới thiệu Prolog
Prolog là ngôn ngữ được sử dụng phổ biến nhất trong dòng các ngôn ngữlập trình logic (Prolog có nghĩa là Programming in Logic) Ngôn ngữ Prolog
do giáo sư người Pháp Alain Colmerauer và nhóm nghiên cứu của ông đềxuất lần đầu tiên tại trường Đại học Marseille đầu những năm 1970
Prolog còn gọi là ngôn ngữ lập trình ký hiệu (symbolic programming)tương tự ngôn ngữ lập trình hàm Prolog rất thích hợp để giải quyết các bàitoán liên quan đến các đối tượng (object) và mối quan hệ (relation) giữachúng
Prolog được dùng phổ biến trong lĩnh vực trí tuệ nhân tạo Nguyên lý lậptrình dựa trên các mệnh đề Horn
Mỗi chương trình Prolog là một cơ sở dữ liệu gồm:
• Đối tượng (Object): biến và hằng
• Vị từ (Predicate): thể hiện mối quan hệ giữa các đối tượng
• Sự kiện (Fact): mệnh đề vị từ
• Luật (Rule): mệnh đề kéo theo
Hệ chuyên gia là một trong những ứng dụng thuộc lĩnh vực trí tuệ nhân
tạo Vì vậy có thể dùng Prolog để xây dựng một hệ chuyên gia về một lĩnh
vực nào đó
IV.2 Thiết kế chương trình
Chương trình được thết kế và thực thi trên môi trường ngôn ngữ lập trìnhProlog Giao diện được trình bày trong chương trình sử dụng giao diện dòng
Trang 19Chẳng hạn, ta thấy rằng hầu hết các biển báo thường có các hình dáng như:hình tròn, hình tam giác, hình chữ nhật Trong số đó có biển báo có đườngviền bao quanh, một số khác thì không có Phần nền và màu là phần phíatrong biển, trên phần nền thường có một hình đặc trưng nào đó Thôngthường thì ý nghĩa của biển báo liên quan phần lớn ở hình đặc trưng này Do
đó, chỉ cần xác định được hình đặc trưng, chúng ta có thể dễ nhận biết sựkhác biệt của biển báo đó so với biển khác
Hai biển báo cấm người đi bộ và cấm xe mô tô sau là ví dụ:
Hình10: biển báo cấm người đi bộ và cấm xe moto
Ta có thể biểu diễn sự khác nhau theo mệnh đề IF-THEN
IF
Hình của biển báo là hình tròn và
Biển báo có đường viền và
Đường viền màu đỏ và
Hình của biển báo là hình tròn và
Biển báo có đường viền và
Đường viền màu đỏ và
Hình đặc trưng là hình người lái xe moto
và
Trang 20Hình đặc trưng bị gạch chéo
THEN
Biển báo là biển cấm cấm xe mô tô
Từ sự mô tả ở trên, chúng ta có thể dễ dàng triển khai trong ngôn ngữ lậptrình Prolog như sau theo kiểu cặp đôi (Attribute-Value pairs), bằng cách suydiễn ngược lại tạo thành các luật để nhận biết một biển báo: