アットウィキロゴ

そうふぉう

package ren;
 
 
public class pro {
 double[][] x=new double[101][4];
  int[] y=new int[101];
    int number;
    int number_var;
   int number_step;
    double[] beta=new double[5];
   double[][] alpha=new double[5][5];
   double[][][] theta=new double[6][5][5];
 
 
    double[] beta_op=new double[5];
   double[][] alpha_op=new double[5][5];
   double[][][] theta_op=new double[6][5][5];
 
 
 
 
 
    double[][] enc=new double[7][5];
 
    public static void main(String[] args) {
        pro test=new pro(); 
    }
    pro(){
 
 
         number=100;
        number_var=3;
        number_step=1;
        int s,v,tr,eq;
 
        for(s=1;s<number+1;s++){
        x[s][1]=Math.random();
        x[s][2]=Math.random();
        x[s][3]=Math.random();
        }
 
        for(s=1;s<number+1;s++){
        y[s]=0;
        if(2*x[s][1]+3*x[s][2]-x[s][3]>2)y[s]=1;
        }
 
faststep sub=new faststep();
sub.x=x;
sub.y=y;
sub.number_step=number_step;
sub.number_var=number_var;
sub.number=number;
sub.makedata();
alpha=sub.alpha_op;
beta=sub.beta_op;
theta=sub.theta_op;
 
check();        
 
int t;
double maxn=0; 
 
for(t=1;t<11;t++){
 
auto sub2=new auto();
sub2.x=x;
sub2.y=y;
sub2.number_step=number_step;
sub2.number_var=number_var;
sub2.number=number;
sub2.alpha=alpha;
sub2.beta=beta;
sub2.theta=theta;
sub2.makedata();
enc=sub2.enc_op;
 
rev sub3=new rev();
sub3.x=x;
sub3.y=y;
sub3.number_step=number_step;
sub3.number_var=number_var;
sub3.number=number;
sub3.alpha=alpha;
sub3.beta=beta;
sub3.theta=theta;
sub3.enc=enc;
sub3.makedata();
beta=sub3.beta_op;
 
number_step=number_step+1;
 
for(eq=1;eq<number_var;eq++){
for(v=0;v<number_var+1;v++){
theta[number_step][eq][v]=enc[eq][v];
    }}
 
int n=check2();        
if(n>maxn){maxn=n;
fresh();
}
 
number_step=number_step-1;
}
 
number_step=number_step+1;
 
 
 
 
refresh();
 
int n1=check2();
 
System.out.println(n1);
 
 
 
    }
 
 
 void refresh(){
 
int eq,m;
 
for(m=0;m<number_var+1;m++){
beta[m]=beta_op[m];
}
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
alpha[eq][m]=alpha_op[eq][m];
}}
 
int tr;
for(tr=1;tr<number_step+1;tr++){
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
theta[tr][eq][m]=theta_op[tr][eq][m];
}}}
 
 
 
 
 } 
 
 void fresh(){
 
int eq,m;
 
for(m=0;m<number_var+1;m++){
beta_op[m]=beta[m];
}
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
alpha_op[eq][m]=alpha[eq][m];
}}
 
int tr;
for(tr=1;tr<number_step+1;tr++){
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
theta_op[tr][eq][m]=theta[tr][eq][m];
}}}
 
 
 
 
 }   
 
 
 
void check(){
 
        int eq,s,sx;
double[][] e=new double[5][101];
  double[][] es=new double[5][101];
  int[] op=new int[101];
 
for(eq=1;eq<number_var+1;eq++){
for(s=1;s<number+1;s++){
double z=alpha[eq][0];
for(sx=1;sx<number_var+1;sx++){
z=z+alpha[eq][sx]*x[s][sx];    
}    
es[eq][s]=0;
if(z>0)es[eq][s]=1;
}
}
 
 
int tr;
 
for(tr=1;tr<number_step+1;tr++){
for(eq=1;eq<number_var+1;eq++){
for(s=1;s<number+1;s++){
e[eq][s]=es[eq][s];
}}
for(eq=1;eq<number_var+1;eq++){
for(s=1;s<number+1;s++){
double z=theta[tr][eq][0];
for(sx=1;sx<number_var+1;sx++){
z=z+theta[tr][eq][sx]*e[sx][s];    
}    
es[eq][s]=0;
if(z>0)es[eq][s]=1;
}
}
}
 
 
for(s=1;s<number+1;s++){
double z=beta[0];
for(sx=1;sx<number_var+2-number_step;sx++){
z=z+beta[sx]*es[sx][s];    
}    
op[s]=0;
if(z>0)op[s]=1;
}
 
int n=0;
for(s=1;s<number+1;s++){
if(op[s]==y[s])n=n+1;    
}
 
 
 
}    
 
    int check2(){
 
        int eq,s,sx;
double[][] e=new double[5][101];
  double[][] es=new double[5][101];
  int[] op=new int[101];
 
for(eq=1;eq<number_var+1;eq++){
for(s=1;s<number+1;s++){
double z=alpha[eq][0];
for(sx=1;sx<number_var+1;sx++){
z=z+alpha[eq][sx]*x[s][sx];    
}    
es[eq][s]=0;
if(z>0)es[eq][s]=1;
}
}
 
 
int tr;
 
for(tr=1;tr<number_step+1;tr++){
 
for(eq=1;eq<number_var+1;eq++){
for(s=1;s<number+1;s++){
e[eq][s]=es[eq][s];
}}
 
 
int m1=number_var+1-tr;
for(eq=1;eq<m1+1;eq++){
for(s=1;s<number+1;s++){
double z=theta[tr][eq][0];
int m2=number_var+2-tr;
if(tr==1)m2=number_var;
for(sx=1;sx<m2+1;sx++){
z=z+theta[tr][eq][sx]*e[sx][s];    
}    
es[eq][s]=0;
if(z>0)es[eq][s]=1;
}
}
}
 
 
for(s=1;s<number+1;s++){
double z=beta[0];
for(sx=1;sx<number_var+2-number_step;sx++){
z=z+beta[sx]*es[sx][s];    
}    
op[s]=0;
if(z>0)op[s]=1;
}
 
int n=0;
for(s=1;s<number+1;s++){
if(op[s]==y[s])n=n+1;    
}
 
return n;
 
 
}    
 
 
 
}
 
最終更新:2018年03月20日 23:29