我定义了一个函数object,但传入minimize函数(用于解决非线性规划问题)后报错:object() takes 1 positional argument but 2 were given
请问在不改变原函数的基础上该如何解决?谢谢
# 工地坐标a b、日储量e、日需求量d 沿用第一小题
from scipy.optimize import minimize
# 定义目标函数
def object(x):
f1 = sum(np.sqrt(((x[12]-a)**2 + (x[14]-b)**2)))
f2 = sum(np.sprt(((x[13]-a)**2 + (x[15]-b)**2)))
return f1 + f2
# 定义约束条件
def inequality_constriant(x):
return np.array([e[0]-sum(x[:6], e[1]-sum(x[6:12]))])
def equality_constriant(x):
return np.array([x[0]+x[6]-3, x[1]+x[7]-5, x[2]+x[8]-4, x[3]+x[9]-7, x[4]+x[10]-6, x[5]+x[11]-11])
constriants = [{'type':'ineq', 'fun':inequality_constriant},
{'type':'eq', 'fun':equality_constriant}]
# 定义决策变量的取值范围
variety_bounds = [(0, None)*12] + [(-np.inf, np.inf)*4]
# 定义初始值为第一问的解
x0 = np.hstack([x1, [5, 1, 2, 7]])
res = minimize(object, x0, variety_bounds, constraints=constriants)