基于遗传算法的BP神经网络MATLAB代码程序运行时总是出错!!!???
这个问题也困扰了我很久,终于解决了。我会给你一个ga.m程序,创建一个新的m文件并将其到那里,然后尝试运行该程序。%ion[x,endPop,bPop,traceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,...termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)%GArunagenicalgorithm%函数[x,endPop,bPop,traceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,%termFN,termOps,selectFN,selectOps,%xOverFNs,xOverOps,mutFNs,mutOps)%%输出参数:%x-在运行过程中发现的解决方案%endPop-最终总体%b总体的流行轨迹%traceInfo-每代和平均的矩阵%%输入参数:%bounds-变量的上限和下限矩阵%evalFN-评估的名称.mfunction%evalOps-选项停止传递到评估函数([NULL])%startPop-可以初始化的解决方案矩阵%frominitialize.m%opts-[epsilonprob_opsdisplay]changerequiredtoxem考虑两个不同的%解决方案,prob_ops0如果您想对每个解决方案应用%遗传算子概率,1如果%您提供了算子的terministicnumber%applicationsanddisplayis1tooutputprogress0for%quiet。([1e-610])%nationfunction(['maxGenTerm'])%termOps-optionsstringtobepassedtotheterminationfunction%([100]).%选择其FN名称。mselectionfunction(['normGeomSelect'])%selectOpts-optionsstringtobepassedtobeafter%select(pop,#,opts)([0.08])%xOverFNS-astringcontainsblankseperatednamesofXover.m%files(['arithXoverheuristicXoversimpleXover'])%with%firstthatxOvertopperform%formiliarlyformutation([20;23;20])%mutFNs-astringcontainsblankseperatednamesofmutation.m%files(['boundaryMutationmultiNonUnifMutation...%nonUnifMutationunifMutation'])%withthe%firstcolumnbeingthenumberofthatxOver表现%相似的lyformation([400;61003;41003;400])%BinaryandReal-ValuedSimulationEvolutionforMatlab%Copyright(C),,%%,,algorithmforfunction%optimization:nsactionsonMathmatical%软件,1996年提交。%%该程序是软件;您可以在由%theFreeSoftwareFoundation发布的GNUGeneralPublicLince术语下分发和/或修改%它;版本1或(由您选择)%以下任何版本。%%此程序分发的目的是希望它有用,%但没有任何保证;不提供任何%适销性或POSEFITNESS。查看%GNUGeneralPublicLicense了解更多详细信息。可以从%FreeSoftwareFoundation,Inc.,675MassAve,Cambridge获得GNU%GeneralPublicLicense的副本,MA02139,USA.%%$Log:ga.m,v$%Revision1.101996/02/0215:03:00jjoine%修复了注释中的imputarguments的顺序以匹配%ga函数中的实际顺序。%%Revision1.91995/08/2820:01:07chouck%更新了初始化参数,更新了突变参数存储弯曲%b是非统一突变的第三个选项%%Revision1.81995/08/1012:59:49jjoine%StartedLogfiletkeeptrackofrevisions%n=nargin;ifn<2|n==6|n==10|n==12disp('参数不足')endifn<3%默认评估选项。evalOps=[];endifn<5opts=[1e-610];endifisempty(opts)opts=[1e-610];endifany(evalFN<48)%fopts(2)==1%Floatgae1str=['x=c1;c1(xZomeLength)=',evalFN';'];e2str=['x=c2;c2(xZomeLength)=',evalFN';'];else%Binarygae1str=['x=b2f(endPop(j,:),边界,位);endPop(j,xZomeLength)=',...evalFN';'];endelse%fopts(2)==1%Floatgae1str=['[c1c1(xZomeLength)]='evalFN'(c1,[genevalOps]);'];e2str=['[c2c2(xZomeLength)]='evalFN'(c2,[genevalOps]);'];else%Binarygae1str=['x=b2f(endPop(j,:),边界,位);[xv]='evalFN...'(x,[genevalOps]);endPop(j,:)=[f2b(x,边界,位)v];'];endendifn<6%DefaultterminationinformationtermOps=[100];termFN='maxGenTerm';endifn<12%Defaultmutationinformationifopts(2)==1%FloatGAmutFNs=['boundaryMutationmultiNonUnifMutationnonUnifMutationunifMutation'];mutOps=[400;6termOps(1)3;4termOps(1))3;400];else%BinaryGAmutFNs=['binaryMutation'];mutOps=[0.05];endendifn<10%默认交叉信息ifopts(2)==1%FloatGA
遗传算法的突变率问题
我不这么认为
突变似乎是指基因而不是染体。突变率0.01是指基因位置发生突变的可能性
根据。原发者的条件,基因的数量。应该是0.01×120×3=3.6(注意101是二进制编码,代表3个基因位点),也就是说120×3=36基因中有3到4个会发生突变(更准确地说是3.6的小数部分)就是不知道是应该丢弃还是添加)至于突变基因是否位于同一条染体上,应该是随机的
P.S.我也是新手,只是来讨论一下问题
我看的书叫《人工智能及其应用》,机械工业出版社出版。第129页说“操作是按位进行的,即改变个体中某一位的值”。
二维非稳态水流模型遗传反演
11.2.1数学模型[49]含水层参数辨识式中[29]:H为地下水头[L];S为储水系数[维度一];T=KM为水力传导率[L2/T];K是含水层的渗透系数[L/T],二阶对称张量;M是含水层的厚度[L];(x,y)为笛卡尔坐标系坐标;t是时间;G为研究区域;Γ1是第一类边界;Г2是第二类极限;Г=Г1+Г2为极限;-G=G+Γ是包含边界区域的研究;n为边界单元外的法向量;H0(x,y)为头部的初始分布;H1(x,y,t)为第一边界类型中的水头分布;q(x,y,t)为类边界单位宽度内流量的二次分布;E是供给的垂直强度。确定含水层参数的,其中NW是抽水井(或注入井)的数量;Qj为j井的产水量。11.2.2求解模型(1)将边值问题(11-1)转化为变分问题,若t固定且H(x,y,t)εC2,则对于每个η(x,y)ε:含水层参数辨识采用格林公式,并注意边界条件:含水层参数辨识(2)在区域G的边界处划分解区域GГ=Г1+Г2,得到多个有界点并将它们连接起来依次形成一个闭合多边形ГD。用这个近似值代替Г,并用ГD围成的多边形面积GD来近似G。然后将GD除以Ne三角形之和。三角形的顶点为节点,节点的个数为i=1,2,3,...,NP;其中,内部节点有N,第一边界节点有N1个,第二边界节点有N2个。第i个节点的坐标记为(xi,yi),三角形单位用Δβ表示(β=1,2,...,Ne)。(3)顶点为i、j、k的三角形Δβ中各点P(x,y)的面积坐标定义为:含水层参数识别式中,Δβ为面积三角形Δi、Δj、Δk分别表示三角形pjk、pki、pij的面积(见图11-1)。含水层参数辨识图11-1三角形面积坐标示意图含水层参数辨识基本节点函数定义为:含水层参数辨识其中,{Δβi}是以节点i为公共节点的三角形单元的。。将形函数作为线性元,节点i处水头的分段线性函数可以表示为在边界Г1处为0的任意分段光滑函数η,作为含水层参数的识别。式中,m=N0+N2,ri为任意常数。(4)建立有限元方程将式(11-8)和式(11-9)代入式(11-4)并考虑r的任意性,得到有限元方程:参数辨识考虑含水层的初始条件,利用常微分方程组(11-3)的全隐式解,可得:含水层参数辨识式中,=H(xi,yi,tn),Δt=tn+1-tn,m=N0+N2,m为未知节点的数量。其中:含水层参数识别其中,Nt表示以i和j为公共节点的单元数量,Txxβ、Tyyβ、Sβ为TxxTyy,Δβ中S的值,lij为两个节点i和j之间的距离。,qij为线段ij上的流量。含水层参数识别其中Nt表示以j为公共节点的单元数量,Qj表示节点j处的抽水流量,Qβ表示节点j相邻单元中(xβ,yβ)处的抽水流量,Qj=0表示节点j处无泵浦,Qβ=0表示单元β处无泵浦。方程组最终可写为如下矩阵方程:含水层参数辨识A是一个大的对称稀疏矩阵。方程组(11-12)可以直接采用一维压缩存储技术求解,也可以采用高斯-赛德尔迭代法求解,如下所示。采用不同的时间步长来求解每个预定时间各节点的水位。11.2.3反演介绍第1章详细讨论了非定常边界水流二维模型的反演,很多都比较成熟。目前水文地质计算中,使用最多的是估计修正试验法,但该没有收敛准则,难以实现识别,工作量较大。使用这种,结果的可靠性和所需的时间取决于参数调整者的经验和技能。11.2.4遗传反演遗传反演是一种优化,它将水文地质参数的辨识转化为极值问题。即要求水文地质参数能够最小化误差估计函数。假设共有n个水文地质参数,用符号p1,p2,...,pn表示。同时假设计算出的观测点j在时刻i的水量为(ti),实测水头为(ti),对比观测点总数为N,时间段拟合程度通常用平均误差的绝对值与平均误差的平方和来表示。称为评价函数(也称为目标函数)E。显然,E是给定参数值的函数。评价函数的表达式

遗传算法的停止标准通常是迭代代数。。虽然您可以使用人口规模,但通常使用代数。。
PS:遗传算法通常需要更少的时间。。。运行数据时,一次运行50代通常需要大约5分钟。。。。
