feasopt.m.


feasopt.m.


函数feasopt(文件名)%%2021,gurobi优化,llc %%此示例从文件中读取MI狗万app足彩P模型,将人为%变量添加到每个约束,然后最小化%人工变量的总和。具有目标零的解决方案对应于输入模型的可行解决方案。%我们还可以使用Feasrelax功能来执行它。在此示例中,WE%使用minrelax = 1,即优化返回的模型找到最小化原始目标的解决方案%,但只能从最小化人工变量的总和中的%解决方案中最小化。%读取模型fprintf('读取模型%s \ n',文件名);model = gurobi_read(文件名);params.logfile ='feasopt.log';结果1 = Gurobi(模型,参数);[行,cols] = size(model.a);%创建惩罚,只允许线性约束是放松的惩罚.rhs = in(行,1); result = gurobi_feasrelax(model, 0, true, penalties, params); gurobi_write(result.model, 'feasopt1.lp'); % clear objective model.obj = zeros(cols, 1); nvar = cols; for c = 1:rows if model.sense(c) ~= '>' nvar = nvar + 1; model.A(c, nvar) = -1; model.obj(nvar) = 1; model.vtype(nvar) = 'C'; model.varnames(nvar) = strcat('ArtN_', model.constrnames(c)); model.lb(nvar) = 0; model.ub(nvar) = inf; end if model.sense(c) ~= '<' nvar = nvar + 1; model.A(c, nvar) = 1; model.obj(nvar) = 1; model.vtype(nvar) = 'C'; model.varnames(nvar) = strcat('ArtP_', model.constrnames(c)); model.lb(nvar) = 0; model.ub(nvar) = inf; end end gurobi_write(model, 'feasopt2.lp'); result2 = gurobi(model, params); end