加速z3优化器

加速z3优化器,z3,smt,Z3,Smt,我在一组实参数上定义了一组线性约束。目的是找到满足这些约束的最大数量的参数的解决方案。我在z3中使用了优化器,但它非常慢。约束的数量是100,参数的数量是9,这不是一个很大的数字。我使用以下代码: from z3 import * s = Optimize() W = RealVector('w', 9) s.add(And([And(w >= -100, w <= 100) for w in W])) **Add soft constraints from a text file

我在一组实参数上定义了一组线性约束。目的是找到满足这些约束的最大数量的参数的解决方案。我在z3中使用了优化器,但它非常慢。约束的数量是100,参数的数量是9,这不是一个很大的数字。我使用以下代码:

from z3 import *
s = Optimize()
W = RealVector('w', 9)
s.add(And([And(w >= -100, w <= 100) for w in W]))

**Add soft constraints from a text file

out = s.check()
我知道解决方案的性能将取决于问题的性质,但有100个这样的约束,计算将永远持续下去。有没有其他的选择,我可以使用,使这更快


我自己也通过提取核心实现了fu-malik算法,尽管速度非常慢。

是的,提到的线性约束被强制作为软约束。所有软约束都具有相等的权重。默认权重(1),如果不清楚的话。您需要更多信息吗?我还可以为您提供完整的'00约束。我分享了我有限的知识和经验。我在z3方面没有足够的资格回答这个问题。您应该尝试引起或的注意,他们都是受尊敬的领域专家,并且比我更了解其选项。是的,提到的线性约束被强制作为软约束。所有软约束都具有相等的权重。默认权重(1),如果不清楚的话。您需要更多信息吗?我还可以为您提供完整的'00约束。我分享了我有限的知识和经验。我在z3方面没有足够的资格回答这个问题。你应该试着引起或的注意,他们都是受人尊敬的领域专家,比我更了解它的选择。
w__0 + 7*w__1 + 181*w__2 + 84*w__3 + 21*w__4 + 192*w__5 + 36*w__6 + 59*w__7 + 51*w__8 > 0

w__0 + 2*w__1 + 127*w__2 + 58*w__3 + 24*w__4 + 275*w__5 + 28*w__6 + 160*w__7 + 25*w__8 < 0

w__0 + 11*w__1 + 138*w__2 + 76*w__3 + 0*w__4 + 0*w__5 + 33*w__6 + 42*w__7 + 35*w__8 < 0

w__0 + 2*w__1 + 81*w__2 + 60*w__3 + 22*w__4 + 0*w__5 + 28*w__6 + 29*w__7 + 25*w__8 < 0

w__0 + 0*w__1 + 84*w__2 + 82*w__3 + 31*w__4 + 125*w__5 + 38*w__6 + 23*w__7 + 23*w__8 < 0

w__0 + 9*w__1 + 140*w__2 + 94*w__3 + 0*w__4 + 0*w__5 + 33*w__6 + 73*w__7 + 45*w__8 > 0

w__0 + 8*w__1 + 197*w__2 + 74*w__3 + 0*w__4 + 0*w__5 + 26*w__6 + 119*w__7 + 39*w__8 > 0

w__0 + 8*w__1 + 120*w__2 + 0*w__3 + 0*w__4 + 0*w__5 + 30*w__6 + 18*w__7 + 38*w__8 > 0

w__0 + 7*w__1 + 161*w__2 + 86*w__3 + 0*w__4 + 0*w__5 + 30*w__6 + 17*w__7 + 47*w__8 > 0

w__0 + 4*w__1 + 120*w__2 + 68*w__3 + 0*w__4 + 0*w__5 + 30*w__6 + 71*w__7 + 34*w__8 < 0

w__0 + 7*w__1 + 187*w__2 + 50*w__3 + 33*w__4 + 392*w__5 + 34*w__6 + 83*w__7 + 34*w__8 > 0

w__0 + 2*w__1 + 87*w__2 + 0*w__3 + 23*w__4 + 0*w__5 + 29*w__6 + 77*w__7 + 25*w__8 < 0

w__0 + 1*w__1 + 97*w__2 + 68*w__3 + 21*w__4 + 0*w__5 + 27*w__6 + 110*w__7 + 22*w__8 < 0

w__0 + 4*w__1 + 123*w__2 + 80*w__3 + 15*w__4 + 176*w__5 + 32*w__6 + 44*w__7 + 34*w__8 < 0

w__0 + 6*w__1 + 195*w__2 + 70*w__3 + 0*w__4 + 0*w__5 + 31*w__6 + 33*w__7 + 31*w__8 > 0

w__0 + 0*w__1 + 101*w__2 + 64*w__3 + 17*w__4 + 0*w__5 + 21*w__6 + 25*w__7 + 21*w__8 < 0

w__0 + 12*w__1 + 92*w__2 + 62*w__3 + 7*w__4 + 258*w__5 + 28*w__6 + 93*w__7 + 44*w__8 > 0

w__0 + 1*w__1 + 88*w__2 + 62*w__3 + 24*w__4 + 44*w__5 + 30*w__6 + 42*w__7 + 23*w__8 < 0