C#实现的bp神经网络并应用于综合评价

本文介绍了作者在课程设计中利用C#实现的BP神经网络,该网络包含1个隐藏层,输入层和输出层的节点数量可调整。文中提到了使用的Matrix类,并提供了BP神经网络的代码示例。此外,还提及了Minifab调度仿真模型在半导体生产线研究中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于课程设计选的题目是基于神经网络的综合评价,利用暑假时间用C#实现的bp神经网络。其中用到的_Matrix类是C#实现的矩阵类http://blog.youkuaiyun.com/lanqiuchaoren/article/details/37738665。此bp神经网络包含1个隐藏层,其中输入层,隐藏层,输出层个数都可以根据需要更改。

具体bp神经网络代码如下

BP类:

using Matrix_Mul;
using Excel = Microsoft.Office.Interop.Excel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;



namespace BPNETSerial
{
    public class BP
    {

        /// <summary>
        /// 判断是否训练过网络
        /// </summary>
        Boolean IsTrained;
        /// <summary>
        /// 用于矩阵的相关计算
        /// </summary>
        _Matrix_Calc matrix_Calc;

        /// <summary>
        /// 输入层节点数
        /// </summary>
        int innum;

        /// <summary>
        /// 测试数据组数
        /// </summary>
        int train_num;
        /// <summary>
        /// 训练数据组数
        /// </summary>

        int test_num;
        public int Test_num
        {
            get
            {
                return test_num;
            }
            set
            {
                test_num = value;
            }
        }
        /// <summary>
        /// 测试数据维度;
        /// </summary>
        int sampdim;

        /// <summary>
        /// 隐藏层节点数
        /// </summary>
        int midnum;

        /// <summary>
        /// 输出层节点数
        /// </summary>
        int outnum;

        /// <summary>
        /// 迭代次数
        /// </summary>
        int iteration;

        /// <summary>
        /// 输入层与隐藏层间的权值
        /// </summary>
        _Matrix w1;

        /// <summary>
        /// 输入层与隐藏层间的阀值
        /// </summary>
        _Matrix b1;

        /// <summary>
        /// 输出层与隐藏层间的权值
        /// </summary>
        _Matrix w2;

        /// <summary>
        /// 输出层与隐藏层间的阀值
        /// </summary>
        _Matrix b2;

        /// <summary>
        /// 保存w1的值
        /// </summary>
        _Matrix w1_1;

        /// <summary>
        /// 保存w2的值
        /// </summary>
        _Matrix w2_1;

        /// <summary>
        /// 用于综合评价的矩阵(基于bp神经网络测试结果)
        /// </summary>
        _Matrix comprehesiveEvaluationMatrix;
        /// <summary>
        /// 综合评价结果输出矩阵(基于bp神经网络测试结果)
        /// </summary>
        _Matrix comprehensiveEvaluationResultMatrix;
        /// <summary>
        /// 保存b1的值
        /// </summary>
        _Matrix b1_1;

        /// <summary>
        /// 保存b2的值
        /// </summary>
        _Matrix b2_1;

        /// <summary>
        /// 学习率
        /// </summary>
        double xite;

        /// <summary>
        /// 误差
        /// </summary>
        double error;

         public double[] comprehensiveEvaluation;

        double accu_average;
        /// <summary>
        /// 误差率
        /// </summary>
        double[] accuracy;
        /// <summary>
        /// 训练输入数据
        /// </summary>
        _Matrix input_train;

        public _Matrix Input_train
        {
            get
            {
                return input_train;
            }
            set
            {
                this.input_train = value;
            }
        }
        /// <summary>
        /// 训练输出数据
        /// </summary>
        _Matrix output_train;

        public _Matrix Output_train
        {
            get
            {
                return output_train;
            }
            set
            {
                this.output_train = value;
            }
        }
        /// <summary>
        /// 归一化后的训练输入数据
        /// </summary>
        _Matrix input_train_Norm;

        /// <summary>
        /// 归一化后的训练输出数据
        /// </summary>
        _Matrix output_train_Norm;

        /// <summary>
        /// 测试输入数据
        /// </summary>
        _Matrix input_test;

        public _Matrix Input_test
        {
            get
            {
                return input_test;
            }
            set
            {
                this.input_test = value;
            }
        }

        /// <summary>
        /// 预期输出数据(归一化前)
        /// </summary>
        public _Matrix fore_test;

        /// <summary>
        /// 预期输出数据(归一化后)
        /// </summary>
        public _Matrix fore;

        /// <summary>
        /// 测试输出数据
        /// </summary>
        _Matrix output_test;

        public _Matrix Output_test
        {
            get
            {
                return output_test;
            }
            set
            {
                this.output_test = value;
            }
        }

        /// <summary>
        /// 误差矩阵
        /// </summary>
        _Matrix error_test;

        /// <summary>
        /// 归一化后的测试输入数据
        /// </summary>
        _Matrix input_test_Norm;

        /// <summary>
        /// 归一化后的测试输出数据
        /// </summary>
        _Matrix output_test_Norm;

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="innum"></param>
        /// <param name="midnum"></param>
        /// <param name="outnum"></param>
        /// <param name="num"></param>
        /// <param name="sampDim"></param>
        /// <param name="input_train"></param>
        /// <param name="output_train"></param>
        /// <param name="xite"></param>
        public BP(int innum, int midnum, int outnum, int train_num, int sampDim, int iteration, double xite)
        {
            this.innum = innum;
            this.midnum = midnum;
            this.outnum = outnum;
            this.iteration = iteration;
            matrix_Calc = ne
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值