是否存在任意精度的凸优化求解器?

计算科学 精确 浮点 凸优化 调理
2021-12-03 15:38:58

我有一个相对简单的凸优化问题,它涉及不到 100 个变量,但包含一个非常病态的矩阵。我尝试过 CVX 和 CPLEX;尽管通常两者都可以在大约 1 秒内解决问题,但当矩阵的条件数变得非常大时,两者都会失败。任意精度的求解器将能够快速准确地解决这个问题。是否存在这样的实现?

注意:问题的条件已经被详细考虑过,不属于这个问题的一部分。我只是问软件。

3个回答

据我所知,没有完整的库可以满足您的需求,但其中的一部分是可用的。MPMath是 Python 的任意精度库,其中包含具有线性代数功能的矩阵模块。用这个库实现凸求解器应该不会太难。

笔记。我同意上面的评论。如果数值问题非常病态,我建议您了解原因,并尝试改进问题的描述以降低条件数。

“我不知道如何选择一个多项式基础,它对复平面中的任意点集具有良好的条件。”

如果点集是有界的,则多项式的良好基础d使用的是拉格朗日多项式d+1沿封闭轮廓的合理间隔点。与涉及 Vandermonde 矩阵的问题的多精度解决方案相比,这将为您提供更好的结果。

这是任意精度的线性代数的完整包(稀疏矩阵除外):

MATLAB 多精度计算工具箱

它与 Matlab 顺利集成,并为从行列式到 SVD 和特征值的所有常见操作提供了例程。

实际上它还涵盖了其他领域——数值积分、优化、ode、特殊函数等。

至于函数最小化,您也可以尝试fminsearch工具箱中实现的 Nelder–Mead 单纯形法 ( )。