适用于半线性约束的非线性优化的正确软件包/软件

时间:2016-03-02 16:41:18

标签: scipy nonlinear-optimization cvxopt fminsearch mosek

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

  

最小化F(x)

     

这样:

     

___(1):0< x< 1

     

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

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

我尝试了一些选择,但没有成功。

  1. PICOSCVXPYCVX - 在前两种情况下,我找不到编码极小极大问题的方法,例如我的。在MATLAB中实现的第三个中,涉及半定约束的矩阵必须是仿射的。所以我的问题超出了这个标准。
  2. fmincon - 我们如何编码矩阵积极性约束?一种方法是分析地计算矩阵M(x)的特征值,并将每一个约束为正。但是特征值的解析表达式可能是可怕的。
  3. MOSEK - 目标函数必须是标准形式的表达。我找不到用户定义的目标函数的示例。
  4. scipy.optimize - 除了目标函数和约束之外,还必须提供这些函数的导数。特别是在我的情况下,这对目标函数来说很好。但是,如果我用特征值的解析表达式表达矩阵积极性约束(以及它的导数),那可能非常繁琐。
  5. 我很抱歉没有提供MWE来说明我对上述每个软件包的尝试。

    有人可以推荐一个可以帮我解决我的优化问题的软件包/软件吗?

1 个答案:

答案 0 :(得分:0)

查看具有框约束的非线性优化包,其中可以通过惩罚或屏障技术对不同类型的约束进行编码。 请查看以下URL merlin.cs.uoi.gr