📄 nn.java
字号:
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 + -