Python scipy最小化类型错误:不支持-:';元组';和';元组';

Python scipy最小化类型错误:不支持-:';元组';和';元组';,python,optimization,scipy,valueerror,minimize,Python,Optimization,Scipy,Valueerror,Minimize,我正在使用一些SIR模型,并尝试使用scipy最小化函数 def SIR_Model(parametros, valores_iniciais, valores_reais): Dias = len(valores_reais)-1 Dia=[0] N=valores_iniciais[0] S=[] E=[] A=[] I=[] H=[] R=[] S.append(valores_iniciais[1])

我正在使用一些SIR模型,并尝试使用scipy最小化函数

def SIR_Model(parametros, valores_iniciais, valores_reais):

    Dias = len(valores_reais)-1
    Dia=[0]

    N=valores_iniciais[0]

    S=[]
    E=[]
    A=[]
    I=[]
    H=[]
    R=[]

    S.append(valores_iniciais[1])
    E.append(valores_iniciais[2])
    A.append(valores_iniciais[3])
    I.append(valores_iniciais[4])
    H.append(valores_iniciais[5])
    R.append(valores_iniciais[6])


    sigma=valores_iniciais[7]
    lambda_model=valores_iniciais[8]
    k1=valores_iniciais[9]
    k2=valores_iniciais[10]
    delta=valores_iniciais[11]

    beta1=parametros[0]
    beta2=parametros[1]
    beta3=parametros[2]
    gamma=parametros[3]

    for i in range(0,Dias):
        Dia.append(i+1)
        S.append(S[i]*(1-beta1*A[i]/N-beta2*I[i]/N-beta3*H[i]/N))
        E.append(E[i]*(1-sigma)+S[i]/N*(beta1*A[i]+beta2*I[i]+beta3*H[i]))
        A.append(A[i]*(1-k1)+(1-gamma)*sigma*E[i])
        I.append(sigma*gamma*E[i]-lambda_model*I[i])
        H.append(H[i]*(1-k2-delta)+lambda_model*I[i])
        R.append(R[i]+k1*A[i]+(k2+delta)*H[i])

    df_model=pd.DataFrame(np.column_stack([S, E, A, I, H, R, Dia, valores_reais]), columns=['Susceptible','Exposed','Asymptomatic','Infected','Hospitalized','Removed','Dia', 'Infected Portugal'])

    RMSE = ((df_model["Infected"] - df_model["Infected Portugal"]) ** 2).mean() ** .5
    R_0 = ((1-gamma)*beta1*S[0])/(k1*N) + (gamma*beta2*S[0])/(lambda_model*N) + (gamma*beta3*S[0])/((k2+delta)*N)

    return RMSE, df_model, R_0
使用一些值调用函数,效果很好 e、 g.
RMSE_模型、df_模型、R_0_模型=SIR_模型(葡萄牙瓦洛雷斯·伊尼西奥的Parameteros_x0)

当我尝试最小化时,我会得到以下错误: TypeError:-:“tuple”和“tuple”的操作数类型不受支持

from scipy.optimize import minimize
res = minimize(SIR_Model,x0=parametros, args=(valores_inicio, infected_portugal))
你能帮忙吗?
谢谢函数
SIR\u model
返回一个元组,但
scipy.optimize.minimize
希望函数返回一个标量

报告中的描述说:

最小化一个或多个变量的标量函数

返回元组的函数可能在元组可以通过比较排序的条件下工作。在您的例子中,元组包含无法排序的对象

您可能希望包装
SIR\u Model
函数,以便它返回标量并将最小化函数应用于包装器

def wrapper(parametros, valores_iniciais, valores_reais):
    res = SIR_Model(parametros, valores_iniciais, valores_reais)
    return res[0]

函数
SIR\u model
返回一个元组,但
scipy.optimize.minimize
期望函数返回一个标量

报告中的描述说:

最小化一个或多个变量的标量函数

返回元组的函数可能在元组可以通过比较排序的条件下工作。在您的例子中,元组包含无法排序的对象

您可能希望包装
SIR\u Model
函数,以便它返回标量并将最小化函数应用于包装器

def wrapper(parametros, valores_iniciais, valores_reais):
    res = SIR_Model(parametros, valores_iniciais, valores_reais)
    return res[0]