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

如何将PuLP线性优化结果导出至Excel?

如何将PuLP线性优化结果转为DataFrame并导出Excel

方法一:直接从PuLP模型提取最优解(推荐)

如果你的Jupyter Notebook里还保留着PuLP的模型对象(比如你定义的prob变量),直接从模型里提取变量值是最准确高效的,不用解析打印文本:

import pandas as pd
from pulp import LpProblem

# 假设你的PuLP模型对象名为prob,且已完成求解
prob = LpProblem(...)  # 替换为你的实际模型定义
prob.solve()

# 提取变量数据
data = []
for var in prob.variables():
    # 拆分变量名中的CZe编号和地点代码
    var_name = var.name
    parts = var_name.split("('")[1].split("',_'")
    cze_code = parts[0].strip("'")
    location_code = parts[1].strip("')")
    # 获取变量最优值
    value = var.varValue
    data.append({"CZe编号": cze_code, "地点": location_code, "服务量": value})

# 转为DataFrame
df = pd.DataFrame(data)

# 导出到Excel(需先安装openpyxl:pip install openpyxl)
df.to_excel("优化结果.xlsx", index=False)

方法二:解析已打印的结果文本

如果只能拿到你提供的打印文本,用正则表达式解析每一行内容:

import pandas as pd
import re

# 将你打印的结果复制为字符串(替换为完整的输出内容)
result_text = """
Service_('CZe_0004',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0004',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0010',_'DC_PA_CHAMBERSBURG') = 87.14
...  # 补充所有剩余行
Service_('CZe_0018',_'MFC_FL_JACKSONVILLE') = 0.0
"""

# 正则匹配每行的关键信息
pattern = re.compile(r"Service_\('(CZe_\d+)',_'([A-Z_]+)'\) = (\d+\.\d+)")
data = []

for line in result_text.strip().split("\n"):
    match = pattern.match(line)
    if match:
        cze_code = match.group(1)
        location_code = match.group(2)
        value = float(match.group(3))
        data.append({"CZe编号": cze_code, "地点": location_code, "服务量": value})

# 转为DataFrame
df = pd.DataFrame(data)

# 导出到Excel
df.to_excel("优化结果.xlsx", index=False)

额外提示

  • 若只需保留非零结果,可添加筛选:df = df[df["服务量"] != 0]
  • 导出Excel依赖openpyxl库,执行pip install openpyxl即可安装

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:10:27