我在解决涉及约 20,000 个决策变量的 python 优化问题时遇到了麻烦。问题是非线性的,我希望对问题应用界限和约束。除此之外,可以计算关于每个决策变量的梯度。
界限很简单,每个决策变量必须位于区间 [0, 1] 中,并且对变量施加单调约束,即每个决策变量必须大于前一个。
我最初打算使用scipy.optimize
包提供的 L-BFGS-B 方法,但我发现虽然它支持边界,但它不支持约束。
然后我尝试使用支持约束和边界的 SQLSP 方法。然而,因为它比 L-BFGS-B 需要更多的内存,而且我有大量的决策变量,所以我很快就遇到了内存错误。
这个问题来自的论文使用fmincon
Matlab 中的求解器来优化函数,据我所知,除了比 scipy 提供的 SQLSP 方法更节省内存之外,它还支持边界和约束的应用。但是,我无权访问 Matlab。
有谁知道我可以用来解决这个问题的替代方案?
任何帮助将非常感激。