lpmod.R


# 2023年版权,Gurobi优化狗万app足彩,LLC # #这个例子从文件读取一个LP模型并解决它。#如果模型可以解决,然后发现最小的积极变量,#其上限设置为零,并resultolves模型两种方式:#首先是一个先进的开始,然后一个没有先进开始#(即。“从头开始”)。库(矩阵)库(gurobi)参数< - commandArgs (trailingOnly = TRUE)如果(长度(args) < 1){停止(“用法:Rscript lpmod。R \ n文件名”)}#阅读模式的猫(args[1],“阅读模式”“…”)模型< - gurobi_read (args[1])猫('……完成\ n”) #确定是否它是一个LP如果(“multiobj”% %的名字(模型)| |“sos”% %的名字(模型)| |“pwlobj”% %的名字(模型)| |“锥”% %的名字(模型)| |“quadcon”% %的名字(模型)| |“genconstr”% %名称(模型)){停止('不是一个线性规划模型\ n”)} #检测的非连续变量intvars <——(模型美元vtype ! = ' C ') numintvars < -长度(intvars)如果(numintvars > 0){停止(“问题是MIP,无关\ n”)} #优化结果< - gurobi(如果(模型)的结果美元地位! = '最佳'){猫(这个模型不能解决,因为优化状态的,结果美元状态,' \ n ')停止(“现在停止\ n”)} #恢复模型的变量数量numvars < ncol(模型美元)#确保范围数组初始化如果(is.null(模型美元磅)){模型美元磅< -代表(0,numvars)}如果(is.null(模型美元乌兰巴托)){模型美元乌兰巴托< -代表(Inf numvars)} #找到最小的(非零)与零下限变量值x < -取代(结果美元x,结果美元< 1的军医,正)x < -取代(x)模型美元磅> 1 e-6正)minVar < - which.min (x) minVal < - x [minVar] #得到变量名varname < -“如果(is.null(模型美元varnames)) {varname < - sprintf (C % d, minVar)} {varname < -其他模型美元varnames [minVar]}猫(“\ n * * *设置”,varname,“从”,minVal,“为零* * * \ n \ n”)模型美元乌兰巴托(minVar) < - 0 #组提前开始基础信息模型美元vbasis < -结果美元vbasis模型美元cbasis < -结果美元cbasis result2 < - gurobi warmCount < - result2(模型)美元itercount warmTime < - result2美元运行时# Reset-advance开始信息模型美元vbasis < -零模型美元零result2 cbasis < - < - gurobi coldCount < - result2(模型)美元itercount coldTime < - result2美元运行时猫(“\ n * * *热启动:”,warmCount,“迭代”,warmTime,秒\ n)猫(“\ n * * *冷启动:”,coldCount,“迭代”,coldTime,秒\ n) #腾出rm(模型、结果result2)