ASP & Clingo
Ràng buộc di chuyển theo thời điểm thực
Phát hiện lịch đủ ca nhưng thiếu thời gian đi giữa hai cơ sở.
Thích và đánh giá Bình luận và hỏi đáp1. Mô hình thời gian bằng phút
Một giảng viên dạy lớp A kết thúc lúc phút 540 và lớp B bắt đầu ở phút 560. Khoảng trống 20 phút đủ cho tuyến nội bộ 5 phút, nhưng thiếu đối với tuyến liên cơ sở 30 phút. Số hiệu ca không chứa thông tin này. Ví dụ dùng mốc phút trong ngày và bảng thời gian đi có hướng, để quy tắc đọc đúng tuyến từ nơi kết thúc đến nơi bắt đầu.
2. Xét hai lớp theo đúng thứ tự
Với hai lớp của cùng giảng viên, xét lớp có mốc bắt đầu sớm hơn trước. Điều kiện khả thi là mốc bắt đầu lớp sau trừ mốc kết thúc lớp trước ít nhất bằng thời gian di chuyển. Xung đột chồng thời gian có thể kiểm tra riêng. Với mô hình lớn, nếu chỉ xét các lớp liên tiếp, cần xác định quan hệ liền trước theo lịch đã chọn và cách xử lý thời gian bằng nhau.
3. Dự đoán kết quả trước khi chạy
Lớp B có hai mốc bắt đầu là 560 và 575. B bắt đầu ở 560 cho khoảng 20 phút, nên bị loại. B bắt đầu ở 575 cho khoảng 35 phút, đủ cho tuyến 30 phút. Thử đổi mốc sang 570 để xác nhận trường hợp bằng ngưỡng được chấp nhận.
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_thoi_gian_di_chuyen.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.
ket_thuc(a,540). co_so(a,cs1). co_so(b,cs2).
di(cs1,cs2,30). di(cs2,cs1,25).
ung_vien(560;575).
1 { bat_dau(b,T) : ung_vien(T) } 1.
:- ket_thuc(a,F), bat_dau(b,S), co_so(a,X), co_so(b,Y), di(X,Y,D), S-F<D.
#show bat_dau/2.4. Đưa sự bất định vào thí nghiệm
Phân biệt quy tắc cứng về khoảng trống tối thiểu và ưu tiên mềm muốn có thời gian dự phòng. Thử nhiều ma trận thời gian di chuyển và báo số lịch còn khả thi, số lượt đổi cơ sở và thời gian rảnh tăng thêm. Dữ liệu trong ví dụ là giả lập, không đại diện thời gian đi thực tế của một cơ sở đào tạo.
Đọc thêm Tài liệu ngôn ngữ ASP của Potassco.