C# BP神经网络

来源:互联网 发布:淘宝上的全友是真的吗 编辑:程序博客网 时间:2024/06/13 12:37
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 

原创粉丝点击