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

如何使用lp.transport批量处理1000个14×8的成本矩阵?

处理大量运输问题矩阵的高效方案

核心思路:放弃动态变量名,用容器统一管理矩阵

不要用matrix_1到matrix_1000这种分散的变量名,把所有矩阵放到列表或字典里,通过循环批量处理——这是Python中批量处理同类数据的标准做法,比动态调用变量名更可靠、易维护。


步骤1:将现有矩阵收集到容器中

如果已经手动定义了matrix_1到matrix_1000,可以先把它们批量导入到列表:

# 把分散的matrix_1~matrix_1000存入列表
matrices = []
for i in range(1, 1001):
    # 通过globals()获取全局变量,仅用于应急迁移
    matrices.append(globals()[f"matrix_{i}"])

注意:如果是自己生成矩阵,直接生成到列表里更高效,比如用列表推导式:

# 示例:生成1000个14×8的随机成本矩阵(替换成你的生成逻辑)
import numpy as np
matrices = [np.random.rand(14, 8) for _ in range(1000)]

步骤2:循环批量处理矩阵

假设lp.transport是处理单个成本矩阵并返回结果的函数,直接循环列表中的矩阵即可:

# 存储所有结果,用列表或字典均可
results = []

for idx, cost_matrix in enumerate(matrices, start=1):
    # 调用运输问题求解函数
    transport_result = lp.transport(cost_matrix)
    # 将结果与矩阵编号绑定,方便后续排查
    results.append({
        "matrix_number": idx,
        "solution": transport_result
    })

# 如果需要按原变量名对应结果,用字典存储
results_dict = {}
for i in range(1000):
    results_dict[f"matrix_{i+1}"] = lp.transport(matrices[i])

可选:添加异常处理

如果担心部分矩阵格式错误导致程序中断,可以加入异常捕获:

results = []
for idx, cost_matrix in enumerate(matrices, start=1):
    try:
        transport_result = lp.transport(cost_matrix)
        results.append({
            "matrix_number": idx,
            "status": "success",
            "solution": transport_result
        })
    except Exception as e:
        results.append({
            "matrix_number": idx,
            "status": "failed",
            "error_message": str(e)
        })

为什么不推荐动态变量名?

用globals()或locals()动态获取变量名存在以下问题:

  • 代码可读性差,其他开发者(甚至未来的你)很难理解变量来源
  • 容易引发命名冲突,比如不小心覆盖了全局变量
  • 调试困难,出现问题时无法快速定位变量异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:10:14