multibj.r.
#版权所有2018,Gurobi优化狗万app足彩,LLC ##想要覆盖三个不同的集,但允许使用#元素的共同预算。但是,该集合对#有不同的优先级;我们通过使用多目标优化来解决这个问题。库(Matrix)库(Gurobi)#定义原始数据地面Quize < - 20 Nsubsets < - 4预算< - 12 SET < - 列表(C(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1),C(0,0,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1),1,0,0),C(0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0))setobjpriority < - C(3,2,2,1)Setobjweight < - C(1.0,0.25,1.25,1.0)#初始化模型模型< - list()模型$Modelsense < - 'Max'模型$ModelName < - 'multiobj'#set变量,所有这些都是二进制的,其中0,1界限。模型$Vtype < - 'B'模型$LB < - 0型号$UB < - 1模型$varnames < - paste(rep('el',lordsetsize),1:lindsetsize,sep ='')#构建约束矩阵模型$a < - spmatrix(1,lindsetsize,i = rep(1,lindsetsize),j = 1:地面,x = rep(1,lindsetsize))模型$RHS < - C(预算)模型$感觉< - c('<')模型$CONSTRAMMES < - C('预算')#设置多目标模型$multibj < - list()for(m在1:nsubsets){model$multiobj [[m]] < - list()模型$multiobj [[m]]$objn < - set [[m]]模型$multiobj [[m]]$优先级< - setobjpriority [M]模型$multiobj [[m]]$重量< - setobjweight [m]型号$multiobj [[m]]$ABSTOL < - M型号$multiobj [[m]]$RELTOL < - 0.01型号$multiobj [[m]]$名称< - sprintf('set%d',m)模型$multiobj [[m]]$Con < - 0.0}#保存型Gurobi_Write(型号,'multibj_r.lp')#set参数params < - list()params$Poolsolutions < - 100#优化结果< - Gurobi(型号,Params)#捕获解决方案信息(结果)(结果$状态!='最佳'){cat('优化完成状态',结果$状态,'\ n')停止('立即停止\ n')}#打印最佳解决方案cat(最佳解决方案中的选择元素:\ n')(例如,1:lindsetsize){if(结果$x [e] <0.9)下一只猫('el',e,sep ='')} cat('\ n')#迭代最佳的10解决方案('池'%)(结果)){solcount < - 长(结果$池)CAT(找到的解决方案数:',solcount,'\ n')if(solcount <\ n'){solcount < - 10} cat('first'的客观值',solcount,'解决方案:\ n')(k在1:solcount){cat('解决方案',k,'具有目标:',结果$池[[k]]$objval [1],'\ n')}} else {solcount < - 1 cat(找到的解决方案数:',solcount,'\ n')cat('解决方案1具有目标:',结果$Objval,'\ n')}#清理RM(型号,PARALS,结果)