我正在尝试使用 Gekko 解决非线性优化问题,其中我的一个中间变量是使用正态分布的累积分布函数计算的,即 1-CDF(μ,σ, Rs-X) 其中 Rs 是另一个 Gekko 中间变量μ、σ 和 X 是 Gekko 参数/Python 变量。
我还使用 Gekko 的 if3 函数实现了这一点,如果 Rs-X 不是正数,则返回数字 1。
n = len(df_inputs.index) # rows
surplus = m.Array(m.Var,(n,1))
R_sns = m.Array(m.Var,(n,1))
R_s = m.Array(m.Var,(n,1))
pi_s = m.Array(m.Var,(n,1))
for i in range (n):
surplus[i,0].value =...
R_sns[i,0].value = m.max3(x,surplus[i,0])
R_s[i,0].value=m.Intermediate(0.88*R_sns[i,0])
pi_s[i,0].value = m.if3(R_s[i,0]-x<=0,1,1-norm.cdf(R_s[i,0]-x,df_inputs['Mu'].iloc[i]*0.5,df_inputs['Sigma'].iloc[i]*0.707))
我在上面的最后一行代码中收到“TypeError:'int' 类型的对象没有 len()”。这个错误似乎是由中间变量 Rs 引起的。我尝试用固定数字替换它,错误消失了。
回溯(最后一次调用):文件“solve_v2.py”,第 59 行,在 pi_s[i,0].value = m.if3(R_s[i,0]-x<=0,1,1-norm. cdf(R_s[i,0]-x,df_inputs['Mu'].iloc[i]*0.5,df_inputs['Sigma'].iloc[i]*0.707)) ... 文件“C:\Users\ Programs\Python\Python37\lib\site-packages\gekko\gk_operators.py”,第 25 行,在len 返回 len(self.value) 文件“C:\Users\Programs\Python\Python37\lib\site-packages\ gekko\gk_operators.py",第 137 行,在len中 返回 len(self.value) TypeError: 'int' 类型的对象没有 len()
如何解决此错误?