Exemplo n.º 1
0
  /** Function which selects the elements of the population */
  public void Select() {

    int i, j;

    for (i = 0; i < Popsize; i++)
      for (j = i + 1; j < POPSIZE; j++)
        if (Better(Poblacion[j].perf(), Poblacion[i].perf())) INTERCAMBIAR(i, j);

    if (Poblacion[0].perf() < BEST_CROM.perf()) {
      for (j = 0; j < Genes; j++) BEST_CROM.set_gene(j, Poblacion[0].gene(j));
      for (j = 0; j < GenesA; j++) BEST_CROM.set_geneA(j, Poblacion[0].geneA(j));
      for (j = 0; j < n_reglas_total; j++) BEST_CROM.set_geneR(j, Poblacion[0].geneR(j));
      BEST_CROM.set_perf(Poblacion[0].perf());
      BEST_CROM.set_entrado(1);
    }
  }
Exemplo n.º 2
0
  /** Function which restart the population */
  public void ReStart() {

    int i, j, i_mejor;

    if (Ajuste == 1) {
      if (BEST_CROM.entrado() == 1) {
        /* BUSCAR EL MEJOR ELEMENTO */
        for (i = i_mejor = 0; i < Popsize; i++)
          if (Better(Poblacion[i].perf(), Poblacion[i_mejor].perf())) i_mejor = i;

        for (j = 0; j < Genes; j++) Poblacion[0].set_gene(j, BEST_CROM.gene(j));
        for (j = 0; j < GenesA; j++) Poblacion[0].set_geneA(j, BEST_CROM.geneA(j));
        for (j = 0; j < n_reglas_total; j++) Poblacion[0].set_geneR(j, (char) 1);
        Poblacion[0].set_perf(BEST_CROM.perf());

        i = 1;
      } else {
        i = 0;
      }

      /* REINICIALIZAR TODOS MENOS EL PRIMERO */

      for (; i < Popsize; i++) {
        for (j = 0; j < Genes; j++) {
          Poblacion[i].set_gene(j, BEST_CROM.gene(j) + ((Randomize.Rand() - 0.5) / 4.0));
          if (Poblacion[i].gene(j) > Gene[j].max()) Poblacion[i].set_gene(j, Gene[j].max());
          if (Poblacion[i].gene(j) < Gene[j].min()) Poblacion[i].set_gene(j, Gene[j].min());
        }
        for (j = 0; j < GenesA; j++) {
          Poblacion[i].set_geneA(j, BEST_CROM.geneA(j) + ((Randomize.Rand() - 0.5) / 4.0));
          if (Poblacion[i].geneA(j) > Gene[j].max()) Poblacion[i].set_geneA(j, Gene[j].max());
          if (Poblacion[i].geneA(j) < Gene[j].min()) Poblacion[i].set_geneA(j, Gene[j].min());
        }
        for (j = 0; j < n_reglas_total; j++) Poblacion[i].set_geneR(j, (char) 1);
      }
      THRESHOLD = (double) ((Genes + GenesA) * BITS_GEN / 4.0);
      reduccionIni = THRESHOLD * 0.001;
    } else {
      if (BEST_CROM.entrado() == 1) {
        /* BUSCAR EL MEJOR ELEMENTO */
        for (i = i_mejor = 0; i < Popsize; i++)
          if (Better(Poblacion[i].perf(), Poblacion[i_mejor].perf())) i_mejor = i;
        /* COLOCAR EL MEJOR EN LA PRIMERA POSICION */
        for (j = 0; j < Genes; j++) Poblacion[0].set_gene(j, BEST_CROM.gene(j));
        for (j = 0; j < GenesA; j++) Poblacion[0].set_geneA(j, BEST_CROM.geneA(j));
        for (j = 0; j < n_reglas_total; j++) Poblacion[0].set_geneR(j, (char) 1);
        Poblacion[0].set_perf(BEST_CROM.perf());

        i = 1;
      } else i = 0;

      /* REINICIALIZAR TODOS MENOS EL PRIMERO */
      for (; i < Popsize; i++) {
        for (j = 0; j < Genes; j++) Poblacion[i].set_gene(j, BEST_CROM.gene(j));
        for (j = 0; j < GenesA; j++)
          Poblacion[i].set_geneA(
              j, Gene[j].min() + (Gene[j].max() - Gene[j].min()) * Randomize.Rand());
        for (j = 0; j < n_reglas_total; j++) Poblacion[i].set_geneR(j, '1');
      }
      THRESHOLD = (double) (GenesA / 4.5);
      reduccionIni = THRESHOLD * 0.001;
    }

    Reiniciado = 1;
  }