遗传算法MATLAB实现代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%%以下代码可直接复制粘贴到m文档运行
clc;
clear all;
%输入数据
for i=1:4000
input(i,:)=10*rand(1,2)-5;
output(i)=input(i,1)^2+input(i,2)^2;
end
output=output';
k = rand(1,4000);
[m,n] = sort(k);%m是数值排序,n是对应的位置
%找出训练数据和预测数据
input_train = input(n(1:3900),:)';
output_train = output(n(1:3900),:)';
input_test = input(n(3901:4000),:)';
output_test = output(n(3901:4000),:)';
%%数据归一化
[gui_1_input,gui_1_inputs] =
mapminmax(input_train);%gui_1_inputs是一个包含最大最小值等信息的结构体
[gui_1_output,gui_1_outputs] = mapminmax(output_train);
%构建神经网络
net = newff(gui_1_input,gui_1_output,5); %5是隐含层节点数net.trainParam.epochs = 100;%训练次数
net.trainParam.lr = 0.1;%学习速率
net.trainParam.goal = 0.0000004;%训练目标最小误差
%%bp神经网络训练
net = train(net,gui_1_input,gui_1_output);
%测试样本归一化
gui_1_input_test =
mapminmax('apply',input_test,gui_1_inputs);%"apply"根据
input数据进行归一化
%%Bp神经网络预测
yuce = sim(net,gui_1_input_test);
%预测结果反归一化
Bp_output =
mapminmax('reverse',yuce,gui_1_outputs);%reverse表示根据output进行反归一化
%网络存储
save data net gui_1_inputs gui_1_outputs
%网络预测图形
figure(1)
plot(Bp_output,'og');
hold on
plot(output_test,'-*');
legend('预测输出','期望输出');
title('bp 网络预测输出');
xlabel('样本');
ylabel('输出');