or-tools - OR SAT google 中的条件约束未按预期工作
问题描述
我是 python 中的 google 或 SAT 新手,文档不是很清楚。我想要做的是以下内容:有一个这样的列表:
desk[1] = 3
desk[2] = 5
desk[3] = 4
desk[4] = 2
desk[5] = 1
和一个名为 person_la_croix 的变量,其值 = 4,比方说。我想从 t[i] = 1 中创建一个布尔列表 (t),如果 desk[i] != person_la_croix,否则为 0。然后我想从 t[i] which t[i] == 1 中取出 i 并将其分配给变量desk_la_croix
我试过这个:
for i in s:
model.Add(desk[i] == person_la_croix).OnlyEnforceIf(t[i])
for i in s:
model.Add(desk_la_croix == i).OnlyEnforceIf(t[i])
它不工作......有人可以用这段代码帮助我还是建议一种更聪明的方法来做到这一点?
解决方案
你读了...吗
https://github.com/google/or-tools/blob/stable/ortools/sat/doc/channeling.md?
我猜你错过了 OnlyEnforceIf 的反面,因为这些只是暗示,而不是等价。
推荐阅读
- javascript - for 循环列表倒计时只显示在第一个
- javascript - 我们如何使用 Vue Js 为 Kendo UI Grid Column 上的自定义复选框绑定事件?
- sockets - Ktor 安全套接字 (SSL/TLS) windows 示例?
- c# - C# 包含继承类的基类数组,访问非继承字段
- android - 如何从 sqlite 数据库中搜索数据并查看 RecyclerView
- android - 当应用程序在后台时将用户位置更新到服务器
- javascript - es6中的花括号并做出反应
- ionic-framework - 从外部提供者关闭 loadingController
- python - 用于运行测试用例的 Python Mockito 配置
- python - 如何在 for 循环中分配新变量 - 熊猫数据框变量名称分配