feasopt.m


feasopt.m


这个例子从一个文件中读取一个MIP模型,为每个约束添加人工变量%,然后最小化人工变量%的总和。狗万app足彩目标为零的解对应于输入模型的可行解。我们也可以使用FeasRelax功能来实现这个功能。在这个例子中,我们%使用minrelax=1,也就是说,优化返回的模型会找到一个使原始目标最小化的解决方案%,但只能从这些使人工变量之和最小化的解决方案中。%读取模型fprintf('读取模型%s\n', filename);模型= gurobi_read(文件名);参数个数。日志文件=“feasopt.log”;Result1 = gurobi(模型,参数);[rows, cols] = size(模型a); % Create penalties, only linear constraints are allowed to be relaxed penalties.rhs = ones(rows, 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