manbet体育手机客户端


workforce3。R


Gurobi Optimizatio狗万app足彩n, LLC版权所有每个工人在特定的一天可能有空,也可能没空。如果问题不能解决,放松模型#,以确定哪些约束不能满足,以及需要放松多少#。printsolution <- Function (result) {if(result . printsolution, result . printsolution, result . printsolution, result . printsolution, result . printsolutionstatus == '最优'){cat('最优目标是',结果if ('Schedule:\n') for (s in 1:nShifts) {cat('\t', shift [s],':') for (w in 1:nWorkers) {if ('Schedule:\n') for (s in 1:nShifts)x [varIdx (w s)] > 0.9)猫(工人[w], ' ')}猫(' \ n ') } } } # 定义数据nShifts < 7 - 14 nWorkers <据nvar < - nShifts * nWorkers varIdx < -函数(w s) {s + (w1) * nShifts} <转变- c(‘Mon1’,‘Tue2’,‘Wed3’,‘Thu4’,‘Fri5’,‘Sat6’,‘Sun7’,‘Mon8’,‘Tue9’,‘Wed10’,‘Thu11’,‘Fri12’,‘Sat13’,‘Sun14’)工人< - c(“艾米”、“鲍勃”、“凯西”,“丹”,“Ed”,“弗雷德”,“顾”)支付< - c(10、12、10、8、8,9,11)shiftRequirements < - c(3、2、4、4、5、6、5、2、2、3、4、6、7、5)可用性< -列表(c (0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1), c (1, - 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0), c (0, 0, 1, 1, - 1, 0, 1, 1, 1, 1, 1, 1, 1, 1), c (0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1), c (1, 1, 1, 1, 1,0, 1, 1, 1, 0, 1, 0, 1, 1), c (1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1), c(1, 1, - 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)) #设置环境env < -列表()env#建立模型模型<- list()模型- 'workforce3'模型初始化赋值决策变量:# x[w][s] == 1,如果worker w被赋值#到shift s。由于赋值模型总是产生整数#的解,所以我们使用连续变量并将其作为LP求解。模型Lb <- 0模型ub <- rep(1, nVars)模型obj <- rep(0, nVars)模型varnames <- rep(",nVars) for (w in 1:nWorkers) {for (s in 1: nshift) {model . php . php . php . phpvarnames[varIdx(w,s)] = paste0(Workers[w],'.', shift [s]) model . php ()obj[varIdx(w,s)] = pay[w] if (availability[[w]][s] == 0ub[varIdx(w,s)] = 0}} #设置转移需求约束模型A <- spMatrix(nshift,nVars, i = c(mapply(rep,1: nshift,nWorkers)), j = mapply(varIdx,1:nWorkers, mapply(rep,1: nshift,nWorkers)), x = rep(1, nshift * nWorkers)))模型<- rep('=', nshift)模型rhs <- shift需求模型constrnames <- shift #保存模型gurobi_write(model,'workforce3. ')- gurobi(model, env = env) # Display results if (result . sh, result . sh, result . sh, result . shstatus == 'OPTIMAL'){#如果你改变一些数据,代码可能会进入这里…否则# this将永远不会被执行。printsolution(结果);} else if (resultstatus == 'INFEASIBLE'){#使用gurobi_feasrelax来找出哪些约束应该被放松#和多少让问题可行。<- list()惩罚lb <- Inf惩罚ub <- Inf惩罚rhs < -代表(1,长度(模型- gurobi(feasrelax) <- gu罗比(model, 0, FALSE,罚则,env = env模型,env = envstatus == 'OPTIMAL') {printsolution(result) cat('Slack值:\n') for (j in (nVars+1):length(result . txt)x)){如果(结果[j] [j] n / n模型varnames [j],结果x[j],'\n')}} else {cat('意外状态',结果} rm(罚金,feasrelax)} else{#只是为了处理用户中断或其他问题cat('意外状态',结果status,'\nEnding now\n')} #清除空间rm(model, env, availability, Shifts, Workers, pay, shiftrerequirements, result)