Ràng buộc đọc:

Một phần của tài liệu Hướng tiếp cận quy hoạch ràng buộc trong việc giải các bài toán tối ưu (Trang 30 - 31)

Một khi các biến solver đã được tạo ra khi đọc model, solver lặp lại trên những ràng buộc của model và tạo ra các đối tượng Sconstraint bằng cách dùng phương pháp gọi makeConstraint của đối tượng ConstraintManager kết hợp với các loại ràng buộc model. Ở bước này, có thể tạo ra các biến Solver phụ và các ràng buộc. Sau đó, các ràng buộc được tạo ra được thêm vào mạng ràng buộc bên trong.

Mỗi ràng buộc solver tóm lược một thuật toán lọc mà trong quá trình tìm kiếm khi một bước lan truyền xuất hiện hoặc khi một sự kiện bên ngoài (VD xóa giá trị hoặc thay đổi ràng buộc) xảy ra ở một số biến của ràng buộc.

Người ta có thể tiếp cận trình bày Solver của một model ràng buộc bằng cách sử dụng Solver: getCstr (Constraint c).

2.2.3.3. Chiến lƣợc tìm kiếm:

Một thành phần quan trọng của bất kỳ phương pháp ràng buộc là một chiến lược tìm kiếm thông minh. Trong cách tiếp cận nhánh, ràng buộc hay thụt lùi, tìm kiếm được tổ chức như một cây liệt kê trong đó mỗi nút tương ứng với một không gian con của tìm kiếm và mỗi nút con là một nhánh của không gian nút lớn. Cây được xây dựng dần dần bằng cách áp dụng một loạt các chiến lược phân nhánh mà xác định việc chia không gian tại mỗi nút như thế nào cũng như các nút con được tạo ra sao. Chiến lược phân nhánh đóng vai trò của việc đạt được các mục tiêu trung gian trong lập trình logic. Phần này trình bày cách xác định chiến lược tìm kiếm riêng của bạn trong Choco.

Các phương pháp tiếp cận ràng buộc, nhánh hay quay lui, trong lập trình ràng buộc phát triển theo dạng cây liệt kê trong một thể thức DFS (Tìm kiếm ưu tiên theo chiều sâu):

1. Đánh giá 1 nút: chạy lan truyền

2. Nếu thất bại xảy ra hoặc nếu không gian tìm kiếm không thể tách rời sau đó. Backtrack: đánh giá các nút đang chờ tiếp theo.

29

3. Nếu không thì các nhánh: phân chia không gian tìm kiếm và ưu tiên đánh giá nút con.

Với Choco, quá trình tìm kiếm của CPSolver hiện tại cho phép khám phá cây trong các cách thức khác nhau, chẳng hạn như sử dụng tìm kiếm ưu tiên tốt nhất.

Ngoài ra, các phổ biến để chia không gian tìm kiếm trong thuật toán dựa trên CP/ B&B đó là gán một biến cho một giá trị hoặc ngăn cấm việc gán này.Choco cung cấp một chiến lược phân nhánh và các công cụ để dễ dàng tùy chỉnh biến và giá trị lựa chọn trong chiến lược. Tuy nhiên, Choco có khả năng thực hiện nhiều chiến lược phân nhánh phức tạp hơn (ví dụ như phân nhánh ràng buộc hoặc phân nhánh lưỡng phân).

Một phần của tài liệu Hướng tiếp cận quy hoạch ràng buộc trong việc giải các bài toán tối ưu (Trang 30 - 31)

Tải bản đầy đủ (PDF)

(65 trang)