diff --git a/src/main/java/eva2/optimization/individuals/EAIndividualComparator.java b/src/main/java/eva2/optimization/individuals/EAIndividualComparator.java index 34ffbbab..e2570cb7 100644 --- a/src/main/java/eva2/optimization/individuals/EAIndividualComparator.java +++ b/src/main/java/eva2/optimization/individuals/EAIndividualComparator.java @@ -126,7 +126,7 @@ public class EAIndividualComparator implements Comparator, boolean o1domO2, o2domO1; if (preferFeasible) { // check constraint violation first? - int constrViolComp = ((AbstractEAIndividual) o1).compareConstraintViolation((AbstractEAIndividual) o2); + int constrViolComp = o1.compareConstraintViolation(o2); if (constrViolComp > 0) { return -1; } else if (constrViolComp < 0) { @@ -135,8 +135,8 @@ public class EAIndividualComparator implements Comparator, // otherwise both do not violate, so regard fitness } if (indyDataKey != null && (indyDataKey.length() > 0)) { // check specific key - double[] fit1 = (double[]) ((AbstractEAIndividual) o1).getData(indyDataKey); - double[] fit2 = (double[]) ((AbstractEAIndividual) o2).getData(indyDataKey); + double[] fit1 = (double[]) o1.getData(indyDataKey); + double[] fit2 = (double[]) o2.getData(indyDataKey); if ((fit1 == null) || (fit2 == null)) { throw new RuntimeException("Unknown individual data key " + indyDataKey + ", unable to compare individuals (" + this.getClass().getSimpleName() + ")"); } @@ -152,13 +152,13 @@ public class EAIndividualComparator implements Comparator, } } else { if (fitCriterion < 0) { - o1domO2 = ((AbstractEAIndividual) o1).isDominating((AbstractEAIndividual) o2); - o2domO1 = ((AbstractEAIndividual) o2).isDominating((AbstractEAIndividual) o1); + o1domO2 = o1.isDominating(o2); + o2domO1 = o2.isDominating(o1); } else { - if (((AbstractEAIndividual) o1).getFitness()[fitCriterion] == ((AbstractEAIndividual) o2).getFitness()[fitCriterion]) { + if (o1.getFitness()[fitCriterion] == o2.getFitness()[fitCriterion]) { return 0; } - return (((AbstractEAIndividual) o1).getFitness()[fitCriterion] < ((AbstractEAIndividual) o2).getFitness()[fitCriterion]) ? -1 : 1; + return (o1.getFitness()[fitCriterion] < o2.getFitness()[fitCriterion]) ? -1 : 1; } } if (o1domO2 ^ o2domO1) { diff --git a/src/main/java/eva2/optimization/individuals/ESIndividualDoubleData.java b/src/main/java/eva2/optimization/individuals/ESIndividualDoubleData.java index cec0dbf7..65fdc4dc 100644 --- a/src/main/java/eva2/optimization/individuals/ESIndividualDoubleData.java +++ b/src/main/java/eva2/optimization/individuals/ESIndividualDoubleData.java @@ -49,7 +49,7 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte this.genotype[i] = individual.genotype[i]; this.range[i][0] = individual.range[i][0]; this.range[i][1] = individual.range[i][1]; - }; + } // cloning the members of AbstractEAIndividual this.age = individual.age; diff --git a/src/main/java/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java b/src/main/java/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java index c23e8fd8..33459a2b 100644 --- a/src/main/java/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java +++ b/src/main/java/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java @@ -81,8 +81,8 @@ public class ArchivingNSGAIISMeasure extends ArchivingNSGAII { // determine right not assigned neighbor for (right = i + 1; (assigned[right]); right++) ; - v[i] = (((AbstractEAIndividual) frontArray[right]).getFitness(0) - ((AbstractEAIndividual) frontArray[i]).getFitness(0)) * - (((AbstractEAIndividual) frontArray[left]).getFitness(1) - ((AbstractEAIndividual) frontArray[i]).getFitness(1)); + v[i] = (frontArray[right].getFitness(0) - frontArray[i].getFitness(0)) * + (frontArray[left].getFitness(1) - frontArray[i].getFitness(1)); left = i; i = right; @@ -99,7 +99,7 @@ public class ArchivingNSGAIISMeasure extends ArchivingNSGAII { } } assigned[minIndex] = true; - ((AbstractEAIndividual) frontArray[minIndex]).putData("HyperCube", (double) e); + frontArray[minIndex].putData("HyperCube", (double) e); } diff --git a/src/main/java/eva2/optimization/strategies/ParticleSwarmOptimization.java b/src/main/java/eva2/optimization/strategies/ParticleSwarmOptimization.java index b0b7a3d2..f7c5d4eb 100644 --- a/src/main/java/eva2/optimization/strategies/ParticleSwarmOptimization.java +++ b/src/main/java/eva2/optimization/strategies/ParticleSwarmOptimization.java @@ -919,24 +919,24 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java } break; case tree: // Sorted Tree - sortedIndex = (Integer) ((AbstractEAIndividual) sortedPop[index]).getData(sortedIndexKey); + sortedIndex = (Integer) sortedPop[index].getData(sortedIndexKey); if (sortedIndex > 0) { // its found and its not the root. root has no parent to check for k = getParentIndex(topologyRange, sortedIndex, pop.size()); - compareAndSetAttractor(localBestFitness, localBestPosition, (AbstractEAIndividual) sortedPop[k], useHistoric); + compareAndSetAttractor(localBestFitness, localBestPosition, sortedPop[k], useHistoric); } if (treeStruct == 1) { // loop all children if (isComplete(sortedIndex, pop.size())) { // the node has full degree k = topologyRange * sortedIndex + 1; // this is the offset of the nodes children for (int i = 0; i < topologyRange; i++) { - compareAndSetAttractor(localBestFitness, localBestPosition, (AbstractEAIndividual) sortedPop[k + i], useHistoric); + compareAndSetAttractor(localBestFitness, localBestPosition, sortedPop[k + i], useHistoric); } } else if (isIncomplete(sortedIndex, pop.size())) { // the node does not have full degree but might have orphans int numOrphs = numOrphans(sortedIndex, pop.size()); if (numOrphs > 0) { k = indexOfFirstOrphan(sortedIndex, pop.size()); for (int i = 0; i < numOrphs; i++) { - compareAndSetAttractor(localBestFitness, localBestPosition, (AbstractEAIndividual) sortedPop[k], useHistoric); + compareAndSetAttractor(localBestFitness, localBestPosition, sortedPop[k], useHistoric); k += treeLastFullLevelNodeCnt; // hop to next (possible) orphan index } } @@ -1318,7 +1318,7 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java found = false; superfluous = false; for (int i = 0; i < leaders.size(); i++) { - dist = metric.distance((AbstractEAIndividual) sortedPop[cur], leaders.get(i)); + dist = metric.distance(sortedPop[cur], leaders.get(i)); //System.out.println("dist is "+dist); if ((swarmRadius * 2.) > dist) { // a formal leader is found int sSize = (Integer) (leaders.get(i)).getData(multiSwSizeKey); @@ -1330,22 +1330,22 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java } else { found = true; // assign to leader, update swarm size - ((AbstractEAIndividual) sortedPop[cur]).putData(multiSwTypeKey, leaders.get(i)); - ((AbstractEAIndividual) sortedPop[cur]).putData(multiSwSizeKey, -1); + sortedPop[cur].putData(multiSwTypeKey, leaders.get(i)); + sortedPop[cur].putData(multiSwSizeKey, -1); leaders.get(i).putData(multiSwSizeKey, 1 + sSize); break; } } } if (!found) { // new leader is found - leaders.add(((AbstractEAIndividual) sortedPop[cur])); - ((AbstractEAIndividual) sortedPop[cur]).putData(multiSwTypeKey, sortedPop[cur]); - ((AbstractEAIndividual) sortedPop[cur]).putData(multiSwSizeKey, 1); + leaders.add(sortedPop[cur]); + sortedPop[cur].putData(multiSwTypeKey, sortedPop[cur]); + sortedPop[cur].putData(multiSwSizeKey, 1); } else if (superfluous) { //System.out.println("reinitializing " + cur); - ((AbstractEAIndividual) sortedPop[cur]).putData(partTypeKey, resetType); - ((AbstractEAIndividual) sortedPop[cur]).putData(multiSwTypeKey, sortedPop[cur]); - ((AbstractEAIndividual) sortedPop[cur]).putData(multiSwSizeKey, 1); + sortedPop[cur].putData(partTypeKey, resetType); + sortedPop[cur].putData(multiSwTypeKey, sortedPop[cur]); + sortedPop[cur].putData(multiSwSizeKey, 1); } cur++; }