GUROBI案例实战(二)——仓库调度(网络流模型)

网络流问题:交通调度、仓储运输 (aliyun.com)

改用GUROBI实现的代码如下:

import gurobipy as gp
from gurobipy import *
# parameters
Plants = ["HN"]
Depots = ["NE", "SE"]
Warehouses = ["JS", "ZJ", "JL", "LN", "HLJ"]

Edges_Costs = dict({
    ("HN", "NE"): 3.5,
    ("HN", "SE"): 2.5,
    ("NE", "LN"): 1.5,
    ("NE", "JL"): 1.7,
    ("NE", "HLJ"): 2.0,
    ("SE", "LN"): 2.6,
    ("SE", "JL"): 2.7,
    ("SE", "JS"): 1.3,
    ("SE", "ZJ"): 1.5
})

arcs, Edges_Capacity = gp.multidict({
    ("HN", "NE"): 250,
    ("HN", "SE"): 250,
    ("NE", "LN"): 100,
    ("NE", "JL"): 100,
    ("NE", "HLJ"): 100,
    ("SE", "LN"): 100,
    ("SE", "JL"): 100,
    ("SE", "JS"): 100,
    ("SE", "ZJ"): 100
})

supple = {}
supple["HN"] = 450

demand = {}
demand["JS"] = 90
demand["ZJ"] = 70
demand["JL"] = 120
demand["LN"] = 120
demand["HLJ"] = 50

# model
min_cost_model = Model()
# decision var
# list(Edges_Costs) = list(Edge_Costs.keys())
print(list(Edges_Costs))
x = min_cost_model.addVars(arcs, vtype = GRB.CONTINUOUS, name = "flow")
# objective
obj = x.prod(Edges_Costs)
min_cost_model.setObjective(obj, GRB.MINIMIZE)
# constraints
# plants constraints
min_cost_model.addConstrs((x.sum(k, "*") <= supple[k] for k in supple.keys()), name = "plant constraints")
# depots constraints
min_cost_model.addConstrs((x.sum(k, "*") == x.sum("*", k) for k in Depots), name = "flow constraints")
# warehouse constraints
min_cost_model.addConstrs((x.sum("*", k) == demand[k] for k in demand.keys()), name = "warehouse constraints")
# flow constraints
min_cost_model.addConstrs((x[edge] <= Edges_Capacity[edge] for edge in Edges_Capacity.keys()), name="capacity_constraints")
# optimize
min_cost_model.write("model.lp")
min_cost_model.optimize()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值