manbet体育手机客户端


灵敏度


#版权2019,Gurobi Opt狗万app足彩imization,LLC###一个简单的灵敏度分析示例,从文件中读取MIP模型#并对其进行求解。然后将每个二进制变量#设置为1-X,其中X是其在最优解中的值,并且#报告对目标函数值的影响。库(矩阵)库(Gurobi)args<-commandArgs(trailingOnly=TRUE)如果(长度(args)<1){stop('Usage:Rscript sensitivity.R filename\n')}读取模型cat('Reading model',args[1],'…')model<-gurobi_Read(args[1])cat('…done\n')#检测一组非连续变量numvar<-ncol(model$A) intvars<-哪个型号$vtype!=“C”)numintvars<-length(intvars)if(numintvars<1){stop('All model's variables continued,noto to do')}优化结果<-gurobi(model)#捕获解决方案信息if(result$状态!='OPTIMAL'){cat('optimation finished with status',result$状态,'\n')停止('stop now\n')}origx<-result$x origobjval<-结果$objval#如果lb和ub不存在,则创建它们,如果(!('lb'%in%names(model)){model,则将它们设置为默认值$lb<-numeric(numvars)}if(!('ub'%in%names(model)){#不需要这一行,因为我们必须定义ub模型$ub<-Inf+numeric(numvars)}#禁用后续参数的输出<-list()参数$OutputFlag<-0#在(j in 1:numvars){if(model)的模型中迭代未固定的二进制变量$vtype[j]!='B'&型号$vtype[j]!=“I”)下一个if(型号$vtype[j]=='I'){if(型号$lb[j]!=0.0)下一个if(型号$ub[j]!=1.0)next}else{if(model$lb[j]>0.0)下一个if(型号$ub[j]<1.0)下一步}#更新所有变量模型的MIP开始$start<-origx#将变量设置为1-X,其中X是其在最优解中的值,如果(origx[j]<0.5){model$启动[j]<-1型$lb[j]<-1}else{model$启动[j]<-0型$ub[j]<-0}#优化结果<-gurobi(模型,参数)#如果('varnames'%in%names(model)){varnames<-model),则显示结果varnames<-if('varnames'%in%names(model)){varnames<-model$varnames[j]}else{varnames<-sprintf('%s%d',model$vtype[j],j)}间隙<-0如果(结果$状态!=“最佳”){gap<-Inf}其他{gap<-result$objval-origobjval}cat('变量的客观敏感性',变量名,'is',间隙,'\n')#恢复原始边界模型$lb[j]<-0型$ub[j]<-1}#净空间rm(模型、参数、结果、origx)