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

📄 init_bound_resect.m

📁 数学优化工具箱
💻 M
字号:
function [limlist, feas_status] = init_bound_resect(xm, Xlist, nbrpoints, beta, m, n, maxdepth, flag)  feas_status = 1;  A = sparse(zeros(0,m*n));  Al = sparse(zeros(0,m*n));  A_f = sparse(zeros(0,m*n));  c = sparse(zeros(0,1));  cl = sparse(zeros(0,1));  c_f = sparse(zeros(0,1));    A = [];  c = [];  Al = []; cl = [];    clear K;  K.q = [];  K.f = 0;  K.l = 0;  x = Xlist(:,1)';  c_f = 1;  A_f = [zeros(1,(m-1)*n), x];  K.f = K.f + 1;    %keyboard;    for j = 1:m-1    umin(j) = min(xm(j,:));    umax(j) = max(xm(j,:));  end  uminb = max(0,umin-(umax-umin)/5);  umaxb = umax+(umax-umin)/5;    for i = 1:nbrpoints    x = Xlist(:,i)';    Atmp1 = [];  Atmp2 = [];  ctmp1 = [];  ctmp2 = [];    for j = 1:m-1      Atmp1(j,(j-1)*n+1:j*n) = -x;      Atmp1(j,(m-1)*n+1:m*n) = uminb(j)*x;      ctmp1(j,1) = 0;      Atmp2(j,(j-1)*n+1:j*n) = x;      Atmp2(j,(m-1)*n+1:m*n) = -umaxb(j)*x;      ctmp2(j,1) = 0;    end    Al = [Al; Atmp1; Atmp2];    cl = [cl; ctmp1; ctmp2];    K.l = K.l + length([ctmp1;ctmp2]);  end    %keyboard;    Atmp = []; ctmp = [];  for i = 2:nbrpoints    x = Xlist(:,i)';    ctmp(i-1,1) = maxdepth;    Atmp(i-1,(m-1)*n+1:m*n) = x;  end  Al = [Al; Atmp];  cl = [cl; ctmp];  K.l = K.l + nbrpoints-1;    %keyboard;    i = 1;  Atmp = zeros(m,m*n);  ctmp = zeros(m,1);  x = Xlist(:,i)';  u = xm(:,i)';  ctmp(1,1) = beta;  for j = 1:m-1      Atmp(j+1,(j-1)*n+1:j*n) = x;      ctmp(j+1,1) = u(j);  end  A = [A; Atmp];  c = [c; ctmp];  K.q = [K.q, m];    for i = 2:nbrpoints    Atmp = zeros(m,m*n);    ctmp = zeros(m,1);    x = Xlist(:,i)';    u = xm(:,i)';    Atmp(1,(m-1)*n+1:m*n) = -beta*x;    for j = 1:m-1      Atmp(j+1,(j-1)*n+1:j*n) = x;      Atmp(j+1,(m-1)*n+1:m*n) = -u(j)*x;    end    A = [A; Atmp];    c = [c; ctmp];    K.q = [K.q, m];  end  A = [A_f; Al; A];  c = [c_f; cl; c];  limlist = zeros(n+1,2);  limlist(1,:) = [1,1];    if flag == 1    pars1.fid = 0;    pars1.eps = 0;    [x1,y1,info1] = sedumi(A,0,c,K,pars1);    if info1.dinf == 1 || info1.numerr == 2      feas_status = 0;    end    limlist(2:n,:) = zeros(n-1,2);    return;  end  for i = 2:n+1    b = [zeros((m-1)*n,1); Xlist(:,i)];    pars1 = [];    pars1.fid = 0;    pars1.eps = 0;    [x1,y1,info1] = sedumi(A, -b, c, K, pars1);    %info1    limlist(i,1) = b'*y1;    if info1.dinf == 1 || info1.numerr == 2    %    keyboard;      feas_status = 0;      limlist(2:n,:) = zeros(n-1,2);      return;    end    pars2 = [];    pars2.fid = 0;    pars2.eps = 0; %   keyboard;    [x2,y2,info2] = sedumi(A, b, c, K, pars2);    %info2    limlist(i,2) = b'*y2;     if info2.dinf == 1 || info2.numerr == 2 %       keyboard;      feas_status = 0;      limlist(2:n,:) = zeros(n-1,2);      return;    end  end      inrect1old.sllist = [limlist(:,1)',0.001*ones(1,nbrpoints-n-1)];  inrect1old.sulist = [limlist(:,2)',maxdepth*ones(1,nbrpoints-n-1)];      index2 = n;  inrect1 = propagateresect(inrect1old, index2, Xlist, nbrpoints, m, n);    clear limlist;  limlist = [inrect1.sllist', inrect1.sulist'];     

⌨️ 快捷键说明

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