1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【FNN预测】基于蝙蝠优化的模糊神经网络FNN研究附Matlab代码

【FNN预测】基于蝙蝠优化的模糊神经网络FNN研究附Matlab代码

时间:2019-10-25 18:21:48

相关推荐

【FNN预测】基于蝙蝠优化的模糊神经网络FNN研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

耙吸挖泥船的耙头产量主要取决于耙头的吸入密度,准确的吸入密度预测对提高耙吸挖泥船疏浚产量具有重要的意义.针对目前对吸入密度预测方法存在精度低,实时效果性差的缺点,提出了一种蝙蝠算法与模糊神经网络相结合的预测方法.通过实测施工数据,构建BA-FNN预测模型.实验表明:BA-FNN预测精度高且稳定性能好,能够为耙头产量预测以及指导施工提供科学有效的参考依据.

⛄ 部分代码

% ======================================================== %

% Files of the Matlab programs included in the book: %

% Xin-She Yang, Nature-Inspired Metaheuristic Algorithms, %

% Second Edition, Luniver Press, (). %

% ======================================================== %

% -------------------------------------------------------- %

% Bat-inspired algorithm for continuous optimization (demo)%

% Programmed by Xin-She Yang @Cambridge University %

% -------------------------------------------------------- %

% Usage: bat_algorithm([20 1000 0.5 0.5]); %

% -------------------------------------------------------------------

% This is a simple demo version only implemented the basic%

% idea of the bat algorithm without fine-tuning(微调)the parameters, %

% Then, though this demo works very well, it is expected that %

% this demo is much less efficient than the work reported in %

% the following papers: %

% (Citation details): %

% 1) Yang X.-S., A new metaheuristic bat-inspired algorithm, %

% in: Nature Inspired Cooperative Strategies for Optimization %

% (NISCO ) (Eds. J. R. Gonzalez et al.), Studies in%

% Computational Intelligence, Springer, vol. 284, 65-74 (). %

% 2) Yang X.-S., Nature-Inspired Metaheuristic Algorithms,%

% Second Edition, Luniver Presss, Frome, UK. ().%

% 3) Yang X.-S. and Gandomi A. H., Bat algorithm: A novel%

% approach for global engineering optimization, %

% Engineering Computations, Vol. 29, No. 5, pp. 464-483 (). %

% -------------------------------------------------------------------

% Main programs starts here

function [best,fmin,N_iter]=bat_algorithm(para)

% Display help

help bat_algorithm.m

% Default parameters 默认参数

if nargin<1, para=[20 1000 0.5 0.5]; end

n=para(1); % Population size, typically10 to 40

N_gen=para(2); % Number of generations

A=para(3); % Loudness (constant or decreasing)

r=para(4); % Pulse rate (constant or decreasing)

% This frequency range determines the scalings

% You should change these values if necessary

Qmin=0; % Frequency minimum

Qmax=2; % Frequency maximum

% Iteration parameters

N_iter=0; % Total number of function evaluations %这是什么意思???

% Dimension of the search variables

d=10;% Number of dimensions

% Lower limit/bounds/ a vector

Lb=-2*ones(1,d);

% Upper limit/bounds/ a vector

Ub=2*ones(1,d);

% Initializing arrays

Q=zeros(n,1); % Frequency

v=zeros(n,d); % Velocities

% Initialize the population/solutions

for i=1:n,

Sol(i,:)=Lb+(Ub-Lb).*rand(1,d);

Fitness(i)=Fun(Sol(i,:));

end

% Find the initial best solution

[fmin,I]=min(Fitness); %返回多个参数的时候用[ ],fmin接受第一个参数,I接受第二个参数

%这里fmin是最小值,I是最小值的索引,也就是第几个

best=Sol(I,:);

% ====================================================== %

% Note: As this is a demo, here we did not implement the %

% reduction of loudness and increase of emission rates. %

% Interested readers can do some parametric studies %

% and also implementation various changes of A and r etc %

% ====================================================== %

% Start the iterations -- Bat Algorithm (essential part) %

for t=1:N_gen,

% Loop over all bats/solutions

for i=1:n,

Q(i)=Qmin+(Qmin-Qmax)*rand;%其中rand产生一个0到1的随机数

v(i,:)=v(i,:)+(Sol(i,:)-best)*Q(i);

S(i,:)=Sol(i,:)+v(i,:);

% Apply simple bounds/limits

Sol(i,:)=simplebounds(Sol(i,:),Lb,Ub);

% Pulse rate

if rand>r

% The factor 0.001 limits the step sizes of random walks

S(i,:)=best+0.001*randn(1,d);

end

% Evaluate new solutions

Fnew=Fun(S(i,:));

% Update if the solution improves, or not too loud

if (Fnew<=Fitness(i)) & (rand<A) ,

Sol(i,:)=S(i,:);

Fitness(i)=Fnew;

end

% Update the current best solution

if Fnew<=fmin,

best=S(i,:);

fmin=Fnew;

end

end

N_iter=N_iter+n;

end

% Output/display

disp(['Number of evaluations: ',num2str(N_iter)]);

disp(['Best =',num2str(best),' fmin=',num2str(fmin)]);

% Application of simple limits/bounds

function s=simplebounds(s,Lb,Ub)

% Apply the lower bound vector

ns_tmp=s;

I=ns_tmp<Lb;

ns_tmp(I)=Lb(I);

% Apply the upper bound vector

J=ns_tmp>Ub;

ns_tmp(J)=Ub(J);

% Update this new move

s=ns_tmp;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Objective function: your own objective function can be written here

% Note: When you use your own function, please remember to

% change limits/bounds Lb and Ub (see lines 52 to 55)

% and the number of dimension d (see line 51).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function z=Fun(u)

% Sphere function with fmin=0 at (0,0,...,0)

z=sum(u.^2);

%%%%% ============ end ====================================

⛄ 运行结果

⛄ 参考文献

[1]张容, 阎红, 杜丽萍. 基于模糊神经网络(FNN)的赤潮预警预测研究[J]. 海洋通报:英文版, , 25(001):83-91.

[2]赵建强, 陈必科, 葛考, et al. 基于FOA—FNN算法的边坡稳定性评价研究[C]// 中国系统工程学会第十八届学术年会. .

[3]郝光杰, 俞孟蕻, and 苏贞. "基于蝙蝠算法优化模糊神经网络的耙吸挖泥船耙头吸入密度研究." 计算机与数字工程 002():050.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。