【matlab基础知识代码】(十九)全局最优解&可行解区域

 Minimize Rastrigins' Function Using ga, Problem-Based - MATLAB & Simulink - MathWorks 中国

基准测试函数——Rastrigin函数

 >>  ezsurf('20+x1^2+x2^2-10*(cos(pi*x1)+cos(pi*x2))') 

 俯视图

>> view(0,90),shading flat

 

function [x,f0]=fminunc_global(f,a,b,n,N,varargin)
k0=0;f0=Inf;if strcmp(class(f),'struct'),k0=1;end
for i=1:N,x0=a+(b-a)*rand(n,1);
    if k0==1,f.x0=x0;[x1 f1 key]=fminunc(f);
    else, [x1 f1 key]=fminunc(f,x0,varargin{:}); end
    if key>0 & f1<f0,x=x1;f0=f1;end
end

f=@(x)20+(x(1)/30-1)^2+(x(2)/20-1)^2-10*(cos(pi*(x(1)/30-1))+cos(pi*(x(2)/20-1))); 
F=[]; tic, for i=1:100, 
[x,f0]=fminunc_global(f,-100,100,2,50), F=[F,f0], end, toc

有时,仅利用目标函数提供的信息,很难得到精确 的最优解。这是由于求解某些最优化问题收敛速度 一般较慢,尤其是变量较多的最优化问题。可以利用梯度信息解决上述问题。

求函数的无约束最优化问题

 >> [x,y]=meshgrid(0.5:0.01:1.5); z=100*(y.^2-x).^2+(1-x).^2;contour3(x,y,z,100), zlim([0,310])

f=@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;ff=optimset; ff.TolX=1e-10; ff.TolFun=1e-20; x=fminunc(f,[0;0],ff) % 不用梯度信息求解

求梯度矩阵
>> syms x1 x2; f=100*(x2-x1^2)^2+(1-x1)^2; J=jacobian(f,[x1,x2])
 
J =
 
[2*x1 - 400*x1*(- x1^2 + x2) - 2, - 200*x1^2 + 200*x2]

包含梯度的目标函数   引入梯度信息

function [y,Gy]=c6fun3(x)
y=100*(x(2)-x(1)^2)^2+(1-x(1))^2;
Gy=[-400*(x(2)-x(1)^2)*x(1)-2+2*x(1);200*x(2)-200*x(1)^2];

这个时候就不适合使用匿名函数了,因为匿名函数只能返回一个变量

>> ff.GradObj='on'; x=fminunc(@c6fun3,[0;0],ff)

x =

    1.0000
    1.0000

可行解区域

可行解区域描述

fminsearchbnd, fminsearchcon - File Exchange - MATLAB Central (mathworks.cn)

用这个网站注册一下,然后解压之后,添加路径即可。

 >>  f=@(x)[100*(x(2)-x(1)^2)^2+(1-x(1))^2]; xm=[2,3]; xM=[4,6]; x=fminsearchbnd(f,[0,0],xm,xM)

x =

    2.0000    4.0000

>> f=@(x)[100*(x(2)-x(1)^2)^2+(1-x(1))^2];  x=fminsearchbnd(f,[0,0],[2,3],[4,6]), format long%显示15位小数

x =

   2.000000000241948   3.999999672561708

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值