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

问题描述 投票:0回答:1

我正在尝试通过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)的意图。您知道如何也包含第二个最小化问题吗?

先谢谢您

python optimization scipy minimize
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.