gamma_initialize.m

来自「数学优化工具箱」· M 代码 · 共 78 行

M
78
字号
function opts = gamma_initialize(opts);  if opts.gamma_initialize == 1;  fprintf('Gamma Initialization');    initial_delta = opts.delta;  delta = opts.delta;    flag = 1;  fprintf('[');  last = 0;  while flag;    if (delta > 1000);      break;    end        opts.delta = delta;        %fprintf('%f ',delta);    fprintf('-');    if strcmp(opts.type,'l1l1_triangle');      current = l1l1_triangle_initial_rectangle(opts,1);    elseif strcmp(opts.type,'l1l1_resection');      current = l1l1_resection_initial_rectangle(opts,1);    else      fprintf('Unknown type\n');      opts.feasible=0;      return;    end    if current==0      if last==0;	delta = 2*delta;      else;	flag = 0;	delta = 2*delta;      end;    else;      delta = delta/2;      last = current;    end;  end;  fprintf(']');  if last;    % decide on a valid delta now that we have pushed it as far as we    % can.    % opts.delta = min(2*nfractions*delta,initial_delta);    if delta > initial_delta;      %opts.delta = 2*opts.n*delta;      opts.delta = delta;    else      opts.delta = min(initial_delta,2*opts.n*delta);    end  end;  fprintf('\nsetting delta to : %f %f\n',delta, opts.delta);end;xbnd=opts.xbounds(1,2);if strcmp(opts.type,'l1l1_triangle');  newybounds = l1l1_triangle_initial_rectangle(opts);elseif strcmp(opts.type,'l1l1_resection');  [newybounds,xbnd] = l1l1_resection_initial_rectangle(opts);end;if isempty(newybounds);  opts.feasible=0;  fprintf('infeasible delta %d\n',opts.delta);  return;endopts.feasible=1;opts.ybounds = newybounds;% opts.xbounds(:,2)=xbnd;        

⌨️ 快捷键说明

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