使用 CP-SAT 预测 300 万个布尔变量
Posted
技术标签:
【中文标题】使用 CP-SAT 预测 300 万个布尔变量【英文标题】:usage of CP-SAT to forecast 3 Milions of boolean variables 【发布时间】:2019-10-07 16:35:35 【问题描述】:亲爱的, 我想了解我是否正确使用了 CP-SAT 算法。基本上,我的代码会自动创建一个模型来读取带有数据集的 csv。我的代码为数据集的每条记录创建 model.NewBoolVar() 乘以优化问题要采取的可能决策的数量...... 例如,如果我有一个包含 100 万条记录的数据集,并且我必须在 3 个选项之间做出决定,那么该模型将包含 300 万条布尔变量。 3 百万个布尔值的组合是我的优化问题的解决方案。
目前在 100K 变量之后,程序变得不稳定并且 python 崩溃。你认为我试图不正确地使用 CP-SAT 吗?你有这种卷的经验吗?
非常感谢。 干杯
【问题讨论】:
你有多少内存? 4gb...我的程序使用了大约 3gb 既然你问的是 RAM,我假设我的情况不是那么不寻常 :) 对吗? 求解 eahc 解决方案和比较是什么意思?你能举个小例子吗? 算了,我误会了。你确定你不能划分更多你的问题吗,如果你只有布尔值,你也可以尝试 BOP 【参考方案1】:你知道这是一个 NP 问题。 因此,您可能正在创建大小为 2^3000000000 的搜索树。
【讨论】:
是的,我知道...基本上是为了给你一个想法,我正在尝试解决相当于背包问题的数百万个项目,要求每个项目的求解器告诉我该项目是否必须是否包括在内。我知道我可以尝试制作相似项目的集群,并尝试找出必须落入每个集群的项目数量。但是对于我必须做的事情,为每个项目做出决定会很棒。我从您的话中了解到,即使 CP-SAT 令人难以置信,也无法为大量项目做到这一点。 其实可以尝试将其作为LP问题求解,求解单纯形,然后向上或向下舍入小数值。如果四舍五入对 10k 变量是乐观或悲观的,那么 10k 超过 3M 实际上是一个不错的比率。 嗨 Laurent,抱歉,我没有得到您的解决方案。你能详细说明一下吗?提前谢谢你 将此作为 LP 求解,按小数值对变量进行排序,并将最接近 1 的值舍入到 1,同时保持可行性。以上是关于使用 CP-SAT 预测 300 万个布尔变量的主要内容,如果未能解决你的问题,请参考以下文章
Nature:哈佛&牛津开发基因致病性预测模型,现已成功预测3600万个致命基因突变...