我试图同时最小化2个函数和2个变量。 我有一组数据和2个等式:
B1 = 4
P1 = 6
G1 = 2
E1 = 3
F1 = B - G - E = -1
F2 = P - G - E = 1
给定新的B2 = 5
和P2 = 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)的意图。 您知道如何也包含第二个最小化问题吗?
先谢谢您
答案 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.5
,F4 = 0.5
。