sensitivity.m


函数灵敏度(文件名)% 2023年版权,Gurobi优化,LLC % %一个简单的灵敏度分析示例,狗万app足彩从文件中读取% MIP模型和解决它。然后每个二进制变量设置% 1 - X,其中X是其价值的最优解,和%对目标函数值的影响报道。%读取流模型(“% s \ n阅读模式”,文件名);模型= gurobi_read(文件名);关口=大小(模型。,2);实例变量=找到(模型。vtype ~ = ' C ');如果长度(实例变量)< = 0流(”模型的所有变量是连续的,无关\ n”);返回;结束% = gurobi优化结果(模型);如果结果%获取解决方案信息。status ~= 'OPTIMAL' fprintf('Model status is %d, quit now\n', result.status); end origx = result.x; origobjval = result.objval; params.OutputFlag = 0; % Iterate through unfixed binary variables in the model for j = 1:cols if model.vtype(j) ~= 'B' && model.vtype(j) ~= 'I' continue; end if model.vtype(j) == 'I' if model.lb(j) ~= 0.0 || model.ub(j) ~= 1.0 continue; end else if model.lb(j) > 0.0 || model.ub(j) < 1.0 continue; end end % Update MIP start for all variables model.start = origx; % Set variable to 1-X, where X is its value in optimal solution if origx(j) < 0.5 model.start(j) = 1; model.lb(j) = 1; else model.start(j) = 0; model.ub(j) = 0; end % Optimize result = gurobi(model, params); % Display result if ~strcmp(result.status, 'OPTIMAL') gap = inf; else gap = result.objval - origobjval; end fprintf('Objective sensitivity for variable %s is %g\n', ... model.varnames{j}, gap); % Restore original bounds model.lb(j) = 0; model.ub(j) = 1; end