【发布时间】:2021-05-03 17:30:36
【问题描述】:
我正在尝试使用scipy minimize 函数来制定优化问题。但是,我遇到了以下无法解决的问题:
我想要X = [x1, x2, x3, x4, x5] 最小化成本函数 F(X)。然而,这个 X 向量是必须加到 1 的百分比值,即np.sum(X) = 1。
问题是:例如,如果我使用带有一些初始值的“SLSQP”方法(例如X0 = [0.2, 0.2, 0.2, 0.2, 0.2]),它会尝试增加每个值以找到一些收敛方向。例如,算法将生成X0 -> [0.21, 0.2, 0.2, 0.2, 0.2]。但这不可能发生,因为np.sum(X) = 1 是我计算目标函数的要求。
使用约束也无济于事!我可以用np.sum(X) = 1 做一个约束。而最小化算法只会在计算出目标函数后才检查约束。
有人知道如何处理这样的问题吗?
非常感谢!
【问题讨论】:
-
请提供MWE。
-
使用
F(X/sum(X))作为目标。剩下的一个问题:所有x=0。为这种情况返回一个大的 obj。 -
了不起的欧文,就是这样!您能否将其作为答案发布,以便我接受?
-
你遇到过增广拉格朗日乘数吗?它可以通过将约束优化转换为无约束优化来为您省去麻烦:D
标签: python optimization scipy