我正在努力解决以下(通用)形式的优化问题。
最小化 F(x)
这样:
___(1): 0 < x < 1
___(2): M(x) >= 0。
其中 M(x) 是一个矩阵,其元素是 x 的二次函数。最后一个约束意味着 M(x) 必须是一个半正定矩阵。此外,F(x) 是一个可调用函数。对于更好奇的人,这里有一个类似的最小工作示例。
我尝试了几个选项,但没有成功。
- PICOS、CVXPY和CVX——在前两种情况下,我找不到像我这样的 minimax 问题编码的方法。在 MATLAB 中实现的第三个中,涉及半定约束的矩阵必须是仿射的。所以我的问题不属于这个标准。
- fmincon -- 我们如何编码矩阵正性约束?一种方法是解析地计算矩阵 M(x) 的特征值,并将每个特征值约束为正。但是特征值的解析表达式可能是可怕的。
- MOSEK——目标函数必须是可表达的标准形式。我找不到用户定义的目标函数的示例。
- scipy.optimize——除了目标函数和约束,还需要提供这些函数的导数。特别是在我的情况下,这对于目标函数来说很好。但是,如果我用特征值的解析表达式来表达矩阵正性约束(以及它的导数),那可能会非常乏味。
我很抱歉没有提供 MWE 来说明我对上述每个软件包/软件的尝试。
谁能推荐一个对我解决优化问题有用的软件包/软件?