アットウィキロゴ

225じけ

package nnx;
 
public class nn_auto {
 
    int number;
    int number_var;
     double[][] es=new double[5][101];
    double[][] sig=new double[5][5];
     double[][] sigx=new double[5][101];
 
     double[][] dsig=new double[5][5];
 
 
    void makedata(){
 
 
        int eq,v;
 
    for(eq=1;eq<number_var+1;eq++){
    sig[eq][0]=-Math.random();
    for(v=1;v<number_var+1;v++){
    sig[eq][v]=Math.random();
    }            
   }
        int trial=0;
    while(trial<100){
    double g1;
 
    trial=trial+1;
 
 
       f_auto sub=new f_auto();
       sub.sig=sig;
       sub.es=es;
       sub.number_var=number_var;
       sub.number=number;
       g1=sub.makedata();
 
 
 
    for(eq=1;eq<number_var+1;eq++){
    for(v=0;v<number_var+1;v++){
 
    double h=0.01;    
 
    int eq1,v1;
 
    for(eq1=1;eq1<number_var+1;eq1++){
    for(v1=0;v1<number_var+1;v1++){
    sigx[eq1][v1]=sig[eq1][v1];
    }}
 
    sigx[eq][v]=sig[eq][v]+h;    
 
double g2;    
 
      f_auto sub2=new f_auto();
       sub2.sig=sigx;
       sub2.es=es;
       sub2.number_var=number_var;
       sub2.number=number;
       g2=sub2.makedata();
 
       dsig[eq][v]=(g2-g1)/h;
 
 
 
 
 
    }}   
 
    double e=0;
    for(eq=1;eq<number_var+1;eq++){
    for(v=0;v<number_var+1;v++){
    e=e+dsig[eq][v]*dsig[eq][v];
    }}
 
    for(eq=1;eq<number_var+1;eq++){
    for(v=0;v<number_var+1;v++){
    sigx[eq][v]=sig[eq][v]-0.01*g1*dsig[eq][v]/e;
    }}
 
    double g2;
 
    f_auto sub3=new f_auto();
       sub3.sig=sigx;
       sub3.es=es;
       sub3.number_var=number_var;
       sub3.number=number;
       g2=sub3.makedata();
 
   if(g2<g1){
 
    for(eq=1;eq<number_var+1;eq++){
    for(v=0;v<number_var+1;v++){
    sig[eq][v]=sigx[eq][v];
    }}   
 
 
   }
 
 
    trial=trial+1;   
  if(g2>g1)trial=1000;     
    }
 
 
    }
 
 
}
 
最終更新:2018年03月13日 01:47