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

📄 nn.java

📁 用java编写的bp网络和rbf网络的源程序 JNNT由java语言写成
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import java.net.*;
import java.util.Properties;

public class nn extends Applet {

  
  Choice netChoice;//网络模型
  Choice inNumChoice;
  Choice hideNumChoice;
  Choice outNumChoice;
  Checkbox chkbox_save;
  int task;
  BpNet bpnet;
  RbfNet rbfnet;
  boolean clear;
  int row;
  int left;
  int bottom;
  int top;
  double p1[][];//训练样本集输入
  double t1[][];//训练样本集输出
  double p2[][];//模拟数据输入
  int inNum;
  int hideNum;
  int outNum;
  int sampleNum;
  int simNum;
  PrintStream ps;
  int epochs;
  TextArea txtarea;

  public void init() {
    left=50;
    top=80;
    bottom=300;
    clear=false;
    row=0;
    epochs=70001;

    setLayout(new BorderLayout());
    Panel topPanel=new Panel();
    
    Panel bottomPanel=new Panel();

    netChoice=new Choice();


    netChoice.addItem("BP network");
    netChoice.addItem("LBG clustering");
    netChoice.addItem("RBF network");

    netChoice.addItemListener(new ItemListener(){
        public void itemStateChanged (ItemEvent event){
        repaint();
        }
    });

    topPanel.add(netChoice);

    Label lab_inNum=new Label("输入节点数:");
    topPanel.add(lab_inNum);
    inNumChoice=new Choice();
    for (int i=1;i<10;i++)
       inNumChoice.addItem(String.valueOf(i));
    topPanel.add(inNumChoice);

    Label lab_hideNum=new Label("隐含节点数:");
    topPanel.add(lab_hideNum);
    hideNumChoice=new Choice();
    for (int i=1;i<10;i++)
       hideNumChoice.addItem(String.valueOf(i));
    hideNumChoice.select("3");
    topPanel.add(hideNumChoice);

    Label lab_outNum=new Label("输出节点数:");
    topPanel.add(lab_outNum);
    outNumChoice=new Choice();
    for (int i=1;i<10;i++)
       outNumChoice.addItem(String.valueOf(i));
    topPanel.add(outNumChoice);

    Button button_load=new Button("LoadData");
    button_load.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent event){
        task=10;
        repaint();
        }
    });
    topPanel.add(button_load);

    Button button_train=new Button("Train");
    button_train.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent event){
            task=1;
            repaint();
        }
    });
    topPanel.add(button_train);

    Button button_sim=new Button("Simulation");
    button_sim.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent event){
        task=2;
        repaint();
        }
    });

    topPanel.add(button_sim);


    Button printButton=new Button("print...");
    printButton.setForeground(Color.black);
   //p.add(printButton);
    printButton.addActionListener(new ActionListener(){
        public void actionPerformed (ActionEvent event){
           printComponents(nn.this);
           }
     });
     topPanel.add(printButton);

    chkbox_save=new Checkbox("save data");
    // bottomPanel.add(chkbox_save);

    add("North",topPanel);
    txtarea=new TextArea(12,105);
    bottomPanel.add(txtarea);
    add("South", bottomPanel);
    


  }

  public void paint(Graphics g){
  setBackground(Color.white);
   switch (task)
   {
      case 1:if (netChoice.getSelectedItem()=="BP network")
                 drawBpTrain(g);
             else if  (netChoice.getSelectedItem()=="LBG clustering")
                 drawLBG(g);
             else if  (netChoice.getSelectedItem()=="RBF network")
                 drawRbfTrain(g);
             break;
      case 2:if (netChoice.getSelectedItem()=="BP network")
                 drawBpSim(g);
             else if  (netChoice.getSelectedItem()=="RBF network")
                 drawRbfSim(g);
             break;
      case 10:loadData(g);
             break;
    
    }//end switch
    task=0;
  }

public void drawBpTrain(Graphics g){

  int time=1000;
  double etime=1000.0;
  //g.drawString(netChoice.getSelectedItem(),300,300);
  // double p1[][]={{0.1},{0.2},{0.3},{0.4},{0.5}};
  // double t1[][]={{0.12},{0.22},{0.32},{0.42},{0.52}};
  bpnet=new BpNet(Integer.parseInt(inNumChoice.getSelectedItem()),Integer.parseInt(hideNumChoice.getSelectedItem()),Integer.parseInt(outNumChoice.getSelectedItem()));
   //bpnet=new BpNet(2,3,1);
  //绘制误差曲线坐标

   g.setColor(getBackground());
   g.fillRect(0,0,left,bottom);
   g.setColor(getForeground());
  g.drawLine(left,bottom,left+1000,bottom);
  g.drawLine(left,bottom,left,0);


  for (int i=0;i<epochs;i++)
  {
     bpnet.train(p1,t1,sampleNum);

      if (i==0)
     { //System.out.println(String.valueOf(bpnet.e));
       etime=(int)(150/bpnet.e);
       //System.out.println(String.valueOf(etime));
        for (int m=0;m<=bottom/20-3;m++)
          {
           g.drawLine(left,bottom-20*m,left-3,bottom-20*m);
           g.drawString(String.valueOf((int)(m*20/etime*1000)/1000.0),left-30,bottom-20*m);
           }
     }

     if ((i/100)*100==i)
        g.setColor(Color.blue);
        g.drawLine(left+i/100,bottom-(int)(bpnet.e*etime),left+i/100,bottom-(int)(bpnet.e*etime)-1);
        if ((i/10000)*10000==i){
        g.setColor(Color.black);
        g.drawLine(left+i/100,bottom,left+i/100,bottom+3);
        g.drawString(String.valueOf(i),left+i/100,bottom+15);
        }
   }

        txtarea.appendText("-----------------------------------\n");
        txtarea.appendText("BpNet\n");
        txtarea.appendText("-----------------------------------\n");
        txtarea.appendText("inNum:"+String.valueOf(bpnet.inNum)+"\n");
        txtarea.appendText("hideNum:"+String.valueOf(bpnet.hideNum)+"\n");
        txtarea.appendText("outNum:"+String.valueOf(bpnet.outNum)+"\n");
        txtarea.appendText("in_rate:"+String.valueOf(bpnet.in_rate)+"\n");
     
        txtarea.appendText("w\n");
        for (int i=0;i<bpnet.inNum;i++)
            for (int j=0;j<bpnet.hideNum;j++)
                  txtarea.appendText("w("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(bpnet.w[i][j])+"\n");
        txtarea.appendText("w1\n");
        for (int i=0;i<bpnet.hideNum;i++)
            for (int j=0;j<bpnet.outNum;j++)
                  txtarea.appendText("w1("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(bpnet.w1[i][j])+"\n");
        txtarea.appendText("b1\n");
        for (int i=0;i<bpnet.hideNum;i++)
             txtarea.appendText("b1("+String.valueOf(i)+")"+String.valueOf(bpnet.b1[i])+"\n");
        txtarea.appendText("b2\n");
        for (int i=0;i<bpnet.outNum;i++)
             txtarea.appendText("b2("+String.valueOf(i)+")"+String.valueOf(bpnet.b2[i])+"\n");
        txtarea.appendText("-----------------------------------\n");


   if (chkbox_save.getState())
   { try{
        ps=null;
        //ps=new PrintStream(new FileOutputStream(getCodeBase()+"nnsave.txt"));
        ps=new PrintStream(new FileOutputStream("nnsave.txt"));
        ps.println("-----------------------------------");
        ps.println("BpNet");
        ps.println("-----------------------------------");
        ps.println("inNum:"+String.valueOf(bpnet.inNum));
        ps.println("hideNum:"+String.valueOf(bpnet.hideNum));
        ps.println("outNum:"+String.valueOf(bpnet.outNum));
        ps.println("w");
        for (int i=0;i<bpnet.inNum;i++)
            for (int j=0;j<bpnet.hideNum;j++)
                 ps.println("w("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(bpnet.w[i][j]));
        ps.println("w1");
        for (int i=0;i<bpnet.hideNum;i++)
            for (int j=0;j<bpnet.outNum;j++)
                 ps.println("w1("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(bpnet.w1[i][j]));
        ps.println("b1");
        for (int i=0;i<bpnet.hideNum;i++)
            ps.println("b1("+String.valueOf(i)+")"+String.valueOf(bpnet.b1[i]));
        ps.println("b2");
        for (int i=0;i<bpnet.outNum;i++)
            ps.println("b2("+String.valueOf(i)+")"+String.valueOf(bpnet.b2[i]));
         ps.println("-----------------------------------");

    
     }
     catch(Exception e){}

    }//end if


}//end drawbptarin

public void drawBpSim(Graphics g){
     double p21[]=new double[inNum];
     double t2[]=new double[outNum];

    if (chkbox_save.getState())
   { try{
        ps=null;
        //ps=new PrintStream(new FileOutputStream(getCodeBase()+"nnsave.txt"));
        ps=new PrintStream(new FileOutputStream("nnsave.txt"));
        ps.println("-------------------------------");
        ps.println("BpNet Simulation Results:");
        ps.println("-------------------------------");
         }
     catch(Exception e){}
   }

    txtarea.appendText("-------------------------------\n");
    txtarea.appendText("BpNet Simulation Results:\n");
    txtarea.appendText("-------------------------------\n");


   for (int n=0;n<simNum;n++){

     for(int i=0;i<inNum;i++)
        p21[i]=p2[n][i];
     if (row>10)
     {
        row=0;
        cleartext(g);
     }
     t2=bpnet.sim(p21);
     row++;
     //g.drawString("inputValue:",left,bottom+20+row*20);
     txtarea.appendText("inputvalue:\n");
     for(int i=0;i<bpnet.inNum;i++)
        //g.drawString(String.valueOf(p21[i]),left+100+80*i,bottom+20+row*20);
        txtarea.appendText(String.valueOf(p21[i])+"\n");
     row++;
     //g.drawString("outputValue:",left,bottom+20+row*20);
     txtarea.appendText("outputvalue:\n");
     for(int i=0;i<bpnet.outNum;i++)
        //g.drawString(String.valueOf(t2[i]),left+100+80*i,bottom+20+row*20);
        txtarea.appendText(String.valueOf(t2[i])+"\n");

   if (chkbox_save.getState())
   { try{
        ps.println("input:");
        for(int i=0;i<bpnet.inNum;i++)
                ps.println(String.valueOf(p21[i]));
        ps.println("output:");
        for(int i=0;i<bpnet.outNum;i++)
                ps.println(String.valueOf(t2[i]));
         }
     catch(Exception e){}
   }

     }//end for n
   }//end drawbpsim

public void drawRbfTrain(Graphics g){

  int time=1000;
  double etime=100.0;
   rbfnet=null;

⌨️ 快捷键说明

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