⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leve_mao.m

📁 The neuro-fuzzy software for identification and data analysis has been implemented in the MATLAB lan
💻 M
字号:
function [centers, bases]=leve_mao(inputs,centers,bases,par,bias,output)%LEVE_MAO		LEVEMBERG-MARQUARDT  %	%  [centers, bases]=leve_mao(inputs,centers,bases,par,output)%%	centers[no_rules,no_var]   centers of the membership functions%	bases[no_rules,no_var]	   bases   of the membership functions   	%%	inputs[no_data,no_var]%	centers[no_rules,no_var]   centers (initial value)%	bases[no_rules,no_var]	   bases   (initial value)%	par[no_rules,no_par]	   parameters of the consequent of each rule%	bias[1,1]%	output[no_data,1]% %	The following global variable is required:%		fid_h   %%	LEVENBERG-MARQUARDT is used to determine %	the CENTERS and the BASES%%_______________________________________________________8 April 1996____global fid_hme=3;grad_min=.25;mu_init=0.001 ;mu_inc=10;mu_dec=0.1;mu_max= 1e10;no_data=size(inputs,1);[no_rules,no_var]=size(centers);mu=mu_init;[errors,Jacobian] = err_fuz ( inputs,centers,bases,par,bias,output);premise=[centers(:) ; bases(:)];SSE=sumsqr(errors);	message = sprintf('Premise optimization: %%g/%g epochs, mu = %%g, SSE= %%g.\n',me);	fprintf(fid_h,message,0,mu_init,SSE);for i=1:me  		% CHECK MAGNITUDE OF GRADIENT	if (norm(Jacobian'*errors)/no_data < grad_min), break, end  	% INNER LOOP, INCREASE MU UNTIL THE ERRORS ARE REDUCED	while (mu <= mu_max)		H=Jacobian'*Jacobian;		g=Jacobian'*errors;		A=H+mu*no_data*eye(2*no_rules*no_var);		tol=1e-9;    		new_premise=premise-pinv(A,tol)*g;				centers=reshape(new_premise(1:no_var*no_rules),[no_rules no_var]);		bases=reshape(new_premise(no_var*no_rules+1:2*no_var*no_rules),[no_rules no_var]);		bases=bases+(bases<0.1)*0.1;    		% EVALUATE NEW NETWORK 		[new_errors,new_Jacobian]= err_fuz ( inputs,centers,bases,par,bias,output); 				new_SSE=sumsqr(new_errors);   		if (new_SSE < SSE), break, end		mu = mu * mu_inc;	end  			if (mu > mu_max), break, end		mu = mu * mu_dec; 	% UPDATE NETWORK	premise = new_premise; 	SSE = new_SSE;	Jacobian=new_Jacobian;	fprintf(fid_h,message,i,mu,SSE);end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -