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

📄 nn.java

📁 用java编写的bp网络和rbf网络的源程序 JNNT由java语言写成
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   rbfnet=new RbfNet(Integer.parseInt(inNumChoice.getSelectedItem()),Integer.parseInt(hideNumChoice.getSelectedItem()),Integer.parseInt(outNumChoice.getSelectedItem()),p1);
  inNum=Integer.parseInt(inNumChoice.getSelectedItem());
  hideNum=Integer.parseInt(hideNumChoice.getSelectedItem());
  outNum=Integer.parseInt(outNumChoice.getSelectedItem());
 
 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++)
  {
     rbfnet.train(p1,t1,sampleNum);

     if (i==0)
     { System.out.println(String.valueOf(rbfnet.e));
       etime=(int)(150/rbfnet.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);
           }
     }

     //System.out.println(String.valueOf(rbfnet.e));
     if ((i/100)*100==i)
        g.setColor(Color.blue);
        g.drawLine(left+i/100,bottom-(int)(rbfnet.e*etime),left+i/100,bottom-(int)(rbfnet.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);
        }
   }
   //System.out.println(String.valueOf(rbfnet.e));
        txtarea.appendText("-----------------------------------\n");
        txtarea.appendText("RbfNet\n");
        txtarea.appendText("-----------------------------------\n");
        txtarea.appendText("inNum:"+String.valueOf(rbfnet.inNum)+"\n");
        txtarea.appendText("hideNum:"+String.valueOf(rbfnet.hideNum)+"\n");
        txtarea.appendText("outNum:"+String.valueOf(rbfnet.outNum)+"\n");
        txtarea.appendText("c"+"\n");
        for (int i=0;i<rbfnet.hideNum;i++)
            for (int j=0;j<rbfnet.inNum;j++)
                 txtarea.appendText("c("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(rbfnet.c[i][j])+"\n");
        txtarea.appendText("d\n");
        for (int i=0;i<rbfnet.hideNum;i++)
            txtarea.appendText("d("+String.valueOf(i)+")"+String.valueOf(rbfnet.d[i])+"\n");

        txtarea.appendText("w1\n");
        for (int i=0;i<rbfnet.hideNum;i++)
            for (int j=0;j<rbfnet.outNum;j++)
                 txtarea.appendText("w1("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(rbfnet.w1[i][j])+"\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("RbfNet");
        ps.println("-----------------------------------");
        ps.println("inNum:"+String.valueOf(rbfnet.inNum));
        ps.println("hideNum:"+String.valueOf(rbfnet.hideNum));
        ps.println("outNum:"+String.valueOf(rbfnet.outNum));
        ps.println("c");
        for (int i=0;i<rbfnet.hideNum;i++)
            for (int j=0;j<rbfnet.inNum;j++)
                 ps.println("c("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(rbfnet.c[i][j]));
        ps.println("d");
        for (int i=0;i<rbfnet.hideNum;i++)
            ps.println("d("+String.valueOf(i)+")"+String.valueOf(rbfnet.d[i]));

        ps.println("w1");
        for (int i=0;i<rbfnet.hideNum;i++)
            for (int j=0;j<rbfnet.outNum;j++)
                 ps.println("w1("+String.valueOf(i)+","+String.valueOf(j)+")"+String.valueOf(rbfnet.w1[i][j]));
            ps.println("-----------------------------------");

    
     }
     catch(Exception e){}
   }//end if


}//end drawRbftarin

public void drawRbfSim(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("RbfNet Simulation Results:");
        ps.println("-------------------------------");
         }
     catch(Exception e){}
   }

    txtarea.appendText("-------------------------------\n");
    txtarea.appendText("RbfNet 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=rbfnet.sim(p21);
     row++;
     //g.drawString("inputValue:",left,bottom+20+row*20);
     txtarea.appendText("inputvalue:\n");
     for(int i=0;i<rbfnet.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<rbfnet.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<rbfnet.inNum;i++)
                ps.println(String.valueOf(p21[i]));
        ps.println("output:");
        for(int i=0;i<rbfnet.outNum;i++)
                ps.println(String.valueOf(t2[i]));
         }
     catch(Exception e){}
   }

     }//end for n
   }//end drawRbfsim


public void drawLBG(Graphics g){
    clearall(g);
    LBG lbg=new LBG(p1,hideNum);


    txtarea.appendText("-------------------------------\n");
    txtarea.appendText("LBG clustering Results:\n");
    txtarea.appendText("-------------------------------\n");

    for (int i=0;i<p1.length;i++)
    {  // g.drawString("{",left,top+20*i);
        txtarea.appendText("{");
        for (int j=0;j<inNum;j++)
            {  if (j>0)
                   //g.drawString(",",left+10+j*50,top+20*i);
                   txtarea.appendText(",");
               //g.drawString(String.valueOf(p1[i][j]),left+15+j*50,top+20*i);
               txtarea.appendText(String.valueOf(p1[i][j]));
            }
        //g.drawString("}",left+50*inNum+25,top+20*i);
        txtarea.appendText("}");
        //g.drawString(String.valueOf(lbg.indext[i]),left+40+50*inNum,top+20*i);
        txtarea.appendText(String.valueOf(lbg.indext[i])+"\n");
    }//end for i
    }

public void loadData(Graphics g){//读取学习数据

    //Frame f=new Frame("file open");
    //FileDialog fd=new FileDialog(f,"File Open");
    //fd.show();

    clearall(g);
    row=0;
    String str_p1="";
    String str_t1="";
    String str_p2="";
    try
    {URL filedata=null;
     DataInputStream dis=null;
     //System.out.println(getCodeBase()+"nndata.txt");
     filedata=new URL(getCodeBase()+"nndata.txt");
     //filedata=new URL(getCodeBase()+fd.getFile());
     dis=new DataInputStream(filedata.openStream());
     String line=dis.readLine();

     row++;
     simNum=1;
     while(line!=null)
       { //System.out.println(line);

         if (line.indexOf("inNum:")>=0)
           inNum=Integer.parseInt(line.substring(line.indexOf("inNum:")+6));
         if (line.indexOf("hideNum:")>=0)
           hideNum=Integer.parseInt(line.substring(line.indexOf("hideNum:")+8));
         if (line.indexOf("outNum:")>=0)
           outNum=Integer.parseInt(line.substring(line.indexOf("outNum:")+7));
         if (line.indexOf("sampleNum:")>=0)
           sampleNum=Integer.parseInt(line.substring(line.indexOf("sampleNum:")+10));
         if (line.indexOf("simNum:")>=0)
           simNum=Integer.parseInt(line.substring(line.indexOf("simNum:")+7));

         if (line.indexOf("p1:")>=0)
           str_p1+=line.substring(line.indexOf("p1:")+3);
         if (line.indexOf("t1:")>=0)
           str_t1+=line.substring(line.indexOf("t1:")+3);
         if (line.indexOf("p2:")>=0)
           str_p2+=line.substring(line.indexOf("p2:")+3);
        //cleartext(g);
        //g.drawString(line,left,bottom+20+row*20);
        txtarea.appendText(line+"\n");
        row++;
        line=dis.readLine();
       }//end while
      inNumChoice.select(String.valueOf(inNum));
      hideNumChoice.select(String.valueOf(hideNum));
      outNumChoice.select(String.valueOf(outNum));

     p1=new double[sampleNum][inNum];
     t1=new double[sampleNum][outNum];
     p2=new double[simNum][inNum];
     p1=readarray(sampleNum,inNum,str_p1);
     t1=readarray(sampleNum,outNum,str_t1);
     p2=readarray(simNum,inNum,str_p2);


     }//end try
     catch(Exception e){System.out.println(e.getMessage());}



     }//end loadData

public void update(Graphics g){

    paint(g);
    
    }//end update
    
//读取数据到数组
public double[][] readarray(int r,int c,String str_array){
String str_flow=str_array;
String str_num="";
double array[][]=new double[r][c];
for(int i=0;i<r;i++)
    for(int j=0;j<c;j++)
        {    while ((str_flow.charAt(0)=='{' )||(str_flow.charAt(0)==',' )||(str_flow.charAt(0)=='}' ))
                   str_flow=str_flow.substring(1);
             str_num="";
             while ((str_flow.charAt(0)!='{' )&&(str_flow.charAt(0)!=',' )&&(str_flow.charAt(0)!='}' ))
                   {str_num+=str_flow.substring(0,1);
                    str_flow=str_flow.substring(1);
                    }
             array[i][j]=Double.valueOf(str_num).doubleValue();
             //System.out.println(String.valueOf(array[i][j]));
         }//end for

return array;
}//end readdarray

public void cleartext(Graphics g)
{
 g.setColor(getBackground());
 g.fillRect(0,bottom+20,this.size().width,this.size().height);
 g.setColor(getForeground());
}

public void clearall(Graphics g)
{
 g.setColor(getBackground());
 g.fillRect(0,0,this.size().width,this.size().height);
g.setColor(getForeground());
}

static Frame getFrame (Component c) {
       while ((c=c.getParent())!=null) {
           if (c instanceof Frame)
               return (Frame) c;
       }
       return null;
 }

static void printComponents (Component c) {
       Toolkit  tk=Toolkit.getDefaultToolkit();
       Frame frame=getFrame(c);
       Properties props=new Properties();

       props.put("awt.print.printer","durange");
       props.put("awt.print.numCopies","2");

       if (tk!=null) {
          String name=c.getName()+"print job";
          PrintJob pj=tk.getPrintJob(frame,name,props);

          if (pj!=null) {
             Graphics pg=pj.getGraphics();

             if(pg!=null){
               try{
                  c.printAll(pg);
                  }
                  finally{
                    pg.dispose();
                   }
               }

               pj.end();
             }
             System.out.println(props);
          }
       }



}

⌨️ 快捷键说明

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