アットウィキロゴ

DEEPL

package tara;
 
public class pro {
 
    int number;
    int number_step;
    int number_var;
    double[] beta=new double[5];
   double[][] alpha=new double[5][5];
   double[][][] theta=new double[5][5][5];
 
 
    int[] op=new int[101];
   int[] y=new int[101];
    double[][] x=new double[101][3];
 int s,sx,tr;
 
 
    public static void main(String[] args) {
        pro test=new pro();
    }
    pro(){
 
        int maxc=0;
   number_step=1;
   number_var=2;
   number=100;
 
        for(s=1;s<number+1;s++){
    x[s][1]=Math.random();
    x[s][2]=Math.random();
    }    
 
for(s=1;s<number+1;s++){
y[s]=0;    
if(x[s][1]+x[s][2]>1)y[s]=1;
}
 
 
 
 
 
 
 
   for(s=1;s<number_var+1;s++){
    alpha[s][0]=-Math.random();
    for(sx=1;sx<number_var+1;sx++){
    alpha[s][sx]=Math.random();
    }            
   }
 
    beta[0]=-Math.random();
    for(sx=1;sx<number_var+1;sx++){
    beta[sx]=Math.random();
    } 
 
 
for(tr=1;tr<number_step+1;tr++){    
    for(s=1;s<number_var+1;s++){
    theta[tr][s][0]=-Math.random();
    for(sx=1;sx<number_var+1;sx++){
    theta[tr][s][sx]=Math.random();
    }            
   }
}
 
int de;
for(de=1;de<3;de++){
 
game sub=new game();
sub.x=x;
sub.y=y;
sub.number_step=number_step;
sub.number_var=number_var;
sub.number=number;
sub.alpha=alpha;
sub.beta=beta;
sub.theta=theta;
sub.makedata();
alpha=sub.alpha_op;
beta=sub.beta_op;
theta=sub.theta_op;
 
number_step=number_step+1;
 
for(s=1;s<number_var+1;s++){
for(sx=1;sx<number_var+1;sx++){
theta[number_step][s][sx]=0;
 }     
}
 
 
 
for(s=1;s<number_var+1;s++){
theta[number_step][s][0]=0;
theta[number_step][s][s]=1;
}
 
 
}
 
 
   }
 
 
 
}
 
package tara;
 
 
public class game{
 
    int number;
    int number_step;
    int number_var;
    double[] beta=new double[5];
   double[][] alpha=new double[5][5];
   double[][][] theta=new double[5][5][5];
 
   double[] beta_op=new double[5];
   double[][] alpha_op=new double[5][5];
   double[][][] theta_op=new double[5][5][5];
 
    int[] op=new int[101];
   int[] y=new int[101];
    double[][] x=new double[101][3];
 int s,sx,tr;
 
 
 
    void makedata(){
 
 
       int maxc=0; 
        int trial;
   for(trial=1;trial<101;trial++){     
 
 
 
 
 
   for(s=1;s<number_var+1;s++){
    alpha[s][0]=-Math.random();
    for(sx=1;sx<number_var+1;sx++){
    alpha[s][sx]=Math.random();
    }            
   }
 
    beta[0]=-Math.random();
    for(sx=1;sx<number_var+1;sx++){
    beta[sx]=Math.random();
    } 
 
 
for(tr=1;tr<number_step+1;tr++){    
    for(s=1;s<number_var+1;s++){
    theta[tr][s][0]=-Math.random();
    for(sx=1;sx<number_var+1;sx++){
    theta[tr][s][sx]=Math.random();
    }            
   }
}
 
double g1;
 
nn sub=new nn();
sub.x=x;
sub.y=y;
sub.number_step=number_step;
sub.number_var=number_var;
sub.number=number;
sub.alpha=alpha;
sub.beta=beta;
sub.theta=theta;
sub.makedata();
alpha=sub.alpha;
beta=sub.beta;
theta=sub.theta;
 
 
int eq;
double[][] e=new double[5][101];
  double[][] es=new double[5][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;
}
}
 
 
 
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+1;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;    
}
 
if(n>maxc)fresh();
if(n>maxc)maxc=n;   
 
   }
System.out.println(maxc);
 
    }
 
    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];
}}
 
for(tr=1;tr<number_step+1l;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];
}}}
 
 
 
 
 }   
 
 
 
}
 
 
 
 
package tara;
 
 
public class nn {
 
    int number;
    int number_step;
    int number_var;
    double[] beta=new double[5];
   double[][] alpha=new double[5][5];
   double[][][] theta=new double[3][5][5];
 
   int[] y=new int[101];
    double[][] x=new double[101][3];
 int s,sx,tr;
 
 double[][] a=new double[7][3];
double[][] dalpha=new double[7][3];
 
double[] b=new double[3];
double[] dbeta=new double[3];
 
 
double[][] dtheta=new double[3][5];
double[][][] th=new double[3][5][5];
 
 
    void makedata(){
 
 
int q,s,sx;
 
 
 
double g1=0;
double g2;
 
int trial=0;
while(trial<100){
 
trial=trial+1;
 
f sub=new f();
sub.x=x;
sub.y=y;
sub.number_step=number_step;
sub.number_var=number_var;
sub.number=number;
sub.alpha=alpha;
sub.beta=beta;
sub.theta=theta;
g1=sub.makedata();
 
 
 
int eq,m;
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
 
    fresh();
 
double h=0.01;
 
a[eq][m]=a[eq][m]+h;
 
f sub2=new f();
sub2.x=x;
sub2.y=y;
sub2.number_step=number_step;
sub2.number_var=number_var;
sub2.number=number;
sub2.alpha=a;
sub2.beta=beta;
sub2.theta=theta;
g2=sub2.makedata();
 
dalpha[eq][m]=(g2-g1)/h;
 
}
 
}
 
for(m=0;m<number_var+1;m++){
 
    fresh();
 
double h=0.01;
 
b[m]=b[m]+h;
 
f sub2=new f();
sub2.x=x;
sub2.y=y;
sub2.number_step=number_step;
sub2.number_var=number_var;
sub2.number=number;
sub2.alpha=alpha;
sub2.beta=b;
sub2.theta=theta;
g2=sub2.makedata();
 
dbeta[m]=(g2-g1)/h;
 
}
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
 
 
double h=0.01;
 
fresh();
 
th[number_step][eq][m]=theta[number_step][eq][m]+h;
 
f sub3=new f();
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=th;
g2=sub3.makedata();
 
dtheta[eq][m]=(g2-g1)/h;
 
}
 
}
 
fresh();
 
double sig=0;
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
sig=sig+dtheta[eq][m]*dtheta[eq][m];    
}
}
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
sig=sig+dalpha[eq][m]*dalpha[eq][m];    
}
}     
 
for(m=0;m<number_var+1;m++){
sig=sig+dbeta[m]*dbeta[m];    
}
 
for(m=0;m<number_var+1;m++){
b[m]=beta[m]-0.01*g1*dbeta[m]/sig;
}
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
a[eq][m]=alpha[eq][m]-0.01*g1*dalpha[eq][m]/sig;
}}
 
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
th[number_step][eq][m]=theta[number_step][eq][m]-0.01*g1*dtheta[eq][m]/sig;
}}
 
 
f sub4=new f();
sub4.x=x;
sub4.y=y;
sub4.number_step=number_step;
sub4.number_var=number_var;
sub4.number=number;
sub4.alpha=a;
sub4.beta=b;
sub4.theta=th;
g2=sub4.makedata();
 
if(g2<g1)refresh();
if(g2>g1)trial=10000;
 
}
 
 
    }
 void fresh(){
 
int eq,m;
 
for(m=0;m<number_var+1;m++){
b[m]=beta[m];
}
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
a[eq][m]=alpha[eq][m];
}}
 
for(tr=1;tr<number_step+1l;tr++){
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
th[tr][eq][m]=theta[tr][eq][m];
}}}
 
 
 
 
 }   
 
 
    void refresh(){
 
int eq,m;
 
for(m=0;m<number_var+1;m++){
beta[m]=b[m];
}
 
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
alpha[eq][m]=a[eq][m];
}}
 
for(tr=1;tr<number_step+1l;tr++){
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
theta[tr][eq][m]=th[tr][eq][m];
}}}
 
 
 
 
 }   
 
 
 
    }
 
 
package tara;
 
public class f {
 
   double[] op=new double[101];
  double[][] e=new double[5][101];
  double[][] es=new double[5][101];
  int number;
    int number_step;
    int number_var;
    double[] beta=new double[5];
   double[][] alpha=new double[5][5];
   double[][][] theta=new double[3][5][5];
 
   int[] y=new int[101];
    double[][] x=new double[101][3];
 int s,sx,tr;
 
    double makedata(){
 
int s,sx;      
 
 
int eq;
 
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]=1/(1+Math.exp(-z));
}
}
 
 
 
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]=1/(1+Math.exp(-z));
}
}
}
 
 
for(s=1;s<number+1;s++){
double z=beta[0];
for(sx=1;sx<number_var+1;sx++){
z=z+beta[sx]*es[sx][s];    
}    
op[s]=1/(1+Math.exp(-z));
}
 
 
 
double don=0;
for(s=1;s<number+1;s++){
don=don+(op[s]-y[s])*(op[s]-y[s]);
 }
 
return don; 
 
 
 
 
 
 
 
 
 
}
}
 
最終更新:2018年03月09日 14:51