【问题标题】:Python: minimize multiple functions with multiple variablesPython:使用多个变量最小化多个函数
【发布时间】:2019-10-29 16:19:05
【问题描述】:

我正在尝试同时使用 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】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-16
      • 2021-04-08
      • 2021-06-18
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      相关资源
      最近更新 更多