1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập trình ràng buộc với bài toán về hỗ trợ phân luồng giao thông

72 15 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 72
Dung lượng 2,79 MB

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

Nội dung

Lập trình ràng buộc khắc phục được những khó khăn của những ngôn ngữ trước, nó hỗ trợ ràng buộc và tích hợp triệt để vào ngôn ngữ lập trình, cho phép người lập trình làm việc với bài toá

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC QUY NHƠN

PHẠM THANH TRÀ

LẬP TRÌNH RÀNG BUỘC VỚI BÀI TOÁN

VỀ HỖ TRỢ PHÂN LUỒNG GIAO THÔNG

Chuyên ngành : KHOA HỌC MÁY TÍNH

Người hướng dẫn: TS Hồ Văn Lâm

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan Luận văn “Lập trình ràng buộc với bài toán hỗ trợ phân luồng giao thông” là do Tôi thực hiện dưới sự hướng dẫn của TS Hồ

Văn Lâm -Giảng viên Khoa Công nghệ thông tin -Trường Đại học Quy Nhơn Tất cả nội dung được trình bày và các nguồn tài liệu sử dụng, tham khảo trong luận văn đều có trích dẫn rõ ràng, trung thực Tôi xin hoàn toàn chịu trách nhiệm trước pháp luật về các nội dung đã nghiên cứu, trình bày trong luận văn

Quy Nhơn, ngày 30 tháng 7 năm 2019

Người cam đoan

Phạm Thanh Trà

Trang 3

LỜI CẢM ƠN

Để hoàn thành được luận văn này, lời đầu tiên Tôi xin chân thành cảm

ơn quý thầy cô là giảng viên Khoa Công nghệ thông tin - Trường Đại học Quy Nhơn và quý thầy cô đã giảng dạy, hướng dẫn và truyền đạt cho Tôi kiến thức chuyên môn trong suốt thời gian học tập và nghiên cứu tại Trường Tôi xin bày tỏ sự cảm ơn đặc biệt tới giảng viên TS Hồ Văn Lâm đã định hướng cho Tôi trong việc lựa chọn đề tài, kịp thời đưa ra những nhận xét, phương pháp tiếp cận và trực tiếp dìu dắt, hướng dẫn Tôi trong suốt quá trình nghiên cứu để hoàn thành Luận văn này Tôi xin chân trọng cảm ơn gia đình, tới anh

em, bạn bè và các đồng nghiệp đã cổ vũ, động viên, hưởng ứng, giúp đỡ nhiệt tình Tôi trong suốt quá trình học tập và nghiên cứu

Xin chân thành cảm ơn!

Quy Nhơn, ngày 30 tháng 7 năm 2019

Người thực hiện

Phạm Thanh Trà

Trang 4

Lập trình ràng buộc khắc phục được những khó khăn của những ngôn ngữ trước, nó hỗ trợ ràng buộc và tích hợp triệt để vào ngôn ngữ lập trình, cho phép người lập trình làm việc với bài toán ở mức độ cao hơn, trong khi đó các

kỹ thuật thực thi ở mức dưới cũng sử dụng kỹ thuật tích hợp cho ràng buộc Việc ra đời các ngôn ngữ lập trình ràng buộc thế hệ mới có khả năng đáp ứng được những yêu cầu đối với số lượng lớn các ứng dụng nhằm giải quyết các bài toán thực tế đặt ra trong đời sống xã hội

Trong điều kiện về hạ tầng giao thông trên cả nước hiện nay, các sự cố

về ùn ứ, ách tắc giao thông đang xảy ra hàng ngày ở các vùng đô thị lớn và những tuyến đường giao thông huyết mạch Các sự cố này đã gây nhiều tổn thất nặng nề cho sự phát triển của nền kinh tế, ảnh hưởng nhiều đối với các hoạt động kinh tế xã hội, làm mất mỹ quan đô thị, ảnh hưởng xấu môi trường… Chính vì thế, việc nghiên cứu ứng dụng tiến bộ khoa học công nghệ

để phục vụ cho việc nhận biết, đánh giá mức độ của các sự cố giao thông để

có biện pháp xử lý và phòng tránh là điều cần thiết và cấp bách thực hiện Vấn đề đặt ra là làm cách nào để có thể nhận biết trước nguy cơ có thể dẫn đến sự cố giao thông? Nếu có sự cố về giao thông xảy ra, việc xử lý phân luồng, điều tiết giao thông như thế nào để đem lại hiệu quả tốt nhất cho các

Trang 5

2 nhà quản lý cũng như cho người tham gia giao thông? Vì vậy, việc nghiên cứu cơ sở lý thuyết toán học về cách mô tả các điều kiện ràng buộc và giải các

hệ phương trình ràng buộc đó, kết hợp ứng dụng qua các thuật toán, kỹ thuật lập trình tiên tiến là một hướng đi khả quan để giải quyết được các vấn đề mà

xã hội đang đặt ra hiện nay

Trên nền tảng kiến thức được truyền đạt từ Nhà trường, từ các giáo viên Khoa Công nghệ thông tin, kết hợp sự hướng dẫn, tạo điều kiện thuận lợi của Giáo viên hướng dẫn, Tôi đã xác định chọn cho mình lĩnh vực nghiên cứu với

đề tài: “Lập trình ràng buộc với bài toán hỗ trợ phân luồng giao thông” Hy vọng rằng, đề tài nghiên cứu này sẽ đóng góp thêm một giải pháp mới để các

cơ quan quản lý, các doanh nghiệp lựa chọn sử dụng đáp ứng yêu cầu của thực tế xã hội

Đối tượng nghiên cứu là các cơ sở lý thuyết về lập trình ràng buộc, thuật toán giải quyết bài toán thõa mãn ràng buộc, bài toán đặt ra đối với hệ thống

hạ tầng giao thông đường bộ hiện nay; đối tượng, phương tiện tham gia giao thông đường bộ; các bộ quy tắc, điều kiện ràng buộc liên quan đến hoạt động giao thông vận tải đường bộ

Phạm vi nghiên cứu: ứng dụng lý thuyết lập trình ràng buộc, các thuật toán giải quyết bài toán thỏa mãn ràng buộc; thu thập các thông tin, dữ liệu chuyên môn liên quan đến lĩnh vực giao thông vận tải đường bộ trên địa bàn tỉnh Bình Định; phân tích, xử lý và đưa ra kết quả xử lý đạt hiệu quả tối ưu

Trang 6

và đưa ra các quyết định thực thi một cách nhanh chóng, chính xác Việc xử

lý, tính toán và đưa ra quyết định cuối cùng xét về bản chất là việc giải bài toán thực tế để tìm ra bộ nghiệm sao cho thõa mãn, đáp ứng tất cả các yêu cầu, điều kiện ràng buộc đặt ra và được gọi là bài toán thõa mãn ràng buộc (Constrains Satisfation Problem -CSP) Những loại bài toán này được ứng dụng rất nhiều trong các hoạt động, lĩnh vực thực tế như: thiết kế, phân bổ tài nguyên, lập kế hoạch, điều khiển hệ thống

Lập trình ràng buộc được phát triển khá sớm so với những ngôn ngữ lập trình phổ biến hiện nay như Java (1990s) Vào thập niên 60, 70, những ý tưởng đầu tiên về lập trình ràng buộc có thể được tìm thấy trong lĩnh vực nghiên cứu trí tuệ nhân tạo (AI) mà cụ thể là ngôn ngữ lập trình Prolog (Alain Colmerauer, 1972) Một số ứng dụng đầu tiên của ngôn ngữ này đã đạt được những thành tựu đáng kể như: hệ thống tương tác đồ họa Sketchpad của Ivan Sutherland (1963), hệ thống ThingLab của Alan Borning (1981) Tuy nhiên, phải đến dòng ngôn ngữ lập trình logic ràng buộc (Constrain Logic Programming -CLP) mới đánh dấu bước phát triển chính của lập trình ràng buộc CLP được phát triển bởi hai nhà khoa học Jaffar và Lassez (1987), dựa trên nền tảng lập tình logic, kết hợp cả hai khía cạnh khai báo của lập trình logic với giải quyết các ràng buộc Tiếp sau đó, một số dòng ngôn ngữ lập trình ràng buộc lần lượt được phát triển, có thể kể ra như: Concurrent Logic Programming (1980s), Concurrent Constraint Programming (1990s)

Lập trình logic ràng buộc là một sự tổng quát hóa lập trình logic Trong quan điểm của CLP về lập trình logic, các ngôn ngữ lập trình logic chuẩn chỉ

Trang 7

4 cung cấp một loại ràng buộc đơn thuần, các câu lệnh có cú pháp giống nhau được giải quyết triệt để Tuy nhiên, điều đó cũng còn khá nhiều hạn chế và cũng là lý do thúc đẩy cho sự ra đời của các nghiên cứu lập trình logic vào đầu những năm 1980 dành cho phát triển và chuẩn hóa các ngôn ngữ lập trình logic Những hạn chế của việc lựa chọn chữ cố định đã được sớm áp dụng trong việc phát triển các ngôn ngữ lập trình logic Absys -một tiền thân của Prolog- cung cấp lịch trình động cũng như các ngôn ngữ lập trình logic IC-Prolog, Prolog-II và MU-Prolog Do đó trong các khai báo đợi MU-Prolog có thể được sử dụng để xác định rằng việc đánh giá một vị từ cụ thể phải "đợi" cho đến khi các đối số của nó không biến đổi Dựa trên điều này, MU-Prolog cung cấp các sự cân bằng cú pháp và các biến vị ngữ số học, cung cấp giải pháp ràng buộc đơn giản bằng cách sử dụng các kỹ thuật khởi tạo biến cục bộ

Mô hình CLP, trong đó có các ràng buộc tùy ý là sự phân tích tự nhiên của hai hướng nghiên cứu này Thuật ngữ thực tế Constraint Logic Programming được đặt ra bởi Jaffar và Lassez vào năm 1986 và họ đưa ra một lược đồ và ngữ nghĩa cho lớp ngôn ngữ CLP Đây là một phần mở rộng của họ trên lược đồ ngữ nghĩa cho các chương trình logic và ngữ nghĩa logic cho bất phương trình Với những người khác, họ đã phát triển ngôn ngữ CLP (R) một ngôn ngữ mở rộng Prolog bằng cách cung cấp các ràng buộc số học,

sử dụng một thuật toán phức tạp để giải quyết các ràng buộc tuyến tính và các ràng buộc số học phi tuyến tính đầy đủ Các tiện ích của CLP (R) đã được chứng minh bằng cách sử dụng nó trong lĩnh vực tài chính và một loạt các ứng dụng kỹ thuật

Colmeraur và nhóm của ông đã phát triển Prolog II vào đầu những năm

1980 và sau đó là Prolog III vào cuối những năm 1980 Prolog II cung cấp các phương trình và bất phương trình trên các cây tỷ lệ và là ngôn ngữ lập trình logic đầu tiên được mô tả rõ ràng như sử dụng các constraints Prolog III là một ngôn ngữ CLP thực sự tiên tiến so với Prolog II bằng cách cung cấp các

Trang 8

5 ràng buộc kiểu booleans, số học tuyến tính trên các số hữu tỷ và các ràng buộc trên các danh sách (chuỗi)

Nhóm nghiên cứu tại ECRC (đáng chú ý là Dincbas, Van Hentenryck và Simonis) đã phát triển CHIP trong giai đoạn 1985-1988 Nó được phát triển

để giải quyết các vấn đề tối ưu hóa tổ hợp cho ngành công nghiệp bằng cách kết hợp với phương pháp tìm kiếm quay lui (backtracking) của Prolog với các công nghệ xuyên suốt từ nghiên cứu trí tuệ nhân tạo Đó là ngôn ngữ CLP đầu tiên cung cấp một cách rõ ràng ràng buộc miền hữu hạn Các ứng dụng giới thiệu bao gồm chẩn đoán mạch, lập lịch và phân tích các vấn đề về chứng khoán

CLP là khởi nguồn cho các ý tưởng lập trình logic liên quan xuất hiện trong trí tuệ nhân tạo cộng đồng nghiên cứu SKETCHPAD của Sutherland là một trong những hệ thống máy tính đầu tiên sử dụng các ràng buộc; đáng chú

ý đối với CLP bao gồm nghiên cứu tại MIT về các ngôn ngữ và hệ thống để giải quyết ràng buộc, ví dụ ngôn ngữ CONSTRAINTS được nghiên cứu ứng dụng trong việc phân tích và thiết kế mạch điện [18] Steele được xem là người đầu tiên chỉ ra sự tương đồng về khái niệm giữa giải quyết ràng buộc và lập trình logic Việc giải quyết ràng buộc được xử lý bằng sự nhất quán của các hàm thập phân cũng như bằng cách lý luận về các hàm trừu tượng Các ngôn ngữ mô hình toán học như AMPL và các gói thao tác đại số tượng trưng như MATLAB cũng chia sẻ một số điểm tương đồng với ngôn ngữ CLP, cho phép xử lý một vấn đề xác định bằng phương pháp toán học (sử dụng bộ giải

từ bên ngoài trong trường hợp ngôn ngữ modeling; sử dụng phương pháp giải toán đại số và số được hỗ trợ bởi các gói đại số)

Khái niệm các bài toán thỏa mãn điều kiện ràng buộc (Constraint Satisfaction Problems - CSPs) cũng được chính thức công nhận bởi cộng đồng trí tuệ nhân tạo (AI) Họ cũng chỉ ra những khái niệm cơ bản của tính nhất quán cục bộ (local consistency) và các thuật toán để giải chúng Một

Trang 9

6 cách độc lập, nhiều phương pháp khác nhau cũng đã được hình thành, ví dụ như phương pháp tìm kiếm quay lui (backtracking) được đưa ra từ thế kỷ 19, trong khi khái niệm nhánh cận (branch and bound) được đưa ra trong tính toán tối ưu tổ hợp Những đóng góp của CP đã chỉ ra những dạng mới khác nhau trong tìm kiếm khi kết hợp những kỹ thuật đã biết với các thuật toán lan truyền ràng buộc khác nhau Một số tổ hợp đặc trưng cũng đã được nghiên cứu trong vùng tối ưu tổ hợp

Sự phát triển của CSP đã dẫn đến sự ra đời của nhiều ngôn ngữ lập trình ràng buộc Trong thập niên 80, những ngôn ngữ CP đầu tiên đã ra đời Việc quan trọng là những ngôn ngữ này đều dựa trên những nguyên lý Lập trình Logic Chính điều này dẫn đến sự phát triển của Lập trình Logic Ràng buộc (Constraint Logic Programming-CLP) và được mở rộng từ ngôn ngữ lập trình logic như Prolog bằng cách thay thế phép hợp nhất (unification) với việc kiểm tra việc thỏa mãn ràng buộc dùng bộ giải giả định

Bất chấp sự thành công của CLP, gần đây, một số ngôn ngữ lập trình ràng buộc khác cũng đang được xem xét, bàn thảo Ví như: ngôn ngữ ràng buộc đồng thời, nó dùng sự kế thừa ràng buộc để mở rộng ngôn ngữ CLP bằng cách cung cấp các thông tin không đồng bộ giữa các tác tử (agents); ngôn ngữ truy vấn ràng buộc cho cơ sở dữ liệu, nó mở rộng cơ sở dữ liệu quan hệ bằng cách cho phép các bộ chứa các biến đã được ràng buộc; ngôn ngữ lập trình hàm ràng buộc, ngôn ngữ lập trình mệnh lệnh ràng buộc và bộ công cụ giải ràng buộc hướng đối tượng Tuy nhiên, CLP vẫn là ngôn ngữ lập trình ràng buộc nguyên mẫu Theo cảm nhận, chúng là ngôn ngữ lập trình ràng buộc “tinh khiết” và “nhỏ nhất” do về bản chất chỉ có thao tác người lập trình có thể thực hiện là việc định nghĩa các ràng buộc mới của họ từ những ràng buộc cở sở đã được trang bị Vì lý do này, việc hiểu CP là công việc liên quan đến bất kỳ ngôn ngữ lập trình ràng buộc nào

Trang 10

7 Đặc tính nổi bật của lập trình ràng buộc là các ràng buộc được liên kết chặt chẽ một cách tự nhiên Nó liên quan mật thiết với các khía cạnh của toán học, khoa học máy tính truyền thống và trí tuệ nhân tạo Lập trình ràng buộc phác họa công việc trong thuật toán giải quyết ràng buộc từ việc tìm kiếm các thao tác, tính toán số và kỹ thuật giải quyết ràng buộc trong các bài toán thỏa mãn ràng buộc, một lĩnh vực quan trọng trong trí tuệ nhân tạo Nó cũng phác họa những kỹ thuật từ việc thiết kế và thực thi ngôn ngữ lập trình, cũng như lập luận tự động, đến lý thuyết và việc thực thi cơ sở dữ liệu

Từ những năm 1970, CSP là một chủ đề nghiên cứu trong trí tuệ nhân tạo và một số kiểu ràng buộc đã được nghiên cứu để có thể biểu diễn tốt hơn các vấn đề thực tế vào hệ thống Trong những năm gần đây, lập trình ràng buộc đã thu hút nhiều sự quan tâm của số lượng lớn các nhà nghiên cứu trong lĩnh vực ứng dụng tin học vì nó có khả năng giải quyết nhiều vấn đề khó khăn trong thực tế Vì thế, lập trình ràng buộc được nhận định là một trong những chiến lược mới trong nghiên cứu khoa học máy tính Tuy nhiên, lập trình ràng buộc vẫn là một trong những công nghệ được ít người biết đến và hiểu rõ Trong những năm trở lại đây, cộng đồng nghiên cứu về ràng buộc đang tập trung nghiên cứu các giải pháp tối ưu những hệ thống ràng buộc và mục đích đưa ra lời giải tối ưu, nghiệm toàn cục [12][13][15]

1.2 Ứng dụng CSP

Trong những ứng dụng thực tế, mỗi một hệ ràng buộc chứa các thành phần như sau: các đối tượng được xem là các biến trong hệ ràng buộc, các mối quan hệ giữa các đối tượng trong hệ thống được biểu diễn dưới dạng là các ràng buộc và tập các ràng buộc mô tả các yếu tố liên quan của các đối tượng trong hệ thống thì được gọi là hệ ràng buộc Các ràng buộc là thành phần không thể thiếu, có thể là ràng buộc rời rạc, ràng buộc liên tục hoặc là ràng buộc hỗn hợp Giá trị của các biến có thể là miền rời rạc hoặc miền liên

Trang 11

8 tục Việc giải quyết thõa mãn một hệ thống nhiều ràng buộc thường rất phức tạp, khó thực hiện và trong một số trường hợp có thể không có kết quả hoặc cho kết quả không chính xác

Từ thập niên 90 trở lại đây, nhiều nền kinh tế trên thế giới tăng trưởng mạnh mẽ, các doanh nghiệp, tổ chức thương mại không ngừng ra đời và phát triển Đồng thời, khoa học kỹ thuật công nghệ cũng thu được những thành tựu rực rỡ, mang đến cho xã hội những công nghệ tiên tiến và hàng loạt công nghệ kỹ thuật mới được ra đời, ứng dụng rộng rãi trong các ngành kinh tế, thương mại, góp phần thúc đẩy tăng trưởng kinh tế Xu hướng hiện nay, các ngành công nghiệp, các lĩnh vực hoạt động sản xuất ứng dụng công nghệ CP ngày càng gia tăng nhanh chóng Số lượng các công ty ứng dụng thành công công nghệ này ngày càng tăng Ví dụ: trong lĩnh vực hàng không, CP được ứng dụng để lập lịch, điều hành các chuyến bay, hoạt động chuyển phát nhanh; Trong sản xuất, CP ứng dụng trong việc quản lý chuỗi cung ứng sản xuất, lập lịch, phân bổ tài nguyên, nguồn lực [2][13][17]

Không chỉ được ứng dụng trong các ngành nghề kinh tế, công nghệ CP còn được ứng dụng thành công trong các lĩnh vực khác như: đồ họa máy tính,

xử lý ngôn ngữ tự nhiên (phân tích từ ngữ, cú pháp), quản lý hệ thống cơ sở

dữ liệu (đảm bảo /phục hồi tính nhất quán, toàn vẹn của dữ liệu), lập thời gian biểu, lập lịch; phân tích các phần tử sinh học (chuỗi ADN -protein)

Trong lĩnh vực nghiên cứu khoa học máy tính, các bài toán về tối ưu hóa

tổ hợp được đánh giá là các bài toán khó NP, đặc trưng bởi bộ dữ liệu lớn, các ràng buộc phức tạp Để giải quyết vấn đề này hiệu quả đòi hỏi phải có kinh nghiệm và kỹ năng Trên thế giới có nhiều công trình nghiên cứu, các thuật toán về quy hoạch động Tuy nhiên, trong lập trình truyền thống chưa có giải thuật hiệu quả nhất, đáp ứng được thời gian xử lý là đa thức Và do đó, CP nổi lên như một công nghệ quan trọng, giải quyết hiệu quả các bài toán tối ưu hóa

tổ hợp, ứng dụng thành công trong nhiều lĩnh vực CP thực sự là một giải

Trang 12

9 pháp tốt, được giới chuyên môn đánh giá cao về khả năng giải quyết các vấn

đề phức tạp trong thực tế

Ứng dụng trong kỹ thuật thiết kế xây dựng, các ràng buộc được xây dựng cho việc thiết kế dầm với đà, uốn hai trục của thanh giằng, dằn cột và lực dọc trục trong đường chéo của hệ thống giằng Các ràng buộc đơn được xây dựng để thu nhỏ miền giá trị của một số biến nhất định nhằm tối ưu cho việc thiết kế Danh sách các biến và ràng buộc thu được từ hệ thống cùng vớiviệc sử dụng các phương pháp giải quyết CSP phù hợp sẽ cho kết quả tốt như mong muốn

Trong một lĩnh vực ứng dụng trong kỹ thuật điều khiển chế tạo, các ràng buộc của hệ thống thường được biểu diễn như CSP để có thể cải thiện hiệu quả, tăng nhiều khả năng để giải quyết vấn đề hơn tiếp cận đến các phương án tối ưu cho công việc Ví dụ tiếp cận ràng buộc dựa trên ứng dụng điều khiển tàu thủy được trình bày Ứng dụng được nghiên cứu trên một con tàu dài 320m, rộng 43m, một bản sơ đồ 12m, động cơ bốn kỳ công suất tối đa 62MW

và hệ thống đẩy cơ học Một con tàu là một hệ thống phức tạp và được chia thành các mô hình thành phần: đẩy, phát xạ và thủy động lực học Các hạn chế giữa các phần tử trong mỗi mô hình được đại diện bởi các CSP, và sau đó các CSP sẽ được giải quyết bằng phương pháp ràng buộc lan truyền để tìm ra các giải pháp Hơn nữa, các kết quả thu được từ việc cho ứng dụng tiếp cận lập trình ràng buộc cho nhiều lợi ích hơn so với các phương pháp khác đã được sử dụng

1.3 Định hướng nghiên cứu CLP trong tương lai:

Lược đồ CLP cung cấp một cách chung chung để xây dựng các ngôn ngữ lập trình mới: chỉ đơn giản là lấy một lớp các ràng buộc và một số giải pháp cho các ràng buộc này và chuyển chúng vào một ngôn ngữ dựa trên các

Trang 13

10 quy tắc Đó là một công thức đơn giản, hấp dẫn và trong vài năm đầu tiên của nghiên cứu CLP, có một sự bùng phát về số lượng các ngôn ngữ CLP

Các ngôn ngữ logic cung cấp các phương trình trên các cây đặc trưng và các cấu trúc liên quan hệ chặt chẽ Các ngôn ngữ CLP (FD) (sau này là GNU-Prolog) cung cấp các ràng buộc miền hữu hạn; BNR-Prolog cung cấp ràng buộc nhị phân, hạn chế miền hữu hạn và số hóa khoảng thời gian thực, các chuỗi, số nguyên và các ràng buộc số thực CAL và RISC-CLP cung cấp giải pháp ràng buộc mạnh hơn đối với các ràng buộc số học phi tuyến tính

Gần đây trong nghiên cứu CLP đã được nghiên cứu kỹ thuật xử lý, tìm nghiệm cho các loại ràng buộc, rời rạc, liên tục và hybrid-constrains kết hợp các kỹ thuật giải quyết lan truyền với kỹ thuật giải mã tuyến tính với các kỹ thuật tìm kiếm cục bộ và hướng tới giải quyết bài toán nghiệm toàn cục và nghiệm tối ưu Các thành quả đạt được sẽ chứng minh sự hữu ích trong việc giải quyết các ràng buộc trong các ngành sản xuất, xây dựng , chứng minh rằng lập trình ràng buộc cung cấp một cơ sở tốt để lập trình thử nghiệm với các kỹ thuật giải quyết ràng buộc khác nhau và áp dụng vào trong cuộc sống thực tế nhằm đem lại hiệu quả trong công việc

Trang 14

xử lý và đang ngày càng trở nên phổ biến trong cộng đồng khoa học máy tính

cũng như trí tuệ nhân tạo

2.1 Những khái niệm cơ bản

Để mô tả cũng như xây dựng các thuật toán giải các ràng buộc của một

hệ thống chúng tôi nêu ra những định nghĩa quan trọng trong CSP

2.1.1 Định nghĩa miền và nhãn

Định nghĩa 2.1 Miền của một biến là tập các giá trị có thể gán tới biến

Nếu x là một biến, ta ký hiệu Dx là miền của x

Khi miền chỉ chứa các số, các biến được gọi là biến số Miền của biến số

có thể được hạn chế trong số nguyên, hữu tỉ hay số thực Ví dụ, miền của biến nguyên là một tập vô hạn {1, 2, 3, …} Trong Luận văn này chỉ tập trung vào CSP với miền hữu hạn

Khi miền chỉ chứa giá trị logic, biến sẽ được gọi là biến logic Khi mà miền chứa kiểu liệt kê các đối tượng, biến sẽ được gọi là biến biểu tượng Ví

dụ, một biến thể hiện ngày trong tuần là biến biểu tượng vì miền của nó là một tập hữu hạn {thứ hai, thứ ba, thứ tư, thứ năm, thứ sáu, thứ bảy, chủ nhật}

Định nghĩa 2.2 Nhãn là một cặp biến-giá trị thể hiện rằng biến đó đã

được gán giá trị Chúng ta dùng <x, v> để chỉ rằng biến x được gán giá trị v

<x, v> chỉ có nghĩa nếu v là một giá trị thuộc miền của x

Định nghĩa 2.3 Một phép gán nhãn kết hợp là một phép gán đồng thời

Trang 15

12 các giá trị, các giá trị này có thể là rỗng, đến tập các biến có trong hệ thống ràng buộc Chúng ta ký hiệu (<x1, v1>, < x2, v2>…< xn, vn>) để chỉ việc gán kết hợp v1, v2 , …, vn tới x1, x2 , …, xn tương ứng

Định nghĩa 2.4 Một phép gán nhãn k-kết hợp là một phép gán nhãn kết

hợp đồng thời của k giá trị tới k biến

Định nghĩa 2.5 Nếu m và n là các số nguyên sao cho m ≤ n, khi đó phép chiếu của một nhãn n-kết hợp N tới một nhãn m-kết hợp M, được coi như phép chiếu projection(N, M) nếu tất cả các nhãn của M đều có mặt trong N

(x1, v1  xm , vm ), (z1, w1  zn , wn ) :{x1, , xm }

{z1, , zm }: projection((z1, w1 , zn , wn ), (x1, v1  xm , vm )) 

x1, v1 , , xm , vm {z1, w1 , zn , wn }

Ví dụ: (<a,1><c,3>) là một phép chiếu của (<a,1><b,2><c,3>), cũng có

nghĩa là projection((<a,1><b,2><c,3>), (<a,1><c,3>)) là đúng

Định nghĩa 2.6 Các biến trong gán nhãn kết hợp là tập các biến xuất

hiện trong nhãn kết hợp đó

variables_of((x1,v1x2,v2 xk,vk))x1,x2, ,xk

2.1.2 Định nghĩa ràng buộc:

Định nghĩa 2.7 Một ràng buộc là tập các biến được hạn chế giá trị sao

cho chúng có thể đạt được một cách đồng thời Một cách khái niệm, một ràng buộc có thể được xem như một tập chứa tất cả các nhãn kết hợp cho các biến; trong thực tế, ràng buộc có thể được thể hiện nhiều cách khác, ví dụ như: hàm, ma trận, bất phương trình…

Một ràng buộc trên một tập các biến được coi như là một tập các nhãn

kết hợp tương ứng với biến đó Để thuận tiện, chúng ta dùng Cs để ký hiệu

cho ràng buộc trên tập biến của S

Định nghĩa 2.8 Biến của ràng buộc là các biến của các thành viên trong

ràng buộc

Trang 16

13

variables _ of

Nếu m và n là các số nguyên sao cho m ≤ n, khi một m-ràng buộc M là

một subsumed-by của n-ràng buộc N (được ký hiệu subsumed-by(N, M)) nếu

mọi phần tử c trong M đều tồn tại một phần tử d trong N sao cho c là phép chiếu của d

Định nghĩa 2.9. Sự thõa mãn (satisfies) là một quan hệ nhị phân giữa các

nhãn hoặc nhãn kết hợp với ràng buộc

Nếu các biến trong nhãn kết hợp X cũng chính là biến trong nhãn kết hợp của ràng buộc C, khi đó X satisfies C nếu và chỉ nếu X là một phần tử trong C

satisfies(

satisfies(<x, v>, Cx ) ≡ (<x, v>) ∈Cx

Cho một tập nhãn kết hợp L và một ràng buộc C sao cho biến trong C là

tập con của tập biến trong L, nhãn kết hợp L satisfies ràng buộc C nếu và chỉ

nếu phép chiếu của L lên các biến trong C là một phần tử của C

Trang 17

14

Ví dụ: (<a,1><b,2><c,3><d,4>) satisfies ràng buộc Cc,d nếu và chỉ nếu

(<c,3><d,4>) là một phần tử của Cc,d

2.1.4 Bài toán thõa mãn ràng buộc (CSP):

Một bài toán thỏa mãn ràng buộc là một bộ ba (Z,D,C), trong đó:

D = một hàm ánh xạ mỗi biến trong Z tới tập các đối tượng của biến tương ứng:

D: Z→tập đối tượng hữu hạn

Chúng ta gọi là tập đối tượng ánh xạ từ bởi D Như vậy là tập đối tượng ánh xạ từ bởi D Như vậy là miền của

C = tập (có thể rỗng) các ràng buộc trên một tập con tùy ý của các biến trong Z Nói cách khác, C là tập của tập các nhãn kết hợp

Chúng ta dùng CSP( ) để ký hiệu rằng là một bài toán thỏa mãn ràng buộc Chú ý sự khác nhau giữa : là tập các nhã trong khi là tập các giá trị Giá trị của x không hẳn chỉ trong ràng buộc , điều đó có nghĩa là

<x,a> satisfies , và tất cả các ràng buộc chứa x, bao gồm , ,

Ở đây, chúng ta chỉ tập trung vào CSP có số biến hữu hạn và miền của chúng cũng hữu hạn

2.2 Giải các bài toán CSP

Nhiệm vụ của CSP là gán giá trị tới mỗi biến sao cho chúng thỏa mãn đồng thời tất cả các ràng buộc

Trang 18

+ CSPs cần tìm ra một nghiệm tối ưu

Việc nghiên cứu giải quyết các bài toán CSPs là thực sự cần thiết, nó xuất hiện rất nhiều trong các ứng dụng thực tế CSPs có những đặc tính riêng cần được nghiên cứu phát triển thêm Chương này, chúng ta sẽ nghiên cứu các

kỹ thuật giải các bài toán CSPs với ba công đoạn: rút gọn bài toán, tiềm kiếm nghiệm và tổng hợp nghiệm

2.2.1 Một số định nghĩa:

Định nghĩa 2.10 Hai CSPs được gọi là tương đương nếu chúng có

chung tập biến và bộ nghiệm

Định nghĩa 2.11 Bài toán =(Z,D,C) được rút gọn (reduced) thành

a) và là tương đương

b) Mọi miền của biến trong là tập con của miền biến trong D

c) C‘ được hạn chế hơn hoặc bằng C (mọi nhãn kết hợp thỏa mãn C‘ sẽ thỏa mãn C)

Ta quy ước quan hệ giữa và bởi công thức reduced(

Trang 19

16

)) Việc rút gọn bài toán là việc loại bỏ những phần tử trong ràng buộc mà không xuất hiện trong bộ nghiệm Chúng ta cũng cần định nghĩa sự dư thừa giá trị và dư thừa nhãn kết hợp

Định nghĩa 2.12 Một giá trị trong miền được gọi là dư thừa (redundant)

nếu nó không có mặt trong bộ nghiệm:

Những giá trị như vậy được gọi là redundant bởi vì việc loại bỏ nó không làm ảnh hưởng đến tập nghiệm

Định nghĩa 2.13 Một nhãn kết hợp trong ràng buộc được gọi là

redundant nếu nó không có mặt trong phép chiếu của bất kỳ bộ nghiệm nào:

csp((Z , D, C)) : CS C : cl CS :

redundant(cl, (Z , D, C) 

T : (solution _ tuple(T , (Z , D, C)) projection(T , cl))

2.2.2 Việc rút gọn bài toán (Problem Redution):

Rút gọn bài toán là quá trình loại bỏ những giá trị và làm chặt ràng buộc trong CSP mà không loại bỏ nghiệm Ý tưởng cơ bản là chúng ta loại bỏ những giá trị hay những nhãn kết hợp dư thừa, những thành phần không xuất hiện trong nghiệm Sau đó, chúng ta tiếp tục xét đến ràng buộc trên tập biến S

và tập các nhãn kết hợp hợp lệ trong S Như vậy chúng ta đã rút gọn CSP ban

Trang 20

17 đầu thành một bài toán tương đương - bài toán có chung bộ nghiệm với bài toán ban đầu - với hy vọng là dễ giải hơn

Rút gọn bài toán liên quan đến 2 công việc chính:

+ Loại bỏ những giá trị thừa từ các miền của biến

+ Làm chặt những ràng buộc sao cho chỉ một vài nhãn kết hợp thõa mãn chúng, nếu các ràng buộc được coi như là các tập thì điều này có nghĩa là loại

bỏ các nhãn kết hợp dư thừa (redundant) ra khỏi ràng buộc Nếu miền của bất

kỳ biến hoặc ràng buộc nào là rỗng, thì có thể kết luận rằng bài toán vô nghiệm

Rút gọn bài toán yêu cầu cần có khả năng nhận ra những giá trị và nhãn kết hợp dư thừa (redundant) Những thông tin như vậy có thể được lấy từ các ràng buộc Tuy nhiên, việc tút gọn bài toán thường liên quan đến việc bảo toàn sự nhất quán (consistency maintainance) Bảo toàn sự nhất quán cũng có nghĩa là tút gọn bài toán tới một bài toán khác có các tính chất đã được xác định

Việc tìm kiếm là một trong những chiến lược được quan tâm nhất khi giải CSP Chúng ta có thể phân ra thành các chiến lược tìm kiếm cơ bản sau:

Các chiến lược tìm kiếm tổng quát

Những chiến lược này được phát triển trong những ứng dụng thông thường và nó không dùng ràng buộc để đạt tính hiệu quả Có hai chiến lược trong phần này là: Tìm kiếm quay lui tuần tự (Chronological Backtracking) và Tìm kiếm mở rộng lặp (iterative broadening-IB)

Các chiến lược nhìn về phía trước (look ahead)

Chiến lược nhìn về phía trước sẽ thực hiện việc rút gọn bài toán thông qua việc áp dụng các ràng buộc Chiến lược này dựa trên thực tế rằng biến và ràng buộc là hữu hạn và ràng buộc có thể được áp dụng kết hợp với nhau nhiều lần Có ba chiến lược trong phần này:

 Kiểm tra phía trước (Forward Checking -FC)

Trang 21

18

 AC-kiểm tra phía trước có định hướng (Directional AC-L)

 AC-kiểm tra phía trước (AC-L)

Các chiến lược thu thập thông tin trong khi tìmkiếm

Chiến lược sẽ ghi lại các tình huống dẫn đến lỗi bất cứ khi nào quay lui cần đến trong thời gian tìm kiếm Điều này giúp chúng ta tránh được những nhánh lỗi đã biết Chiến lược này khám phá ra rằng nhiều cây con tương tự với những nhánh khác đã xét Có hai chiến lược trong phần này là: Quay lui định hướng phụ thuộc (Back Jumping -BJ) và học từ phần không gian đã xét (Learning nogood compound labels - LNCL)

2.3.1 Thuật toán quay lui đơn giản (Simple Backtracking)

Thuật toán cơ bản để tìm kiếm nghiệm là thuật toán quay lui đơn giản,

nó chính là một chiến lược tìm kiếm tổng quát và được dùng rộng rãi trong việc giải các bài toán ràng buộc Trong trường hợp cụ thể của CSPs, thao tác

cơ bản là chọn một biến tại một thời điểm và xét một giá trị cho nó, đảm bảo rằng nhãn được chọn đó sẽ phù hợp với tất cả các nhãn trong tương lai Việc

gán một giá trị vào một biến gọi là labelling Nếu labelling biến hiện tại với

giá trị được chọn không phù hợp với một ràng buộc nào đó, thì một giá trị khác có sẵn sẽ được chọn Nếu tất cả các biến được gán nhãn, khi đó bài toán được giải

Bởi vì thuật toán quay lui (Back Tracking- BT) luôn luôn quay lui tại điểm quyết định cuối cùng khi quá trình kết thúc, nên nó cũng được gọi là quay lui theo một trình tự (Chronological Backtracking) Chúng ta có đoạn mã sau:

Trang 22

PROCEDURE BT-1(UNLABELLED, COMPOUND_LABEL, D, C);

/* UNLABELLED is a set or variables to be labelled; */

/* COMPOUND_LABEL is a set of labels already committed to */

IF (Result ≠ NIL) THEN return(Result);

END UNTIL (D X ={});

Return(NIL); /* signifying no solution */

END /* of ELSE*/

END /* of BT-1*/

Nếu số biến là n, số ràng buộc là e, số miền là a cho mỗi biến trong CSP Khi đó có thể có an khả năng cho bộ nghiệm, và độ phức tạp thời gian cho

việc kiểm tra toàn bộ ràng buộc là O(a n e)

Độ phức tạp bộ nhớ của bài toán là O(na) Thuật toán BT không đòi hỏi

bộ nhớ tạm thời nhiều hơn O(n) để lưu trữ nhãn kết hợp Vì vậy, độ phức tạp không gian lưu trữ cho Chronological_Backtracking là O(na)

Chú ý rằng độ phức tạp thời gian ở trên chỉ ra rằng thuật toán sẽ hiệu quả

hơn nếu ta giảm được a Điều này có thể đạt được bằng các kỹ thuật rút gọn

bài toán

2.3.2 Kết hợp tìm kiếm và rút gọn bài toán

Hiệu quả của quay lui sẽ được cải thiện nếu một biến có thể bị cắt đi khi

nó không có mặt trong nghiệm Điều đó được giúp đỡ bởi quá trình rút gọn bài toán Như phần trước chúng ta đã biết, việc rút gọn bài toán chính là quá

Trang 23

20 trình làm giảm cỡ miền của biến và làm chặt ràng buộc Việc giảm cỡ miền có hiệu quả tương tự như việc cắt bỏ một nhánh trong cây tìm kiếm Việc làm chặt ràng buộc có tiềm năng giúp chúng ta giảm không gian tìm kiếm ở một trạng thái sau Rút gọn bài toán có thể được thực hiện tại bất kỳ một trạng thái nào của tìm kiếm Có rất nhiều chiến lược khác nhau nhằm kết hợp việc tìm kiếm và rút gọn bài

* Những điểm chọn trong tìm kiếm

(1) Biến nào sẽ được chọn tiếp theo?

(2) Giá trị nào sẽ được chọn tiếp theo?

(3) Ràng buộc nào sẽ được kiểm tra tiếp theo?

Hai lựa chọn đầu đã được xét đến Sự khác nhau trong không gian tìm kiếm sẽ được khám phá dưới trật tự khác nhau của biến và giá trị Vì ràng buộc có thể được lan truyền, trật tự khác nhau của biến và giá trị được xem xét có thể ảnh hưởng đến hiệu quả trong thuật toán tìm kiếm Điều này đặc biệt có ý nghĩa khi tìm kiếm được kết hợp với vấn đề rút gọn bài toán

Không gian tìm kiếm là không gian của tất cả các trạng thái mà việc tìm kiếm có thể đạt tới

Hình 2.1: Không gian tìm kiếm của thuật toán BT trong CSP(Z,D,C) khi các biến

không được sắp thứ tự, Z={x,y,z}, D x ={a,b,c,d}, D y ={e,f,g}, D z ={p,q}

Chú ý node (*) trong hình thể hiện trạng thái khi x được gán nhãn a và y

Trang 24

21 được chọn cho việc gán nhãn nhưng vẫn được gán giá trị Chú ý rằng các ràng buộc không đóng vai trò trong định nghĩa không gian tìm kiếm, mặc dù nó sẽ trở nên rõ ràng hơn sau đó, nó sẽ ảnh hưởng lên không gian tìm kiếm bằng thuật toán

Hình 2.2: Không gian tìm kiếm của thuật toán BT trong CSP(Z, D, C) khi các biến

sắp thứ tự {x, y, z}, Z={x, y, z}, Dx={a, b, c, d}, Dy={e, f, g}, Dz={p, q}

Chú ý node (*) trong hình thể hiện trạng thái khi x được gán nhãn a, y và

z vẫn được được gán giá trị

Cần phải chú ý rằng không gian tìm kiếm sẽ khác nhau nếu trật tự các biến được sắp thứ tự khác nhau

Hình 2.3: Không gian tìm kiếm của thuật toán BT trong CSP(Z, D, C) khi các biến

sắp thứ tự {z , y, x}, Z={x, y, z}, D x ={a, b, c, d}, D y ={e, f, g}, D z ={p, q}

Chúng ta cần tìm hiểu một số thuộc tính CSPs vì nó khác so với bài toán tìm kiếm tổng quát để khi giải bài toán hiệu quả hơn

Trang 25

22

Cỡ của không gian tìm kiếm là hữu hạn

Số lá trong cây tìm kiếm là L =| Dx1 || Dx 2 | | Dxn | , trong đó Dxi là miền của biến xi, và | Dxi | là cỡ của miền đó Chú ý rằng L không bị ảnh

hưởng bởi trật tự khi chúng ta quyết định gán nhãn cho biến Tuy nhiên, trật

tự lại ảnh hưởng đến số nút trung gian trong không gian tìm kiếm Ví dụ,

trong tổng số nút trung gian trong Hình 2.2 là 16, trong khi Hình 2.3 là 8

Tổng quát hơn, nếu chúng ta giả sử các biến được sắp theo thứ tự x1 , x2 , …,

xn thí số nút trong cây tìm kiếm là:

Với công thức trên, cùng với 2 ví dụ đã nêu, không khó khăn cho chúng

ta nhận ra rằng nếu các biến được sắp theo trật tự khi các miền của nó giảm dần thì số nút trong không gian tìm kiếm sẽ đạt giá trị lớn nhất Đó cũng chính là biên của cỡ trong không gian tìm kiếm Ngược lại nếu các biến được sắp theo trật tự khi các miền của nó tăng dần thì số nút trong không gian tìm kiếm sẽ đạt giá trị nhỏ nhất

Tuy nhiên, cỡ của bài toán lại bị chi phối bởi tích cuối cùng: L =| Dx1 ||

Dx 2 | | Dxn |, chính là số nút lá, nó không thay đổi khi trật tự các biến thay

đổi

Độ sâu của cây được cố định

Khi các biến được cố định, độ sâu của cây tìm kiếm luôn luôn bằng số biến trong bài toán Trong cả hai ví dụ Hình 2.2 và Hình 2.3, độ sâu đều là 3

Khi trật tự của biến không cố định, độ sâu chính xác là 2n, với n là số biến Các cây con tương tự nhau

Nếu chúng ta cố định biến, khi đó các cây con cùng mức sẽ tương tự nhau Điều này rất có ý nghĩa trong khi tìm kiếm một cây con khi chúng ta đã tìm kiếm được anh em của nó (sẽ nói thêm trong phần loại bỏ đối xứng) Với bài toán chỉ cần tìm một nghiệm, hiệu quả tìm kiếm có thể được cải

Trang 26

23 thiện bằng cách dùng heuristics- nó sẽ chỉ ra những nhánh trong không tìm kiếm có khả năng nhất để tìm tới nghiệm

Trong một số bài toán, việc kiểm tra một ràng buộc có thỏa mãn hay không chi phí là khá lớn Trong trường hợp đó, trật tự ràng buộc để kiểm tra

có thể ảnh hưởng tới hiệu quả bàitoán

2.3.3 Tìm kiếm Backtrack - Tree

Trong Chương 1, chúng ta đã định nghĩa khái niệm cơ bản của ràng buộc

và sự thỏa mãn Trong phần này, chúng ta sẽ mở rộng chúng

Định nghĩa 2.14

Một thể hiện ràng buộc trong một tập biến S, chúng ta ký hiệu là CE(S),

là một tập hợp các ràng buộc trong S và tập các biến con của nó

Định nghĩa 2.15

Một thể hiện ràng buộc trong một tập con các biến S của CSP P, chúng

ta ký hiệu là CE(S, P), là một tập hợp tất cả các ràng buộc liên quan trong P

tại S và tập con của các biến

Trang 27

24

Định nghĩa 2.17

Một tìm kiếm trong CSP là một backtrack - Tree khi tìm kiếm theo chiều sâu khi trật tự các biến được sắp xếp nếu mỗi biến được gán nhãn, khi đó một biến luôn có thể tìm thấy giá trị phù hợp với tất cả các nhãn

Việc tổng hợp nghiệm giống như thuật toán tìm kiếm, chúng khám phá đồng thời một lúc nhiều nhánh Nó cũng được xem như việc rút gọn bài toán

khi mà ràng buộc đối với tập tất cả các biến (có nghĩa là n-ràng buộc cho một

bài toán với n biến) được tạo ra và rút gọn đến khi một tập chứa toàn bộ các

bộ nghiệm và chỉ bộ nghiệm thôi

Trong quá trình tìm kiếm một nghiệm thành phần được xem xét tại một thời điểm Một nhãn kết hợp được mở rộng bằng cách thêm một nhãn tại thời điểm đó cho đến khi một bộ nghiệm được tìm thấy hoặc toàn bộ nhãn kết hợp được xét Ý tưởng cơ bản của tổng hợp nghiệm là tập hợp tập tất cả các nhãn hợp lệ cho các tập biến lớn hơn, cho đến khi tập toàn bộ các biến được làm

Để đảm bảo tính đúng đắn, thuật toán tổng hợp nghiệm phải đảm bảo chắc chắn rằng toàn bộ nhãn kết hợp không hợp lý sẽ được loại bỏ khỏi tập này Để đảm bảo tính đầy đủ, thuật toán tổng hợp nghiệm phải đảm bảo chắc chắn rằng không nhãn kết hợp hợp lệ nào bị loại bỏ khỏi tập này.

Trang 28

25

2.3.4 Giải pháp điểm biên [13]

Trong [13] đã giới thiệu giải pháp điểm biên để giải các ràng buộc, với cách tiếp cận này thì mỗi một ràng buộc là một phương trình hay bất phương trình

tổng quát cho phương trình và bất phương trình được rút ra từ các ràng buộc

và việc tìm kiếm điểm biên chuyển thành bài toán tìm nghiệm, tìm các điểm thỏa mãn các điều kiện sau:

i Các điểm từ điểm cực tiểu đến điểm cực đại của mỗi biến trong các ràng buộc mà thỏa ràng buộc đó và được gọi là điểm thỏa mãn: Cho p là một điểm thỏa mãn trong miền xác định, thì p là nghiệm của

Định nghĩa điểm biên: Cho tập miền giá trị của biến , giả sử rằng tồn

tại các khoảng and để mà là nghiệm liên tục và được bao phủ bởi Bất kỳ điểm nằm trong , thì sẽ nằm trong khoảng

Nếu các điều kiện sau đúng thì được gọi là biên (Landmark) và được gọi là điểm biên (Landmark Points):

Trang 29

1 Input: continuous constraint system (D,Z,C)

2 Output: new domain D’ and finite set of landmark points SL

16 Lower( )=max(Lower( ), -min )

17 Upper( )=min(Upper( ),x i j, -max )

có trong hệ thống

Trang 30

27 Xét ví dụ sau:

Hai ràng buộc này được thể hiện trong Hình 2.5:

Trong ví dụ trên chúng ta sẽ thu được nghiệm cục bộ = [-3.5, 3.5] và = [4, 9] trong khi đó nghiệm toàn cục sau khi áp dụng phương pháp điểm biên thu được như sau: = [-2.828, -0.75], [0.75, 2.828] và = [7.689, 9]

Thuật toán tìm nghiệm toàn cục với tên GlobalLAI như sau:

Trang 31

28

Hình 2.7 So sánh giữa hai thuật toán

12 if is not satisfied with then

Hình 2.6 Thuật toán tìm nghiệm toàn cục cho CCSP

Trong tính toán [15] đã so sánh độ phức tạp giữa kỹ thuật 2kvà phương pháp điểm biên, với kỹ thuật 2k để thu được nghiệm toàn cục với độ phức tạp xấu nhất là  *

2k d

O [6], trong k số lượng biến có trong ràng buộc, d là số lượng lớn nhất các khoảng được chia cắt bởi phương pháp 2k Tuy nhiên với cách tiếp cận điểm biên các khoảng được chia các bới các điểm biên trong miền giá trị sẽ ít hơn nhiều so với các điểm chia cắt trong kỹ thuật 2k vì thế độ phức tạp trung bình của thuật toán dùng điểm biên là O mean d(( ( ) 1) )  k Trong hình mô tả sự khác biệt của hai phương pháp khi số lượng các điểm chia cắt tăng lên

Trang 32

29 Phương pháp điểm biên giải bài toán ràng buộc lấy từ hoạt động của robot [16] với hệ ràng buộc

Kết quả thu được trong bảng và được so sánh với các phương pháp khác

và thực nghiệm này được thực nghiệm trên nền tảng phần cứng như sau: Máy tính có CPU Intel Core i5 2.66GHz RAM 4 GB

Bảng 2.1: Kết quả thực nghiệm

[-100,100] [-5.66,16.19] [-4.19,16.19] [7.41, 8.70] [-100,100] [-12.14,12.65] [-11.54,12.85] [-3.62, 2.60] [-100,100] [-12.14,12.65] [-6.62,12.85] [-8.22, -3.03] [-100,100] [-12.14,12.65] [-7.91,12.85] [-10.19, -8.53] [-100,100] [-5.66,16.19] [-4.19,16.19] [-0.25, 3.03] [-100,100] [-12.14,12.65] [-4.47,12.85] [3.33, 5.32] [-100,100] [-18.45,15.43] [-11.36,16.26] [-4.30, -2.93] [-100,100] [0.96,24.27] [-1.13,25.13] [7.70, 11.28] [-100,100] [-5.12,19.11] [-9.41,21.41] [14.94, 14.94]

Trang 33

30

2.4 Ví dụ ứng dụng giải bài toán ràng buộc trong thực tế

Để minh họa, chúng ta có thể xét ví dụ cụ thể về ràng buộc sau: U=I x R; Công thức mô tả mối quan hệ giữa hiệu điện thế, cường độ dòng điện và điện trở Trong ngôn ngữ lập trình truyền thống, người lập trình không thể dùng quan hệ này một cách trực tiếp, thay vào đó nó phải được mã hóa thành câu lệnh mà từ đó việc tính toán giá trị của một thành phần dựa trên hai thành phần còn lại Vì vậy, I có thể được suy ra từ U và R bằng công thức: I:= U/R

và R:= U/I; Việc đòi hỏi người lập trình mô tả và duy trì các quan hệ giữa các đối tượng trong lập trình hợp lý sao cho các ứng dụng có thể sử dụng Tuy nhiên trong nhiều ứng dụng, vấn đề quan trọng là mô hình các quan hệ và tìm

ra các đối tượng thỏa mãn Vì lý do đó, đã có nhiều chuyên gia quan tâm đến các ngôn ngữ lập trình cho phép người lập trình đơn giản hóa các quan hệ giữa các trạng thái của đối tượng Nó là vai trò thực thi cơ bản nhằm đảm bảo rằng những quan hệ đó hay những ràng buộc được duy trì Những ngôn ngữ như vậy được coi là ngôn ngữ CP (Constraint Programming)

Ban đầu những ngôn ngữ CP chỉ thành công với sự hỗ trợ của ngôn ngữ truyền thống cho việc giải quyết các ràng buộc bằng các kỹ thuật không định trước đơn giản Những ngôn ngữ này phần lớn phụ thuộc vào phương pháp

lan truyền cục bộ (local propagation) Phương pháp “lan truyền cục bộ” dùng

một ràng buộc để gán một giá trị vào một biến chưa biết từ các giá trị đã biết cho các biến khác trong ràng buộc Ví dụ, trong định luật Ôm có thể tính toán một giá trị R, I hoặc V từ hai giá trị đã biết Bài toán với lan truyền cục bộ là phương pháp giải quyết ràng buộc giữa các quan hệ yếu Ví dụ, nó không thể dùng để giải các phương trình xảy ra đồng thời như X= Y-Z và X= 2Y+Z Như vậy việc dựa trên lan truyền cục bộ của những ngôn ngữ thời kỳ đầu có hai điểm yếu: Những quan hệ để giải quyết những ràng buộc là không đủ mạnh và chính ngôn ngữ đó cũng không đủ mạnh để diễn tả những ràng buộc

Trang 34

31 Chúng ta xét một ví dụ khác với bài toán đặt ra là giả sử rằng bạn đang muốn mua một ngôi nhà theo hình thức trả góp và muốn kiểm tra trước hiệu quả của những phương án khác nhau đối với việc trả lãi Với mỗi kỳ trả lãi, tiền lãi là PxI, trong đó P là tổng số tiền vay và I là tỷ lệ lãi suất Lãi suất dồn lại được cộng thêm với tiền vay để đạt được một số tiền vay mới NP Nếu bạn đem trả R thì đó chính là số tiền bị trừ đi Như vậy theo các yêu cầu của bài toán ta có phương trình ràngbuộc: NP= P+P×I –R, trong khoảng thời gian T mua nhà trả góp, T có thể được mô tả bởi việc lặp lại việc tính toán này ở mỗi thời điểm cuối kỳ cho đến khi hết thời gian Tổng số tiền cuối cùng phải trả gọi là B cân bằng

Bài toán này có thể được mô tả trong đoạn chương trình sau:

Ở đây, ràng buộc mortgage chỉ ra quan hệ giữa tiền vốn ban đầu P, thời

gian vay T, tỷ lệ lãi suất I, số tiền lãi là R và điểm cân bằng là B.3 dòng đầu:

xử lý trường hợp khi kết thúc thời gian Trong trường hợp này điểm cân bằng chính là số tiền vốn hiện tại Các dòng tiếp theo: xử lý trường hợp khi số khoảng thời gian lớn hơn hoặc bằng 1 Trong trường hợp này một thời điểm

mới (NT) sẽ được trừ đi 1 Khi đó việc thay đổi vốn cũng được tính lại Phần

còn lại của việc cho vay được xác định trên một lượng vay mới và tổng vốn mới khi mà thời gian giảm đi 1

Chương trình trên dường như có thể dễ viết trên ngôn ngữ lập trình truyền thống, ví dụ Pascal hay C Thuận lợi của chương trình là, bởi vì tất cả các câu lệnh được xem xét dưới góc độ ràng buộc, nó diễn tả bài toán rất linh

Trang 35

32 hoạt Thực thi chương trình được khởi tạo bằng cách đưa ra một đích Ví dụ, nếu vay $1000 trong 10 năm với lãi suất 10% cùng với việc phải trả gốc $150 một năm Chúng ta có thể viết như sau: mortgage(1000, 10, 10/100, 150, B) Khi ta đưa ra đích như trên, câu trả lời sẽ là B=203.129, chỉ ra thời điểm cân bằng là $203.129 Một chương trình tương tự có thể được dùng trong nhiều cách khác nhau Ví dụ việc mượn $150 và đến khi hết hạn việc trả lãi tại thời điểm cân bằng là 0, chúng ta có thể đạt câu hỏi “Cần phải vay bao nhiêu trong vòng 10 năm với lãi suất 10% với việc trả $150 một năm” Câu hỏi nàycó thể được viết:

để giải những ràng buộc này hơn là công việc của người lập trình

Ví dụ này tuy đơn giản nhưng cũng minh họa tại sao lập trình ràng buộc giải quyết được nhiều ứng dụng, bài toán trong đời sống thực với mô hình phức tạp một cách tự nhiên và hiệu quả Cũng vì lý do này mà CP đã và đang được dùng với nhiều lĩnh vực khác nhau cho nhiều bài toán thực tế Nhiều bài toán kỹ thuật đặc biệt phù hợp với CP vì chúng thường liên quan đến sự kết

Trang 36

33 hợp có trật tự trong các hệ thống phức tạp

Các mô hình toán học hay Boolean, và đặc biệt là trong các trường hợp chuẩn đoán và thiết kế-lập luận dựa trên luật Một lĩnh vực lớn khác là kế hoạch tài chính và thương mại, ở đây các ứng dụng thường được các chuyên gia giúp đỡ cùng với mô hình toánhọc, tính toán số, khi mà việc giải các ràng buộc đa thức cần sự có sự đảm bảo độ chínhxác cao Sinh học phân tử, chúng liên quan đến chuỗi DNS và việc xây dựng mô hình 3D cho các Protein Kỹ thuật điện tử, tìm ra vị trí rò trong mạch điện, tính toán sự sắp đặt mạch điện, kiểm tra và thẩm định sự thiết kế Nó cũng được ứng dụng trong việc xử lý ngôn ngữ tự nhiên (tạo ra những bộ phân tích cú pháp hiệu quả) Hệ thống đồ họa tương tác, nhằm diễn tả tính chặt chẽ về mặt hình học trong trường hợp phân tích hoạt cảnh Hơn nữa nó cũng được áp dụng liên quan đến di truyền

và tạo ra các dữ liệu thử cho các giao thức trao đổi thông tin

Ngày đăng: 20/11/2021, 17:16

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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

w