/** * Constructor of the class * * @param long_tabla_tra it contains the size of the training table * @param vtra it contains the input training data * @param stra it contains the output training data * @param long_tabla_tst it contains the size of the test table * @param vtest it contains the input training data * @param stest it contains the output training data * @param n_variables it contains the number of variables * @param reglas it contains the number of rules * @param var it contains the number of state variables * @param sal it contains the defect exit value * @param v it contains the values of data base */ public Ecm( int long_tabla_tra, double[][] vtra, double[] stra, int long_tabla_tst, double[][] vtest, double[] stest, int n_variables, int reglas, int var, double sal, double[] v) { Bs = new Base(n_variables, reglas, var, sal, v); tabla_tra = new Ttabla[long_tabla_tra]; tabla_tst = new Ttabla[long_tabla_tst]; this.long_tabla_tra = long_tabla_tra; this.long_tabla_tst = long_tabla_tst; for (int i = 0; i < long_tabla_tra; i++) { tabla_tra[i] = new Ttabla(n_variables); } for (int i = 0; i < long_tabla_tra; i++) { tabla_tra[i].ejemplo = new double[n_variables]; for (int j = 0; j < n_variables - 1; j++) { tabla_tra[i].ejemplo[j] = vtra[i][j]; } tabla_tra[i].ejemplo[n_variables - 1] = stra[i]; } for (int i = 0; i < long_tabla_tst; i++) { tabla_tst[i] = new Ttabla(n_variables); } for (int i = 0; i < long_tabla_tst; i++) { tabla_tst[i].ejemplo = new double[n_variables]; for (int j = 0; j < n_variables - 1; j++) { tabla_tst[i].ejemplo[j] = vtest[i][j]; } tabla_tst[i].ejemplo[n_variables - 1] = stest[i]; } extremos = new TipoIntervalo[n_variables]; for (int i = 0; i < n_variables; i++) { extremos[i] = new TipoIntervalo(); extremos[i].set_max(tabla_tra[0].ejemplo[i]); extremos[i].set_min(tabla_tra[0].ejemplo[i]); } int i, j; for (i = 0; i < long_tabla_tra; i++) for (j = 0; j < Bs.getN_variables(); j++) { if (tabla_tra[i].ejemplo[j] < extremos[j].min()) extremos[j].set_min(tabla_tra[i].ejemplo[j]); if (tabla_tra[i].ejemplo[j] > extremos[j].max()) extremos[j].set_max(tabla_tra[i].ejemplo[j]); } this.Bs.setN_var_estado(Bs.getN_variables() - 1); for (i = 0; i < Bs.getN_reglas(); i++) this.Bs.setIndex(i, i); for (i = 0; i < Bs.getN_variables(); i++) this.Bs.setN_etiquetas(i, 0); /* Extracción de la BD */ int k; int temp, num_etiq; double ancho; Difuso Dtemp = new Difuso(); for (j = 0; j < Bs.getN_variables(); j++) { for (i = 0; i < Bs.getN_reglas(); i++) { for (k = 0; k < Bs.getN_etiquetas(j); k++) { if (Bs.getBDatos(j, k) != null) { if (Bs.getB(i, j).x0() == ((Difuso) Bs.getBDatos(j, k)).x0() && Bs.getB(i, j).x1() == ((Difuso) Bs.getBDatos(j, k)).x1() && Bs.getB(i, j).x3() == ((Difuso) Bs.getBDatos(j, k)).x3()) break; } } if (k == Bs.getN_etiquetas(j)) { /* etiqueta nueva */ Bs.setN_etiquetas(j, Bs.getN_etiquetas(j) + 1); Bs.setBDatos(j, k, new Difuso()); ((Difuso) Bs.getBDatos(j, k)).setx0(Bs.getB(i, j).x0()); ((Difuso) Bs.getBDatos(j, k)).setx1(Bs.getB(i, j).x1()); ((Difuso) Bs.getBDatos(j, k)).setx3(Bs.getB(i, j).x3()); ((Difuso) Bs.getBDatos(j, k)).setx2(Bs.getB(i, j).x2()); ((Difuso) Bs.getBDatos(j, k)).sety(Bs.getB(i, j).y()); ((Difuso) Bs.getBDatos(j, k)).setml(Bs.getB(i, j).ml()); } } } /* Ordenacion de la BD */ for (j = 0; j < Bs.getN_variables(); j++) for (i = 0; i < Bs.getN_etiquetas(j); i++) for (k = 0; k < Bs.getN_etiquetas(j) - 1 - i; k++) { if (((Difuso) ((Base) Bs).getBDatos(j, k + 1)).x1() < ((Difuso) Bs.getBDatos(j, k)).x1()) { Dtemp.set_difuso((Difuso) Bs.getBDatos(j, k)); ((Difuso) Bs.getBDatos(j, k)).set_difuso((Difuso) Bs.getBDatos(j, k + 1)); ((Difuso) Bs.getBDatos(j, k + 1)).set_difuso(Dtemp); } } /* Completando la BD */ for (j = 0; j < Bs.getN_variables(); j++) { Dtemp.set_difuso((Difuso) Bs.getBDatos(j, 0)); ancho = (Dtemp.x3() - Dtemp.x0()); num_etiq = Bs.getN_etiquetas(j); for (; extremos[j].min() < Dtemp.x0() + ancho * 0.05; ) { Bs.setN_etiquetas(j, Bs.getN_etiquetas(j) + 1); Bs.setBDatos(j, Bs.getN_etiquetas(j) - 1, new Difuso()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx0(Dtemp.x1() - ancho); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx1(Dtemp.x0()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx2(Dtemp.x0()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx3(Dtemp.x1()); Dtemp.set_difuso((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)); } for (i = 1; i < num_etiq; ) if ((Dtemp.x1() - ancho * 0.05 < ((Difuso) Bs.getBDatos(j, i)).x0()) && (Dtemp.x1() + ancho * 0.05 > ((Difuso) Bs.getBDatos(j, i)).x0())) { Dtemp.set_difuso((Difuso) Bs.getBDatos(j, i)); ancho = (Dtemp.x3() - Dtemp.x0()); i++; } else { Bs.setN_etiquetas(j, Bs.getN_etiquetas(j) + 1); Bs.setBDatos(j, Bs.getN_etiquetas(j) - 1, new Difuso()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx0(Dtemp.x1()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx1(Dtemp.x3()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx2(Dtemp.x3()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx3(Dtemp.x1() + ancho); Dtemp.set_difuso((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)); } for (; extremos[j].max() > Dtemp.x3() - ancho * 0.05; ) { Bs.setN_etiquetas(j, Bs.getN_etiquetas(j) + 1); Bs.setBDatos(j, Bs.getN_etiquetas(j) - 1, new Difuso()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx0(Dtemp.x1()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx1(Dtemp.x3()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx2(Dtemp.x3()); ((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)).setx3(Dtemp.x1() + ancho); Dtemp.set_difuso((Difuso) Bs.getBDatos(j, Bs.getN_etiquetas(j) - 1)); } } /* Ordenacion de la BD */ for (j = 0; j < Bs.getN_variables(); j++) for (i = 0; i < Bs.getN_etiquetas(j); i++) for (k = 0; k < Bs.getN_etiquetas(j) - 1 - i; k++) if (((Difuso) Bs.getBDatos(j, k + 1)).x1() < ((Difuso) Bs.getBDatos(j, k)).x1()) { Dtemp.set_difuso((Difuso) Bs.getBDatos(j, k)); ((Difuso) Bs.getBDatos(j, k)).set_difuso((Difuso) Bs.getBDatos(j, k + 1)); ((Difuso) Bs.getBDatos(j, k + 1)).set_difuso(Dtemp); } /* Extracción de la BR */ for (j = 0; j < Bs.getN_variables(); j++) for (i = 0; i < Bs.getN_reglas(); i++) { for (k = 0; k < Bs.getN_etiquetas(j); k++) if (Bs.getB(i, j).x0() == ((Difuso) Bs.getBDatos(j, k)).x0() && Bs.getB(i, j).x1() == ((Difuso) Bs.getBDatos(j, k)).x1() && Bs.getB(i, j).x3() == ((Difuso) Bs.getBDatos(j, k)).x3()) break; Bs.setBregla(i, j, k); // [i][j] = k; } for (i = 0; i < Bs.getN_reglas(); i++) for (j = 0; j < Bs.getN_reglas() - 1 - i; j++) if (MENOR(Bs.getBregla(Bs.getIndex(j + 1)), Bs.getBregla(Bs.getIndex(j))) > 0) { temp = Bs.getIndex(j); Bs.setIndex(j, Bs.getIndex(j + 1)); Bs.setIndex(j + 1, temp); } }
public void getB() { super.getB(); System.out.println("this is extends getB"); }