Z3:设置起始值

Z3:设置起始值,z3,Z3,我可以要求Z3从某些起始值搜索以满足约束条件吗 比方说,如果我有两个realexprx和y,并且我有x==y作为约束。 我可以让Z3从x=-9999,y=-9997中搜索,这样Z3就可以返回一个带有x=-9998和y=-9998的模型,并说“SAT”?据我所知,你是在寻找一个最大化/最小化问题的解决方案,即以下函数的解决方案 f(x, y) = |x + 9999| + |y + 9997| 与约束一起x=y。正如在对的答复中所述,Z3目前并不直接支持这一点。但是,正如前面所述,您可以尝试通过

我可以要求Z3从某些起始值搜索以满足约束条件吗

比方说,如果我有两个
realexpr
x
y
,并且我有
x==y
作为约束。
我可以让Z3从
x=-9999,y=-9997
中搜索,这样Z3就可以返回一个带有
x=-9998和y=-9998
的模型,并说“SAT”?

据我所知,你是在寻找一个最大化/最小化问题的解决方案,即以下函数的解决方案

f(x, y) = |x + 9999| + |y + 9997|

与约束一起
x=y
。正如在对的答复中所述,Z3目前并不直接支持这一点。但是,正如前面所述,您可以尝试通过在Python循环中查询Z3来解决此类问题,该循环将以前找到的解决方案添加为下一次查询的新约束。

似乎需要“软约束”,即,
x>=-9999
y>=-9997
是您希望尽可能满足的约束。是这样吗?但这会用一定的下限约束x和y。如果我得到x==y==-10000作为结果,这是可以的。我只希望x和y有一定的起始值,唯一的约束是x==y。z3有可能吗?你是否在考虑某种迭代过程,给定起始值,迭代这些值的邻域-并迭代地扩大它-以便找到解决方案?是的,可能是这样的