gpt4 book ai didi

python - 如何在Gurobi python界面中创建二进制变量?

转载 作者:行者123 更新时间:2023-12-01 08:59:33 26 4
gpt4 key购买 nike

我是 Gurobi Python 界面的新手。如果有人指导我解决这个问题那就太好了。

我想使用 Python 接口(interface)创建二元决策变量。

$X_{k, u, i, j}$ 表示的二进制变量 - 表示用户 u 的设备 i 的任务 j 在时隙 k 是否处理。 1 = 已处理,0 = 未处理。

我已经尝试过这样的操作,但无法获得所需的输出。

 x = m.addVars(time_slots, users, appliances, task_appliances, vtype = GRB.BINARY, name = 'x')

Output

x[k1,u1,washingmachine, washingmachine], x[k1,u1,washingmachine, dryer]

Where 

time_slots = ['k1', 'k2','k3', 'k4', 'k5', 'k6', 'k7', 'k8', 'k9', 'k10']
users = ['u1', 'u2', 'u3', 'u4', 'u5']
appliances = ['washingmachine', 'dryer', 'dishwasher', 'refrigerator', 'gashob1', 'gashob2']



task_appliances = {'washingmachine':['movement', 'heating','washing', 'cooling', '1strinse', '2ndrinse', '3rdrinse'], 'dryer': ['drying1', 'drying2', 'drying3', 'drying4', 'drying5', 'drying6', 'drying7', 'drying8'], 'dishwasher': ['movement', 'heating', 'wash', '1strinse', 'drain', 'heating','2ndrinse', 'drain_and_dry'], 'refrigerator': ['cooling1', 'cooling2', 'cooling3', 'cooling4','cooling5', 'cooling6', 'cooling7','cooling8', 'cooling9', 'cooling10'],'gashob1':['heating'], 'gashob2':['heating']}

我如何创建一个二进制变量来表示x[k1,u1,洗衣机,运动], x[k1,u1,洗衣机,加热],..对于所有洗衣机任务都是如此和x[k1,u1,dryer,dryer1], x[k1,u1,dryer,drying2],..对于所有烘干机任务都是如此,对于所有设备依此类推。

最佳答案

首先请注意,在task_appliances中,洗碗机的任务加热是两倍,修复此问题后,您可以使用列表理解来获取元组列表,然后使用m.addVars():

from gurobipy import *

# Your lists here

m = Model()
vars_tup = [(t, u, app, task) for t in time_slots for u in users for app in appliances for task in task_appliances[app]]
x = m.addVars(vars_tup, vtype=GRB.BINARY, name="x")
# Your constraints and objective function..

关于python - 如何在Gurobi python界面中创建二进制变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com