• 大小: 11KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-03
  • 语言: 其他
  • 标签:

资源简介

自己编写的模糊神经网络模型,自测试能用,优化效果比较不错。基于BP神经网络进行修改后的模型。

资源截图

代码片段和文件信息

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/*
 * 创建日期 2015-04-12
 *
 * 三层BP神经网络,输入,输出,隐含层数量可以设定
 * 输入层数量 InputNum 隐含层数量 MiddleNum 输出层数量 OutputNum 
 * 
 * 总程序入口为:public void TrainBP(String inputFileName String outputFileName int fNum MainNN bpnn)
 * TrainBPByADCQGA 和 BPRunByADCQGA 为两种训练学习方式。可以分别调用
 * 
 * @author Hap Kong
 */


public class MainNN {

//*****************变量定义********   i对应输入层的索引,j对应隐含层的索引,k对应输出层的索引   ********//
public  int InputNum=3MiddleNum=4OutputNum=1;                 //输入层,隐含层,输出层神经元数量
public  double arf=0.8land=0.25thita=0.6;                      //thita 阈值 land学习因子 arf动量因子
public  double wji[][]=new double[MiddleNum][];                 //输入层到中间隐含层的权重
public  double wji_b[][]=new double[MiddleNum][];               //输入层到中间隐含层的权重(上次值)
public  double wkj[][]=new double[OutputNum][];                 //中间隐含层到输出层的权重
public  double wkj_b[][]=new double[OutputNum][];               //中间隐含层到输出层的权重(上次值)
public  double xigk[]=new double[OutputNum];                   //神经元输出对输入的导数
public  double xigj[]=new double[MiddleNum];                   //神经元中间层对输入的导数
public  double aj[]=new double[MiddleNum];                     //隐含层神经元的输出
public  double ak[]=new double[OutputNum];                     //输出层神经元的输出

List inputName = new ArrayList();              //训练数据 自变量的名称
List outputName = new ArrayList();             //训练数据 输出变量的名称
List inputData = new ArrayList();          //训练数据 自变量的数据
List outputData = new ArrayList();         //训练数据 输出变量的数据

public int fuzzyNum = 0;                                       //输入为隶属度网络的个数;BP主神经网络的前fuzzyNum个位隶属度输入
public double[] fuzzyobjectiveOutput;                          //隶属度网络的期望输出,即所优化的输入
public List msnnList = new ArrayList();            //存储隶属度网络

public int MaxTrainNum = 100000;
public double deltaMSNNOutputRange = 0.050;                     //MSNN输出的调整范围

/////********************************初始化神经网络**************************************////
public void InitializeBPNNWithTrainFile(String inputFileName String outputFileName)
{
this.InputNum = ReadInputTrainDataFromFile(inputFileName);
this.MiddleNum = this.InputNum+1;
this.OutputNum = ReadOutputTrainDataFromFile(outputFileName);
this.wji =new double[MiddleNum][];                 //输入层到中间隐含层的权重
this.wji_b =new double[MiddleNum][];               //输入层到中间隐含层的权重(上次值)
this.wkj =new double[OutputNum][];                 //中间隐含层到输出层的权重
this.wkj_b =new double[OutputNum][];               //中间隐含层到输出层的权重(上次值)
this.xigk =new double[OutputNum];                   //神经元输出对输入的导数
this.xigj =new double[MiddleNum];                   //神经元中间层对输入的导数
this.aj =new double[MiddleNum];                     //隐含层神经元的输出
this.ak =new double[OutputNum];                     //输出层神经元的输出
this.InitializeWeight();
msnnList.clear();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3309  2015-05-01 09:31  TestSAMMNN.java

     文件      40001  2015-05-01 09:41  MainNN.java

     文件      31819  2015-04-30 19:53  MSNN.java

----------- ---------  ---------- -----  ----

                75129                    3


评论

共有 条评论