Nghiên cứu lập trình tập trả lời và ứng dụng cho bài toán ricochet robot

59 41 0
Nghiên cứu lập trình tập trả lời và ứng dụng cho bài toán ricochet robot

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH NGUYỄN THỊ THU PHƯƠNG LUẬN VĂN THẠC SỸ Chuyên ngành: CÔNG NGHỆ THÔNG TIN Mã ngành:60.48.02.01 ĐỀ TÀI NGHIÊN CỨU LẬP TRÌNH TẬP TRẢ LỜI VÀ ỨNG DỤNG CHO BÀI TOÁN RICOCHET ROBOT Người hướng dẫn: TS NGUYỄN NGỌC HIẾU Vinh, tháng /2018 MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT MỞ ĐẦU Sự cần thiết vấn đề nghiên cứu Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu 4 Nội dung nghiên cứu Kết cấu luận văn CHƯƠNG CHƯƠNG TRÌNH LOGIC TỔNG QUÁT 1.1 Một số định nghĩa 1.2 Phủ định chương trình logic 1.3 Biểu diễn tri thức chương trình logic tổng quát 11 CHƯƠNG 14 LẬP TRÌNH TẬP TRẢ LỜI ASP 14 2.1 Các định nghĩa 15 2.2 Phủ định cổ điển (phủ định mạnh) 18 2.3 Cú pháp chương trình logic mở rộng 20 2.4 Ngữ nghĩa tập trả lời ASP 20 2.5 Biểu diễn tri thức chương trình logic mở rộng ASP 24 CHƯƠNG 27 TÍCH HỢP LẬP TRÌNH TẬP TRẢ LỜI CLINGO VỚI PYTHON 27 3.1 Ngôn ngữ lập trình Python 27 3.2 Chương trình Clingo 28 3.3 Tích hợp lập trình tập trả lời Clingo với Python 29 CHƯƠNG 37 CÀI ĐẶT MƠ PHỎNG ỨNG DỤNG LẬP TRÌNH TẬP TRẢ LỜI 37 CHO BÀI TOÁN RICOCHET ROBOTS 37 4.1 Bài toán Ricochet Robots 37 4.2 Cài đặt chạy demo ứng dụng 38 KẾT LUẬN 56 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 57 TÀI LIỆU THAM KHẢO 57 DANH MỤC CÁC TỪ VIẾT TẮT ASP Lập trình tập trả lời (Answer Set Programming) CNTT Công nghệ thông tin CSDL Cơ sở liệu MỞ ĐẦU Sự cần thiết vấn đề nghiên cứu Lập trình logic phương pháp biểu diễn tri thức cung cấp khả để khai báo tri thức Lĩnh vực nghiên cứu lập trình logic phát triển mạnh mẽ thập niên vừa qua Lập trình logic chứng tỏ mạnh khả biểu diễn tri thức ứng dụng chủ yếu lĩnh vực trí tuệ nhân tạo công nghệ xử lý tri thức, máy học, hệ chuyên gia, xử lý ngôn ngữ tự nhiên,… Hiện nay, hướng mở rộng lập trình logic gọi lập trình tập trả lời (ASP) nhiều nhà khoa học quan tâm ASP dùng để biểu diễn dạng tri thức khác giới thực ASP xem ngơn ngữ có ngữ nghĩa dạng khai báo dựa ngữ nghĩa mơ hình bền vững chương trình logic thơng thường, chứng minh phù hợp cho nhiều lĩnh vực ứng dụng ASP cách tiếp cận lập trình khai báo ASP áp dụng số lĩnh vực quan trọng, chẳng hạn việc chẩn đoán lập kế hoạch cho tàu không gian thoi, lập luận đa tác tử, xử lý ngôn ngữ tự nhiên, … Nhiều cơng trình nghiên cứu có giá trị lập trình tập trả lời cơng bố Hệ thống Clingo thường sử dụng cho việc cài đặt thực thi lớp chương trình logic với ngữ nghĩa tập trả lời Tuy nhiên, dịch chương trình ASP truyền thống thường khơng xử lý vấn đề thay đổi cập nhật thông tin đầu vào, chẳng hạn dịch lấy chương trình đầu vào cho kết tập trả lời Trong thực tế, có nhiều tốn mà thơng tin thay đổi q trình xử lý tốn trị chơi, lập trình robot … lúc thơng tin thay đổi dịch ASP cần dịch lại từ đầu Vấn đề Clingo giải cách cho phép thủ tục kích hoạt lại có u cầu thay đổi thơng tin ban đầu tốn Cụ thể bổ sung cách tiếp cận khai báo ASP phương thức thủ tục, Python hay Lua, để xử lý thơng tin cần thay đổi Python ngơn ngữ lập trình bậc cao, thơng dịch, hướng đối tượng, đa mục đích, cú pháp Python dễ học ngôn ngữ mạnh mẽ linh hoạt không ngôn ngữ khác việc phát triển ứng dụng Trong luận văn này, chúng tơi nghiên cứu lập trình tập trả lời tích hợp lập trình tập trả lời - lập trình thủ tục Python - ASP ứng dụng giải toán phổ biến Ricochet Robot Cấu trúc nội dung luận văn gồm phần mở đầu, bốn chương nội dung, mô tả cài đặt, chạy chương trình, phần kết luận, hướng phát triển đề tài phần tài liệu tham khảo Mục tiêu nghiên cứu Nhằm nghiên cứu lập trình tập trả lời, tích hợp lập trình tập trả lời - lập trình thủ tục ứng dụng giải tốn phổ biến Ricochet Robot Đối tượng phạm vi nghiên cứu 3.1 Đối tượng nghiên cứu Lập trình tập trả lời ASP tích hợp với lập trình trình thủ tục 3.2 Phạm vi nghiên cứu Lập trình tập trả lời ASP với Clingo tích hợp với lập trình trình thủ tục Python để giải tốn Ricochet Robot Nội dung nghiên cứu - Các khái niệm lập trình logic; - Lập trình tập trả lời: khái niệm ngữ nghĩa; - Tích hợp lập trình tập trả lời Clingo với Python - Ứng dụng lập trình tập trả lời cho tốn Ricochet Robot Kết cấu luận văn • Phần mở đầu • Chương Chương trình logic tổng qt 1.1 Một số định nghĩa 1.2 Phủ định chương trình logic 1.3 Biểu diễn tri thức logic tổng qt • Chương Lập trình tập trả lời ASP 2.1 Các định nghĩa 2.2 Phủ định cổ điển 2.3 Cú pháp chương trình logic mở rộng 2.4 Ngữ nghĩa tập trả lời ASP 2.5 Biểu diễn tri thức chương trình logic mở rộng ASP • Chương Tích hợp lập trình tập trả lời Clingo với Python 3.1 Ngơn ngữ lập trình Python 3.2 Phần mềm Clingo 3.3 Tích hợp lập trình tập trả lời Clingo với Python • Chương Cài đặt mơ ứng dụng lập trình tập trả lời cho tốn Ricochet Robot 4.1 Bài toán Ricochet Robot 4.2 Cài đặt chạy demo ứng dụng • Kết luận • Hướng phát triển đề tài • Tài liệu tham khảo CHƯƠNG CHƯƠNG TRÌNH LOGIC TỔNG QT Logic tính tốn nhà logic học đưa vào năm 1950, dựa kỹthuật tự động hóa q trình suy diễn logic Logic tính tốn phát triển thành lập trình logic vào năm 1970 Từ hình thành khái niệm quan trọng lập trình khai báo (declarative programming) đối lập với lập trình cấu trúc (procedural programming) Về ý tưởng, lập trình viên cần đưa khai báo chương trình cịn việc thực cụ thể máy tính tự xác lập, việc thực chương trình hướng thủ tục lại xác lập cụ thể lập trình viên Ngôn ngữ Prolog công cụthực rõ ý tưởng Nhờ khả khai báo tự nhiên lập trình logic, Prolog nhanh chóng trở thành ứng cử viên cho việc biểu diễn tri thức Tính đầy đủ trở nên rõ ràng mối liên hệ chương trình logic với sở liệu suy diễn đưa vào thập kỷ 80 Việc sử dụng lập trình logic sở liệu suy diễn để biểu diễn tri thức gọi “cách tiếp cận logic cho việc biểu diễn tri thức” Cách tiếp cận dựa ý tưởng chương trình máy tính cung cấp đặc thù logic tri thức đó, độc lập với cách thực riêng biệt nào, với ngữ cảnh tự do, dễ dàng thao tác suy diễn Chính vậy, cú pháp ngơn ngữ lập trình phải kết hợp chương trình với đặc thù khai báo Khi đó, việc thực phương pháp tính tốn thơng qua so sánh thuộc tính cụ thể với cú pháp khai báo Việc đưa cú pháp thích hợp cho chương trình logic coi nhưmột lĩnh vực nghiên cứu quan trọng khó lập trình logic Đây kiến thức làm tiền đề cho nghiên cứu ngữ nghĩa chương trình logic với tập trả lời chương 1.1 Một số định nghĩa Quan hệ ánh xạ lập trình logic: Quan hệ Input Ánh xạ Output Input n:n Output n:1 Định nghĩa 1.1 (Bộ ký tự) Bảng chữ Α bao gồm loại ký hiệu sau: - Các biến - Các số đối tượng (có thể gọi số) - Các ký hiệu hàm (function symbol) - Các ký hiệu vị từ (predicate symbol) - Các liên kết logic: “not”, “←” “,” - Các ký hiệu phân cách “(“ “)” Trong đó, not liên kết logic gọi phủ định ngầm (negation as failure); biến xâu bao gồm ký tự bảng chữ chữ số, bắt đầu chữ viết hoa; số, ký hiệu hàm ký hiệu vị từ xâu bắt đầu chữ viết thường Thông thường, sử dụng chữ p, q, cho ký hiệu vị từ ; X, Y, Z, cho biến ; f, g, h, cho ký hiệu hàm a, b, c, cho số Định nghĩa 1.2 (Hạng thức) Gọi A ký tự Hạng thức định nghĩa đệ qui sau: (i) Mỗi A hạng thức, (ii) Mỗi biến A hạng thức, (iii) Nếu f ký hiệu hàm n-ngôi A t1, ,tn hạng thức f(t1, ,tn) hạng thức, (i) Hạng thức sinh quy tắc Một xem ký hiệu hàm 0-ngôi Hằng biến hạng thức nguyên tố, hạng thức hạng thức không chứa biến Định nghĩa 1.3 (Nguyên tố) Một nguyên tố có dạng p(t1,…,tn), p ký hiệu vị từ n-ngôi đối t1, ,tn hạng thức Nguyên tố nguyên tố không chứa biến Ta dùng A để ký hiệu nguyên tố tùy ý ta không quan tâm đến đối Ta định nghĩa nguyên tố đặc biệt, ký hiệu nghĩa ln ln có giá trị đúng, với ý để ký hiệu nguyên tố ln ln có giá trị sai Định nghĩa 1.4 (Cơng thức) Công thức định nghĩa đệ qui sau: (i) Mỗi nguyên tố công thức, (ii) Các vị từ true false công thức, (iii) Nếu E F cơng thức thì: ( E  F ) , (E ), ( E  F ) , ( E → F ) , ( E  F ) công thức, (iv) Nếu E công thức X biến X ( E ), X ( E ) công thức, (iv) Công thức sinh số hữu hạn quy tắc Định nghĩa 1.5 (Chương trình logic xác định) Chương trình logic xác định tập hữu hạn khác rỗng mệnh đề xác định có dạng: A  B1,…, Bm (m  0) Ví dụ 1.1 Cho chương trình logic xác định P gồm mệnh đề: r1 : sochan(s(0))  r2 : sochan(s(s(X)))  sochan(X) Trong chương trình s hàm 1-ngơi, xác định s(X) = X +1 với X  , nguyên tố sochan(X) để X số chẵn Mệnh đề đơn vị r1 có ý nghĩa số chẵn r2 mệnh đề với ý nghĩa X số chẵn s(s(X)) số chẵn Định nghĩa 1.6 (Herbrand) Không gian xác định Herbrand biểu diễn ngơn ngữ Λ chương trình Π, ký hiệu ( )HU Π, tập tất toán hạng biểu diễn với hàm số Λ Tập tất ngun tố ngơn ngữ chương trình Π định nghĩa ( )HB Π (cơ sở Herbrand Π) Với vị từ p, atoms(p) định nghĩa tập HB Π biểu diễn dạng vị từ p với tập vị từ A, atoms(A) tập phần tử ( )HB Π biểu diễn dạng vị từ thuộc A Ví dụ 1.2 Xét chương trình logic xác định P ví dụ 1.3: Vũ trụ Herbrand P là: UP = {0, s(0), s(s(0)), s(s(s(0))), } Cơ sở Herbrand P là: BP = {sochan(0), sochan(s(0)), sochan(s(s(0))), } Một số thể Herbrand P là: I1 = {sochan(0)} I2 = {sochan(0), sochan(s(0))} I3 = {sochan(sn(0)) | n  {0, 2, 4,…}} I4 = BP Định nghĩa 1.7 (Hiện hành nền) Một toán hạng gọi có tính chất (ground) khơng có biến xuất 1.2 Phủ định chương trình logic Định nghĩa 1.8 (Chương trình logic thơng thường) Chương trình logic thơng thường tập hữu hạn khác rỗng mệnh đề có dạng: { move (R,DX ,DY ,T) : robot (R), dir (DX ,DY) } :- time (T) move (R,T) :- move (R,_,_,T) halt (DX ,DY ,X-DX ,Y-DY ,T) :- pos (_,X,Y,T), dir(DX ,DY), dim(X-DX), dim (Y-DY), non stop (-DX ,-DY ,X,Y), T < horizon goto (R,DX,DY,X,Y,T) :- pos (R,X,Y,T), dir (DX,DY), T < horizon goto (R,DX,DY,X+DX,Y+DY,T) :- goto (R,DX,DY,X,Y,T), dim (X+DX, Y+DY) not stop (DX ,DY ,X,Y), not halt (DX ,DY ,X,Y,T) pos (R,X,Y,T) :- move (R,DX ,DY ,T), goto (R,DX ,DY ,X,Y,T -1) , not goto (R,DX ,DY ,X+DX ,Y+DY ,T -1) pos (R,X,Y,T) :- pos (R,X,Y,T -1) , time (T), not move (R,T) :- target (R,X,Y), not pos (R,X,Y, horizon ) # show move /4 goon (T) :- target (R,X,Y), T = horizon , not pos (R,X,Y,T) :- move (R,DX ,DY ,T -1) , time (T), not goon (T -1) , not move (R,DX ,DY ,T) # minimize { 1,T : goon (T) } Trong mã hóa này, chương trình định nghĩa số lượt di chuyển số thông qua clingo option –c (ví dụ: -c horizon=10) Robot di chuyển theo hướng định nghĩa cách di chuyển hay dừng 44 lại robot Lúc này, để tìm giải giáp cho robot di chuyển ta gọi chương trình clingo cách kết hợp chương trình sau: Từ câu lệnh gọi clingo chương trình liệt kê thao tác để di chuyển robot tới mục tiêu mã code đưa Tương tự, hình nêu robot vàng phải tìm cách di chuyển để tới mục tiêu 13 Dựa vào chương trình mã hóa tơi đưa lời gọi clingo sau: Clingo.exe board.lp robots.lp –c horizon=9/

Ngày đăng: 01/08/2021, 11:39

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan