Optimization 如何提高z3的优化速度?

Optimization 如何提高z3的优化速度?,optimization,z3,Optimization,Z3,我使用Z3求解线性优化问题,但随着变量和约束的增加,求解时间变得难以忍受。在未来,变量的数量约为35940个,约束可能超过十万个 有没有办法提高速度 from z3 import * opt = Optimize() cost=Int('cost') [varibles and constraints] set_option(max_args=1000000) set_option(max_lines=1000000) h=opt.minimize(cost) print(opt.check

我使用Z3求解线性优化问题,但随着变量和约束的增加,求解时间变得难以忍受。在未来,变量的数量约为35940个,约束可能超过十万个 有没有办法提高速度

from z3 import *
opt = Optimize()
cost=Int('cost')

[varibles and constraints]

set_option(max_args=1000000)
set_option(max_lines=1000000)
h=opt.minimize(cost)
print(opt.check())
m=opt.model()
print (m)
print(opt.lower(h))
doc=open('result.txt','w')
print(opt.model(),file=doc)

正如所提出的那样,这个问题是无法回答的。您没有提到约束的性质(它们是线性的、简单的等式,仅1-0?),也没有提到应用程序域本身。请记住,z3的优化器是一个非常通用的“锤子”。是的,它会优化您的线性约束,但它的亮点在于理论组合,而不是速度。如果您的域有一个自定义优化算法,您应该尽一切努力使用它。对于40K变量和100K约束,除非它们都是布尔值且非常简单,否则我不希望z3能表现得那么好。但话说回来,这一切都取决于这些约束的性质


话虽如此,阅读z3优化论文是了解其内部工作原理的最佳选择;它至少可以帮助您决定是否应该投资定制算法。请参见此处:

如果代码有效,则此问题应转到亲爱的alias,非常感谢您的热情评论。我会仔细研究你推荐的文章。你真是太好了!再次感谢你!