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

bài báo cáo giữa kỳ môn trí tuệ nhân tạo

23 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 23
Dung lượng 890,16 KB

Nội dung

frontier then return failure node ← POPfrontier add node.STATE to explored for each action in problem.ACTIONSnode.STATE do child ← CHILD-NODEproblem, node, action if child.STATE is not i

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

BÀI BÁO CÁO GIỮA KỲ

Người hướng dẫn:

Người thực hiện: Cao Thị Thùy Giang - 52200138

Nguyễn Hòa An - Trần Thị Thảo Nguyên - Đào Thụy Bảo Hân -

Lớp: 22050301 Khóa: 26

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023

Trang 2

KHOA CÔNG NGHỆ THÔNG TIN

BÀI BÁO CÁO GIỮA KỲ MÔN TRÍ TUỆ NHÂN TẠO

Người hướng dẫn:

Người thực hiện: Cao Thị Thùy Giang - 52200138

Nguyễn Hòa An - Trần Thị Thảo Nguyên - Đào Thụy Bảo Hân -

Lớp: 22050301 Khóa: 26

Trang 3

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023

Trang 4

Em xin chân thành cảm ơn

Trang 5

BÀI BÁO CÁO ĐƯỢC HOÀN THÀNH

TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Chúng tôi xin cam đoan đây là bài báo cáo của riêng nhóm chúng tôi tôi Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất

kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo

Nếu phát hiện có bất kỳ sự gian lận nào chúng tôi xin hoàn toàn chịu trách nhiệm về nội dung bài báo cáo của mình. Trường đại học Tôn Đức Thắng không liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)

TP Hồ Chí Minh, ngày 13 tháng 03 năm 2024

Tác giả (ký tên và ghi rõ họ tên)

Trang 6

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

Phần xác nhận của GV hướng dẫn

_ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm (ký và ghi họ tên)

Phần đánh giá của GV chấm bài

_ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm (ký và ghi họ tên)

Trang 9

MỤC LỤC

Trang 10

DANH MỤC BẢNG CHỮ CÁI VIẾT TẮT

• BFS: Breath – First Search –

• A*: A – Start

• UCS: Uniform – Cost – Search

Trang 11

PHẦN 1: TÓM TẮT

I Vấn đề nghiên cứu

Các kiến thức đã được tiếp cận trong quá trình học môn trí tuệ nhân tạo

II Cách giải quyết vấn đề

o Tham khảo tài liệu trên internet

o Tham khảo slide bài giảng môn học và ghi chép trong quá trình học

o Áp dụng những hiểu biết qua các kiến thức đã được tiếp cận trong quá trình học tập

III Kết quả đạt được

o Hoàn thành các câu hỏi nội dung được đưa ra trong bài báo cáo

o Hệ thống lại toàn bộ những kiến thức đã được học trong suốt thời gian học tập

o Bảo đảm kiến thức nền tảng phục vụ cho các môn học sau cũng như công việc sau này

Trang 12

PHẦN 2: NỘI DUNG

1 Câu hỏi 1: 8-Puzzle

Trò chơi 8-puzzle có mục tiêu là di chuyển các khối số từ trạng thái bắt đầu để

đạt đư c trạng thái kết quợ ả Trong đó:

• Trạng thái bắ ầt đu có th ể là một cách s p x p bắ ế ất kỳ 8 khối số và ô tr ng trên ốbàn c ờ

• Trạng thái đích là một trong hai cách sắp xếp như mô tả trong bảng sau

1.1 Mô hình hoá bài toán dưới dạng không gian tr ng thái

• Trạng thái b ắt đầu: Bàn cờ được biểu diễn dưới dạng ma trận 3x3n, mỗi ô chứa các giá trị ngẫu nhiên gồm các phần t t ử ừ 1 đến 8, v i 1 là ô tr ng ớ ố

• Trạng thái đích: Ma trận 3x3 được s ắp xếp theo thứ tự tự 1 đến 8, với ô đầu tiên hoặc ô cu i cùng là ô trố ống theo như yêu cầu của đề bài

• Hành động: Di chuy n lên, xu ng, qua trái, qua ph i ể ố ả

• Chi phí đường đi: Mỗi bước di chuyển tiêu tốn 1 đơn vị, không di chuy n ểtiêu tốn 0 đơn vị

Trang 13

• Ý tưởng thuật toán :

o Giả s ử thuật toán là 1 đồ thị G = (V, E) Th c hi n l p l ch duy t cho ự ệ ậ ị ệcác đỉnh của đồ th G Việc duyệt các đỉnh s được ưu tiên sao cho ị ẽ

đỉnh nào gần v i nó nhấ ẽớ t s được duyệt trư c ớ

• Giải thuật

o Bước 1: Lấy mộ ỉt đnh bất kỳ trong đồ thị thêm vào cuối hàng đợi

Trạng thái ban đầu

Trang 14

o Bước 2: Lấy phân t u tiên cử đầ ủa hàng đợi và thêm nó vào danh sách

đã duyệt

o Bước 3: Tạo một danh sách các đỉnh liền k cề ủa đỉnh đang xét Thêm

những đỉnh không có trong danh sách đã duyệt vào cuối hàng đợi

o Bước 4: Tiếp tụ ặp lc l ại bước 2 và 3 cho đến khi hàng đợi trống

add node.STATE to explored

for each action in problem.ACTIONS(node.STATE) do

child ← CHILD-NODE(problem, node, action)

if child.STATE is not in explored or frontier then

if problem.GOAL-TEST(child.STATE) then return SOLUTION(child)

frontier ← INSERT(child, frontier) 1.2.2 Thuật toán A*

• Ý tưởng thuật toán

Thuật toán A* s t o mẽ ạ ột hàng đợi ưu tiên Tạo 1 hàm heuristic để tính chi phí sau mỗi lần thay đổ ạng thái kể cả i tr trạng thái ban đầu T ừ trạng thái

Trang 15

ban đầu thực hiện di chuyển tất cả hoạt động có thể xảy ra, tính toán chi phí

và đưa vào hàng đợi Lấy trạng thái có chi phí thấp nhất ra khỏi hàng đợi để tiếp tục tính toán và thay đổi trạng thái cho đến khi đạt được trạng thái đích

• Giải thuật

o Bước 1: Xác định các trạng thái ti p theo có thế ể x y ra c a bài toán ả ủ

o Bước 2: So sánh xem trạng thái nào có chi phí đường đi ngắn nhấ ểt đ xác định trạng thái tiếp theo

o Bước 3: Tiếp tụ ặp lc l ại cho đến khi đạt được trạng thái đích

• Mã giả

Function AStartSearch(problem, h, g) returns list of actions and path cost explored ← an empty set

frontier ← a priority queue

startNode ← a node with STATE = problem.INTIAL-STATE, cost = 0, heuristic(start,goal)

if curr_state isGoal then

path ← an array empty

loop do

Trang 16

if None(curr_node.parent) then return failure

append curr_node.action to path curr_node ← curr_node.parent return reverse of path add curr_state to explored

for each action in problem.ACTION(curr_state) succ_state ← problem.getResult(curr_state, action)

if succ_state not in explored then succ_cost ← curr_node.cost + problem.getCost(curr_state,action)

succ_node ← Node(succ_state,curr_node,action,succ_cost,heuristic(succ_state,goal)

frontier.INSERT(succ_node)

• Nhận xét

1.3 Mã ngu n

1.3.1 Chương trình 1

o Input: trạng thái bắt đầu tu ỳ ý do người dùng nh p; tên thu t toán mong mu n ậ ậ ố

o Output: Danh sách actions để giải trò chơi (Left, Right, Up, Down); tổng chi phí

o Visualization: Sử dụng thư viện graphviz để ẽ đường đi từ trạ v ng thái bắ ầt đu đến trạng thái kết thúc

Trang 17

1.3.2 Chương trình 2

o Phát sinh ng u nhiên 1000 tr ng thái bẫ ạ ắt đầu

o Chạy thuật toán BFS và A* để tìm ra gi i pháp, tính t ng chi phí ả ổ

o Lấy trung bình chi phí của 1000 lần thí nghiệm cho mỗi thu t toán ậ

o Vẽ biểu đồ ột để đố c i sánh hi u suệ ất của các thuật toán

2 Câu 2 Pacman

Cài đặt các thuật toán thông tin để giúp pacman ăn hết các điểm mồi trong bản

đồ và đi qua bốn góc của bản đồ theo thứ tự bất kỳ

2.1 Mô hình hoá bài toán dưới dạng không gian trạng thái

2.2 Thuật toán UCS và A* để giải trò chơi.

2.2.1 Thuật toán UCS

o Ý tưởng thuật toán

▪ UCS sử d ng mụ ột hàng đợi ưu tiên để duy t các tr ng thái theo ệ ạthứ t ự tăng dần c a chi phí vủ ới trạng thái ban đầu được thêm vào hàng đợi trước tiên

▪ Mỗi lầ ặn l p, node v i chi phí th p nhớ ấ ất được đưa ra khỏi hàng đợi

để duyệt Các tr ng thái tiếp theo được thêm vào hàng đợi v i chi ạ ớphí được tính từ trạng thái hiện tại

o Giải thuật

▪ Bước 1: Thêm trạng thái ban đầu vào cuối hàng đợi ưu tiên

▪ Bước 2: Lấy phần t u tiên cử đầ ủa hàng đợi ưu tiên và thêm vào danh sách đã duyệt

▪ Bước 3: Tạo m t danh sách các trộ ạng thái k cề ủa trạng thái đang xét Thêm những trạng thái chưa được duyệt vào cuối hàng đợi ưu tiên với chi phí tính từ trạng thái ban đầu

Trang 18

▪ Bước 4: Lặp lại từ Bước 2 đến khi hàng đợi trống

o Mã giả

Function UCSSearch(problem,start,goal) returns list of actions and path cost

explored ← an empty set

frontier ← a priority queue

startNode ← a node with STATE = problem.INTIAL-STATE,

if curr_state isGoal then

path ← an array empty

loop do

if None(curr_node.parent) then return failure

append curr_node.action to path curr_node ← curr_node.parent return reverse of path

add curr_state to explored for each action in problem.ACTION(curr_state) succ_state ← problem.getResult(curr_state, action)

if succ_state not in explored then succ_cost ← curr_node.cost + problem.getCost(curr_state,action)

Trang 19

succ_node ← Node(succ_state,curr_node,action,succ_cost)

frontier.INSERT(succ_node)

o Nhận xét

2.2.2 Thuật toán A*

o Ý tưởng thuật toán

▪ A* sử d ng mụ ột hàng đợi ưu tiên để lưu trữ và duyệt các trạng thái

▪ Tạo một hàm heuristic để ước lượng chi phí t ng thái hi n ừ trạ ệ

tạ ếi đn trạng thái đích

▪ Chi phí tính toán c a A* s ủ ẽ được tính ừ t chi phí thực tế (tính từtrạng thái ban đầu đến trạng thái hiện tại) cộng v i heuristic ớ(ước lư ng từ trạng thái hiện tại đến trợ ạng thái đích)

▪ Mỗi lầ ặn l p, node v i chi phí th p nhớ ấ ất được đưa ra khỏi hàng đợi để duy t Các trạệ ng thái ti p theo được thêm vào hàng đợi ế

với chi phí được tính t ng thái hi n t i ừ trạ ệ ạ

o Giải thuật

▪ Bước 1: Thêm trạng thái ban đầu vào cuối hàng đợi ưu tiên

▪ Bước 2: Lấy phần t u tiên cử đầ ủa hàng đợi ưu tiên và thêm vào danh sách đã duyệt

▪ Bước 3: Tạo m t danh sách các trộ ạng thái k cề ủa trạng thái đang xét Thêm những trạng thái chưa được duyệt vào cuối hàng đợi ưu tiên với chi phí tính từ trạng thái ban đầu

▪ Bước 4: Lặp lại từ Bước 2 đến khi hàng đợi trống

o Mã giả

Trang 20

Function AStartSearch(problem,start,goal) returns list of actions and path cost

explored ← an empty set frontier ← a priority queue startNode ← a node with STATE = problem.INTIAL-STATE, cost = 0, heuristic(start,goal)

frontier ← INSERT(startNode) loop do

if EMPTY?(frontier) then return failure curr_node ← POP(frontier) curr_state ← curr_node.state

if curr_state isGoal then path ← an array empty loop do

if None(curr_node.parent) then return failure append curr_node.actio n to path curr_node ← curr_node.parent

add curr_state to return reverse of path

explored

for each action in problem.ACTION(curr_state)succ_state ← problem.getResult(curr_state, action)

Trang 21

if succ_state not in explored thensucc_cost ← curr_node.cost + problem.getCost(curr_state,action)

succ_node ← Node(succ_state,curr_node,action,succ_cost,heuristic(succ_state,goal)

2.3 Chương trình để thực thi các thuật toán

- Input: đường dẫn đến tập tin chứa bản đồ; tên thuật toán cần chạy

- Output: danh sách các actions (North, East, West, South, Stop) cần thực

hiện;

- tổng chi phí

- Cấu trúc bản đồ như sau:

o % là vật cản, tường, không thể qua

o P à vị trí ban đầu của pacman

o là vị trí điểm mồi, số lượng bất kỳ

o Các ô trống còn lại pacman có thể đi qua

Trang 22

o Không có ma trong trò chơi

2.3.1 Phương pháp giải quyết

2.3.2 Mã nguồn

2.4 Visualization

Trực quan hoá các bước chạy của trò chơi trên màn hình console

3 Câu 3 Graphical Pacman

Trang 23

TÀI LIỆU THAM KHẢO

Ngày đăng: 07/05/2024, 21:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w