首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >光学约束测试

光学约束测试
EN

Stack Overflow用户
提问于 2022-10-22 14:02:47
回答 1查看 46关注 0票数 0

一开始使用Optapy,因为我对python比java稍微熟悉一些。我想为我的约束编写一些测试,以确保它们正确工作,但我似乎无法在python中找到任何测试类的文档或示例,以及如何执行/运行它?

不确定这是支持八进制还是只在八进制。

如有任何帮助或指导,将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-10-23 03:19:06

从8.30.0b0开始,ConstraintVerifier测试现在在optapy中得到了支持。首先,从您的ConstraintVerifier函数创建一个@constraint_provider

代码语言:javascript
复制
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)

代码语言:javascript
复制
from optapy.test import ConstraintVerifier, constraint_verifier_create
constraint_verifier = constraint_verifier_create(solver_config)

然后,您可以为特定约束创建测试:

代码语言:javascript
复制
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

有关完整的示例,请参见在光学学校的测试时间表快速开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74164216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档