Python中文
首页
教程
问答
标签
搜索
登录
注册
If else语句返回TypeError:int类型的对象没有len()不确定原因
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>所以,我试图解决一个优化问题。我想弄明白的是,当我运行代码时,我的函数调用“to_fp_Cx”抛出了一个错误,我不明白为什么</p> <p>回溯一直指向我定义的函数。我用不同的值调用这些函数,独立地测试了这些函数,结果正如预期的那样。所以,我不确定发生了什么</p> <pre><code>--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-41-3f717a4f07e1> in <module> 37 # intermediate variables with explicit equations 38 ---> 39 if(fload_c3_1 < 0.1): 40 alt_fload_c3_1 = m.Intermediate(0) 41 else: ~\AppData\Local\Continuum\anaconda3\lib\site-packages\gekko\gk_operators.py in __len__(self) 23 return self.name 24 def __len__(self): ---> 25 return len(self.value) 26 def __getitem__(self,key): 27 return self.value[key] ~\AppData\Local\Continuum\anaconda3\lib\site-packages\gekko\gk_operators.py in __len__(self) 142 143 def __len__(self): --> 144 return len(self.value) 145 146 def __getitem__(self,key): TypeError: object of type 'int' has no len() </code></pre> <p>顾名思义,我是一个Python迷,我被迷惑了。任何帮助都将不胜感激。谢谢</p> <pre><code>import numpy as np # import gekko, pip install if needed from gekko import GEKKO # Compressor Performance curves # Fraction capacity to Fractional power conversion # Compressor C3 def to_fp_c3(fc): a = 5.16102738 b = -16.25992208 c = 18.52731113 d = -8.859480201 e = 2.096698885 f = 0.334319989 if (fc < 0.1): fp = 0.0 else: fp = (a*fc**5)+(b*fc**4)+(c*fc**3)+(d*fc**2)+(e*fc**1)+(f*fc**0) return fp ... ### Optimization Model #### # create new model m = GEKKO(remote = False) # Solver option - 1: APOPT, 2: BPOPT, 3: IPOPT 0:Benchmark all available m.options.SOLVER = 3 # declare model parameters maxcap_c3_1 = m.Param(value = 900) maxcap_c3_2 = m.Param(value = 900) load = m.Param(value = 1500) ## Model variables # load distribution fload_c3_1 = m.Var(value=0.50,lb=0.0,ub=1.0, integer = False) fload_c3_2 = m.Var(value=0.50,lb=0.0,ub=1.0, integer = False) # declare variables and initial guesses #totalpowerdraw = m.Var() # intermediate variables with explicit equations if(fload_c3_1 < 0.1): alt_fload_c3_1 = m.Intermediate(0) else: alt_fload_c3_1 = m.Intermediate(fload_c3_1) if(fload_c3_2 < 0.1): alt_fload_c3_2 = m.Intermediate(0) else: alt_fload_c3_2 = m.Intermediate(fload_c3_2) assignedload_c3_1 = m.Intermediate(alt_fload_c3_1 * maxcap_c3_1) assignedload_c3_2 = m.Intermediate(alt_fload_c3_2 * maxcap_c3_2) powerdraw_c3_1 = m.Intermediate(to_fp_c3(alt_fload_c3_1) * maxcap_c3_1) powerdraw_c3_2 = m.Intermediate(to_fp_c3(alt_fload_c3_2) * maxcap_c3_2) totalpowerdraw = m.Intermediate(powerdraw_c3_1 + powerdraw_c3_2) # implicit equations m.Equation(load == assignedload_c3_1 + assignedload_c3_2 ) # minimize weight1 m.Obj(totalpowerdraw) # solve optimization m.solve() # remote=False for local solve print ('') print ('--- Results of the Optimization Problem ---') print (alt_fload_c3_1.value, powerdraw_c3_1.value) print (alt_fload_c3_1.value, powerdraw_c3_2.value) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你必须用这个</p> <p>如果(fload_c3_1.0值<;0.1):</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
将图复制到几个子图中
3 回答
将图层从一个CNN模型复制到另一个。(来自配置的层在版本2中不工作)
7 回答
将图层从图像复制到另一个图层
9 回答
将图层导出到sde
7 回答
将图层输出保存在Keras自定义图层中
4 回答
将图形中的所有节点重命名为数字序列
10 回答
将图形从pylab转换为base64而不缓存i
4 回答
将图形从python复制到word
9 回答
将图形从一个数据帧拆分为不同类别
10 回答
将图形保存到fi时出现绘图错误
6 回答
将图形冻结成十位数后推理速度变慢
4 回答
将图形分割为完全子图的算法
4 回答
将图形另存为“eps”文件时不显示Matplotlib中文字符
3 回答
将图形合并为一个
9 回答
将图形和文字混为一谈
6 回答
将图形图像打印到打印机
7 回答
将图形对象写入dimacs文件窗体
8 回答
将图形导出为pdf
9 回答
将图形嵌入到GUI中(Qtdesigner和Pyside)
6 回答
将图形拆分为正方形
3 回答