lpmod.m


函数lpmod(文件名)% 2023年版权,Gurobi优化,LLC % %这个例子从狗万app足彩文件读取一个LP模型并解决它。%如果模型可以解决,然后发现最小的积极变量,%其上限设置为零,并解决了模型两种方式:%首先是一个先进的开始,然后一个没有先进开始%(即。“从头开始”)。%读取流模型(“% s \ n阅读模式”,文件名);模型= gurobi_read(文件名);如果(isfield(模型、multiobj) & & ~ isempty (model.multiobj)) | |…(isfield(模型、“sos”) & & ~ isempty (model.sos)) | |…(isfield(模型、pwlobj) & & ~ isempty (model.pwlobj)) | |…(isfield(模型、quadcon) & & ~ isempty (model.quadcon)) | |…(isfield(模型、genconstr) & & ~ isempty (model.genconstr)) | |… isfield(model, 'Q') fprintf('The model is not a linear program, quit\n'); return; end ivars = find(model.vtype ~= 'C'); ints = length(ivars); if ints > 0 fprintf('problem is a MIP, quit\n'); return; end result = gurobi(model); if ~strcmp(result.status, 'OPTIMAL') fprintf('This model cannot be solved because its optimization status is %s\n', result.status); return; end cols = size(model.A,2); % create lb if they do not exists, and set them to default values if ~isfield(model, 'lb') || isempty(model.lb) model.lb = zeros(cols, 1); end % Find the smallest variable value minVal = inf; minVar = -1; for j = 1:cols if result.x(j) > 0.0001 && result.x(j) < minVal && model.lb(j) == 0.0 minVal = result.x(j); minVar = j; end end fprintf('\n*** Setting %s from %d to zero ***\n', model.varnames{minVar}, minVar); model.ub(minVar) = 0; model.vbasis = result.vbasis; model.cbasis = result.cbasis; % Solve from this starting point result = gurobi(model); % Save iteration & time info warmCount = result.itercount; warmTime = result.runtime; % Remove warm start basis and resolve model = rmfield(model, 'vbasis'); model = rmfield(model, 'cbasis'); result = gurobi(model); coldCount = result.itercount; coldTime = result.runtime; fprintf('\n'); fprintf('*** Warm start: %g iterations, %g seconds\n', warmCount, warmTime); fprintf('*** Cold start: %g iterations, %g seconds\n', coldCount, coldTime);