在R中寻找带trust-region-reflective算法的fmincon及fminsearchbnd等效函数
在R中复现MATLAB的fmincon(trust-region-reflective算法)和fminsearchbnd
我正尝试在R中复现以下MATLAB函数,需要找到fmincon(采用trust-region-reflective算法)和fminsearchbnd的最接近近似实现。
MATLAB代码:
if license('test','optimization_toolbox') % IF OPTIMIZATION TOOLBOX IS PRESENT, AN ANALYTICAL GRADIENT BASED % MINIMIZATION APPROACH IS USED (trust-region-reflective) if(exist('optimoptions', 'file')) options = optimoptions('fmincon','Algorithm','trust-region-reflective','Display','off','GradObj','on','MaxIter',2000,... 'MaxFunEvals',10000,'TolFun',1e-8,'TolX',1e-8); else options = optimset('Algorithm','trust-region-reflective','Display','off','GradObj','on','MaxIter',2000,... 'MaxFunEvals',10000,'TolFun',1e-8,'TolX',1e-8); end [xfit1,fval1] = fmincon(FUN_MIN_GRAD_PARAMETRIZED,x0,[],[],[],[],LB,UB,[],options); end % WE also USE A CONSTRAINED VERSION OF FREELY AVAILABLE fminsearch % (THIS USES DERIFVATIVE FREE SIMPLEX ALGORITHM) [xfit2,fval2] = fminsearchbnd(FUN_MIN_GRAD_PARAMETRIZED,x0,LB,UB,optimset(... 'MaxIter',2000,'MaxFunEvals',10000,'TolFun',1e-8,'TolX',1e-8));
已知pracma包提供了fmincon的等效函数,但采用的是Sequential Quadratic Programming(SQP)方法。请问在R中是否存在带trust-region-reflective算法的fmincon及fminsearchbnd的等效函数?
解决方案
一、trust-region-reflective算法的fmincon替代
trustOptim包:该包专注于信赖域类算法,其中的trust.optim()函数支持边界约束,可利用解析梯度,是MATLAB中trust-region-reflective模式的直接对应实现。你可以通过参数配置迭代次数、函数评估上限、收敛精度(对应TolFun和TolX),完全匹配原MATLAB代码的需求。- 补充说明:
nloptr包虽支持多种优化算法,但默认无原生trust-region-reflective实现,若需严格对齐算法逻辑,优先选择trustOptim。
二、fminsearchbnd的替代
dfoptim包的nmkb()函数:这是带边界约束的Nelder-Mead单纯形算法实现,和fminsearchbnd的无导数约束优化逻辑完全一致,参数设置(如最大迭代、函数评估次数、收敛阈值)也可对应原MATLAB配置。nloptr包的NELDERMEAD算法:通过指定算法为NELDERMEAD,并设置lower_bounds和upper_bounds参数,同样可以实现带边界的单纯形优化,满足fminsearchbnd的功能需求。
内容的提问来源于stack exchange,提问作者Chinyako
相关产品推荐
相关产品推荐

