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

📄 bp3layer.cs

📁 C#中封装MATLAB中BP神经网络的类 可以进行数据类型的转换
💻 CS
字号:
using System;

namespace KarstModel
{
	/// <summary>
	/// BP3Layer 的摘要说明。
	/// </summary>
	public class BP3Layer:IModel
	{
		public BP3Layer()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}
		
		//private int nargOut=6;
		private object W1;
		private object B1;
		private object W2;
		private object B2;
		private object Y1;
		private object Y2;
		private object[,] P;
		private object[,] T;
		private object S1;
		private object S2;
		private object TF1;
		private object TF2;
		private object BTF;
		private object BLF;
		private object PF;
		private object epochs;
		private object goal;
		private object[,] P_test;

		private bool hasParameters=false;


				
		#region IModel 成员

		public void run()
		{
			try
			{
				//BP.BPclassClass bp=new BP.BPclassClass();
				BP2.BP2 bp2=new BP2.BP2();
				W1=null;B1=null;W2=null;B2=null;Y1=null;Y2=null;
				bp2.bp(6,ref W1,ref B1,ref W2,ref B2,ref Y1,ref Y2,P,T,S1,S2,TF1,TF2,BTF,BLF,PF,epochs,goal,P_test);
				//bp.BP(nargOut,ref W1,ref B1,ref W2,ref B2,ref Y1,ref Y2,P,T,S1,S2,TF1,TF2,BTF,BLF,PF,epochs,goal,P_test);
				
			}
			catch(Exception e)
			{
				System.Windows.Forms.MessageBox.Show(e.Message);
			}
		}

		public bool setParameters(System.Collections.Hashtable para)
		{//输入数据时,要转换为MATLAB需要的Object类型.
			try
			{
				//P=(object [,])para["P"];
				double[,] tArray=(double[,])para["P"];
				int row=tArray.GetUpperBound(0)+1;
				int rol=tArray.GetUpperBound(1)+1;
				P=new object[row,rol];
				for(int iRow=0;iRow<row;iRow++)
					for(int iRol=0;iRol<rol;iRol++)
						P[iRow,iRol]=tArray[iRow,iRol];

				//T=(object [,])para["T"];
				tArray=(double[,])para["T"];
				row=tArray.GetUpperBound(0)+1;
				rol=tArray.GetUpperBound(1)+1;
				T=new object[row,rol];
				for(int iRow=0;iRow<row;iRow++)
					for(int iRol=0;iRol<rol;iRol++)
						T[iRow,iRol]=tArray[iRow,iRol];

				long t_S1=Convert.ToInt32(para["S1"]);
				S1=(object)t_S1;
				long t_S2=Convert.ToInt32(para["S2"]);
				S2=(object)t_S2;

				switch((long)para["TF1"])
				{
					case 0:TF1="tansig";break;
					case 1:TF1="logsig";break;
					case 2:TF1="purelin";break;
				}
				switch((long)para["TF2"])
				{
					case 0:TF2="tansig";break;
					case 1:TF2="logsig";break;
					case 2:TF2="purelin";break;
				}
                
				switch((long)para["BTF"])
				{
					case 0:BTF="trainlm";break;
					case 1:BTF="trainbfg";break;
					case 2:BTF="trainrp";break;
					case 3:BTF="traingd";break;
				}
				switch((long)para["BLF"])
				{
					case 0:BLF="learngdm";break;
					case 1:BLF="learngd";break;					
				}
				switch((long)para["PF"])
				{
					case 0:PF="mse";break;
					case 1:PF="msereg";break;
				}
				long t_epochs=Convert.ToInt32(para["epochs"]);
				epochs=t_epochs;
				double t_goal=(double)para["goal"];
				goal=t_goal;
				
				//P_test=(object [,])para["P_test"];
				tArray=(double[,])para["P_test"];
				row=tArray.GetUpperBound(0)+1;
				rol=tArray.GetUpperBound(1)+1;
				P_test=new object[row,rol];
				for(int iRow=0;iRow<row;iRow++)
					for(int iRol=0;iRol<rol;iRol++)
						P_test[iRow,iRol]=(object)tArray[iRow,iRol];
				
				hasParameters=true;
				return true;
	
			}
			catch(Exception e)
			{
				System.Windows.Forms.MessageBox.Show(e.Message);
				return false;
			}
		}

		public System.Collections.Hashtable GetParameters()
		{
			// TODO:  添加 BP3Layer.GetParameters 实现
			return null;
		}

		public System.Collections.Hashtable GetResult()
		{
			// TODO:  添加 BP3Layer.GetResult 实现
			return null;
		}

		public System.Data.DataTable GetResultAsTable()
		{
			// TODO:  添加 BP3Layer.GetResultAsTable 实现
			return null;
		}

		public string ResultToString()
		{
			// TODO:  添加 BP3Layer.ResultToString 实现
			return null;
		}

		public string GetKeywords()
		{
			// TODO:  添加 BP3Layer.GetKeywords 实现
			return null;
		}

		public string GetDiscription()
		{
			// TODO:  添加 BP3Layer.GetDiscription 实现
			return null;
		}

		public string GetSubjects()
		{
			// TODO:  添加 BP3Layer.GetSubjects 实现
			return null;
		}

		public IModel[] GetChildren()
		{
			// TODO:  添加 BP3Layer.GetChildren 实现
			return null;
		}

		public ParaData[] GetParaData()
		{			
			ParaData[] ans=new ParaData[12];
			ans[0]=new ParaData(-1,"P","训练数据",2,"double","训练数据","");
			ans[1]=new ParaData(-1,"T","训练数据的目标输出",2,"double","目标输出","");			
			ans[2]=new ParaData(-1,"S1","隐层节点数",0,"long","隐层节点数","");			
			ans[3]=new ParaData(-1,"S2","输出层节点数",0,"long","输出层节点数","");
			ans[4]=new ParaData(-1,"TF1","隐层的输出函数",3,"int","隐层的输出函数","tansig,logsig,purelin");
			ans[5]=new ParaData(-1,"TF2","输出层的输出函数",3,"int","输出层的输出函数","tansig,logsig,purelin");
			ans[6]=new ParaData(-1,"BTF","训练函数",3,"int","训练函数","trainlm,trainbfg,trainrp,traingd");
			ans[7]=new ParaData(-1,"BLF","BP学习算法",3,"int","BP学习算法","learngdm,learngd");
			ans[8]=new ParaData(-1,"PF","网络性能函数",3,"int","网络性能函数","mse,msereg");
			ans[9]=new ParaData(-1,"epochs","最大循环次数",0,"long","最大循环次数","");
			ans[10]=new ParaData(-1,"goal","目标误差",0,"double","目标误差","");
			ans[11]=new ParaData(-1,"P_test","测试数据",2,"double","测试数据","");
		
			return ans;
		}

		public ModelData GetModelData()
		{
			ModelData ans=new ModelData();
			ans.name="BP3Layer";
			ans.realName="3层BP神经网络模型";
			ans.useMethod="按向导输入参数后运行即可";
			ans.uses="BP神经网络模型";
			ans.filename="model.dll";
			ans.description="BP神经网络模型";
			ans.keyWords="BP神经网络模型";
			ans.classes=3;

			return ans;
		}

		#endregion
	}
}

⌨️ 快捷键说明

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