3
được lời giải tốt nhất nhờ vào việc tìm kiếm quay lui, không gian lời
giải được vét cạn. Ưu điểm của quy hoạch ràng buộc là người dùng có
thể sử dụng các ràng buộc được định nghĩa trước hoặc tự mình định
nghĩa để mô hình hóa bài toán, các ràng buộc này khá tự nhiên với cách
hiểu của con người và linh hoạt cho việc mô hình hóa.
o Integer Linear Programming (Quy hoạch nguyên): là khuôn mẫu lập
trình trong đó sử dụng các biến nguyên và sử dụng các quan hệ tuyến
tính để biểu diễn mô hình bài toán cần giải, sau đó sử dụng các phương
pháp như cắt tỉa, đơn hình, v.v… để tìm ra lời giải của bài toán.
o Logic Programming (Quy hoạch logic): là khuôn mẫu lập trình trong
đó sử dụng các vị từ (có thể hiểu là các biến boolean, nhận giá trị true
hoặc false) để mô hình hóa bài toán thông qua các mệnh đề, sau đó sử
dụng các giải thuật để tìm kiếm lời giải của bài toán, phổ biến nhất là
tìm kiếm quay lui (backtracking search).
- Các phương pháp xấp xỉ: sử dụng các metaheuristic, có thể chia thành 2 loại
o Local search (Tìm kiếm cục bộ): là thuật toán xấp xỉ trong đó đòi hỏi
chúng ta phải mô hình hóa được không gian lời giải của bài toán và mối
quan hệ láng giềng giữa các lời giải. Trong quá trình tìm kiếm, giải
thuật sẽ di chuyển lần lượt qua các lời giải lân cận với lời giải hiện tại
tại mỗi bước với mong muốn tìm được lời giải tối ưu. Ưu điểm của tìm
kiếm cục bộ là có thể làm việc trong thời gian tùy ý, do đó có ích khi
giải quyết các bài toán tối ưu tổ hợp cần đưa ra một lời giải tốt trong
thời gian bị hạn chế. Tuy nhiên nhược điểm của tìm kiếm cục bộ là lời
giải tìm được có thể là không tối ưu nhất mà bị kẹt ở một tối ưu cục bộ.
Các metaheuristic là local search tiêu biểu có thể kể đến là hill-
climbing, tabu search, simulated annealing, v.v…