You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pyomo模型的求解结果提取并导出为CSV或Excel文件

Pyomo求解结果提取并导出到Excel的实现方法

首先确认模型已经完成求解,若需要提取约束对偶值,需在求解前声明对偶后缀:

from pyomo.environ import Suffix
model.dual = Suffix(direction=Suffix.IMPORT)

完整实现步骤

1. 导入依赖库

import pandas as pd
from pyomo.environ import value

2. 提取变量与约束数值存入字典

# 初始化结果字典,首列为索引列(此处为时间步t,对应你定义的model.n集合)
result_dict = {
    "时间步t": [t for t in model.n]
}

# 提取指定变量数值,可按需添加更多变量
result_dict["自有发电量eigenproduktion"] = [value(model.eigenproduktion[t]) for t in model.n]
result_dict["进口电量stromimport"] = [value(model.stromimport[t]) for t in model.n]
result_dict["总用电量verbrauch"] = [value(model.verbrauch[t]) for t in model.n]

# 提取约束相关数值,可按需选择提取对偶值/残差/左右侧值
# 供需平衡约束对偶值(影子价格)
result_dict["供需平衡约束对偶值"] = [model.dual[model.lastdeckung[t]] for t in model.n]
# 供需平衡约束残差(左侧减右侧值,收敛时接近0)
result_dict["供需平衡约束残差"] = [value(model.lastdeckung[t].lhs() - model.lastdeckung[t].rhs()) for t in model.n]

如果变量数量较多,可使用批量遍历写法,无需逐个手动添加变量:

# 批量提取所有激活的变量
for var in model.component_objects(Var, active=True):
    result_dict[var.name] = [value(var[t]) for t in model.n]

# 批量提取所有激活约束的对偶值
for con in model.component_objects(Constraint, active=True):
    result_dict[f"{con.name}_对偶值"] = [model.dual[con[t]] for t in model.n]

3. 转为DataFrame并导出

# 字典转DataFrame
df = pd.DataFrame(result_dict)

# 导出到Excel,需提前安装openpyxl依赖:pip install openpyxl
df.to_excel("pyomo求解结果.xlsx", index=False)

# 若需导出为CSV格式,使用以下代码
# df.to_csv("pyomo求解结果.csv", index=False, encoding="utf_8_sig")

内容的提问来源于stack exchange,提问作者saschav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:54:01