1. Trang chủ
  2. » Luận Văn - Báo Cáo

luận văn công nghệ thông tin một agent tự nhận thức để tìm kiếm

61 334 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong thực tế, hướng “gần” đối tượng cần tìm lại là hướng xa nhất do cuối cùng phải đi đường vòng khả năng mạo hiểm trong việc rẽ nhánh  Robot có thể được đặt ở những nơi mà tất cả các

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

GVHD : HUỲNH VĂN ĐỨC SVTH : ĐẶNG HỒNG HẢI MSSV : 97DT216 KHÓA 98

Trang 2

LUẬN VĂN TỐT NGHIỆP

ĐỀ TÀI:

MỘT AGENT TỰ NHẬN THỨC ĐỂ TÌM KIẾM

Tp HỒ CHÍ MINH NĂM 2003

GVHD : HUỲNH VĂN ĐỨC SVTH : ĐẶNG HỒNG HẢI MSSV : 97DT216 KHÓA 98

Trang 3

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

Trang 4

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

Trang 5

và quý giá trong suốt quá trình thực hiện đề tài

Bên cạnh những kết quả khiêm tốn mà em đạt được, chắc chắn không tránh khỏi những sai sót khi thực hiện luận văn của mình, kính mong quý Thầy Cô chỉ bảo thêm Sự phê bình, góp ý của quý Thầy Cô sẽ là những bài học kinh nghiệm rất quý giá cho công việc thực tế của chúng em sau này

Em xin chân thành cảm ơn quý Thầy Cô khoa Công Nghệ Thông Tin đã tận tình dạy dỗ, giúp đỡ em trong suốt thời gian học tập, nghiên cứu ở trường Em vô cùng biết ơn Thầy Huỳnh Văn Đức đã tận tình hướng dẫn em trong thời gian làm luận văn tốt nghiệp Và tôi xin cám ơn các bạn sinh viên khoá 98TH, những người đã tích cực động viên, giúp đỡ để tôi có thể hoàn thành được đề tài này

TP HCM, 05-2003 Đặng Hồng Hải

Trang 6

Từ xưa đến nay, con người luôn mong muốn cải thiện môi trường sống quanh mình, nâng cao chất lượng cuộc sống, tăng năng suất lao động, khám phá những bí ẩn của thiên nhiên Do đó, con người đã không ngừng tìm tòi cải tiến, sáng tạo ra các công cụ sản xuất mới, phương tiện lao động mới… nhằm phục vụ cho nhu cầu của con người Robot cũng đã được phát minh ra từ thực

tế đó

Từ khi xuất hiện, Robot đã tỏ ra là một công cụ lao động rất hiệu quả do

có thể thay thế con người trong rất nhiều công việc từ đơn giản đến phức tạp, từ những công việc bình thường đến những công việc cực kỳ khó khăn nguy hiểm

Đề tài: Xây dựng một Agent tự nhận thức để tìm kiếm (Xây dựng một mô hình đối tượng – tạm gọi là Robot – có khả năng nhận thức môi trường chung quanh để tìm kiếm) Đề tài này nhằm tìm hiểu về bài toán nhận thức của Robot – một bài toán tuy nhỏ nhưng lại không thể thiếu trong các hành vi của Robot

Sau một thời gian thực hiện dưới sự hướng dẫn tận tình của thầy hướng dẫn và sự giúp đỡ nhiệt tình của các bạn sinh viên đồng khoá, đề tài đã được hoàn thành Tuy nhiên, do đề tài được làm với quỹ thời gian hạn hẹp và trình

độ chuyên môn cũng như kinh nghiệm còn nhiều hạn chế nên không thể tránh khỏi những sai lầm và thiếu sót, rất mong được sự chỉ bảo, đóng góp của quý Thầy Cô và các bạn

TP HCM, 05-2003

SVTH : Đặng Hồng Hải

Trang 7

PHẦN I : LÝ THUYẾT

Chương I: Ý tưởng và đặc trưng của bài toán Trang 1

1 Ý tưởng Trang 1

2 Đặc trưng Trang 3

Chương II: Kiến thức liên quan Trang 5

I Đồ Họa Máy Tính Trang 5

1 Khái niệm Trang 6

2 Các ứng dụng tiêu biểu của kỹ thuật đồ họa: Trang 6

3 Giải thuật xén: .Trang 7

4 Camera tổng hợp: .Trang 9

II Trí Tuệ Nhân Tạo Trang 12

1 Khái niệm: Trang 12

2 Các lĩnh vực nghiên cứu và ứng dụng cơ bản

của Trí Tuệ Nhân Tạo Trang 13

3 Các phương pháp và kỹ thuật Trí Tuệ Nhân Tạo Trang 14

4 Các Giải Thuật Tìm Kiếm Heuristic Trang 14 4.1 Giải thuật leo đồi Trang 15 4.2 Giải thuật A* Trang 16

III Lập trình hướng đối tượng với Visual C++ 6 Trang 17

1 Khái niệm về lập trình hướng đối tượng : Trang 17

1.1 Tổng quan: Trang 17

1.2 Một số khái niệm: Trang 18

1.3 Các ưu điểm của lập trình hướng đối tượng: .Trang 20

2 Ngôn ngữ lập trình Visual C++ trên môi trường Windows Trang 22

2.1 Tổng quan: Trang 22

2.2 Thư viện MFC: Trang 25

Trang 8

IV Giới Thiệu Về UML Trang 26

1 Tổng quan: Trang 26

2 Công dụng của UML: Trang 27

3 Khái quát về UML: Trang 28

3.1 View: Trang 28

3.2 Diagram: Trang 29

3.3 Model Element: Trang 31

3.4 Tool: Trang 32

Chương III: Hướng Tiếp Cận Của Đề Tài Trang 34

Chương IV: Giao Diện Của Ứng Dụng Trang 36

Phần II : THIẾT KẾ CHƯƠNG TRÌNH Trang 38

1 Thiết kế mức quan niệm: Trang 38

1.1 Sơ đồ lớp với các lớp chính: Trang 38

1.2 Biểu đồ cộng tác: Trang 39

2 Thiết kế mức cài đặt: Trang 40

2.1 Sơ đồ lớp: Trang 40

2.2 Sơ đồ cộng tác: Trang 42

2.3 Cấu trúc của lớp Robot: Trang 44

2.4 Sơ đồ lớp với các thuộc tính: Trang 50

2.5 Sơ đồ tìm kiếm: Trang 51

2.6 Sơ đồ tuần tự cho chức năng

thu thập thông tin (chức năng nhận thức): Trang 53

2.7 Các lớp tiện ích: Trang 54

Phụ lục

Tài liệu tham khảo

Trang 9

PHẦN I : LÝ THUYẾT

CHƯƠNG I : Ý TƯỞNG VÀ ĐẶC TRƯNG CỦA BÀI TOÁN

1 Ý Tưởng

Trong thời đại kỹ thuật công nghệ phát triển mạnh mẽ như hiện nay, vấn

đề tự động hoá luôn được đặt lên vị trí hàng đầu Những công việc trước đây con người phải tự tay làm thì ngày nay đã được thay thế dần bằng những bộ máy hiện đại được lập trình theo những chức năng chuyên dụng

Theo đà phát triển, con người đã chế tạo ra Robot – một loại máy móc thông minh kết hợp từ các ngành cơ khí, điện tử và tin học – và nó giúp con người rất nhiều việc: từ việc thám hiểm những nơi con người không đến được cho đến những công việc nội trợ trong gia đình

Từ khi xuất hiện đến nay, Robot luôn được các nhà khoa học đặc biệt quan tâm và làm cho nó ngày càng thông minh hơn, chuyên nghiệp hơn để thích ứng với những yêu cầu mới, những công việc mới trong những lĩnh vực mới Một trong những việc rất cần đến sự trợ giúp của Robot là lĩnh vực tìm kiếm, chẳng hạn như việc tìm và gỡ mìn, một việc làm rất nguy hiểm đối với con người nhưng Robot lại làm rất tốt Bên cạnh đó, việc thám hiểm những hành tinh xa xôi, những đáy biển sâu… thì không có sự lựa chọn nào tốt hơn Robot

Hiện nay, con người còn có những ý tưởng chưa thực hiện được về việc chế tạo Robot như: Robot cảnh sát chuyên trấn áp tội phạm, Robot nội trợ,

Trang 10

Robot có cảm xúc, Robot cảm nhận bằng âm thanh, Robot mô phỏng các hoạt động của con người…

Tuy Robot được ứng dụng vào rất nhiều lĩnh vực khác nhau nhưng hiện tại, việc chế tạo Robot vẫn còn gặp rất nhiều khó khăn về kỹ thuật cũng như

công nghệ Thực tế đó đã làm nảy sinh ý tưởng: có thể mô phỏng hoạt động

của một Robot trong thế giới thực bằng máy tính được không? Câu trả lời là có

và đã có nhiều công ty lớn làm theo cách này Đây là một hướng phát triển rất quan trọng trong việc chế tạo Robot vì nó giúp cho việc thiết kế cũng như thử nghiệm Robot không còn khó khăn và tốn kém như trước

Tuy nhiên, việc thể hiện toàn bộ hoạt động của một Robot từ thế giới thực lên máy tính là một bài toán khá rộng lớn nên ở đây, trong giới hạn của đề

tài này, tôi chỉ tập trung tìm hiểu bài toán “Xây dựng mô hình mô phỏng một

đối tượng – tạm gọi là Robot – có khả năng nhận thức môi trường chung quanh

để tìm kiếm mục tiêu” Phần quan trọng của bài toán này là mô phỏng sự nhận

thức của Robot, một bài toán tuy nhỏ nhưng không thể thiếu đối với hầu hết các Robot

Mục tiêu của bài toán là mô phỏng cách một Robot tự phân tích môi trường chung quanh để đi tìm vật thể Giống như con người, đầu tiên Robot phải tìm nó bằng cách đi tìm khắp mọi nơi nhưng khi đã gặp thì Robot sẽ nhớ

vị trí đó để định vị cho lần tìm kiếm sau Và trong quá trình tìm kiếm, Robot phải tìm cách tránh né chướng ngại vật, phải đánh dấu đường đi đã qua, phải tự đưa ra những quyết định khi đã có thêm thông tin…

Với bài toán này, các nội dung chính cần đạt được là:

 Khả năng nhận thức môi trường xung quanh của Robot: Robot

sau khi “nhìn” sẽ phân biệt được chướng ngại vật, đường đi hay vật cần tìm trong khung nhìn

 Khả năng đưa ra hành vi thích hợp của Robot: sau khi nhận thức

được môi trường chung quanh, Robot sẽ đi tìm mục tiêu theo hướng tốt nhất trong các hướng có thể đi được, kết hợp chuyển hướng quan sát nếu gặp phải chướng ngại vật

Trang 11

 Khả năng học của Robot: Robot có thể học bằng cách nhớ lại vị

trí của vật cần tìm để định vị cho lần tìm kiếm sau

2 Đặc trưng của bài toán:

Do đây là một bài toán tìm kiếm nên nó có một số đặc trưng sau:

 Thông tin về đối tượng cần tìm có thể chưa chính xác hoặc bị thay đổi (Heuristic chưa có hoặc bị thay đổi)

 Đối tượng cần tìm có thể ở những nơi mà Robot không bao giờ tìm thấy được vì đối tượng bị che khuất phía sau vật cản Kết quả

là không bao giờ tìm thấy trong trường hợp môi trường cần tìm kiếm rộng lớn (có khả năng thất bại)

 Có thể có những đường không đi tiếp được mà thoạt đầu Robot chưa biết (có khả năng quay lui)

 Có thể có những ngã đường buộc Robot phải chọn một trong số các hướng có thể đi được Trong thực tế, hướng “gần” đối tượng cần tìm lại là hướng xa nhất do cuối cùng phải đi đường vòng (khả năng mạo hiểm trong việc rẽ nhánh)

 Robot có thể được đặt ở những nơi mà tất cả các hướng Robot đều không thể đi tiếp Kết quả là Robot sẽ quay lui về tới vị trí xuất phát và ngưng quá trình tìm kiếm (khả năng kết thúc sớm)

 Đối tượng cần tìm có thể nằm ở những nơi Robot chỉ nhìn thấy nhưng không thể đi đến được (khả năng Robot đi vòng quanh đối tượng càng lúc càng xa)

 Có thể có những lối đi quá hẹp để Robot có thể đi qua được (coi như đường đang đi là đường không đi tiếp được)

 Robot nên đi những nơi mà nó chưa đi qua Do đó có thể có khả năng đối tượng cần tìm nằm ở bên kia đường đã đi rồi Kết quả là Robot sẽ phải quay lui hoặc đi vòng

Trang 12

CHƯƠNG II : KIẾN THỨC LIÊN QUAN

Trí tuệ nhân tạo: hỗ trợ khả năng nhận thức và đưa ra quyết định nhằm phục vụ cho việc tìm kiếm

Lập trình hướng đối tượng: vì tính chất của đề tài là mô phỏng thế giới thực nên lập trình hướng đối tượng là một cách tiếp cận hiệu quả nhất

UML (Unified Modeling Languge): được sử dụng để lên mô hình cho dự

án

Trang 13

I ĐỒ HỌA MÁY TÍNH:

Đồ hoạ máy tính là một trong những lĩnh vực phát triển nhanh nhất và lý thú nhất của ngành tin học Ngay từ khi xuất hiện, đồ họa máy tính đã cuốn hút rất nhiều người thuộc nhiều lĩnh vực khác nhau Và nhờ có công nghệ đồ họa

mà con người có thể làm quen dễ dàng với máy tính Do đó, để thể hiện giao diện cũng như giải quyết một số vấn đề kỹ thuật, đề tài này cũng dùng đến một

số kỹ thuật sau:

Tiếp cận Camera tổng hợp: sử dụng cách tiếp cận này để tạo ra khung nhìn cho Robot

Các giải thuật xén: để lấy các đối tượng trong khung nhìn của Robot nhằm

mô phỏng việc Robot chỉ có thể thấy những gì nằm trong khung nhìn của nó

mà thôi

1 Khái niệm :

Đồ họa là quá trình đưa ra một bức ảnh dựa vào một số mô tả Để làm được điều này chúng ta phải thực hiện đồng thời 2 việc: thứ nhất là đưa ra một tiếp cận khả dĩ mô tả được các đối tượng từ đơn giản đến phức tạp, thứ hai là xây dựng một tập đầy đủ các công cụ vẽ ảnh cho phép đưa ra những bức ảnh từ những nét phác thảo thô sơ cho đến những hình ảnh sống động đầy hiện thực Nói cách khác, đồ họa máy tính là tất cả những gì liên quan đến việc sử dụng máy tính để phát sinh ra hình ảnh Các vấn đề liên quan đến công việc này bao gồm: tạo, lưu trữ, thao tác trên các mô hình hình học của đối tượng và các ảnh

2 Các ứng dụng tiêu biểu của kỹ thuật đồ họa:

2.1 Xây dựng giao diện người dùng (User Interface)

Giao diện đồ họa đang được đa số người dùng ưa thích nhờ tính thân thiện, dễ sử dụng của nó Ưu điểm của nó so với ứng dụng console có thể được tóm tắt như sau:

 Người dùng có thể nắm bắt dễ dàng nếu các icon được thiết kế tốt

để gợi nhớ về chức năng của nó

Trang 14

 Có khả năng mở rộng giao diện, nhiều cửa sổ

2.2 Lĩnh vực giải trí, nghệ thuật và mô phỏng :

Các phần mềm đồ họa có thể cho phép các họa sĩ tạo ra các hình ảnh ngay trên màn hình máy tính Người họa sĩ được máy tính cung cấp các công cụ làm việc rất đầy đủ như: khung vẽ, bảng pha màu, các thao tác cắt, dán, tẩy, xóa, phóng to, thu nhỏ và rất nhiều công cụ toán học khác nhau mà họa sĩ trên khung vải không sao có được Các phần mềm khác để xây dựng các hình ảnh động và các kỹ xảo hoạt hình cũng có đầy đủ chức năng như vậy Hiện tại công nghệ VRML đang phát triển rất nhanh cho phép tạo ra các thế giới thực tại ảo trên máy tính cũng như cho phép xây dựng những ứng dụng trong giải trí, trò chơi, thương mại

3 Giải thuật xén- Clipping:

Xén là tiến trình xác định các điểm của một đối tượng nằm trong hay ngoài cửa sổ hiển thị Đặc trưng của bài toán xén hình là loại bỏ các phần hình ảnh nằm ngoài một vùng cho trước Hiện nay có 2 hướng tiếp cận xén thông dụng là cắt và tô Phương pháp cắt được dùng trong trường hợp hình nhỏ hơn vùng cần xén Trong khi đó, phương pháp tô được dùng trong trường hợp hình lớn hơn vùng cần xén Vì tính chất của đề tài này là hình ảnh rất lớn so với vùng cần xén (chứa luôn vùng cần xén) nên ở đây tôi chọn phương pháp tô mà không chọn phương pháp cắt Dựa trên phương pháp tô này, thay vì tô màu ở những vị trí cần tô ta lấy thông tin về đối tượng tại đó

Có hai cách tiếp cận chính để tô màu một vùng tô là: tô theo dòng quét (scan-line fill) và tô theo đường biên (boundary fill) Phương pháp tô màu theo dòng quét thường được dùng để tô màu các đa giác và một số đường cong đơn giản Còn phương pháp tô màu theo đường biên thường được dùng cho các vùng tô có đường biên phức tạp hơn

Vì khung nhìn của Robot chỉ là một đa giác đơn giản nên phương pháp

tô màu theo dòng quét được sử dụng thay vì phương pháp tô màu theo đường biên

Trang 15

Giải thuật tô màu đa giác theo dòng quét – Scanline:

Giải thuật dựa trên ý tưởng sử dụng một đường quét trên trục y của màn hình đi từ ymax đến ymin của vùng cần được tô màu Với mỗi giá trị y = yi đường thẳng quét cắt các đường biên của vùng cần tô tạo ra đoạn thẳng y = yi với giới hạn x  [xmin - xmax] Trên đoạn thẳng đó chúng ta tô màu các điểm tương ứng đi từ xmin > xmax Các điểm cần tô màu sẽ là (xi, yi) thuộc đoạn thẳng y = yi nói trên

Phép tô màu hình chữ nhật với giải thuật Scanline là phép tô màu đơn giản nhất bởi với mọi đường quét y = yi ta đều thu được hai giá trị xmin và xmax như nhau

Phép tô màu cho một đa giác bất kỳ sẽ phức tạp hơn rất nhiều so với hình chữ nhật Độ phức tạp ở đây sẽ xảy ra từ việc xác định giải thuật cho việc tính giao điểm của đường thẳng quét để tìm ra đường biên xấp xỉ khi tô màu đến việc suy diễn đưa ra các phần đoạn thẳng cần tô màu trên đường thẳng quét khi gặp loại hình đa giác lõm hay điểm cắt trùng với đỉnh của đa giác khi mô

tả

Phép tô màu một đa giác điển hình (như hình vẽ) sẽ theo những bước sau:

 Tìm giao điểm của đường thẳng quét với các cạnh của đa giác

 Sắp xếp các giao điểm theo thứ tự tăng dần của giá trị biến x

Trang 16

 Tô màu từng đoạn thẳng nằm giữa cặp điểm giao của đường thẳng quét và cạnh của đa giác Trong bước này, ta phải giải quyết một vấn đề nảy sinh khi đường thẳng quét đi qua đỉnh của

đa giác

Giả sử rằng tại đỉnh của đa giác, đường thẳng quét sẽ cắt 2 cạnh của đa giác tại hai điểm chồng khít lên nhau Bài toán sẽ có lời giải trong một số trường hợp khi số điểm cắt là chẵn Với số điểm cắt lẻ thì chúng ta không thể tìm được các cặp điểm cần tô màu

Để khắc phục nhược điểm trên ta sắp xếp các đỉnh mà dòng quét đi qua Giải thuật sau đây sẽ cho phép ta quyết định lấy P là một điểm hay hai điểm trùng khớp nhau vào danh sách các điểm cắt

 Nếu P là giao điểm của 2 cạnh đa giác có hướng ngược nhau, một cạnh có giá trị y tăng khi x tăng, một cạnh có giá trị y giảm khi x tăng thì dòng quét tạo ra hai điểm giao trên P

 Ngược lại, nếu P là đỉnh chung của 2 cạnh đa giác có hướng y cùng nhau, y tăng khi x tăng thì đỉnh P cung cấp 1 điểm giao duy nhất cho danh sách điểm giao

Điều này được minh họa như sau:

4 Camera tổng hợp:

Giống như con người, Robot cũng có khả năng nhìn và nhận biết được

sự có mặt của các đối tượng trong phạm vi quan sát Để mô phỏng khả năng

Trang 17

này của Robot trên máy tính, tôi sử dụng cách tiếp cận camera tổng hợp với các đặc điểm sau:

Là một công cụ hữu hiệu mà gói đồ họa 3D như CORE (Bergeron 1978), GKS3D và PHIGS (Brown 1985) cung cấp nhằm hỗ trợ cho việc lấy ảnh của thế giới thực

Camera tổng hợp có một mặt phẳng quan sát và một con mắt Mặt phẳng quan sát xác định hệ tọa độ quan sát Cửa sổ mô tả trong mặt phẳng quan sát Con mắt, cửa sổ và các mặt phẳng trước, sau xác định khối quan sát Các cạnh đều bị xén qua 6 mặt của khối quan sát này, phần còn lại được chiếu lên mặt phẳng quan sát, chuyển đến NDC (thiết bị đồ họa chuẩn) và cuối cùng được vẽ lên thiết bị

Nói cách khác, Camera tổng hợp mô tả một camera định vị và định hướng trong không gian, gồm 3 phần chính:

 Mặt phẳng quan sát (view plane) trong đó có định nghĩa một cửa

Trang 18

Các thành phần của camera tổng hợp:

 Gốc tọa độ của hệ UVN là điểm VRP (View Reference Point) nằm trong mặt phẳng quan sát, được mô tả bằng r = (rx, ry, rz)

 Pháp tuyến của mặt phẳng quan sát xác định trục N của hệ UVN,

là vector VPN (View Plane Normal) Hệ UVN được chọn là hệ tọa độ nghịch, các vector chỉ hướng tương ứng là u, v, n và ta có

u = n x v

Tính mềm dẻo của mô hình Camera tổng hợp:

Các thành phần của Camera cho phép điều khiển sự quan sát phù hợp với cách di chuyển đầu của chúng ta

 VRP (vector r) xác định vị trí của người quan sát, di chuyển VRP giống như di chuyển đầu mà không thay đổi hướng nhìn

 VPN (vector n) xác định hướng nhìn Thay đổi VPN giống như động tác quay đầu

 Thay đổi “hướng lên” (thay đổi vector v) giống như nghiêng đầu

mà vẫn giữ mắt cố định trên đối tượng

II TRÍ TUỆ NHÂN TẠO

Trong cuộc sống ngày nay, máy tính là một trợ thủ đắc lực và không thể thiếu của con người trong việc xử lý thông tin Không những thế, máy tính còn

Trang 19

có khả năng giải quyết các nhiệm vụ ở mức độ trí tuệ ngày càng cao Theo một nghĩa nào đó, máy tính đã được trang bị trí tuệ nhân tạo

Mục tiêu của trí tuệ nhân tạo là nghiên cứu các kỹ thuật làm cho máy tính

có thể “suy nghĩ một cách thông minh” Theo một nghĩa hẹp, trí tuệ nhân tạo nghĩa là mô phỏng quá trình suy nghĩ của con người khi đưa ra những quyết định, những lời giải bằng cách tìm kiếm thông tin trong không gian bài toán

Từ đó thiết kế các chương trình cho máy tính để giải quyết bài toán trong quá trình tìm kiếm

Trên cơ sở đó, ta ứng dụng kỹ thuật tìm kiếm của trí tuệ nhân tạo vào đề tài nhằm giải quyết bài toán tìm kiếm của Robot

Ngoài ra, trí tuệ nhân tạo còn làm cho máy tính có khả năng suy nghĩ cũng như có thể mô phỏng quá trình học của con người Có thể nhận thấy rằng bộ não của con người có thể tích hợp những tri thức mới mà không cần phải thay đổi cách thức làm việc, không cần phải thay đổi cách suy diễn trong não bộ hoặc loại bỏ đi những sự kiện đã được lưu trước đó Trên cơ sở đó các chuyên gia trí tuệ nhân tạo cố gắng làm cho các chương trình trí tuệ nhân tạo hoạt động tương tự như thế

2 Các lĩnh vực nghiên cứu và ứng dụng cơ bản của Trí Tuệ Nhân Tạo:

Sự phát triển mạnh mẽ của trí tuệ nhân tạo và tin học trong những thập niên gần đây đã tạo ra ngày càng nhiều sản phẩm thông minh phục vụ trong đời

Trang 20

sống hằng ngày, trong công nghiệp cũng như trong các ngành khoa học Từ đó

có thể phân chia các lĩnh vực nghiên cứu và ứng dụng quan trọng của trí tuệ nhân tạo theo 4 hướng cơ bản sau :

 Mô hình hoá trên máy tính những chức năng khác nhau trong quá trình sáng tạo như : các trò chơi, chứng minh tự động các định lý, tổng hợp tự động các chương trình …

 Nâng cao khả năng trí tuệ “bên ngoài” của máy tính gắn liền với các giao tiếp, hội thoại bằng cách sử dụng các kỹ thuật suy diễn

và tìm kiếm

 Nâng cao khả năng trí tuệ “bên trong” của máy tính trên cơ sở chế tạo các máy tính thế hệ mới với kiến trúc vật lý mới dựa trên các nguyên lý của trí tuệ nhân tạo

 Chế tạo các Robot thông minh có khả năng thực hiện những thao tác phức tạp, có thể ”suy nghĩ” và “hành động” để đạt đến mục đích đã đặt ra

3 Các phương pháp và kỹ thuật Trí Tuệ Nhân Tạo

Các bài toán trí tuệ nhân tạo trải rộng trong nhiều lĩnh vực khác nhau nên việc giải quyết chúng đòi hỏi phải đáp ứng những yêu cầu về phương diện kỹ thuật tin học và cả về thiết bị tương ứng

Các phương pháp và kỹ thuật trí tuệ nhân tạo cơ bản bao gồm:

- Các phương pháp biểu diễn tri thức và công nghệ xử lý tri thức

- Các phương pháp giải quyết vấn đề

- Các phương pháp Heuristic

- Các phương pháp học

- Các ngôn ngữ trí tuệ nhân tạo

Xử lý danh sách, kỹ thuật đệ quy, kỹ thuật quay lui … là những kỹ thuật cơ bản của tin học truyền thống có liên quan trực tiếp đến trí tuệ nhân tạo

Trang 21

Vì đề tài sử dụng các phương pháp tìm kiếm Heuristic và phương pháp học nên ở đây chỉ đề cập đến hai phương pháp này Còn những phương pháp khác nếu có nhu cầu tìm hiểu thêm, xin xem thêm ở tài liệu tham khảo

4 Các Giải Thuật Tìm Kiếm Heuristic

Lập trình Heuristic là một hướng tiếp cận quan trọng trong việc xây dựng các hệ thống trí tuệ nhân tạo Lý thuyết tìm kiếm Heuristic bao gồm các phương pháp và các kỹ thuật tìm kiếm, sử dụng các tri thức đặc biệt nảy sinh từ bản thân bài toán cần giải để rút ngắn quá trình giải, nhanh chóng đi đến kết quả mong muốn Kỹ thuật cơ bản dựa trên các tri thức Heuristic hay được sử dụng trong thực tiễn là các hàm đánh giá

4.1 Giải thuật leo đồi

Giải thuật leo đồi là một giải thuật tìm kiếm dựa trên hàm đánh giá theo chiều sâu nghĩa là chỉ tập trung tìm kiếm theo một hướng

Những nét chính của thuật giải

Thuật giải sử dụng 2 danh sách:

- Danh sách mở Open, chứa các đỉnh sẽ được xem xét ở các bước

kế tiếp

- Danh sách đóng Close, chứa các đỉnh đã được xem xét

Các đối tượng chính trong thuật giải:

Trang 22

Danh sách mở Open được sử dụng trong trường hợp này là Stack

4.2 Giải thuật A*:

Giải thuật A* là một giải thuật tìm kiếm dựa trên hàm đánh giá theo chiều rộng với các thông tin Heuristic cho phép sắp xếp lại các đỉnh

Những nét chính của thuật giải:

Thuật giải cũng sử dụng 2 danh sách:

- Danh sách mở Open, chứa các đỉnh sẽ được xem xét ở các bước kế tiếp

- Danh sách đóng Close, chứa các đỉnh đã được xem xét

Các đối tượng chính trong thuật giải:

- Đỉnh bắt đầu s

- Đỉnh kết thúc g

- Đỉnh đang xét n

- Danh sách B(n) chứa các đỉnh đi được từ đỉnh n

Thuật giải A*:

Trang 23

2.4 for m  B(n) do

2.4.1 <Tính ^f(m)>

2.4.2 if (m  Open  Close) then Open Store(m)

2.4.3 if (m == (m’ OpenClose) && ^f(m) < ^f(m’) then

2.4.3 1 <đặt lại tham chiếu cho m’)

2.4.3 2 if (m’  Close ) < chuyển m’ qua Open )

3 return false

Danh sách mở Open được sử dụng trong trường hợp này là Queue

III LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI VISUAL C++

Thực tế, mọi thứ trong thế giới thực đều có thể được xem như đối tượng

Do đó, để mô phỏng thế giới thực thì không có hướng tiếp cận nào tốt hơn hướng đối tượng Trong số các ngôn ngữ hỗ trợ hướng đối tượng thì C++ được xem là ngôn ngữ lập trình thông dụng nhất Hiện nay, trên thị trường có nhiều công cụ hỗ trợ lập trình trên C++ như Borland C++, Watson C++, Visual C++… trong đó Visual C++ của hãng Microsoft được ưa chuộng nhất vì tính thân thiện, dễ sử dụng và hỗ trợ triển khai ứng dụng nhanh Vì thế, tôi chọn Visual C++ làm công cụ phát triển ứng dụng của mình trong đề tài này

1 Khái niệm về lập trình hướng đối tượng:

1.1 Tổng quan:

Lập trình hướng đối tượng (Object-Oriented Programming – gọi tắt là OOP), hay chi tiết hơn là lập trình định hướng đối tượng, là một phương pháp lập trình lấy đối tượng (object) làm nền tảng để xây dựng thuật giải, xây dựng chương trình

Lập trình hướng đối tượng đặt trọng tâm vào đối tượng - yếu tố quan trọng trong quá trình phát triển chương trình- và không cho phép dữ liệu biến động tự do trong hệ thống Dữ liệu được gắn chặt với các hàm thành các vùng riêng mà chỉ có các hàm đó tác động lên và cấm các hàm bên ngoài truy cập tới một cách tuỳ tiện Lập trình hướng đối tượng cho phép chúng ta phân tích bài

Trang 24

toán thành các thực thể được gọi là các đối tượng và sau đó xây dựng các dữ liệu cùng các hàm xung quanh các đối tượng đó Các đối tượng có thể tác động, trao đổi thông tin với nhau thông qua cơ chế truyền nhận thông điệp (message) Việc tổ chức một chương trình hướng đối tượng có thể được mô tả như sau:

Lập trình hướng đối tượng có các đặc tính chủ yếu sau:

 Tập trung vào dữ liệu thay cho các hàm

 Chương trình được chia thành các đối tượng

 Cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối tượng

 Các hàm thao tác trên các vùng dữ liệu của đối tượng được gắn với cấu trúc dữ liệu đó

 Dữ liệu được đóng gói lại, được che giấu và không cho phép các hàm ngoại lai truy cập tự do

 Các đối tượng tác động và trao đổi thông tin với nhau qua các hàm

 Có thể dễ dàng bổ sung dữ liệu và các hàm mới vào đối tượng nào

Trang 25

Đối tượng là sự kết hợp giữa dữ liệu và phương thức thao tác trên dữ liệu đó Có thể đưa ra công thức phản ánh bản chất kỹ thuật của lập trình hướng đối tượng như sau:

Đối tượng = dữ liệu + phương thức

Lớp (class)

Lớp là một khái niệm mới trong lập trình hướng đối tượng so với các kỹ thuật lập trình khác Đó là một tập các đối tượng có cấu trúc dữ liệu và các phương thức giống nhau (hay nói cách khác là một tập các đối tượng cùng loại) Như vậy khi có một lớp thì chúng ta sẽ biết được một mô tả cấu trúc dữ liệu và phương thức của các đối tượng thuộc lớp đó Mỗi đối tượng sẽ là một thể hiện cụ thể (instance) của lớp đó Trong lập trình, chúng ta có thể coi một lớp như là một kiểu còn các đối tượng sẽ là các biến có kiểu của lớp

Nguyên tắc đóng gói dữ liệu

Trong lập trình hướng đối tượng ta đã thấy các hàm hay thủ tục được sử dụng mà không cần biết nội dung cụ thể của nó Người sử dụng chỉ cần biết chức năng của hàm cũng như các tham số cần truyền vào để gọi hàm thực thi

mà không cần quan tâm đến những lệnh cụ thể bên trong nó Người ta gọi đó là

sự đóng gói về chức năng

Trong lập trình hướng đối tượng, không những chức năng được đóng gói

mà cả dữ liệu cũng như vậy Với mỗi đối tượng, người ta không thể truy cập trực tiếp vào các thành phần dữ liệu của nó mà phải thông qua các thành phần chức năng (các phương thức) để làm việc đó

Chúng ta sẽ thấy sự đóng gói thực sự về dữ liệu chỉ có trong một ngôn ngữ lập trình hướng đối tượng “thuần khiết” (pure) theo nghĩa các ngôn ngữ được thiết kế ngay từ đầu chỉ cho lập trình hướng đối tượng Còn đối với các ngôn ngữ “lai” (hybrid) được xây dựng trên các ngôn ngữ khác (ban đầu chưa phải là hướng đối tượng) như C++ vẫn có những ngoại lệ nhất định vi phạm nguyên tắc đóng gói dữ liệu

Tính thừa kế (inheritance)

Trang 26

Một khái niệm quan trọng của lập trình hướng đối tượng là sự thừa kế

Sự thừa kế cho phép chúng ta định nghĩa một lớp mới trên cơ sở các lớp đã tồn tại có bổ sung những phương thức hay các thành phần dữ liệu mới Khả năng

kế thừa cho phép chúng ta sử dụng lại một cách dễ dàng các module chương trình mà không cần thay đổi các module đó Đây là một điểm mạnh của lập trình hướng đối tượng so với lập trình cấu trúc

Tính đa hình (polymorphime)

Tính đa hình xuất hiện khi có khái niệm kế thừa Giả sử chúng ta có một

kế thừa lớp hình tứ giác và tam giác từ lớp hình đa giác (hình tam giác và tứ giác có đầy đủ các thuộc tính và tính chất của một hình đa giác) Lúc này một đối tượng thuộc lớp hình tam giác hay tứ giác đều có thể hiểu rằng nó là một hình đa giác Mặt khác với mỗi đa giác ta có thể tính diện tích của nó Như vậy làm thế nào mà một đa giác có thể sử dụng đúng công thức để tính diện tích phù hợp với nó là hình tam giác hay tứ giác Ta gọi đó là tính đa hình

1.3 Các ưu điểm của lập trình hướng đối tượng:

Lập trình hướng đối tượng đem lại một số lợi thế cho người thiết kế lẫn người lập trình Cách tiếp cận hướng đối tượng giải quyết được nhiều vấn đề tồn tại trong quá trình phát triển phần mềm và tạo ra được những phần mềm có

độ phức tạp và chất lượng cao Phương pháp này mở ra một triển vọng to lớn cho người lập trình Những ưu điểm chính của lập trình hướng đối tượng là:

 Thông qua nguyên lý kế thừa, chúng ta có thể loại bỏ được những chương trình lặp lại trong quá trình mô tả các lớp và có thể mở rộng khả năng sử dụng của các lớp đã xây dựng mà không cần phải viết lại

 Chương trình được xây dựng từ những đơn thể (đối tượng) trao đổi với nhau nên việc thiết kế và lập trình sẽ được thực hiện theo quy trình nhất định chứ không phải dựa vào kinh nghiệm và kỹ thuật như trước nữa Điều này đảm bảo rút ngắn được thời gian xây dựng hệ thống và tăng năng suất lao động

Trang 27

 Nguyên lý đóng gói hay che giấu thông tin giúp lập trình viên tạo

ra được những chương trình an toàn không bị thay đổi bởi những đoạn chương trình khác

 Có thể xây dựng được ánh xạ các đối tượng của bài toán vào đối tượng chương trình

 Cách tiếp cận thiết kế đặt trọng tâm vào dữ liệu, giúp chúng ta xây dựng được mô hình chi tiết và dễ dàng cài đặt hơn

 Các hệ thống hướng đối tượng dễ mở rộng, nâng cấp thành những

hệ lớn hơn

 Kỹ thuật truyền thông điệp trong việc trao đổi thông tin giữa các đối tượng làm cho việc mô tả giao diện với các hệ thống bên ngoài trở nên đơn giản hơn

 Có thể quản lý được độ phức tạp của những sản phẩm phần mềm Với nhiều đặc tính phong phú của lập trình hướng đối tượng nói riêng, của phương pháp phân tích thiết kế và phát triển hướng đối tượng nói chung, chúng ta hy vọng công nghiệp phần mềm sẽ có những cải tiến vượt bậc không những về chất lượng mà còn gia tăng nhanh về số lượng trong tương lai

2 Ngôn ngữ lập trình Visual C++ trên môi trường Windows

2.1 Tổng quan:

Như chúng ta đã biết, các chương trình ứng dụng ngày nay thường là phức tạp và quy mô hơn so với trước đây Hơn nữa, bên cạnh quy mô lớn và phức tạp thì giao diện đồ họa gần như không thể thiếu trong những chương trình ứng dụng này

Tuy nhiên, cho dù các chương trình ứng dụng ngày càng đòi hỏi tính quy

mô, phức tạp hơn thì người lập trình vẫn có khả năng giảm thiểu các công việc của mình nếu họ chọn được một công cụ lập trình hợp lý

Trang 28

Visual C++ là một trong những công cụ nói trên Với code-generating wizards, Visual C++ có thể tạo ra khung sườn cho các chương trình ứng dụng thực thi trong môi trường Windows trong vòng vài giây Các lớp thư viện đi kèm với Visual C++ như là Microsoft Foundation Classes (MFC) đã trở thành một trong các tiêu chuẩn để phát triển các phần mềm dưới môi trường Windows cho các trình biên dịch C khác nhau Bên cạnh đó, các công cụ soạn thảo khả kiến cũng tạo ra cho chúng ta các công cụ hữu hiệu để có thể tạo các menu và các hộp hội thoại

Nói tóm lại, việc nghiên cứu Visual C++ là một việc làm cần thiết cho các nhà lập trình ứng dụng khi viết các chương trình thực thi trong môi trường Windows và giao diện đồ họa

Để cung cấp cho lập trình viên một môi trường làm việc hiệu quả, Microsoft Developer Studio đã kết hợp các giai đoạn của việc lập trình như soạn thảo, biên dịch và kiểm tra lỗi lại thành một giao diện duy nhất, điều đó có nghĩa chúng ta có thể cài đặt hay xoá bỏ các Breakpoint phục vụ cho việc Debug chương trình trong cùng một giao diện với việc soạn thảo phần Source code Hơn thế nữa, khi chúng ta tiến hành xây dựng một đề án, môi trường phát triển tích hợp (IDE - Integrated Development Environment) có thể phát hiện các lỗi và cho phép chúng ta tiếp cận ngay đến vị trí lỗi đó một cách nhanh chóng cho dù tập tin chứa các lỗi này chưa được mở

Với Microsoft Visual C++, chương trình ứng dụng thường được xây dựng trên cơ sở các lớp (classes) Có rất nhiều lớp khác nhau đã được xây dựng sẵn thành thư viện để phục vụ cho người lập trình Chẳng hạn như lớp CDC là lớp phục vụ rất đắc lực cho việc vẽ hình trong các ứng dụng viết bằng Visual C++ Lớp CDC

Một cách chuyên dụng, lớp CDC được thiết kế cho mục đích chính là vẽ hình để tạo những hình ảnh thông báo hay để thực thi hàm OnDraw() khi chúng

ta cần làm việc trong các cửa sổ Trong thực tế thì lớp CDC được thiết kế bao gồm hai nhóm Device Context: một dùng cho việc quản lý các quá trình vẽ và một dùng cho việc quản lý các quá trình hỏi đáp – truy vấn (query) Việc quản

Trang 29

lý quá trình vẽ trên các DC được thực thi bởi m_hDC và việc quản lý các quá trình chất vấn là do m_hAttribDC Khi chúng ta can thiệp vào CDC dù với một công việc sơ đẳng nhất thì đáp ứng tương tự sẽ xảy ra cho DC tương ứng Do

đó chúng ta có thể thực hiện các công việc một cách đơn giản là sử dụng các hàm thành phần của CDC

Đồng thời Windows cũng giới thiệu một thư viện GDI (Graphic Device Interface) Thư viện này giúp cho chương trình viết ra có thể tiếp cận driver Video và Printer của hệ thống một cách dễ dàng Chương trình này có thể gọi các hàm chức năng của GDI, tham khảo cấu trúc của các dữ liệu bằng cách gọi Device Context Windows sẽ ánh xạ cấu trúc Device Context thành Physical Device và đưa ra Input/Output tương ứng

Microsoft Developer Studio và tiến trình xây dựng:

Visual C++ là một thành phần của Microsoft Developer Studio là IDE (Integrated Development Environtment) IDE có nguồn gốc từ Visual Workbench dựa trên Quick C cho Window Microsoft Developer Studio cung cấp khả năng :

 Help Online làm việc như một Web Browser

Trang 30

Ở đây, trong phạm vi đề tài này, chúng ta chỉ nghiên cứu lập trình C++ với

sự hỗ trợ của thư viện MFC (Microsoft Foundation Class) Thư viện này là một công cụ quan trọng để xây dựng nhanh các chương trình ứng dụng Windows sử dụng Visual C++ Nó cũng làm cho việc lập trình dễ dàng hơn bằng cách cung cấp những lớp, những đối tượng với các hành vi (Methods) và các thuộc tính (Properties)

2.2 1 Window Messages:

Mọi hoạt động trên FrameWork đều thông qua thông điệp, tương ứng với

mã nhận diện ID ta sẽ có các lệnh tương ứng với các thông điệp Window Ví

dụ như người sử dụng di chuyển con chuột thì cửa sổ này sẽ nhận được thông điệp WM_MOUSEMOVE Chương trình cần phải đáp ứng bằng một hàm chức năng tự tạo

Macro afx_msg là nơi khai báo hàm thành viên đáp ứng thông điệp Để tạo hàm xử lý thông điệp ta sử dụng ClassWizard chọn lớp cơ sở để chứa nó, sau

đó chọn Window Message tương ứng sau khi đã có sự đồng ý thì nó được ánh

Ngày đăng: 25/12/2014, 19:18

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
6. Thiết kế đồ họa định hướng đối tượng với C++ – Huỳnh Văn Đức 7. Using Visual C++ 6 – Jon Bates and Tim Tompkin Sách, tạp chí
Tiêu đề: Thiết kế đồ họa định hướng đối tượng với C++
Tác giả: Huỳnh Văn Đức
1. Giáo trình Trí Tuệ Nhân Tạo – Huỳnh Văn Đức 2. Trí Tuệ Nhân Tạo – Nguyễn Thanh Thủy Khác
5. Kỹ thuật đồ họa – Lê Tấn Hùng, Huỳnh Quyết Thắng Khác
10. Special Edition Using Visual C++ 6 Khác
11. Giáo trình phân tích và thiết kế hướng đối tượng với UML- Dương Anh Đức Khác
12. Bài giảng phân tích và thiết kế hướng đối tượng với UML – Lê Ngọc Anh Khác

HÌNH ẢNH LIÊN QUAN

Hình  vẽ  minh  họa  một  camera  như  vậy  lơ  lửng  trong  hệ  tọa  độ  thực  (World Coordinate System) - luận văn công nghệ thông tin một agent tự nhận thức để tìm kiếm
nh vẽ minh họa một camera như vậy lơ lửng trong hệ tọa độ thực (World Coordinate System) (Trang 17)
Bảng thông tin chi  tiết  của Robot - luận văn công nghệ thông tin một agent tự nhận thức để tìm kiếm
Bảng th ông tin chi tiết của Robot (Trang 41)
Sơ đồ có 5 lớp chính với ý nghĩa như sau: - luận văn công nghệ thông tin một agent tự nhận thức để tìm kiếm
Sơ đồ c ó 5 lớp chính với ý nghĩa như sau: (Trang 42)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w