区分fmincon,fminunc,MultiStart和GlobalSearch

fmincon:有约束的优化。局部最优。提供初始值和参数范围及其他约束条件。使用内点法、序列二次规划(SQP)等算法
options = optimoptions(‘fmincon’,‘Algorithm’,‘sqp’,‘MaxIterations’, 1000);
xk = fmincon(“fun”,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);

MultiStart:调用fmincon[fminunc,lsqcurvefit,或lsqnonlin],多个初始值的局部最优,组成全局最优。在边界内使用均匀分布的起点或用户提供的起点
可以并行运行
调用fmincon:
opts = optimoptions(@fmincon,‘Algorithm’,‘sqp’, ‘MaxIterations’, 1000);
problem = createOptimProblem(‘fmincon’,‘objective’,“fun”,‘x0’,x0,‘lb’,lb,‘ub’,ub,‘options’,opts);
ms = MultiStart;
numStartPoints=20;
[xk,f] = run(ms,problem,numStartPoints);

调用fminunc
options = optimoptions(‘fminunc’, ‘Algorithm’, ‘quasi-newton’);
problem = createOptimProblem(‘fminunc’, ‘objective’, fun, ‘x0’, x0, ‘options’, options);
ms = MultiStart;
x0_ranges = [0 0; -1 1]; %多初始值(x0)的范围
[x_opt, fval, exitflag, output, solutions] = run(ms, problem, x0_ranges);

GlobalSearch:调用fmincon,多个初始值的局部最优,组成全局最优。fmincon提供初始值和参数范围
使用分散搜索机制生成起点
opts = optimoptions(@fmincon,‘Algorithm’,‘sqp’, ‘MaxIterations’, 1000);
problem = createOptimProblem(‘fmincon’,‘objective’,“fun”,‘x0’,x0,‘lb’,lb,‘ub’,ub,‘options’,opts);
gs = GlobalSearch;
numStartPoints=20;
[xk,f] = run(gs,problem,numStartPoints);

fminunc:无约束优化。提供初始值甚至初始值的范围,但不提供参数的范围及其他约束条件。默认使用拟牛顿法(BFGS)
①[x,fval] = fminunc(fun,x0)%不提供梯度(自动数值计算梯度)
②options = optimoptions(‘fminunc’,‘Algorithm’,‘quasi-newton’,‘SpecifyObjectiveGradient’,true);%提供梯度
fun = @rosenbrockwithgrad;%rosenbrockwithgrad 函数包含梯度作为第二个输出
x = fminunc(fun,x0,options);
③options = optimoptions(‘fminunc’, ‘SpecifyObjectiveGradient’, true);%提供梯度
[x_opt, fval] = fminunc(fun, x0, options, gradfun);%同时传递目标函数和梯度函数

fmincon——单起点
——MultiStart
——GlobalSearch

fminunc——单起点
——MultiStart

MultiStart——fmincon:提供初始值和参数范围及其他约束条件
——fminunc:提供初始值甚至初始值的范围,但不提供参数的范围及其他约束条件

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值