微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

或工具调度问题检查文字是否为真

如何解决或工具调度问题检查文字是否为真

你好,我使用 cp sat 模型或工具来解决调度(时间表)问题。

我的模型如下

enter image description here

我试图编写以下约束以在同一天坚持两节课

def __lang_special_day_constraint_sticked(self,filtered_lessons,rooms,filtered_timeslots):
    for l in filtered_lessons:
        k = 0
        for r in rooms:
            for i in range(len(filtered_timeslots)):
                if i != 0 and i != len(filtered_timeslots)-1 and (l.lesson['id'],r['code'],filtered_timeslots[i]) in self.tables and (l.lesson['id'],filtered_timeslots[i+1]) in self.tables and (l.lesson['id'],filtered_timeslots[i-1]) in self.tables:
                    self.model.AddBoolOr([self.tables[(l.lesson['id'],filtered_timeslots[i-1])],self.tables[(l.lesson['id'],filtered_timeslots[i+1])]]).OnlyEnforceIf(self.tables[(l.lesson['id'],filtered_timeslots[i])])
                    if self.tables[(l.lesson['id'],filtered_timeslots[i])] == True:
                        break
                elif i == 0 and (l.lesson['id'],filtered_timeslots[i+1]) in self.tables:
                    self.model.AddBoolOr([self.tables[(l.lesson['id'],filtered_timeslots[i])] == True:
                        break
                elif i == (len(filtered_timeslots) - 1) and (l.lesson['id'],filtered_timeslots[i-1])]]).OnlyEnforceIf(self.tables[(l.lesson['id'],filtered_timeslots[i])] == True:
                        break  

我的目标是实现这部分:

if self.tables[(l.lesson['id'],filtered_timeslots[i])] == True:
    break

我知道这行不通,但我想要类似的东西,所以当这个文字为 True 时,我会中断循环并停止进一步的迭代。

感谢任何帮助并提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。