如何让GEKKO生成更易读CSV文件并自定义带索引变量名?
GEKKO结果文件变量名优化方案
自定义变量/中间变量名称,替代自动生成的iXXX标识
GEKKO默认会给未指定名称的变量、中间变量分配iXXX这类自动命名,但你可以手动指定自定义名称,操作很简单:
- 声明时直接通过
name参数设置:# 普通变量 x = m.Var(value=0, name='reaction_rate') # 中间变量 scaled_rate = m.Intermediate(x * 2.5, name='scaled_reaction_rate') - 已声明的变量也能事后修改
name属性:x.name = 'updated_reaction_rate'
设置完成后,results.csv里就会显示你指定的名称,不再是晦涩的iXXX。
给m.Array生成的变量分配带索引的名称
完全可以实现,只需要遍历数组元素,为每个元素设置带索引的自定义名称即可,举两个常用场景的例子:
一维数组
# 创建包含3个元素的一维温度数组 Temperature = m.Array(m.Var, 3) # 遍历分配带索引的名称 for idx, t in enumerate(Temperature): t.name = f'Temperature[{idx+1}]'
二维数组
# 创建3×3的二维温度矩阵 TempMatrix = m.Array(m.Var, (3,3)) # 嵌套循环为每个元素设置行列索引名称 for i in range(3): for j in range(3): TempMatrix[i,j].name = f'Temperature[{i+1},{j+1}]'
处理后,数组元素会在results.csv中显示为Temperature[1]、Temperature[2,3]这类清晰的索引化名称,方便识别。
额外提醒:自定义名称不仅优化results.csv的可读性,在调用m.open_folder()打开的GEKKO调试网页中,变量名也会同步更新,调试时更容易定位变量。
内容的提问来源于stack exchange,提问作者Hamiduddin Hamdan
相关产品推荐
相关产品推荐

