manbet体育手机客户端


sensitivity.m


一个简单的灵敏度分析示例,它从一个文件中读取一个MIP模型%并解决它。狗万app足彩然后将每个二进制变量%设置为1-X,其中X是它在最优解中的值,报告对目标函数值的影响%。%读取模型fprintf('读取模型%s\n', filename);模型= gurobi_read(文件名);关口=大小(模型。, 2);实例变量=找到(模型。vtype ~ = ' C ');if length(ivars) <= 0 fprintf('模型的所有变量都是连续的,什么都不做\n');返回;优化结果= gurobi(模型);%如果result,则捕获解决方案信息。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) = 1; 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