【发布时间】:2016-03-02 16:41:17
【问题描述】:
我正在努力解决以下(通用)形式的优化问题。
最小化 F(x)
这样:
___(1): 0
___(2): M(x) >= 0。
其中 M(x) 是一个矩阵,其元素是 x 的二次函数。最后一个约束意味着 M(x) 必须是 positive semidefinite matrix。此外,F(x) 是一个可调用函数。对于更好奇的人,here 是一个类似的最小工作示例。
我尝试了几个选项,但都没有成功。
- PICOS、CVXPY 和 CVX——在前两种情况下,我找不到像我这样的 minimax 问题编码的方法。在 MATLAB 中实现的第三个中,涉及半定约束的矩阵必须是仿射的。所以我的问题不属于这个标准。
- fmincon -- 我们如何编码矩阵正性约束?一种方法是解析地计算矩阵 M(x) 的特征值,并将每个特征值约束为正。但是特征值的解析表达式可能很可怕。
- MOSEK -- 目标函数必须是可表达的标准形式。我找不到用户定义的目标函数的示例。
- scipy.optimize -- 除了目标函数和约束,还需要提供这些函数的导数。特别是在我的情况下,这对于目标函数来说很好。但是,如果我要用特征值的解析表达式来表达矩阵正性约束(以及它的导数),那可能会非常乏味。
我很抱歉没有提供 MWE 来说明我对上述每个软件包/软件的尝试。
谁能推荐一个对我解决优化问题有用的软件包/软件?
【问题讨论】:
-
可以举一个
F和M的例子吗? -
一个更具体的 $M(x)$ 示例会有所帮助。至于 MOSEK(我在 MOSEK 工作),你不能为 SDP 指定用户定义的函数。但是,如果 F(X) 是圆锥可表示的,那么您可能不需要它。见docs.mosek.com/modeling-cookbook/index.html
标签: scipy nonlinear-optimization cvxopt fminsearch mosek