Simplify code
This commit is contained in:
		| @@ -126,7 +126,7 @@ public class EAIndividualComparator implements Comparator<AbstractEAIndividual>, | ||||
|         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<AbstractEAIndividual>, | ||||
|             // 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<AbstractEAIndividual>, | ||||
|             } | ||||
|         } 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) { | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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); | ||||
|         } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -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++; | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user