multiobj.R


# 2023年版权,Gurobi优化狗万app足彩,LLC # #想覆盖三个不同但受制于共同的预算#元素允许被使用。然而,有不同的优先级设置为#覆盖;我们解决这个问题通过使用多目标优化。库(矩阵)库(gurobi) #定义原始数据groundSetSize < - 20 nSubSets预算< < - 4 - 12组< -列表(c (1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), c (0, 0, 0, 0, 0, 1, 1, 1, 1, - 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1), c (0, 0, 0, 1, 1, 0, 1, 1, 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) #初始化模型模型< -列表()模型美元modelsense < -“max”模型美元modelname < - multiobj #设置变量,都是二进制,0、1。模型美元vtype < - B模型美元磅< - 0模型美元乌兰巴托< - 1模型美元varnames < -粘贴(代表(“El”, groundSetSize), 1: groundSetSize, 9 = ") #构建约束矩阵模型美元< - spMatrix (1 groundSetSize i =代表(1,groundSetSize), j = 1: groundSetSize, x =代表(1,groundSetSize))模型美元rhs < - c(预算)模型美元感觉< - c模型(“<”)美元constrnames < - c(预算)#设定目标模型美元multiobj < -列表()(m 1: nSubSets){模型美元multiobj [[m]] < -列表()模型美元multiobj [[m]]美元objn < - [[m]]的模型美元multiobj [[m]]美元优先级< - SetObjPriority [m]模式美元multiobj [[m]]美元重量< - SetObjWeight [m]模式美元multiobj [[m]]美元abstol < - m模型美元multiobj [[m]]美元reltol < - 0.01模型美元multiobj [[m]]美元名称< - sprintf (% d, m)模型美元multiobj [[m]]美元gurobi_write con < - 0.0} #保存模型(模型、multiobj_R.lp) #设置参数参数< -()参数列表美元PoolSolutions < - 100 #优化结果< - gurobi(模型、参数)#获取解决方案信息如果(结果美元地位! = '最佳'){猫(优化完成状态,结果美元状态,' \ n ')停止(“现在停止\ n”)} #猫打印最佳解决方案(“最佳解决方案的选定元素:\ n”) (ein 1: groundSetSize){如果(结果美元x [e] < 0.9)下的猫(El, e, 9 = ")}猫(“\ n”) # 10遍历最好的解决方案如果名字(“池”% %(结果)){solcount < -长度(结果美元池)猫(solcount“发现的解决方案:”,“\ n”)如果(solcount > 10) {solcount < - 10}猫(solcount“客观值”,“解决方案:\ n”) (k 1: solcount){猫(“解决方案”,k,“有目的:”,结果美元池[[k]]美元objval [1], ' \ n ')}} {solcount < - 1其他猫(发现的解决方案:,solcount, ' \ n ')猫(方案1目的:,结果美元objval, ' \ n ')} #清理rm(模型、参数结果)