ASP & Clingo
Sinh lịch khác biệt so với lịch tham chiếu
Đo số lớp đổi ca để phân biệt nhiều nghiệm có giá trị sử dụng.
Thích và đánh giá Bình luận và hỏi đáp1. Phân biệt nghiệm kỹ thuật và lựa chọn nghiệp vụ
Hai answer set khác nhau ở nguyên tử phụ có thể vẫn hiển thị cùng một thời khóa biểu. Ngay cả khi hai lịch khác thật, việc đổi ca của một lớp có thể chưa tạo lựa chọn có ích. Chọn biểu diễn lịch là cặp lớp–ca và dùng số lớp đổi ca làm thước đo. Nếu cần cả phòng, định nghĩa lại đơn vị so sánh trước khi đếm.
2. Đặt ngưỡng khác biệt
Mỗi lớp chọn đúng một ca. Với lịch gốc, suy ra lớp thay đổi nếu ca hiện tại khác ca tham chiếu. Ràng buộc đếm giữ các lịch có ít nhất k lớp thay đổi. Nếu muốn bộ lịch đa dạng theo từng cặp, cần so mỗi lịch mới với mọi lịch đã chấp nhận, vì xa lịch gốc không kéo theo xa các lịch khác.
3. Liệt kê các lựa chọn
Ba lớp có hai ca và cùng chọn ca 1 trong lịch gốc. Với k = 2 và không có ràng buộc khác, còn bốn lịch, gồm ba cách đổi đúng hai lớp và một cách đổi cả ba. Dùng -n 0 để thấy đủ bốn. Ví dụ minh họa bước lọc sau khi giữ tập ứng viên có cùng chi phí, ở đây mọi lịch được xem là đồng hạng. Mã mẫu không có hàm mục tiêu, vì vậy bốn nghiệm chỉ chứng minh điều kiện khoảng cách tới lịch tham chiếu, chưa chứng minh một quy trình sinh nhiều lịch tối ưu.
Nếu chưa có Clingo, cài bằng python -m pip install clingo.
Chạy ví dụ bằng python -m clingo asp_da_dang_lich.lp -n 0.
Môi trường thực hành. Clingo 5.8 trở lên. Có thể cài bằng python -m pip install clingo và gọi python -m clingo thay cho lệnh clingo.
#const k=2.
lop(a;b;c).
ca(1..2).
goc(L,1) :- lop(L).
1 { xep(L,C) : ca(C) } 1 :- lop(L).
doi(L) :- goc(L,C0), xep(L,C), C!=C0.
:- #count { L : doi(L) } < k.
#show xep/2.
#show doi/1.4. Kết hợp đa dạng với chất lượng lịch
Trên dữ liệu thực, tìm chi phí tối ưu trước rồi cố định ngưỡng chấp nhận. Sau đó sinh lần lượt các lịch thỏa điều kiện chất lượng và khác biệt. Nếu không tìm đủ số lượng, báo rõ ngưỡng và số lịch tìm được, rồi xem xét nới khoảng cách hoặc mức chênh chi phí theo ưu tiên của người duyệt lịch.
Đọc thêm Tài liệu ngôn ngữ ASP của Potassco.