一开始使用Optapy,因为我对python比java稍微熟悉一些。我想为我的约束编写一些测试,以确保它们正确工作,但我似乎无法在python中找到任何测试类的文档或示例,以及如何执行/运行它?
不确定这是支持八进制还是只在八进制。
如有任何帮助或指导,将不胜感激。
谢谢
发布于 2022-10-23 03:19:06
从8.30.0b0开始,ConstraintVerifier测试现在在optapy中得到了支持。首先,从您的ConstraintVerifier函数创建一个@constraint_provider:
from optapy.test import ConstraintVerifier, constraint_verifier_build
from domain import Timeslot, Room, Lesson, TimeTable
from constraints import define_constraints
constraint_verifier: ConstraintVerifier = constraint_verifier_build(define_constraints, TimeTable, Lesson)(或者是来自您的SolverConfig)
from optapy.test import ConstraintVerifier, constraint_verifier_create
constraint_verifier = constraint_verifier_create(solver_config)然后,您可以为特定约束创建测试:
from constraints import room_conflict
ROOM1 = Room(1, "Room1")
ROOM2 = Room(2, "Room2")
TIMESLOT1 = Timeslot(1, 'MONDAY', time(12, 0), time(13, 0))
TIMESLOT2 = Timeslot(2, 'TUESDAY', time(12, 0), time(13, 0))
TIMESLOT3 = Timeslot(3, 'TUESDAY', time(13, 0), time(14, 0))
TIMESLOT4 = Timeslot(4, 'TUESDAY', time(15, 0), time(16, 0))
def test_room_conflict():
first_lesson = Lesson(1, "Subject1", "Teacher1", "Group1", TIMESLOT1, ROOM1)
conflicting_lesson = Lesson(2, "Subject2", "Teacher2", "Group2", TIMESLOT1, ROOM1)
non_conflicting_lesson = Lesson(3, "Subject3", "Teacher3", "Group3", TIMESLOT2, ROOM1)
constraint_verifier.verify_that(room_conflict) \
.given(first_lesson, conflicting_lesson, non_conflicting_lesson) \
.penalizes_by(1)这将独立于所有其他约束测试约束room_conflict。您还可以使用verify_that() (无参数)测试所有约束,并将penalizes_by替换为scores。
有关完整的示例,请参见在光学学校的测试时间表快速开始。。
https://stackoverflow.com/questions/74164216
复制相似问题