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

如何将优化模型中的二进制决策变量转换为字典并分栏写入Excel?

解决二进制决策变量分栏写入Excel的问题

嘿,这事儿其实很简单,咱们一步步来搞定它!

第一步:把决策变量整理成字典

首先,你需要把那些x["a", "1a"]=1这类的变量,整理成一个键为元组、值为1的字典。如果是你手动定义的变量,直接构造字典就行:

# 手动收集决策变量到字典
x_dict = {
    ("a", "1a"): 1,
    ("bb", "2b"): 1,
    ("ccc", "2a"): 1
}

要是你的变量是从优化模型(比如PuLP、Gurobi)里来的,大部分优化库都有方法提取变量的取值。比如用PuLP的话,求解后可以通过var.varValue拿到变量值,筛选出值为1的变量再整理成字典:

from pulp import LpProblem, LpVariable, LpBinary

# 模拟优化模型场景
prob = LpProblem("ExampleModel", LpMinimize)
# 定义二进制变量
x = LpVariable.dicts("x", [("a", "1a"), ("bb", "2b"), ("ccc", "2a")], cat=LpBinary)
# 假设模型已求解完成,变量取值为1

# 提取值为1的变量,整理成字典
x_dict = {}
for var in prob.variables():
    if var.varValue == 1:
        # 拆分变量名,比如"x_a_1a"拆成("a", "1a")
        key_parts = var.name.split("_")[1:]
        x_dict[(key_parts[0], key_parts[1])] = 1

第二步:转成DataFrame并写入Excel

有了字典之后,就可以用pandas把它拆分成你想要的分栏格式了:

import pandas as pd

# 把字典的键拆分成两列数据
data = [[key[0], key[1]] for key in x_dict.keys()]

# 构造DataFrame,指定列名
df = pd.DataFrame(data, columns=["A", "B"])

# 写入Excel,记得去掉索引列
df.to_excel("decision_variables.xlsx", index=False)

这样生成的Excel就会是你想要的格式:

AB
a1a
bb2b
ccc2a

核心思路

本质上就是把决策变量的二元键拆分成两个独立的列,利用pandas的DataFrame来结构化数据,最后直接写入Excel就行。如果你的变量键是更多维度的,只需要调整拆分的逻辑就可以啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:26:13