
GEKKO 默认导出的 results.csv 使用自动生成的编号名称(如 i1000),难以识别变量含义;可通过在定义变量/中间量时显式指定 name 参数,结合列表推导式批量命名数组变量,使 CSV 输出直接显示语义化名称。
gekko 默认导出的 results.csv 文件使用自动生成的编号名称(如 i1000),难以识别变量含义;可通过在定义变量/中间量时显式指定 name 参数,结合列表推导式批量命名数组变量,使 csv 输出直接显示语义化名称。
在 GEKKO 中,所有变量(m.Var)、参数(m.Param)、中间量(m.Intermediate)和方程量(m.CV、m.MV、m.FV)均支持 name 关键字参数。该名称会作为变量标识符传递至底层 APMonitor 求解器,并最终体现在 results.csv 文件的首列中——注意:APMonitor 会自动将所有名称转为小写,因此 name='Temperature[1,2]' 将显示为 temperature[1,2],但建议避免使用方括号等特殊字符,优先采用下划线分隔的简洁命名(如 'T_1_2')。
对于数组型变量,m.Array() 本身不支持直接为每个元素指定不同名称,但可通过列表推导式灵活构造带语义名的变量序列。例如:
# ✅ 推荐:用列表推导式创建带自定义 name 的变量数组
T = [m.Var(lb=0, ub=100, name=f'T_{i}_{j}')
for i in range(2) for j in range(3)]
# 生成 T_0_0, T_0_1, T_0_2, T_1_0, T_1_1, T_1_2
# ✅ 中间量同样支持 name 参数
T_avg = m.Intermediate(sum(T)/len(T), name='T_average')
完整示例(含验证输出):
from gekko import GEKKO
m = GEKKO(remote=False)
# 定义带语义名称的变量数组(替代 m.Array)
T = [m.Var(value=25, lb=0, ub=100, name=f'T{i+1}') for i in range(3)]
# 命名中间量(名称将在 results.csv 中可见)
T_sum = m.Intermediate(T[0] + T[1] + T[2], name='T_total')
T_ratio = m.Intermediate(T[0] / (T[1] + 1e-8), name='T_ratio') # 避免除零
# 约束方程
m.Equation(T[0] + T[1] == 60)
m.Equation(T[1] + 2*T[2] == 80)
m.Equation(T[0] - T[2] == 10)
m.solve(disp=False)
m.open_folder() # 打开文件夹查看 results.csv
运行后,results.csv 将呈现清晰结构:
使用 qbo-mileage CLI 及用户凭证,从 Airtable、Outlook 或 Google Calendar 记录生成 QuickBooks Online 里程 CSV 文件。
t1, 30.000000000 t2, 30.000000000 t3, 20.000000000 t_total, 80.000000000 t_ratio, 1.0000000000
⚠️ 注意事项:
- 变量名不可以 APMonitor 内置函数名开头(如
abs_x、sin<em>theta</em>),否则可能引发解析错误;推荐前缀如T、Q<em></em>、concentration; - 名称中避免空格、括号、点号、连字符等特殊字符,仅推荐字母、数字与下划线;
- 若需多维索引语义(如
Temperature[2,1,3]),请转换为扁平化命名(如'T_2_1_3'),既兼容 CSV 可读性,又便于程序后处理; - 调用
m.open_folder()可快速定位results.csv,确认命名是否生效。
通过主动控制 name 属性,你不仅能大幅提升结果文件的可读性与可追溯性,还能增强团队协作中的模型理解效率——让数值结果真正“说得清、认得出、用得准”。










