96SEO 2026-02-19 19:13 11
【Matlab】GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值

【Matlab】RBF神经网络遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
本篇博客将主要介绍Elman神经网络希望能帮助大家快速入门Elman网络。
的极值输入参数有2个输出参数有1个易知函数有极小值0极小值点为(0,
0)。
已知的只有一些输入输出数据用rand函数生成输入然后代入表达式生成输出
i1:4000input(i,:)10*rand(1,2)-5;output(i)input(i,1)^2input(i,2)^2;
elmannet(layerdelays,hiddenSizes,trainFcn)layerdelays:
i1:4000input(i,:)10*rand(1,2)-5;output(i)input(i,1)^2input(i,2)^2;
用函数输入输出数据训练Elman神经网络使训练后的网络能够拟合非线性函数输出保存训练好的网络用于计算个体适应度值。
根据非线性函数方程随机得到该函数的4000组输入输出数据存储于data中其中input为函数输入数据output为函数对应输出数据从中随机抽取3900组训练数据训练网络100组测试数据测试网络拟合性能。
最后保存训练好的网络。
output_trainoutput(n(1:3900),:);
input_testinput(n(3901:4000),:);
output_testoutput(n(3901:4000),:);[inputn,inputps]mapminmax(input_train);
[outputn,outputps]mapminmax(output_train);%%
elmannet(layerdelays,hiddenSizes,trainFcn)
layerdelays表示网络层延迟的行向量可取的值为0或整数默认值为12
trainFcn表示训练函数的字符串默认值为‘trainlm’。
%
nettrain(net,inputn,outputn);%%
inputn_testmapminmax(apply,input_test,inputps);%网络预测输出
ansim(net,inputn_test);%网络输出反归一化
Eloutputmapminmax(reverse,an,outputps);%%
errorsumsum(abs(error))figure(1);
xlabel(samples,fontsize,12);figure(2);
xlabel(samples,fontsize,12);figure(3);
plot(100*(output_test-Eloutput)./output_test,-*);
xlabel(samples,fontsize,12);tocsave
flag0pickrand(1,length(lenchrom));retbound(:,1)(bound(:,2)-bound(:,1)).*pick;
%线性插值编码结果以实数向量存入ret中flagtest(lenchrom,bound,ret);
inputn_testmapminmax(apply,x,inputps);%网络预测输出
ansim(net,inputn_test);%网络输出反归一化
fitnessmapminmax(reverse,an,outputps);对于求极小值的函数适应度可以设为Elman网络预测结果如果需要求极大值可以对适应度取反。
经过选择后的种群fitness11./individuals.fitness;
%寻找落入的区间此次转轮盘选中了染色体i注意在转sizepop次轮盘的过程中有可能会重复选择某些染色体endend
individuals.chromindividuals.chrom(index,:);
individuals.fitnessindividuals.fitness(index);
retCross(pcross,lenchrom,chrom,sizepop,bound)
%每一轮for循环中可能会进行一次交叉操作染色体是随机选择的交叉位置也是随机选择的%但该轮for循环中是否进行交叉操作则由交叉概率决定continue控制%
随机选择两个染色体进行交叉pickrand(1,2);while
prod(pick)0pickrand(1,2);endindexceil(pick.*sizepop);%
pickpcrosscontinue;endflag0;while
pick0pickrand;endposceil(pick.*sum(lenchrom));
%随机选择进行交叉的位置即选择第几个变量进行交叉注意两个染色体交叉的位置相同pickrand;
%交叉开始v1chrom(index(1),pos);v2chrom(index(2),pos);chrom(index(1),pos)pick*v2(1-pick)*v1;chrom(index(2),pos)pick*v1(1-pick)*v2;
%交叉结束flag1test(lenchrom,bound,chrom(index(1),:));
%检验染色体1的可行性flag2test(lenchrom,bound,chrom(index(2),:));
(x(1)bound(1,1))(x(2)bound(2,1))(x(1)bound(1,2))(x(2)bound(2,2))flag0;
retMutation(pmutation,lenchrom,chrom,sizepop,pop,bound)
%每一轮for循环中可能会进行一次变异操作染色体是随机选择的变异位置也是随机选择的%但该轮for循环中是否进行变异操作则由变异概率决定continue控制%
pick0pickrand;endindexceil(pick*sizepop);%
pickpmutationcontinue;endflag0;while
pickrand;endposceil(pick*sum(lenchrom));
%随机选择了染色体变异的位置即选择了第pos个变量进行变异vchrom(i,pos);
pick0.5deltav2*(1-pick^((1-pop(1)/pop(2))^2));chrom(i,pos)vdelta;elsedeltav1*(1-pick^((1-pop(1)/pop(2))^2));chrom(i,pos)v-delta;end
%变异结束flagtest(lenchrom,bound,chrom(i,:));
%数据范围individualsstruct(fitness,zeros(1,sizepop),
i1:sizepop%随机产生一个种群individuals.chrom(i,:)Code(lenchrom,bound);
xindividuals.chrom(i,:);%计算适应度individuals.fitness(i)fun(x);
bestindex]min(individuals.fitness);
bestchromindividuals.chrom(bestindex,:);
avgfitnesssum(individuals.fitness)/sizepop;
选择individualsSelect(individuals,sizepop);
avgfitnesssum(individuals.fitness)/sizepop;%
交叉individuals.chromCross(pcross,lenchrom,individuals.chrom,sizepop,bound);%
变异individuals.chromMutation(pmutation,lenchrom,individuals.chrom,sizepop,[i
j1:sizepopxindividuals.chrom(j,:);
%解码individuals.fitness(j)fun(x);
end%找到最小和最大适应度的染色体及它们在种群中的位置[newbestfitness,newbestindex]min(individuals.fitness);[worestfitness,worestindex]max(individuals.fitness);%
bestfitnessnewbestfitnessbestfitnessnewbestfitness;bestchromindividuals.chrom(newbestindex,:);endindividuals.chrom(worestindex,:)bestchrom;individuals.fitness(worestindex)bestfitness;avgfitnesssum(individuals.fitness)/sizepop;trace[trace;avgfitness
xlabel(进化代数,fontsize,12);ylabel(适应度,fontsize,12);
上述代码用于求解最小值对于求解最大值的需求可以在适应度函数里面对适应度计算结果求反把求解最大值的问题转化为求解最小值的问题。
i1:4000input(i,:)10*rand(1,2)-5;output(i)-(input(i,1)^2input(i,2)^2)4;
fitness-mapminmax(reverse,an,outputps);注意每次运行结果不尽相同。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback