0

我正在努力解决以下(通用)形式的优化问题。

最小化 F(x)

这样:

___(1): 0 < x < 1

___(2): M(x) >= 0。

其中 M(x) 是一个矩阵,其元素是 x 的二次函数。最后一个约束意味着 M(x) 必须是一个半正定矩阵。此外,F(x) 是一个可调用函数。对于更好奇的人,这里有一个类似的最小工作示例。

我尝试了几个选项,但没有成功。

  1. PICOSCVXPYCVX——在前两种情况下,我找不到像我这样的 minimax 问题编码的方法。在 MATLAB 中实现的第三个中,涉及半定约束的矩阵必须是仿射的。所以我的问题不属于这个标准。
  2. fmincon -- 我们如何编码矩阵正性约束?一种方法是解析地计算矩阵 M(x) 的特征值,并将每个特征值约束为正。但是特征值的解析表达式可能是可怕的。
  3. MOSEK——目标函数必须是可表达的标准形式。我找不到用户定义的目标函数的示例。
  4. scipy.optimize——除了目标函数和约束,还需要提供这些函数的导数。特别是在我的情况下,这对于目标函数来说很好。但是,如果我用特征值的解析表达式来表达矩阵正性约束(以及它的导数),那可能会非常乏味。

我很抱歉没有提供 MWE 来说明我对上述每个软件包/软件的尝试。

谁能推荐一个对我解决优化问题有用的软件包/软件?

4

1 回答 1

0

看看带有盒子约束的非线性优化包,其中可以通过惩罚或障碍技术对不同类型的约束进行编码。看下面的网址merlin.cs.uoi.gr

于 2016-03-07T01:42:58.970 回答