ASP & Clingo
Thực hành ASP chọn đúng một ca cho mỗi lớp
Viết luật lựa chọn và dùng số nghiệm để kiểm chứng miền ứng viên.
Thích và đánh giá Bình luận và hỏi đáp1. Đề bài
Lớp A được học ca 1 hoặc 2. Lớp B chỉ được học ca 2. Hãy viết chương trình cho mỗi lớp đúng một ca, chưa cần kiểm tra phòng hay giảng viên. Trước khi chạy, ghi ra tất cả lịch mà em dự đoán chương trình có thể sinh.
2. Hướng dẫn viết
Biểu diễn miền bằng ung_vien(L,C). Dùng 1 { xep(L,C) : ung_vien(L,C) } 1 với mỗi lớp L. Hai số 1 đặt cận dưới và cận trên cho số nguyên tử được chọn. Mỗi lớp cần có fact riêng để lớp thiếu ứng viên làm mô hình vô nghiệm.
3. Đối chiếu lời giải
Chạy với -n 0. Có hai lịch vì A có hai lựa chọn và B chỉ có một. Nếu thấy lịch không có A hoặc A được xếp hai ca, kiểm tra lại hai cận của luật lựa chọ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 hoc_asp_chon_dung_mot.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.
lop(a;b).
ung_vien(a,1). ung_vien(a,2). ung_vien(b,2).
1 { xep(L,C) : ung_vien(L,C) } 1 :- lop(L).
#show xep/2.4. Bài tập mở rộng
Thêm lớp C chỉ học ca 1 rồi tính lại số lịch. Sau đó cấm A và C cùng ca. Dự đoán trước ca còn lại của A. Bỏ mọi ứng viên của B và kiểm tra chương trình báo vô nghiệm.
Đọc thêm Tài liệu ngôn ngữ ASP của Potassco.