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

如何在Gurobi运输问题求解中输出总最小成本?

使用Gurobi在Python中求解运输问题及总成本输出疑问

运输问题是一类线性规划(LP)问题,核心目标是找到从供应点(i)到需求点(j)运输单一产品的最小成本最优方案。

实现代码

import gurobipy as gp
from gurobipy import GRB
import csv
import numpy

m = 2
n = 4


# 定义数据
supply = [100000, 100000]  # 供应节点供应量
demand = [40500, 22300, 85200, 47500]  # 需求节点需求量
cost = [
    [52, 32, 11, 69],
    [45, 84, 76, 15],
]  # 从供应点i到需求点j的运输成本


theModel = gp.Model()

# 定义决策变量
flow = theModel.addVars(m, n, lb=0, vtype=GRB.INTEGER, name="flow")


# 定义供应约束
for i in range(m):
    theModel.addConstr(gp.quicksum(flow[i, j] for j in range(n)) <= supply[i], name=f"supply_{i}")


# 定义需求约束
for j in range(n):
    theModel.addConstr(gp.quicksum(flow[i, j] for i in range(m)) >= demand[j], name=f"demand_{j}")
    
    
# 定义目标函数
theModel.setObjective(gp.quicksum(flow[i, j] * cost[i][j] for i in range(m) for j in range(n)), sense=GRB.MINIMIZE)


theModel.optimize()
# 输出结果
if theModel.status == GRB.OPTIMAL:
    print(f"找到最优解,目标函数值(总最小成本): {theModel.objVal:.2f}")
    for i in range(m):
        for j in range(n):
            if flow[i, j].x > 0:
                print(f"从供应点{i+1}到需求点{j+1}的运输量: {flow[i, j].x:.0f}")
else:
    print("未找到可行解。")

问题说明

目前已能输出供应点到需求点的最优运输量,但不清楚如何输出该方案的总最小成本?已知运输量为{flow[i, j].x:.0f},是否需要累加各运输路径的成本来计算总最小成本?

运行输出(翻译后)

找到最优解(容差1.00e-04)
最优目标值4.575800000000e+06,最优边界4.575800000000e+06,间隙0.0000%
找到最优解,目标函数值(总最小成本): 4575800.00
从供应点1到需求点2的运输量: 14800
从供应点1到需求点3的运输量: 85200
从供应点2到需求点1的运输量: 40500
从供应点2到需求点2的运输量: 7500
从供应点2到需求点4的运输量: 47500

解答

不需要手动累加各路径成本,Gurobi已经直接通过theModel.objVal给出了目标函数的最优值,也就是总最小成本——你当前的代码里已经输出了这个值。

如果需要手动验证结果的正确性,可以通过遍历所有运输路径,用运输量乘以对应路径成本再求和,示例代码如下:

# 手动计算总最小成本用于验证
total_manual_cost = 0.0
for i in range(m):
    for j in range(n):
        if flow[i, j].x > 0:
            total_manual_cost += flow[i, j].x * cost[i][j]
print(f"手动计算的总最小成本: {total_manual_cost:.2f}")

运行这段代码会得到和objVal一致的结果,两种方式可以互相验证。

内容的提问来源于stack exchange,提问作者C.Unbay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:32:41