Chuck-Chae / RL_Abstraction_MC

0 stars 0 forks source link

DoubleQ_cbm_optim_config #26

Open duriseul opened 4 months ago

duriseul commented 4 months ago

function optconfig = cbm_optim_config(d,optconfig) % This function configures optimization algorithm in cbm_lap and cbm_hbi % % Implemented by Payam Piray, Aug 2018 %==========================================================================

if nargin<2, optconfig = []; end if isempty(optconfig), optconfig = struct('verbose',1); end

p = inputParser; p.addParameter('verbose',1); p.addParameter('algorithm','quasi-newton',@(arg)strcmpi(arg,'trust-region')||strcmpi(arg,'quasi-newton') ); p.addParameter('gradient','off',@(arg)strcmpi(arg,'on')||strcmpi(arg,'off')); p.addParameter('hessian','off',@(arg)strcmpi(arg,'on')||strcmpi(arg,'off')); p.addParameter('ObjectiveLimit',-10^-10); % Minimum possible

p.addParameter('range',[-5ones(1,d);5ones(1,d)],@(arg)valid_rng(d,arg)); p.addParameter('tolgrad',.001001,@(arg)isscalar(arg)); p.addParameter('tolgrad_liberal',.1,@(arg)(isvector(arg) || isempty(arg))); p.addParameter('inits',[],@(arg)(ismatrix(arg) && (size(arg,2)==d) ));
p.addParameter('numinit',min(7*d,100),@(arg)isscalar(arg)); p.addParameter('numinit_med',70,@(arg)isscalar(arg)); p.addParameter('numinit_up',100,@(arg)isscalar(arg));
p.addParameter('prior_for_bads',1); p.addParameter('initmethod','random',@(arg) any(validatestring(arg,{'fixed','random','previous'}))); % 새로운 초기화 방법 파라미터 추가

p.parse(optconfig); optconfig = p.Results;

if strcmpi(optconfig.algorithm,'trust-region') && strcmpi(optconfig.gradient,'off') error('For trust-region algorithm, gradient should be on, otherwise use quasi-newton algorithm'); end

end

function valid = valid_rng(d,arg) valid = size(arg,1)==2 && (size(arg,2)==d || size(arg,2)==1); end