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 }