Example #1
0
  public static float calcFitness(int[] particle, LinkedList<PatternList> l) throws IOException {
    PatternList pl1 = l.getFirst();
    PatternList pl2 = l.getLast();

    float fit;

    int[] pagesArray = pl1.getPageArray();
    float f1 = 0;
    float f2 = 0;

    for (int i = 0; i < particle.length - 2 + 1; i++) {
      int[] duo = new int[2];
      for (int j = 0; j < 2; j++) {
        //                System.out.println("\t\t"+this.dimensions[i + j]);
        duo[j] = pagesArray[particle[i + j]];
      }
      Pattern current = pl2.seek(duo);
      if (current != null) {
        f2 += (current.getFreq() * (1000 * current.getConfidence()));
      } else if (current == null) {
        //                System.out.print("\t\t duo : ");
        //                new Pattern(duo).print();
        fit = (float) -6.0;
        return fit;
      }
    }

    f2 = (f2 / ((particle.length - 2 + 1) * pl2.getTotalFreq() * pl2.getDistribution()));

    for (int i = 0; i < particle.length; i++) {

      Pattern current = pl1.seek(particle[i]);
      if (current == null) {
        fit = (float) 0.0;
        return (float) -6.0;
      } else {
        f1 += current.getFreq();
      }
    }

    f1 = (f1 / (particle.length * pl1.getTotalFreq() * pl1.getDistribution()));

    // System.out.println("\t\t\tf2 freq : "+ f2);

    return fit = 1000 * ((1 * f1 + 3 * f2) / 4);
    // fitness da partícula 8,8,8 é :0.468331
    // fitness da partícula 1,1,1 é :0.35263315
    // fitness da partícula 6,6,7 é :0.050931655
    // fitness da partícula 14,13,16 é :3.627465E-4
    // fitness da partícula 8,8,8 é :0.039101
    // fitness da partícula 1,1,1 é :0.029390793
    // fitness da partícula 6,6,7 é :0.0042792875
    // fitness da partícula 14,13,16 é :1.3224661E-4

  }