已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include stdio.h#include stdlib.h#include time.h#include math.h/*inpoints 为输入神经元个数,可改变outpoints为输出神经元个数defaultpoints为隐层神经元个数datagrough为样本数据个数*以下数据定义可以修改*/#define A 0#define a 1#define b 1#define c 1#define ALFA 0.85 #define BETA 0.2 /学习率01#define Total 20000#define inpoints 9#define outpoints 5#define defaultpoints 28#define datagrough 44#define forecastdata 4/*定义所需变量*/double InpointDatadatagroughinpoints,OutpointDatadatagroughoutpoints; /* 输入输出数据 */double InpointData_MAXinpoints,InpointData_MINinpoints; /* 每个因素最大数据 */double OutpointData_MAXoutpoints,OutpointData_MINoutpoints; /* 每个因素最小数据 */double wdefaultpointsinpoints,limendefaultpoints,voutpointsdefaultpoints; /* 连接权值、阈值 */double dlta_wdefaultpointsinpoints,dlta_limendefaultpoints,dlta_voutpointsdefaultpoints; /* 连接权、阈值修正值 */double defaultOutpointdefaultpoints,Outpoint_dpoutpoints,Outpoint_epdatagrough;/*读数据文件*/void ReadData()FILE *fp1,*fp2;int i,j;if(fp1=fopen(D:data训练输入.txt,r)=NULL)printf(1can not open the filen);exit(0);for(i=0;idatagrough;i+)for(j=0;jinpoints;j+)fscanf(fp1,%lf,&InpointDataij); fclose(fp1);if(fp2=fopen(D:data训练输出.txt,r)=NULL)printf(2can not open the filen);exit(0);for(i=0;idatagrough;i+)for(j=0;joutpoints;j+)fscanf(fp2,%lf,&OutpointDataij); fclose(fp2);/*/*归一化*/void unitary()int i,j;int k=0;for(j=0;jinpoints;j+) /找出每列的最大、最小值存放在数组InpointData_MAXj、InpointData_MINj中 InpointData_MAXj=InpointData0j; InpointData_MINj=InpointData0j; for(i=0;idatagrough;i+) if(InpointData_MAXjInpointDataij) InpointData_MINj=InpointDataij;for(j=0;joutpoints;j+) /找出每列的最大、最小值存放在数组OutpointData_MAXj、OutpointData_MINj中 OutpointData_MAXj=OutpointData0j; OutpointData_MINj=OutpointData0j; for(i=0;idatagrough;i+) if(OutpointData_MAXjOutpointDataij) OutpointData_MINj=OutpointDataij;/*将数据归一处理,处理之后的数据全部在0,1之间*/for(j=0;jinpoints;j+) for(i=0;idatagrough;i+) if(InpointData_MAXj=0) InpointDataij=0; else InpointDataij=(InpointDataij-InpointData_MINj+A)/(InpointData_MAXj-InpointData_MINj+A);for(j=0;joutpoints;j+) for(i=0;idatagrough;i+) if(OutpointData_MAXj=0) OutpointDataij=0; else OutpointDataij=(OutpointDataij-OutpointData_MINj+A)/(OutpointData_MAXj-OutpointData_MINj+A);/*/*初始化,随机赋初值*/void Initialization()int i,j; srand(unsigned)time(NULL); /头文件名 #include for(i=0;idefaultpoints;i+) /给输入层到隐层的连接权赋随机值LianJie_wij,这些值在0,1 for(j=0;jinpoints;j+) wij=(rand()*2.0/RAND_MAX-1)/2; dlta_wij=0;for(i=0;idefaultpoints;i+)limeni=(rand()*2.0/RAND_MAX-1)/2; dlta_limeni=0;for(i=0;ioutpoints;i+) /给隐层到输出层的连接权赋初值for(j=0;jdefaultpoints;j+) vij=(rand()*2.0/RAND_MAX-1)/2; dlta_vij=0;/*求单样本的计算输出误差*/void out_sub1(int t)int i,j;double defaultInpointdefaultpoints;double Outpoint_youtpoints; Outpoint_ept=0;for(i=0;idefaultpoints;i+)double sum=0;for(j=0;jinpoints;j+)sum+=wij*InpointDatatj;defaultInpointi=sum+limeni;defaultOutpointi=1/(a+b*exp(-1*c*defaultInpointi);/求Oifor(j=0;joutpoints;j+)/求YiOutpoint_yj=0;for(i=0;idefaultpoints;i+)Outpoint_yj+=vji*defaultOutpointi;Outpoint_dpj=OutpointDatatj-Outpoint_yj; Outpoint_ept+=Outpoint_dpj*Outpoint_dpj/2;/*反算权值*/void out_sub2(int t) int i,j,k; double s; for(i=0;idefaultpoints;i+) s=0; for(j=0;joutpoints;j+) dlta_vji=ALFA*dlta_vji+BETA*Outpoint_dpj*defaultOutpointi; / s+=vji*Outpoint_dpj; vji+=dlta_vji; dlta_limeni=ALFA*dlta_limeni+BETA*defaultOutpointi*(1-defaultOutpointi)*s;/ limeni+=dlta_limeni; for(k=0;kinpoints;k+) dlta_wik=ALFA*dlta_wik+BETA*defaultOutpointi*(1-defaultOutpointi)*s*InpointDatatk;/ wik=wik+dlta_wik; /*/void forecast()int i,j,t,k=0;double e,e1forecastdata=0; /训练误差double sss; double InputData_xforecastdatainpoints,tpforecastdataoutpoints;double defInpoint,defOutpointdefaultpoints,yforecastdataoutpoints;/yforecastdataoutpoints为网络检验输出FILE *fp1,*fp3;if(fp1=fopen(D:data预测输入.txt,r)=NULL) /检验数据输入printf(3can not open the filen);exit(0);for(i=0;iforecastdata;i+)for(j=0;jinpoints;j+)fscanf(fp1,%lf,&InputData_xij); fclose(fp1); if(fp3=fopen(D:data预测输出.txt,r)=NULL) /实际检验结果输出printf(31can not open the filen);exit(0);for(i=0;iforecastdata;i+)for(j=0;joutpoints;j+)fscanf(fp3,%lf,&tpij); fclose(fp3); for(j=0;jinpoints;j+) / 检验数据归一化 for(i=0;iforecastdata;i+) if(InpointData_MAXj=0) InputData_xij=0; else InputData_xij=(InputData_xij-InpointData_MINj+A)/(InpointData_MAXj-InpointData_MINj+A); for(j=0;joutpoints;j+) for(i=0;iforecastdata;i+) if(OutpointData_MAXj=0) tpij=0; else tpij=(tpij-OutpointData_MINj+A)/(OutpointData_MAXj-OutpointData_MINj+A); do Initialization(); /初始化连接权值wij,limeni,vkik=0; do e=0;for(t=0;tdatagrough;t+)out_sub1(t); /正向计算网络输出out_sub2(t); /反向计算,修正权值e+=Outpoint_ept; /计算输出误差k+;while(k0.1); sss=0; /中间参数 for(t=0;tforecastdata;t+) e1t=0; for(i=0;idefaultpoints;i+) double sum=0; for(j=0;jinpoints;j+) sum+=wij*InputData_xtj; defInpoint=sum+limeni; defOutpointi=1/(a+b*exp(-1*c*defInpoint); for(j=0;joutpoints;j+) ytj=0; for(i=0;i0.12);/*/void main() int i,j,k; FILE *fp2;ReadData(); /读训练数据:输入和输出unitary(); /归一化,将输入输出数据归一,结果在0,1中 forecast(); /检验误差 if(fp2=fopen(D:data计算权值.txt,w)=NULL) /文件输出训练好的权值printf(6can not open the filen);exit(0); for(i=0;idefaultp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中实验室应急预案
- 成都市 2024-2025 学年小学五年级科学期中培优模拟卷及答案详解
- 2024-2025 学年度成都市小学五年级道德与法治期中全真模拟试卷(含答案)
- 2025年综合护理知识试题及答案
- 2025年湖南省公务员申论冲刺押题卷
- 2025年测绘考试题及答案
- 2025年美术的常识试题及答案
- 2025年辽宁省公务员考试面试模拟试卷
- 风险评估与管理流程
- 车辆行驶记录仪视场调整方法
- 志愿服务条例知识培训课件
- 民族苗族介绍课件
- 血液中心面试题库分析与指导
- 新疆中考物理实验题分析及指导
- 《金属材料及热处理》课件 项目5 金属的结晶过程与控制
- 2025至2030中国入侵检测系统行业项目调研及市场前景预测评估报告
- 乙型肝炎后肝硬化失代偿期的护理查房
- 火力发电厂分散控制系统技术条件DL/T 1083
- 天鹅会SPA中心员工手册
- 协会档案印章管理制度
- 事业单位国有资产无偿划转意向协议书10篇
评论
0/150
提交评论