z3 - Gurobi 可以用来解决 SMT-LIB 文件吗?
问题描述
我有一个问题,我们之前使用混合整数线性规划 (MILP) 和 Gurobi 解决了这个问题。问题空间涉及大约 2 亿个整数变量,其中除了 5000 之外的所有变量都是零,而 5000(一个非常具体的 5000)是 1。唯一的算术是加法。
这个问题的 Gurobi 输入文件的大小通常为 5-10GB(大到我将它们压缩存储并开发了一个 gurobi hack 让它读取 gzip-ed 文件)。Gurobi 通常可以在 60-600 秒内解决这些问题,但有时也可以在 6000 秒内解决。甚至六万。永远不要 600,000。
我已将问题重新编码到 SMT-LIB 中。现在问题要小得多——只有 100,000 个整数变量。现在使用的函数是ite
和+
和。但在非常简单的问题上,Z3 的耗时大约比 Gurobi 长 10 到 100 倍。=
assert
有什么方法可以让 Gurobi 处理 SMT-LIB 文件?
编辑:我没有优化,我只对找到令人满意的解决方案感兴趣。
顺便说一句,我应该看看其他求解器吗?
顺便说一句,我怀疑将问题从 100,000,000 个整数更改为 100,000 个会使问题更难解决。这两个问题之间的映射是整数变量 sin 大问题聚集在大约 15,000 个组中,而在小问题中,我有一个 8 位数字、一个 6 位数字和两个 1 位数字) . 也许我应该给Z3更大的问题?
解决方案
推荐阅读
- javascript - 如何处理变量字符串中的撇号或引号?JavaScript
- reactjs - React context api - 与其他包共享数据
- spring-boot - 我可以使用 SpringBatch 传输 http 的文件(视频/txt)并在我的电脑上读取和写入吗?
- html - 尽管显式设置了 margin:0,但包含导航栏的标题的上方和左侧和右侧的边距
- python - 为什么我看到“ufunc '减法'不能使用类型为 dtype 的操作数('
我有两个熊猫数据框,都带有日期时间索引;样本输出:
l1_with_nonlimiting_trace_gas_df.index:
DatetimeIn
- ruby-on-rails - 在将请求从本地 NextJS 服务器发送到本地 Rails api 服务器时测试 CORS
- python - 如何在熊猫中按组获取具有最大限制的前 n 行
- mysql - Docker-compose 的通信链接失败
- java - SOLR 的执行器运行状况检查给出错误创建名称为“solrClient”的 bean
- django - Django 流文件永不结束请求