package nnx;
public class auto {
int number;
int number_step;
int number_var;
double[] beta=new double[5];
double[][] alpha=new double[5][5];
double[][][] theta=new double[6][5][5];
double[][] sig_op=new double[5][5];
double[][] sig=new double[5][5];
int[] op=new int[101];
int[] y=new int[101];
double[][] x=new double[101][4];
int s,sx,tr;
int eq,v;
double[][] e=new double[5][101];
double[][] es=new double[5][101];
void makedata(){
for(eq=1;eq<number_var+1;eq++){
for(s=1;s<number+1;s++){
double z=alpha[eq][0];
for(v=1;v<number_var+1;v++){
z=z+alpha[eq][v]*x[s][v];
}
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(v=1;v<number_var+1;v++){
z=z+theta[tr][eq][v]*e[v][s];
}
es[eq][s]=0;
if(z>0)es[eq][s]=1;
}
}
}
int trial;
double maxc=500;
for(trial=1;trial<11;trial++){
nn_auto sub=new nn_auto();
sub.es=es;
sub.number_var=number_var;
sub.number=number;
sub.makedata();
sig=sub.sig;
double m1=count();
if(m1<maxc){
maxc=m1;
for(eq=1;eq<number_var+1;eq++){
for(v=0;v<number_var+1;v++){
sig_op[eq][v]=sig[eq][v];
}
}
}
}
}
double count(){
int s,eq,v;
double[][] esx=new double[5][101];
for(s=1;s<number+1;s++){
for(eq=1;eq<number_var+1;eq++){
double z=sig[eq][0];
for(v=1;v<number_var+1;v++){
z=z+sig[eq][v]*es[v][s];
}
esx[eq][s]=0;
if(z>0)esx[eq][s]=1;
}
}
double z1=0;
for(s=1;s<number+1;s++){
for(eq=1;eq<number_var+1;eq++){
z1=z1+(es[eq][s]-esx[eq][s])*(es[eq][s]-esx[eq][s]);
}
}
return z1;
}
}
最終更新:2018年03月13日 01:37