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 –