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 + -
显示快捷键?