% 清空环境变量
clc
clear
%
%% 网络结构建立
%读取数据
load data input output
%节点个数
inputnum=2;
hiddennum=5;
outputnum=1;
%训练数据和预测数据
input_train=input(1:1900,:)';
input_test=input(1901:2000,:)';
output_train=output(1:1900)';
output_test=output(1901:2000)';
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%构建网络
net=newff(inputn,outputn,hiddennum);
%% 遗传算法参数初始化
maxgen=10; %进化代数,即迭代次数
sizepop=10; %种群规模
pcross=[0.3]; %交叉概率选择,0和1之间
pmutation=[0.1]; %变异概率选择,0和1之间
%节点总数
numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;
lenchrom=ones(1,numsum);
bound=[-3*ones(numsum,1) 3*ones(numsum,1)]; %数据范围
%------------------------------------------------------种群初始化--------------------------------------------------------
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness=[]; %每一代种群的平均适应度
bestfitness=[]; %每一代种群的最佳适应度
bestchrom=[]; %适应度最好的染色体
%初始化种群
for i=1:sizepop
%随机产生一个种群
individuals.chrom(i,:)=Code(lenchrom,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)
x=individuals.chrom(i,:);
%计算适应度
individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn); %染色体的适应度
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,inputnum,hiddennum,outputnum,net,inputn,outputn);
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
%% 遗传算法结果分析
figure(1)
[r c]=size(trace);
plot([1:r]',trace(:,2),'b--');
hold on;
plot([1:r]',trace(:,1),'r--');
title(['适应度曲线 ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');
legend('最佳适应度','平均适应度');
x=bestchrom;
%% 把最优初始阀值权值赋予网络预测
% %用遗传算法优化的BP网络进行值预测
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);
net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(B1,hiddennum,1);
net.b{2}=B2;
%% BP网络训练
%网络进化参数
net.trainParam.epochs=100;
net.trainParam.lr=0.1;
%net.trainParam.goal=0.00001;
%网络训练
[net,per2]=train(net,inputn,outputn);
%% BP网络预测
%数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
test_simu=mapminmax('reverse',an,outputps);
error=test_simu-output_test;
%下面是自己加的
figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
disp('总误差');
errorsum=sum(abs(error))
没有合适的资源?快使用搜索试试~ 我知道了~
BP以及Hopfield神经网络进行车牌数字识别
共138个文件
bmp:100个
mat:21个
m:15个
4星 · 超过85%的资源 需积分: 10 99 下载量 108 浏览量
2011-03-09
06:02:39
上传
评论 6
收藏 765KB RAR 举报
温馨提示
这是一个研究车牌号码数字识别的综合性工程,从最基本的BP分类,到分别用遗传算法和粒子群算法对BP网络进行优化分类,再到利用Hopfield神经网络对数字进行识别分类。所有代码均能直接运行,并有准备的结果,并且包括数字号码的图像库,识别结果明确。由于本人在此花费了不少精力,所以资源分标了10分,希望能对同学的毕业设计起到作用。
资源推荐
资源详情
资源评论
收起资源包目录
BP以及Hopfield神经网络进行车牌数字识别 (138个子文件)
testbp.asv 4KB
19.bmp 3KB
37.bmp 3KB
89.bmp 3KB
94.bmp 3KB
91.bmp 3KB
65.bmp 3KB
69.bmp 3KB
56.bmp 3KB
66.bmp 3KB
0.bmp 3KB
57.bmp 3KB
70.bmp 3KB
20.bmp 3KB
11.bmp 3KB
17.bmp 3KB
59.bmp 3KB
28.bmp 3KB
98.bmp 3KB
36.bmp 3KB
47.bmp 3KB
86.bmp 3KB
51.bmp 3KB
49.bmp 3KB
39.bmp 3KB
63.bmp 3KB
34.bmp 3KB
68.bmp 3KB
16.bmp 3KB
24.bmp 3KB
55.bmp 3KB
97.bmp 3KB
52.bmp 3KB
50.bmp 3KB
13.bmp 3KB
53.bmp 3KB
78.bmp 3KB
22.bmp 3KB
12.bmp 3KB
43.bmp 3KB
84.bmp 3KB
1.bmp 3KB
4.bmp 3KB
8.bmp 3KB
18.bmp 3KB
99.bmp 3KB
75.bmp 3KB
46.bmp 3KB
9.bmp 3KB
54.bmp 3KB
2.bmp 3KB
32.bmp 3KB
10.bmp 3KB
38.bmp 3KB
73.bmp 3KB
31.bmp 3KB
3.bmp 3KB
60.bmp 3KB
74.bmp 3KB
58.bmp 3KB
90.bmp 3KB
48.bmp 3KB
71.bmp 3KB
33.bmp 3KB
72.bmp 3KB
44.bmp 3KB
14.bmp 3KB
80.bmp 3KB
79.bmp 3KB
83.bmp 3KB
29.bmp 3KB
30.bmp 3KB
61.bmp 3KB
82.bmp 3KB
42.bmp 3KB
26.bmp 3KB
41.bmp 3KB
64.bmp 3KB
21.bmp 3KB
95.bmp 3KB
88.bmp 3KB
62.bmp 3KB
93.bmp 3KB
85.bmp 3KB
5.bmp 3KB
7.bmp 3KB
35.bmp 3KB
92.bmp 3KB
76.bmp 3KB
23.bmp 3KB
77.bmp 3KB
15.bmp 3KB
45.bmp 3KB
67.bmp 3KB
81.bmp 3KB
25.bmp 3KB
40.bmp 3KB
87.bmp 3KB
27.bmp 3KB
96.bmp 3KB
共 138 条
- 1
- 2
yuyutaoyao
- 粉丝: 24
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于相干衍射成像模拟的matlab源码.zip
- 数据分析的MATLAB课件及代码等
- 基于Bi-LSTM的亚马逊评论情感二分类模型及可视化源码(高分项目).zip
- Furina.ini
- 《设计模式解析》课程习题2.docx
- 基于LSTM的影评情感分类python源码+数据集+详细注释.zip
- 加密1加密1加密1加密1加密1加密1加密1加密1加密1
- 首批 Llama3 70B 中文大模型,在C-Eval和CMMLU的表现超过了ChatGPT,与GPT-4持平
- 基于LSTM的影评情感分类python源码+数据集+详细注释.zip
- JAVA自学课件-第八章 AWT及AWT事件处理.pptx(共54页)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页