Python:使用多个变量最小化多个函数

时间:2019-10-29 16:19:05

标签: python optimization scipy minimize

我试图同时最小化2个函数和2个变量。 我有一组数据和2个等式:

B1 = 4
P1 = 6
G1 = 2
E1 = 3

F1 = B - G - E = -1
F2 = P - G - E = 1

给定新的B2 = 5P2 = 6,我想计算变量G2,E2,以使旧值F1 = -1和F2 = 1与新值F3和F4之差最小化:

B2 = 5
P2 = 6
G2 = ?
E2 = ?

F3 = B2 - G2 - E2 ---> as close as possible to F1
F4 = P2 - G2 - E2 ---> as close as possible to F2

我正在尝试:

   def diff(param):
        G2, E2 = param  
        return abs(B1 - G2 - E2 - F1)

    x0 = [2,2]
    res = minimize(diff, x0) 

这正确地解决了使F3 = F1 = -1的最小化问题,但并没有解决我也希望使差异最小化(F4-F2)的意图。 您知道如何也包含第二个最小化问题吗?

先谢谢您

1 个答案:

答案 0 :(得分:0)

我不确定我的方法是否过于幼稚(说实话,可能是这样),但是考虑到您要最小化两个差异,这意味着每个差异必须趋于零,那么为什么不尝试最小化差异的总和?此总和也应趋于零。看起来像这样:

from scipy.optimize import minimize


def diff(x):
    G2, E2 = x
    return (abs(B2 - G2 - E2 - F1 + P2 - G2 - E2 - F2))


B1 = 4
P1 = 6
G1 = 2
E1 = 3
F1 = B1 - G1 - E1
F2 = P1 - G1 - E1
B2 = 5
P2 = 6
res = minimize(diff, x0=(1, 1))

res.x返回[2.75, 2.75],它得到F3 = -0.5F4 = 0.5

相关问题