Optimization 在Z3中支持三角函数(例如:cos,tan)

Optimization 在Z3中支持三角函数(例如:cos,tan),optimization,z3,z3py,Optimization,Z3,Z3py,我想用Z3来优化一组方程。这里的问题是我的方程是非线性的,但最重要的是它们有三角函数。在z3中有没有办法解决这个问题? 我正在使用z3py API。SMT解算器通常不支持超越数和三角函数 正如所指出的(谢谢!),Z3确实支持三角函数和超越函数;但支持相当有限。(在实践中,这意味着您不应该期望Z3决定您抛出的每一个公式;在复杂的情况下,它很可能只返回unknown) 有关相关出版物,请参阅。以下讨论线程中有一些示例可以帮助您开始: 另外,请注意,Z3的优化解算器不处理非线性方程组;所以你无法优化它

我想用Z3来优化一组方程。这里的问题是我的方程是非线性的,但最重要的是它们有三角函数。在z3中有没有办法解决这个问题?
我正在使用z3py API。

SMT解算器通常不支持超越数和三角函数

正如所指出的(谢谢!),Z3确实支持三角函数和超越函数;但支持相当有限。(在实践中,这意味着您不应该期望Z3决定您抛出的每一个公式;在复杂的情况下,它很可能只返回
unknown

有关相关出版物,请参阅。以下讨论线程中有一些示例可以帮助您开始:

另外,请注意,Z3的优化解算器不处理非线性方程组;所以你无法优化它们。对于这类优化问题,传统的SMT求解器不是正确的选择


但是,如果您对δ-可满足性(允许一定的误差因子)感到满意,那么请查看
dReal
,它可以处理三角函数:但据我所知,它不执行优化。

次要细节:Z3支持三角函数和超越函数,但这种支持非常有限,对于优化问题可能没有用处。另请参见感谢@ChristophWintersteiger,我不知道这项工作。编辑了我的答案,以反映Z3中的最新技术。trig函数是否通过Python API公开?