1
我正在考虑使用z3来最小化涉及正方形的问题。但是,当我写这个简单的例子(在Python 3 z3opt):z3opt python - 最小化正方形
from z3 import *
a = Real('a')
b = Real('b')
cost = Real('cost')
opt = Optimize()
opt.add(a + b == 3)
opt.add(And(a >= 0, a <= 10))
opt.add(And(b >= 0, b <= 10))
opt.add(cost == a * 10.0 + b ** 2.0)
h = opt.minimize(cost)
print(opt.check())
print(opt.reason_unknown())
print(opt.lower(h))
print(opt.model())
检查返回“未知”:
unknown
(incomplete (theory arithmetic))
-1*oo
[b = 0, cost = 30, a = 3]
难道我定义的方式是错误的问题,或者这是一种内在的限制z3的?
你有一个可以解决这个问题的替代z3的建议吗?我将它用于其方便的界面(自动构建大型系统的方程式,其中大部分是线性的),但发现我无法解决这个问题。 –
据我所知,目前我不知道任何* SMT *解算器提供*非线性目标*的直接优化程序。我很遗憾地说,我在相关领域的知识还不够深,不足以建议你使用其他工具来解决这个问题。 @GeromePistre –