Simplify code
This commit is contained in:
parent
c00c075c18
commit
ed563d485f
@ -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++;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user