manbet体育手机客户端


工作力1.py


#!/usr/bin/python#版权所有2018,古罗比优化有限责任狗万app足彩公司#分配工人轮班;每个工人在某一天都可能有空,也可能没有空。如果问题无法解决,请使用IIS查找一组相互冲突的约束。请注意,除了通过IIS报告的内容之外,可能还有其他冲突。从gurobipy import*#每个轮班所需的工人数量来看,轮班要求=multidict({“Mon1”:3,“Tue2”:2,“Wed3”:4,“Thu4”:4,“Fri5”:5,“Sat6”:6,“Sun7”:5,“Mon8”:2,“Tue9”:2,“Wed10”:3,“Thu11”:4,“Fri12”:6,“Sat13”:7,“Sun14”:5})#每个工人为一个轮班工人支付的工资金额=multidict({“Amy”:10,“Bob”:12,“Cathy”:10,“Dan”:8,“Ed”:8,“Fred”:9,“Gu”:11})工人可用性=tuplelist([('Amy','Tue2'),('Amy','Wed3'),('Amy','Fri5'),('Amy','Sun7'),('Amy','Tue9'),('Amy','Wed10'),('Amy','Thu11'),('Amy','Fri12'),('Amy','Amy','Sat13'),('Amy','Sun14'),('Bob','Mon1'),('Bob','Fri5'),'Tue2等),"鲍勃","鲍勃","星期一","鲍勃","星期三","鲍勃","鲍勃","星期三","凯蒂","星期四","凯蒂","星期五"",""""""凯蒂,"星期五""",""",('Dan','Mon8'),('Dan','Tue9'),('Dan','Wed10'),('Dan','Thu11'),('Dan','frie12'),('Dan','Sat13'),('Ed','Mon1'),('Ed','Tue2'),('Ed','Wed3'),('Ed','frie5'),('Ed','Sun7'),('Ed','Ed','Tue9'),('Ed','Tue9'),('Ed','Thu11'),('Ed','Ed','Sat13'),('Ed','Sun14'),'Ed','sun4'),('Ed','Fred','fried',',(‘弗雷德’、‘星期三’、‘弗雷德’、‘星期六’、‘弗雷德’、‘星期一’、‘弗雷德’、‘星期二’、‘弗雷德’、‘星期三’、‘弗雷德’、‘星期三’、‘弗雷德’、‘星期三’、‘弗雷德’、‘星期一’、‘星期六’、‘弗雷德’、‘星期三’、‘弗雷德’、‘星期三’、‘弗雷德’、‘星期三’、‘弗雷德’、‘弗雷德’、‘星期三’、‘弗雷德’、‘星期三’、‘弗雷德’、‘弗雷德’、‘星期三’、‘弗雷德’、‘弗雷德’、‘星期三’、‘弗雷德’、‘星期三’、‘弗雷德’、‘弗雷德’、‘星期五’、‘星期五’、‘星期六’、‘星期五’、‘星期六’#模型m=模型(“分配”)#分配变量:x[w,s]==1如果工人w被分配到轮班s。由于分配模型总是产生整数解,我们使用#连续变量并作为LP.x=m.addVars(可用性,ub=1,name=“x”)#目标是最小化总薪酬成本m.setObjective(quicksum(薪酬[w]*x[w,s]对于w,s可用性),GRB.MINIMIZE)#约束:为每个班次s reqCts=m.addConstrs((x.sum('*',s)=班次s的shiftRequirements[s],“#”)#使用Python循环构造,前面的语句将是…#reqCts={}#对于班次s:#reqCts=m.addConstr(#quicksum(x[w,s]对于可用性中的w,s。选择('*',s))=#移位要求[s],s)#保存模型m.write('workforce1.lp')#优化m.Optimize()status=m.status如果status==GRB.status.UNBOUNDED:print('模型无法求解,因为它是无界的')如果status==GRB.status.Optimize:print('最优目标是%g'%m.objVal)退出(0)如果status!=GRB.status.INF\u或UNBD and status!=GRB.status.invasible:print('优化已停止,状态为%d'%status')退出(0)#执行IIS打印('模型不可行;计算IIS')如果m.IISMinimal:print('IIS为最小值\n')其他:print('IIS不是最小值\n')print('\n无法满足以下约束:'))对于m.getconstr()中的c:if c.IISConstr:print(“%s”%c.constrName)