• 一个简单的BP网络C语言程序


    #include "stdafx.h"
    #include 
    "math.h"
    #include 
    "stdio.h"
    #include 
    "time.h"
    //#include <conio.h>
    #include "stdlib.h"
    #include 
    "iostream.h"

    #define ALINE 6
    #define BLINE 6
    #define CLINE 6

    int main(int argc, char* argv[])
    {
            
    double y[CLINE],yd[CLINE],w0[ALINE][BLINE],w1[BLINE][BLINE];
        
    double w2[BLINE][CLINE],x0[ALINE],x1[BLINE],x2[BLINE];
        
    double dw0[ALINE][BLINE],dw1[ALINE][ALINE],dw2[BLINE][CLINE];
        
    double nt0[BLINE],nt1[BLINE],nt2[BLINE];
        
    double dt2[BLINE],dtf2[BLINE];
        
    double dt6[BLINE],dtf6[BLINE];
        
    double dtf[CLINE],rf;
        
    int i,j,k,ii,jj,kk;

        x0[
    0]=0.067583;
        x0[
    1]=10.884163;
        x0[
    2]=6.46034;
        x0[
    3]=0.79934;
        x0[
    4]=0.0;
        x0[
    5]=0.384163;
        x0[
    6]=0.6034;
        x0[
    7]=0.34;
        x0[
    8]=0.0;
        x0[
    9]=0.384163;
        x0[
    10]=0.6034;

        yd[
    0]=0.43;
        yd[
    1]=0.2;
        yd[
    2]=0.3;
        yd[
    3]=0.4;
        yd[
    4]=0.5;
        yd[
    5]=0.6;
        yd[
    6]=0.7;
        yd[
    7]=0.8;
        yd[
    8]=0.9;
        yd[
    9]=0.25;
        yd[
    10]=0.35;

        srand( (unsigned)time( NULL ) ); 
    //    srand(time(0));

        
    for(i=0;i<ALINE;i++)
        
    {
            
    for(j=0;j<BLINE;j++)
            
    {
                w0[i][j]
    =rand()/(231200.0);
                cout
    <<w0[i][j]<<" ";
            }

        }


        
    for(i=0;i<BLINE;i++)
        
    {
            
    for(j=0;j<BLINE;j++)
            
    {
                w1[i][j]
    =rand()/(231200.0);
            }

        }

        
    for(i=0;i<BLINE;i++)
        
    {
            
    for(j=0;j<CLINE;j++)
            
    {
                w2[i][j]
    =rand()/(231200.0);
            }

        }

        cout
    <<endl;

        
    for(jj=0;jj<10000;jj++)
        
    {
            rf
    =1.088;
            
    if(jj>=15)
            
    {
                rf
    =0.88;
            }

            
    if(jj>=20)
            
    {
                rf
    =0.1;
            }
        



            
    for(i=0;i<BLINE;i++)
            
    {
                nt0[i]
    =0;
                
    for(k=0;k<ALINE;k++)
                    nt0[i]
    +=x0[k]*w0[k][i];
                
    //cout<<nt0[i]<<endl;
                x1[i]=1.0/(1.0+exp(-nt0[i]));
                
    //cout<<"x1[i]="<<x1[i]<<"  ";
                
    //printf("%10.5f",x1[i]);
                printf("\n");
            }


            
    for(i=0;i<BLINE;i++)
                
    {
                nt1[i]
    =0;
                
    for(k=0;k<BLINE;k++)
                    nt1[i]
    +=x1[k]*w1[k][i];
                x2[i]
    =1.0/(1.0+exp(-nt1[i]));
                
    //cout<<x2[i]<<endl;
                
    //printf("%10.5f",x2[i]);
            
    //    printf("\n");
                }

        
    //printf("%6d",jj);

            
    for(i=0;i<CLINE;i++)
                
    {
                nt2[i]
    =0;
                
    for(k=0;k<BLINE;k++)
                    nt2[i]
    +=x2[k]*w2[k][i];
                y[i]
    =1.0/(1.0+exp(-nt2[i]));
                printf(
    "%10.5f",y[i]);
                }

            printf(
    "%6d",jj);
            printf(
    "\n");
            
    for(i=0;i<CLINE;i++)
            
    {
                dtf[i]
    =y[i]*(1.0-y[i])*(yd[i]-y[i]);
            }

            
    for(i=0;i<BLINE;i++)
            
    {
                
    for(j=0;j<CLINE;j++)
                
    {
                    dw2[i][j]
    =rf*dtf[j]*x2[i];
                }

            }

                
    for(i=0;i<BLINE;i++)
            
    {
                
    for(j=0;j<CLINE;j++)
                
    {
                    w2[i][j]
    =w2[i][j]+dw2[i][j];
                    printf(
    "%10.5f",w2[i][j]);

                }

                printf(
    "\n");

            }

            printf(
    "\n");
            
    for(i=0;i<BLINE;i++)
            
    {
                dt2[i]
    =0;
                
    for(k=0;k<CLINE;k++)
                dt2[i]
    +=dtf[k]*w2[i][k];
                
    for(i=0;i<BLINE;i++)
                
    {
                    dtf2[i]
    =x2[i]*(1.0-x2[i])*dt2[i];
                }


                
    for(i=0;i<BLINE;i++)
                
    {
                    
    for(j=0;j<BLINE;j++)
                    
    {
                        dw1[i][j]
    =rf*x1[i]*dtf2[j];
                    }

                }

                
    for(i=0;i<BLINE;i++)
                
    {
                    
    for(j=0;j<BLINE;j++)
                    
    {
                        w1[i][j]
    =w1[i][j]+dw1[i][j];
                    }

                }



                
    for(i=0;i<BLINE;i++)
                
    {
                    dt6[i]
    =0;
                    
    for (k=0;k<BLINE;k++)
                        dt6[i]
    +=dtf2[k]*w1[i][k];
                }


                
    for(i=0;i<BLINE;i++)
                
    {
                    dtf6[i]
    =x1[i]*(1.0-x1[i])*dt6[i];
                }


                
    for(i=0;i<ALINE;i++)
                
    {
                    
    for(j=0;j<BLINE;j++)
                    
    {
                        dw0[i][j]
    =rf*x0[i]*dtf6[j];
                    }

                }


                    
    for(i=0;i<ALINE;i++)
                
    {
                    
    for(j=0;j<BLINE;j++)
                    
    {
                        w0[i][j]
    =w0[i][j]+dw0[i][j];
                    }

                }

                    cout
    <<endl;
            }
    /*
        cout<<"*"<<endl;
    */

            }

        printf(
    "Hello World!\n");
    //    cout<<"+";
        return 0;
    }


  • 相关阅读:
    Nova官方资料入口处
    LeetCode 有效的数独
    LeetCode 两数之和
    LeetCode 移动零
    安装OpenStack Queens版本的教程推荐
    删除排序数组中的重复项
    (转载)OpenStack client 调用分析
    (转载)基于Linux C的socket抓包程序和Package分析
    Maven的具体使用和优点
    关于 Javascript 学习,有哪些好的博客或者网站推荐?
  • 原文地址:https://www.cnblogs.com/karlchen/p/569949.html
Copyright © 2020-2023  润新知