将 CP-SAT Solver 用于非线性目标函数

Posted

技术标签:

【中文标题】将 CP-SAT Solver 用于非线性目标函数【英文标题】:Using CP-SAT Solver for non-linear objective function 【发布时间】:2019-08-16 12:02:36 【问题描述】:

我正在尝试使用带有一些变量的 CP-SAT 求解器:x,y。我想最大化x**2-y*x 形式的目标函数,并带有一些约束。我来了

TypeError: ** 或 pow() 不支持的操作数类型:'IntVar' 和 'int'

错误消息。我是否正确假设我不能对 CP-SAT 使用非线性目标函数,因为我找不到任何使用非线性目标的文档或示例?或者有什么方法可以做到这一点?

【问题讨论】:

【参考方案1】:

您必须使用 AddMultiplicationEquality(x2, [x, x]) 创建一个中间变量

【讨论】:

现在好像是 AddProdEquality。 我认为它已被弃用,取而代之的是 MultiplicationEq 确实,不推荐使用的 API 是 AddMultiplicationEquality

以上是关于将 CP-SAT Solver 用于非线性目标函数的主要内容,如果未能解决你的问题,请参考以下文章

Caffe中Solver方法(HGL)

CP-SAT 平衡任务分配

如何在 or-tools 中定义复杂的目标函数?

线性二次型LQR方法可以用于非线性系统吗

Ortools 在求解时设置约束

Caffe源码-Solver类