multibj.r.


multibj.r.


#版权所有2021,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,结果)