MATLAB绘制出权值wv和阀值bv确定的误差曲面

源代码在线查看: matlab遗传算法现在参数优化中的应用.txt

软件大小: 56 K
上传用户: dxhh
关键词: MATLAB 绘制 误差
下载地址: 免注册下载 普通下载 VIP

相关代码

				遗传算法现在参数优化中的应用2007/06/02 23:30(1)De Jong函数
				二维的De Jong函数图形如下
				[x1,x2] = meshgrid(-512:4:512);
				f=x1.^2+x2.^2;
				mesh(x1,x2,f); 
				xlabel('x1');
				ylabel('x2');
				zlabel('f(x1,x2)');
				函数的代码
				function [eval]=dejong(sol)
				numv = size(sol,2);
				x=sol(1:numv);
				eval=sum(x.^2);
				
				
				
				
				
				
				
				De Jong
				
				De Jong函数适值的代码
				function [sol,eval]=dejongmin(sol,options)
				numv = size(sol,2)-1;
				x=sol(1:numv);
				eval=dejong(x);
				eval=-eval;
				
				求解的代码
				%维数n=3
				%设置参数边界
				bounds = ones(3,1)*[-512 512];
				%遗传算法优化
				[p,endPop,bestSols,trace]=ga(bounds,'dejongmin');
				
				%性能跟踪
				plot(trace(:,1),trace(:,3),'b-')
				hold on
				plot(trace(:,1),trace(:,2),'r-')
				xlabel('Generation');
				ylabel('Fittness');
				legend('解的变化','种群平均值的变化');
				
				>> p
				
				p =
				
				   1.0e-003 *
				
				     0.2500     0.1567     0.0500    -0.0001
				此时,De Jong函数的适值的极小值为dejong(p)=1.0e-003* -0.0001
				
				(2) Rosenbrock函数
				二维的Rosenbrock函数绘制图如下
				[x1,x2] = meshgrid(-512:1:512);
				f=100*(x2-x1.^2).^2+(1-x1).^2;
				mesh(x1,x2,f); 
				xlabel('x1');
				ylabel('x2');
				zlabel('f(x1,x2)');
				
				
				
				
				
				
				
				Rosenbrock
				
				Rosenbrock函数适值
				function [sol,eval]=rosenbrockmin(sol,options)
				numv = size(sol,2)-1;
				x=sol(1:numv);
				eval=rosenbrock(x);
				eval=-eval;
				
				求解过程
				%维数n=4
				%设置参数边界
				bounds = ones(4,1)*[-512 512];
				
				%遗传算法优化
				[p,endPop,bestSols,trace]=ga(bounds,'rosenbrockMin');
				
				%性能跟踪
				plot(trace(:,1),trace(:,3),'b-')
				hold on
				plot(trace(:,1),trace(:,2),'r-')
				xlabel('Generation');
				ylabel('Fittness');
				legend('解的变化','种群平均值的变化');
				
				注:该程序求出的解有很大的不确定性,有待改进,最优解为1 1 1 1,极小值为0
				
				(3)
				
				
				function [eval]=griewangk(sol)
				numv = size(sol,2);
				x=sol(1:numv);
				multi=1;
				for i=1:numv
				   multi=multi*cos(x(i)/sqrt(i));
				end
				eval=sum(x.^2/4000)-multi+1;
				
				function [sol,eval]=griewangkmin(sol,options)
				numv = size(sol,2)-1;
				x=sol(1:numv);
				eval=griewangk(x);
				eval=-eval;
				
				%维数n=6
				%设置参数边界
				bounds = ones(6,1)*[-512 512];
				
				%遗传算法优化
				[p,endPop,bestSols,trace]=ga(bounds,'griewangkmin');
				
				%性能跟踪
				plot(trace(:,1),trace(:,3),'b-')
				hold on
				plot(trace(:,1),trace(:,2),'r-')
				xlabel('Generation');
				ylabel('Fittness');
				legend('解的变化','种群平均值的变化');
				
				同样不稳定,最优解应为0 0 0 最小值应为0
				
				
				
				
				[x1,x2] = meshgrid(-500:5:50);
				f=x1.^2/4000+x2.^2/4000-cos(x1)*cos(x2/sqrt(2))+1;
				mesh(x1,x2,f); 
				xlabel('x1');
				ylabel('x2');
				zlabel('f(x1,x2)');
				
				
				函数代码
				function [eval]=rosenbrock(sol)
				numv = size(sol,2);
				x=sol(1:numv);
				summ=0;
				for i=1:numv-1
				   summ=summ+100*(x(i+1)-x(i).^2).^2+(1-x(i)).^2;
				end
				eval=summ; 
				
							

相关资源