首页 > 解决方案 > 将常量和变量传递给 Scipy.minimize.optimize 约束和边界

问题描述

我发现如何可以传入*argsmain 函数scipy.minimize.optimize,请参阅这个问题

但是如何将常量和变量传递给约束和边界呢?

P是变量向量,P0是初始解向量,f(P)是要最小化的函数,其余都是常数数据。它会这样工作吗?

def constraint_1(P, args):
    M_goal, other_args = args
    M = calc_M_from_P(P, args)  # calculate M from P
    return M-M_goal

# boundary is simply (P0[i]-500, P0[i]+500)
def get_boundaries(P0): 
    list_bnds = []
    for i in range(len(P0)):
        list_bnds.append((P0[i]-500.0, P0[i]+500.0))
    return tuple(list_bnds)

func = objective(P0, args)
bnds = get_boundaries(P0)
con1 = {'type': 'ineq', 'fun': constraint_1}

sol = minimize(func, P0, args = args, method='SLSQP', bound=bnds, constraints = con1)

标签: pythonscipyminimizeoptional-arguments

解决方案


推荐阅读