⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fixer.m

📁 optimization toolbox
💻 M
字号:
function [upper1,x_min] = fixer(p,output);

x = output.Primal;

integer = uniquestripped([p.binary_variables p.integer_variables]);
n = length(integer);
Fnew = [round(x(integer)) -sparse(1:n,integer,1,n,length(p.c))];
p.F_struc = [Fnew;p.F_struc];
p.K.f = p.K.f + n;

% Add the bounds
upper = find(~isinf(p.ub));
if ~isempty(upper)
    Fnew = [p.ub(upper) -sparse(1:length(upper),upper,1,length(upper),length(p.c))];
    p.F_struc = [p.F_struc(1:p.K.f,:);Fnew;p.F_struc(p.K.f + 1:end,:)];
    p.K.l = p.K.l + length(upper);
end
lower = find(~isinf(p.lb));
if ~isempty(lower)
    Fnew = [-p.lb(lower) sparse(1:length(lower),lower,1,length(lower),length(p.c))];
    p.F_struc = [p.F_struc(1:p.K.f,:);Fnew;p.F_struc(p.K.f + 1:end,:)];
    p.K.l = p.K.l + length(lower);
end
p.ub = p.ub + inf;
p.lb = p.lb - inf;
try
    output = bnb_solvelower(p.solver.lower.call,p,inf,nan);

    if output.problem == 0
        x_min = output.Primal;
        upper1 = x_min'*p.Q*x_min + p.c'*x_min + p.f;
    else
        x_min = [];
        upper1 = inf;
    end
catch
    x_min = [];
    upper1 = inf;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -