利用神经网络 遗传算法求得函数极小极大值
来源:互联网 发布:欠淘宝消保金会 编辑:程序博客网 时间:2024/06/05 02:34
<span style="font-size:18px;">clccleartic%% 训练数据预测数据提取及归一化%下载输入输出数据load data1 input output%从1到2000间随机排序k=rand(1,4000);[m,n]=sort(k);%找出训练数据和预测数据input_train=input(n(1:3900),:)';output_train=output(n(1:3900),:)';input_test=input(n(3901:4000),:)';output_test=output(n(3901:4000),:)';%选连样本输入输出数据归一化[inputn,inputps]=mapminmax(input_train);[outputn,outputps]=mapminmax(output_train);%% BP网络训练% %初始化网络结构net=newff(inputn,outputn,5);net.trainParam.epochs=100;net.trainParam.lr=0.1;net.trainParam.goal=0.0000004;%网络训练net=train(net,inputn,outputn);%% BP网络预测%预测数据归一化inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出an=sim(net,inputn_test); %网络输出反归一化BPoutput=mapminmax('reverse',an,outputps);%% 结果分析figure(1)plot(BPoutput,':og')hold onplot(output_test,'-*');legend('预测输出','期望输出','fontsize',12)title('BP网络预测输出','fontsize',12)xlabel('样本','fontsize',12)ylabel('输出','fontsize',12)%预测误差error=BPoutput-output_test;figure(2)plot(error,'-*')title('神经网络预测误差')figure(3)plot((output_test-BPoutput)./BPoutput,'-*');title('神经网络预测误差百分比')errorsum=sum(abs(error))tocsave data net inputps outputps</span>
遗传算法部分:
<span style="font-size:18px;">%% 该代码为基于神经网络遗传算法的系统极值寻优%% 清空环境变量clcclear%% 初始化遗传算法参数%初始化参数maxgen=100; %进化代数,即迭代次数sizepop=20; %种群规模pcross=[0.4]; %交叉概率选择,0和1之间pmutation=[0.2]; %变异概率选择,0和1之间lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1bound=[-5 5;-5 5]; %数据范围individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体avgfitness=[]; %每一代种群的平均适应度bestfitness=[]; %每一代种群的最佳适应度bestchrom=[]; %适应度最好的染色体%% 初始化种群计算适应度值% 初始化种群for i=1:sizepop %随机产生一个种群 individuals.chrom(i,:)=Code(lenchrom,bound); x=individuals.chrom(i,:); %计算适应度 individuals.fitness(i)=fun(x); %染色体的适应度end%找最好的染色体[bestfitness bestindex]=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:); %最好的染色体avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度% 记录每一代进化中最好的适应度和平均适应度trace=[avgfitness bestfitness]; %% 迭代寻优% 进化开始for i=1:maxgen i % 选择 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop; %交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); % 变异 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound); % 计算适应度 for j=1:sizepop x=individuals.chrom(j,:); %解码 individuals.fitness(j)=fun(x); end %找到最小和最大适应度的染色体及它们在种群中的位置 [newbestfitness,newbestindex]=min(individuals.fitness); [worestfitness,worestindex]=max(individuals.fitness); % 代替上一次进化中最好的染色体 if bestfitness>newbestfitness bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end individuals.chrom(worestindex,:)=bestchrom; individuals.fitness(worestindex)=bestfitness; avgfitness=sum(individuals.fitness)/sizepop; trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度end%进化结束%% 结果分析[r c]=size(trace);plot([1:r]',trace(:,2),'r-');title('适应度曲线','fontsize',12);xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);axis([0,100,0,1])disp('适应度 变量');x=bestchrom;% 窗口显示disp([bestfitness x]);</span>
0 0
- 利用神经网络 遗传算法求得函数极小极大值
- 遗传算法求函数极大值
- 遗传算法求解香蕉函数的极大值
- 极小值极大值算法-井字棋
- 利用遗传算法求出下面函数的极小值:z=2-exp[-(x2+y2)]
- 如何利用神经网络结合遗传算法进行非线性函数极值寻优(1)
- 如何利用神经网络结合遗传算法进行非线性函数极值寻优(2)
- 极小化极大算法与负极大值算法
- 极小化极大算法与负极大值算法
- 极小化极大算法与负极大值算法
- POJ 1085 Triangle War 极小极大值算法+α-β剪枝
- 神经网络遗传算法
- 利用标准遗传算法求解函数
- 找到极大值和极小值
- 神经网络与遗传算法 优化
- 遗传算法优化BP神经网络
- 遗传算法优化BP神经网络
- 遗传算法优化BP神经网络
- 2.2 内核VMX基本数据结构与操作
- hdu 4704 Sum||hdu 4869 Turn the pokers 费马小定理
- 关于 使用post 方法出现headers already sent问题
- Android 双卡双待支持检验SIM信息获取
- 【峰回路转】Excel技巧百例 05.数值的阶梯性计算
- 利用神经网络 遗传算法求得函数极小极大值
- 【BLE】CC2541与CC2540的区别
- Scala集合操作指南
- 锁的理解
- C++ 关于类与对象在虚函数表上唯一性问题 浅析
- Essay
- poj3268 Silver Cow Party 单源最短路径dijkstra算法
- UVA424 (高精度)
- 2.3 VMCS