我有线性欠定系统,我需要找到受得分函数约束的 x 。
这样的函数的最小值,但我想知道是否存在解决这个问题的规范方法,利用线性部分进行更规律的收敛。
我正在使用 python 和 scikit-learn,但我也可以尝试转换 MATLAB 代码来解决它。
编辑。函数不是凸函数,处不一定具有许多最大值。
我有线性欠定系统,我需要找到受得分函数约束的 x 。
这样的函数的最小值,但我想知道是否存在解决这个问题的规范方法,利用线性部分进行更规律的收敛。
我正在使用 python 和 scikit-learn,但我也可以尝试转换 MATLAB 代码来解决它。
编辑。函数不是凸函数,处不一定具有许多最大值。
您的问题的正确名称是在线性约束 Ax = b 的情况下最大化 g(x)。即,您要求 Ax=b 准确,并且您希望根据此要求最大化 g(x)。
与您的方法的不同之处在于,这种公式明确指出我们不允许偏离 Ax=b,而您的公式允许在 Ax=b 的准确性和 g(x) 的最大化之间进行复杂的权衡。
存在许多用于约束非线性优化的库。至于 Python,我推荐 scipy.optimize.minimize(),SLSQP 求解器。
更新:如果您对 SciPy 不满意,另一种选择是尝试ALGLIB。该库成熟且免费,并具有 Python 包装器(实际上是 C++ 和 C# 库)。它具有称为 MinBLEIC 的线性约束优化器,它允许将整个约束矩阵 A 指定为一个数组。唯一的缺点是库不支持 numpy 的 ndarray,因此,如果您更喜欢 numpy 用于数组,则必须将 ndarray 转换为列表列表(请参阅此问题)。披露:我是开发人员之一:)