アットウィキロゴ

SISSY

package ren;
 
 
public class pro {
 
    int[] y=new int[400];
    int[][] e=new int[400][3];
  int datanumber,number;
  double[] beta=new double[3];
double alpha;  
 
 double[] dbeta=new double[3];
 double dalpha;
 
 
 public static void main(String[] args) {
        pro t=new pro();
    }
    pro(){
 
        datanumber=100;
        number=2;
        int s;
        for(s=1;s<datanumber+1;s++){
    y[s]=0;
      if(Math.random()>0.5)y[s]=1;
 
 
 
        }
 
         for(s=1;s<datanumber+1;s++){
         e[s][1]=0;
         int h=0;
       if(Math.random()>0.5)h=h+1;
       if(y[s]>0)h=h+1;
       if(h==2)e[s][1]=1;
       e[s][2]=0;
         h=0;
       if(Math.random()>0.5)h=h+1;
       if(y[s]>0)h=h+1;
       if(h==2)e[s][2]=1;
               }
 
      alpha=0;
      beta[1]=0;
      beta[2]=0;
 
      int mode=0;
      while(mode<100){
 
      ex sub=new ex();
      sub.e=e;
      sub.y=y;
      sub.number=number;
      sub.datanumber=datanumber;
      sub.alpha=alpha;
      sub.beta=beta;
      double u1=sub.makedata();
 
 
       double[] betax=new double[3];  
 
      System.out.println(u1);
 
       double de=0.01;
 
      for(s=1;s<number+1;s++){
 
 
 
          int sx;
      for(sx=1;sx<number+1;sx++){
      betax[sx]=beta[sx];   
      }    
 
 
 
      betax[s]=beta[s]+de;
 
      ex sub2=new ex();
      sub2.e=e;
      sub2.y=y;
      sub2.number=number;
      sub2.datanumber=datanumber;
      sub2.alpha=alpha;
      sub2.beta=betax;
      double u2=sub2.makedata();   
 
      dbeta[s]=(u2-u1)/de;
 
      }
 
 
 
 
 
 
 
      ex sub3=new ex();
      sub3.e=e;
      sub3.y=y;
      sub3.number=number;
      sub3.datanumber=datanumber;
      sub3.alpha=alpha+de;
      sub3.beta=beta;
      double u3=sub3.makedata();   
 
      dalpha=(u3-u1)/de;
 
 
 
      double du=-u1/100;
 
 
      int sx;
      double dz=dalpha*dalpha;
      for(sx=1;sx<number+1;sx++){
      dz=dz+dbeta[sx]*dbeta[sx];    
      }  
      double t=du/dz;
 
 
 
      for(sx=1;sx<number+1;sx++){
      betax[sx]=beta[sx]+dbeta[sx]*t;    
      }  
 
 
 
     ex sub4=new ex();
      sub4.e=e;
      sub4.y=y;
      sub4.number=number;
      sub4.datanumber=datanumber;
      sub4.alpha=alpha+t*dalpha;
      sub4.beta=betax;
      double u4=sub3.makedata();  
 
 
      if(u1>u4){
      alpha=alpha+t*dalpha;    
      for(sx=1;sx<number+1;sx++){
      beta[sx]=beta[sx]+dbeta[sx]*t;    
       }    
      }
 
      System.out.println(t+","+u1+","+u4);
      if(u4>u1)mode=1000;
 
      mode=mode+1;
      }
 
 
 
 
    }
 
 
 
}
 
最終更新:2016年12月17日 07:33