GUROBI实战案例(四)——仓库选址

仓库选址规划 (aliyun.com)

import gurobipy as gb
from gurobipy import *
# parameters
setup_cost ={
    "A":500,
    "B":600,
    "C":700,
    "D":800
}

supply = {
    "A":40,
    "B":55,
    "C":73,
    "D":90
}

demand = {
    "S1": 10,
    "S2": 14,
    "S3": 17,
    "S4": 8,
    "S5": 9,
    "S6": 12,
    "S7": 11,
    "S8": 15,
    "S9": 16
}

arcs, cost = gb.multidict({
    ('A', 'S1'): 55, ('A', 'S2'): 4, ('A', 'S3'): 17,('A', 'S4'): 33,('A', 'S5'): 47,('A', 'S6'): 98,('A', 'S7'): 19,('A', 'S8'): 10,('A', 'S9'): 6,
    ('B', 'S1'): 42, ('B', 'S2'): 12, ('B', 'S3'): 4,('B', 'S4'): 23,('B', 'S5'): 16,('B', 'S6'): 78,('B', 'S7'): 47,('B', 'S8'): 9,('B', 'S9'): 82,
    ('C', 'S1'): 17, ('C', 'S2'): 34, ('C', 'S3'): 65,('C', 'S4'): 25,('C', 'S5'): 7,('C', 'S6'): 67,('C', 'S7'): 45,('C', 'S8'): 13,('C', 'S9'): 54,
    ('D', 'S1'): 60, ('D', 'S2'): 8, ('D', 'S3'): 79,('D', 'S4'): 24,('D', 'S5'): 28,('D', 'S6'): 19,('D', 'S7'): 62,('D', 'S8'): 18,('D', 'S9'): 45
})
# model
model = gb.Model()
# decision var
plant = setup_cost.keys()
setup = model.addVars(plant, vtype = GRB.BINARY, name = "setup") # 是否建造工厂
flow = model.addVars(arcs, vtype = GRB.BINARY, name = "flow") # 是否选择某工厂给某商店送货

# constraints
# supply constraints
shop = demand.keys()
model.addConstrs((gb.quicksum(flow[p, s]*demand[s] for s in shop) <= supply[p]*setup[p] for p in plant), name = "supply constraints")
# every shop can only accept goods from one plant
model.addConstrs((flow.sum("*", s) == 1 for s in shop), name = "demand constraints")
# limit
model.addConstrs((flow[p, s] <= setup[p] for p in plant for s in shop), name = "setup constraints")
# obj
obj = flow.prod(cost) + setup.prod(setup_cost)
model.setObjective(obj)
model.optimize()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值