Make Population a typed ArrayList

This commit is contained in:
Fabian Becker 2014-11-07 22:45:06 +01:00
parent 1dedb13dc9
commit d778dc6e24
18 changed files with 57 additions and 60 deletions

View File

@ -152,14 +152,14 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme
numTmp = (AbstractEAIndividual) this.getNumbers(); numTmp = (AbstractEAIndividual) this.getNumbers();
numPop = new Population(); numPop = new Population();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
numPop.add(((GAESIndividualBinaryDoubleData) partners.get(i)).getNumbers()); numPop.add((AbstractEAIndividual) ((GAESIndividualBinaryDoubleData) partners.get(i)).getNumbers());
} }
resNum = numTmp.mateWith(numPop); resNum = numTmp.mateWith(numPop);
binTmp = (AbstractEAIndividual) this.getBitSet(); binTmp = (AbstractEAIndividual) this.getBitSet();
binPop = new Population(); binPop = new Population();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
binPop.add(((GAESIndividualBinaryDoubleData) partners.get(i)).getBitSet()); binPop.add((AbstractEAIndividual) ((GAESIndividualBinaryDoubleData) partners.get(i)).getBitSet());
} }
resBin = binTmp.mateWith(binPop); resBin = binTmp.mateWith(binPop);
@ -185,7 +185,7 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme
result = new AbstractEAIndividual[partners.size() + 1]; result = new AbstractEAIndividual[partners.size() + 1];
result[0] = (AbstractEAIndividual) this.clone(); result[0] = (AbstractEAIndividual) this.clone();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
result[i + 1] = (AbstractEAIndividual) ((AbstractEAIndividual) partners.get(i)).clone(); result[i + 1] = (AbstractEAIndividual) (partners.get(i)).clone();
} }
} }
for (int i = 0; i < result.length; i++) { for (int i = 0; i < result.length; i++) {

View File

@ -144,14 +144,14 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In
numTmp = (AbstractEAIndividual) this.getNumbers(); numTmp = (AbstractEAIndividual) this.getNumbers();
numPop = new Population(); numPop = new Population();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
numPop.add(((GAPIndividualProgramData) partners.get(i)).getNumbers()); numPop.add((AbstractEAIndividual) ((GAPIndividualProgramData) partners.get(i)).getNumbers());
} }
resNum = numTmp.mateWith(numPop); resNum = numTmp.mateWith(numPop);
binTmp = (AbstractEAIndividual) this.getProgramRepresentation(); binTmp = (AbstractEAIndividual) this.getProgramRepresentation();
binPop = new Population(); binPop = new Population();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
binPop.add(((GAPIndividualProgramData) partners.get(i)).getProgramRepresentation()); binPop.add((AbstractEAIndividual) ((GAPIndividualProgramData) partners.get(i)).getProgramRepresentation());
} }
resBin = binTmp.mateWith(binPop); resBin = binTmp.mateWith(binPop);
@ -166,7 +166,7 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In
result = new AbstractEAIndividual[partners.size() + 1]; result = new AbstractEAIndividual[partners.size() + 1];
result[0] = (AbstractEAIndividual) this.clone(); result[0] = (AbstractEAIndividual) this.clone();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
result[i + 1] = (AbstractEAIndividual) ((AbstractEAIndividual) partners.get(i)).clone(); result[i + 1] = (AbstractEAIndividual) (partners.get(i)).clone();
} }
} }
for (int i = 0; i < result.length; i++) { for (int i = 0; i < result.length; i++) {

View File

@ -148,14 +148,14 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual
numTmp = (AbstractEAIndividual) this.getIntegers(); numTmp = (AbstractEAIndividual) this.getIntegers();
numPop = new Population(); numPop = new Population();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
numPop.add(((GIOBGAIndividualIntegerPermutationData) partners.get(i)).getIntegers()); numPop.add((AbstractEAIndividual) ((GIOBGAIndividualIntegerPermutationData) partners.get(i)).getIntegers());
} }
resNum = numTmp.mateWith(numPop); resNum = numTmp.mateWith(numPop);
binTmp = (AbstractEAIndividual) this.getPermutations(); binTmp = (AbstractEAIndividual) this.getPermutations();
binPop = new Population(); binPop = new Population();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
binPop.add(((GIOBGAIndividualIntegerPermutationData) partners.get(i)).getPermutations()); binPop.add((AbstractEAIndividual) ((GIOBGAIndividualIntegerPermutationData) partners.get(i)).getPermutations());
} }
resBin = binTmp.mateWith(binPop); resBin = binTmp.mateWith(binPop);
@ -170,7 +170,7 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual
result = new AbstractEAIndividual[partners.size() + 1]; result = new AbstractEAIndividual[partners.size() + 1];
result[0] = (AbstractEAIndividual) this.clone(); result[0] = (AbstractEAIndividual) this.clone();
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
result[i + 1] = (AbstractEAIndividual) ((AbstractEAIndividual) partners.get(i)).clone(); result[i + 1] = (AbstractEAIndividual) (partners.get(i)).clone();
} }
} }
for (int i = 0; i < result.length; i++) { for (int i = 0; i < result.length; i++) {

View File

@ -67,7 +67,7 @@ public class SOBestMigration implements InterfaceMigration, java.io.Serializable
newIPOP[i].removeNIndividuals(comSet.length * this.n); newIPOP[i].removeNIndividuals(comSet.length * this.n);
for (int j = 0; j < comSet.length; j++) { for (int j = 0; j < comSet.length; j++) {
selected = this.selection.selectFrom(comSet[j], this.n); selected = this.selection.selectFrom(comSet[j], this.n);
newIPOP[i].add(((AbstractEAIndividual) selected.get(0)).clone()); newIPOP[i].add((AbstractEAIndividual) (selected.get(0)).clone());
} }
} }

View File

@ -668,7 +668,7 @@ public class PostProcess {
prob.evaluate(subPop); prob.evaluate(subPop);
stepsPerf += subPop.size(); stepsPerf += subPop.size();
subPop.add(candidates.getEAIndividual(i).clone()); subPop.add((AbstractEAIndividual) candidates.getEAIndividual(i).clone());
nmPops.add(subPop); nmPops.add(subPop);
} }

View File

@ -57,11 +57,11 @@ public class SelectBestIndividuals implements InterfaceSelection, java.io.Serial
Population result = new Population(); Population result = new Population();
int currentCriteria = 0, critSize; int currentCriteria = 0, critSize;
critSize = ((AbstractEAIndividual) population.get(0)).getFitness().length; critSize = (population.get(0)).getFitness().length;
ArrayList[] bestIndividuals = new ArrayList[critSize]; ArrayList<AbstractEAIndividual>[] bestIndividuals = new ArrayList[critSize];
for (int i = 0; i < critSize; i++) { for (int i = 0; i < critSize; i++) {
bestIndividuals[i] = new ArrayList(); bestIndividuals[i] = new ArrayList<>();
// select the best individuals regarding crit i // select the best individuals regarding crit i
for (int j = 0; j < size; j++) { for (int j = 0; j < size; j++) {
bestIndividuals[i].add(this.getBestIndividualExcept(population, bestIndividuals[i], i)); bestIndividuals[i].add(this.getBestIndividualExcept(population, bestIndividuals[i], i));
@ -87,7 +87,7 @@ public class SelectBestIndividuals implements InterfaceSelection, java.io.Serial
* @param crit The criterion * @param crit The criterion
* @return Object the individual * @return Object the individual
*/ */
private Object getBestIndividualExcept(Population pop, ArrayList tabu, int crit) { private AbstractEAIndividual getBestIndividualExcept(Population pop, ArrayList tabu, int crit) {
int index = -1; int index = -1;
double bestProb = Double.POSITIVE_INFINITY; double bestProb = Double.POSITIVE_INFINITY;
boolean member; boolean member;
@ -95,7 +95,7 @@ public class SelectBestIndividuals implements InterfaceSelection, java.io.Serial
if (this.obeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
indy = (AbstractEAIndividual) pop.get(i); indy = pop.get(i);
// check if indy is tabu // check if indy is tabu
member = false; member = false;
for (int j = 0; j < tabu.size(); j++) { for (int j = 0; j < tabu.size(); j++) {
@ -115,7 +115,7 @@ public class SelectBestIndividuals implements InterfaceSelection, java.io.Serial
// darn all individuals seem to violate the constraints // darn all individuals seem to violate the constraints
// so lets select the guy with the least worst constraint violation // so lets select the guy with the least worst constraint violation
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
indy = (AbstractEAIndividual) pop.get(i); indy = pop.get(i);
// check if indy is tabu // check if indy is tabu
member = false; member = false;
for (int j = 0; j < tabu.size(); j++) { for (int j = 0; j < tabu.size(); j++) {
@ -137,7 +137,7 @@ public class SelectBestIndividuals implements InterfaceSelection, java.io.Serial
} }
} else { } else {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
indy = (AbstractEAIndividual) pop.get(i); indy = pop.get(i);
// check if indy is tabu // check if indy is tabu
member = false; member = false;
for (int j = 0; j < tabu.size(); j++) { for (int j = 0; j < tabu.size(); j++) {

View File

@ -100,9 +100,9 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
Population result = new Population(); Population result = new Population();
int currentCriteria = 0, critSize; int currentCriteria = 0, critSize;
critSize = ((AbstractEAIndividual) population.get(0)).getFitness().length; critSize = (population.get(0)).getFitness().length;
ArrayList[] bestIndividuals = new ArrayList[critSize]; ArrayList<AbstractEAIndividual>[] bestIndividuals = new ArrayList[critSize];
for (int i = 0; i < critSize; i++) { for (int i = 0; i < critSize; i++) {
bestIndividuals[i] = new ArrayList(); bestIndividuals[i] = new ArrayList();
// select the best individuals regarding crit i // select the best individuals regarding crit i
@ -130,14 +130,14 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
* @param crit The criterion * @param crit The criterion
* @return Object the individual * @return Object the individual
*/ */
private Object getBestIndividualExcept(Population pop, ArrayList tabu, int crit) { private AbstractEAIndividual getBestIndividualExcept(Population pop, ArrayList tabu, int crit) {
int index = -1; int index = -1;
int mostVictories = -1; int mostVictories = -1;
boolean member; boolean member;
AbstractEAIndividual indy; AbstractEAIndividual indy;
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
indy = (AbstractEAIndividual) pop.get(i); indy = pop.get(i);
// check if indy is tabu // check if indy is tabu
member = false; member = false;
for (int j = 0; j < tabu.size(); j++) { for (int j = 0; j < tabu.size(); j++) {

View File

@ -108,7 +108,7 @@ public class SelectParticleWheel implements InterfaceSelection, java.io.Serializ
selIndex++; selIndex++;
sum += ((AbstractEAIndividual) population.getIndividual(selIndex)).getSelectionProbability(0); sum += ((AbstractEAIndividual) population.getIndividual(selIndex)).getSelectionProbability(0);
} }
result.add(((AbstractEAIndividual) population.get(selIndex)).clone()); result.add((AbstractEAIndividual) (population.get(selIndex)).clone());
((AbstractEAIndividual) result.getIndividual(i)).setAge(0); ((AbstractEAIndividual) result.getIndividual(i)).setAge(0);
} }
} }
@ -126,7 +126,7 @@ public class SelectParticleWheel implements InterfaceSelection, java.io.Serializ
selIndex++; selIndex++;
selFitSum += ((AbstractEAIndividual) population.getIndividual(selIndex)).getSelectionProbability(0); selFitSum += ((AbstractEAIndividual) population.getIndividual(selIndex)).getSelectionProbability(0);
} }
result.add(((AbstractEAIndividual) population.get(selIndex)).clone()); result.add((AbstractEAIndividual) (population.get(selIndex)).clone());
((AbstractEAIndividual) result.getIndividual(i)).setAge(0); ((AbstractEAIndividual) result.getIndividual(i)).setAge(0);
selPoint += segment; selPoint += segment;
} }
@ -145,9 +145,6 @@ public class SelectParticleWheel implements InterfaceSelection, java.io.Serializ
return this.selectFrom(availablePartners, size); return this.selectFrom(availablePartners, size);
} }
/**********************************************************************************************************************
* These are for GUI
*/
/** /**
* This method allows the CommonJavaObjectEditorPanel to read the * This method allows the CommonJavaObjectEditorPanel to read the
* name to the current object. * name to the current object.

View File

@ -94,7 +94,7 @@ public class PBILPopulation extends Population implements Cloneable, java.io.Ser
} }
} }
tmpIndy.setBGenotype(tmpBitSet); tmpIndy.setBGenotype(tmpBitSet);
super.add(tmpIndy); super.add((AbstractEAIndividual) tmpIndy);
} }
} }

View File

@ -32,7 +32,7 @@ import java.util.logging.Logger;
* random latin hypercube implementation for InterfaceDataTypeDouble individuals. * random latin hypercube implementation for InterfaceDataTypeDouble individuals.
*/ */
@Description("A population stores the individuals of a generation.") @Description("A population stores the individuals of a generation.")
public class Population extends ArrayList implements PopulationInterface, Cloneable, java.io.Serializable { public class Population extends ArrayList<AbstractEAIndividual> implements PopulationInterface, Cloneable, java.io.Serializable {
private static final Logger LOGGER = Logger.getLogger(Population.class.getName()); private static final Logger LOGGER = Logger.getLogger(Population.class.getName());
@ -124,9 +124,9 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
public Population(Population population) { public Population(Population population) {
LOGGER.log(Level.FINER, "New population has been created."); LOGGER.log(Level.FINER, "New population has been created.");
setSameParams(population); setSameParams(population);
for (Object individual : population) { for (AbstractEAIndividual individual : population) {
if (individual != null) { if (individual != null) {
this.add((((AbstractEAIndividual) individual)).clone()); this.add((AbstractEAIndividual) individual.clone());
} }
} }
copyHistAndArchive(population); copyHistAndArchive(population);
@ -1418,7 +1418,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
return this; return this;
} }
Population pop = new Population(); Population pop = new Population();
for (Object o : this) { for (AbstractEAIndividual o : this) {
if (!exclude.contains(o)) { if (!exclude.contains(o)) {
pop.add(o); pop.add(o);
} }
@ -1684,8 +1684,8 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
* seen as "structural change"? * seen as "structural change"?
*/ */
@Override @Override
public Object set(int index, Object element) { public AbstractEAIndividual set(int index, AbstractEAIndividual element) {
Object prev = super.set(index, element); AbstractEAIndividual prev = super.set(index, element);
modCount++; modCount++;
return prev; return prev;
} }
@ -1695,14 +1695,14 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
* the internally sorted array in synch to minimize complete resorting * the internally sorted array in synch to minimize complete resorting
* events. * events.
*/ */
public Object set(int index, Object element, int fitIndex) { public AbstractEAIndividual set(int index, AbstractEAIndividual element, int fitIndex) {
Object prev = super.set(index, element); AbstractEAIndividual prev = super.set(index, element);
modCount++; modCount++;
return prev; return prev;
} }
public boolean addIndividual(IndividualInterface ind) { public boolean addIndividual(IndividualInterface ind) {
super.add(ind); super.add((AbstractEAIndividual) ind);
return true; return true;
} }
@ -1730,8 +1730,8 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
* @param ind * @param ind
* @return * @return
*/ */
public IndividualInterface replaceIndividualAt(int index, IndividualInterface ind) { public IndividualInterface replaceIndividualAt(int index, AbstractEAIndividual ind) {
return (IndividualInterface) set(index, ind); return set(index, ind);
} }
/** /**

View File

@ -300,7 +300,7 @@ public class BinaryScatterSearch extends AbstractOptimizer implements java.io.Se
} }
dblIndy.setBinaryGenotype(data); dblIndy.setBinaryGenotype(data);
if (!contains(dblIndy, pop)) { if (!contains(dblIndy, pop)) {
pop.add(dblIndy); pop.add((AbstractEAIndividual) dblIndy);
evaluate(indy); evaluate(indy);
} }
} }
@ -328,7 +328,7 @@ public class BinaryScatterSearch extends AbstractOptimizer implements java.io.Se
} }
dblIndy.setBinaryGenotype(data); dblIndy.setBinaryGenotype(data);
if (!contains(dblIndy, pop)) { if (!contains(dblIndy, pop)) {
pop.add(dblIndy); pop.add((AbstractEAIndividual) dblIndy);
evaluate(indy); evaluate(indy);
} }
} }

View File

@ -189,7 +189,7 @@ public class CHCAdaptiveSearchAlgorithm extends AbstractOptimizer implements jav
} }
} }
mutant.setBGenotype(tmpBitSet); mutant.setBGenotype(tmpBitSet);
this.population.add(mutant); this.population.add((AbstractEAIndividual) mutant);
} }
if (best instanceof InterfaceGAIndividual) { if (best instanceof InterfaceGAIndividual) {
this.differenceThreshold = (int) (this.divergenceRate * (1 - this.divergenceRate) * ((InterfaceGAIndividual) best).getGenotypeLength()); this.differenceThreshold = (int) (this.divergenceRate * (1 - this.divergenceRate) * ((InterfaceGAIndividual) best).getGenotypeLength());

View File

@ -416,7 +416,7 @@ public class EsDpiNiching extends AbstractOptimizer implements Serializable, Int
// if an association was found, there is a peak close to an archived solution, so reset it. // if an association was found, there is a peak close to an archived solution, so reset it.
if (!archive.getEAIndividual(i).isDominating(peakPopSet[assoc[i]].getBestEAIndividual())) { if (!archive.getEAIndividual(i).isDominating(peakPopSet[assoc[i]].getBestEAIndividual())) {
// the new found species is actually better than the archived solution // the new found species is actually better than the archived solution
archive.set(i, peakPopSet[assoc[i]].getBestEAIndividual().clone()); // replace archived indy archive.set(i, (AbstractEAIndividual) peakPopSet[assoc[i]].getBestEAIndividual().clone()); // replace archived indy
} }
peakPopSet[assoc[i]] = initRandomPeakPop(getMuPerPeak()); peakPopSet[assoc[i]] = initRandomPeakPop(getMuPerPeak());
} }

View File

@ -102,7 +102,7 @@ public class MemeticAlgorithm implements InterfaceOptimizer, java.io.Serializabl
Population subset = selectorPlug.selectFrom(gop, subsetsize); Population subset = selectorPlug.selectFrom(gop, subsetsize);
Population subsetclone = new Population(); Population subsetclone = new Population();
for (int i = 0; i < subset.size(); i++) { for (int i = 0; i < subset.size(); i++) {
subsetclone.add(((AbstractEAIndividual) subset.get(i)).clone()); subsetclone.add((AbstractEAIndividual) (subset.get(i)).clone());
} }
if (subset.size() != subsetsize) { if (subset.size() != subsetsize) {
System.err.println("ALERT! identical individual instances in subset"); System.err.println("ALERT! identical individual instances in subset");
@ -110,8 +110,8 @@ public class MemeticAlgorithm implements InterfaceOptimizer, java.io.Serializabl
Hashtable antilamarckismcache = new Hashtable(); Hashtable antilamarckismcache = new Hashtable();
if (!this.lamarckism) { if (!this.lamarckism) {
for (int i = 0; i < subset.size(); i++) { for (int i = 0; i < subset.size(); i++) {
AbstractEAIndividual indy = (AbstractEAIndividual) subset.get(i); AbstractEAIndividual indy = subset.get(i);
AbstractEAIndividual indyclone = (AbstractEAIndividual) subsetclone AbstractEAIndividual indyclone = subsetclone
.get(i); .get(i);
antilamarckismcache.put(indy, indyclone); antilamarckismcache.put(indy, indyclone);
} }
@ -140,7 +140,7 @@ public class MemeticAlgorithm implements InterfaceOptimizer, java.io.Serializabl
gop.addPopulation(subsetclone); gop.addPopulation(subsetclone);
} else { } else {
for (int i = 0; i < subset.size(); i++) { for (int i = 0; i < subset.size(); i++) {
AbstractEAIndividual indy = (AbstractEAIndividual) subset.get(i); AbstractEAIndividual indy = subset.get(i);
try { try {
AbstractEAIndividual newindy = (AbstractEAIndividual) antilamarckismcache AbstractEAIndividual newindy = (AbstractEAIndividual) antilamarckismcache
.get(indy); .get(indy);

View File

@ -1477,7 +1477,7 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java
@Override @Override
public void setPopulation(Population pop) { public void setPopulation(Population pop) {
this.population = pop; super.setPopulation(pop);
if (pop.size() > 0 && pop.size() != pop.getTargetSize()) { // new particle count! if (pop.size() > 0 && pop.size() != pop.getTargetSize()) { // new particle count!
tracedVelocity = null; tracedVelocity = null;
initializeByPopulation(null, false); initializeByPopulation(null, false);

View File

@ -145,12 +145,12 @@ public abstract class AbstractMultiModalProblemKnown extends AbstractProblemDoub
* @param point * @param point
*/ */
protected void addOptimum(double[] point) { protected void addOptimum(double[] point) {
InterfaceDataTypeDouble tmpIndy; AbstractEAIndividual tmpIndy;
tmpIndy = (InterfaceDataTypeDouble) this.template.clone(); tmpIndy = (AbstractEAIndividual) template.clone();
tmpIndy.setDoubleGenotype(point); ((InterfaceDataTypeDouble) tmpIndy).setDoubleGenotype(point);
((AbstractEAIndividual) tmpIndy).setFitness(evalUnnormalized(point)); tmpIndy.setFitness(evalUnnormalized(point));
if (((AbstractEAIndividual) tmpIndy).getFitness(0) >= globalOptimum) { if ((tmpIndy).getFitness(0) >= globalOptimum) {
globalOptimum = ((AbstractEAIndividual) tmpIndy).getFitness(0); globalOptimum = (tmpIndy).getFitness(0);
if (makeGlobalOptUnreachable) { if (makeGlobalOptUnreachable) {
double tmp = globalOptimum; double tmp = globalOptimum;
double dx = 1e-30; double dx = 1e-30;
@ -165,7 +165,7 @@ public abstract class AbstractMultiModalProblemKnown extends AbstractProblemDoub
} }
if (isDoRotation()) { if (isDoRotation()) {
point = inverseRotateMaybe(point); // theres an inverse rotation required point = inverseRotateMaybe(point); // theres an inverse rotation required
tmpIndy.setDoubleGenotype(point); ((InterfaceDataTypeDouble) tmpIndy).setDoubleGenotype(point);
} }
this.listOfOptima.add(tmpIndy); this.listOfOptima.add(tmpIndy);
} }
@ -244,7 +244,7 @@ public abstract class AbstractMultiModalProblemKnown extends AbstractProblemDoub
* <p/> * <p/>
* This is in analogy to the original implementation by F.Streichert. * This is in analogy to the original implementation by F.Streichert.
* *
* @param mmProb * @param realOpts
* @param pop * @param pop
* @param epsilon * @param epsilon
* @return * @return

View File

@ -413,7 +413,7 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem
if (!Mathematics.isInRange(pos, prob.makeRange())) { if (!Mathematics.isInRange(pos, prob.makeRange())) {
System.err.println("Warning, add optimum which is out of range!"); System.err.println("Warning, add optimum which is out of range!");
} }
optimas.add(tmpIndy); optimas.add((AbstractEAIndividual) tmpIndy);
} }
/** /**
@ -431,7 +431,7 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem
.clone(); .clone();
tmpIndy.setDoubleGenotype(pos); tmpIndy.setDoubleGenotype(pos);
((AbstractEAIndividual) tmpIndy).setFitness(prob.evaluate(pos)); ((AbstractEAIndividual) tmpIndy).setFitness(prob.evaluate(pos));
pop.add(tmpIndy); pop.add((AbstractEAIndividual) tmpIndy);
FitnessConvergenceTerminator convTerm = new FitnessConvergenceTerminator( FitnessConvergenceTerminator convTerm = new FitnessConvergenceTerminator(
1e-25, 10, StagnationTypeEnum.generationBased, 1e-25, 10, StagnationTypeEnum.generationBased,
ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decrease); ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decrease);

View File

@ -149,8 +149,8 @@ class MyLensViewer extends JPanel implements InterfaceSolutionViewer {
newFrame.setVisible(true); newFrame.setVisible(true);
} }
} else { } else {
InterfaceDataTypeDouble best = (InterfaceDataTypeDouble) pop.getBestIndividual(); AbstractEAIndividual best = (AbstractEAIndividual) pop.getBestIndividual();
if (indiesToPaint.size() == 0 || ((AbstractEAIndividual) best).isDominant(indiesToPaint.getBestIndividual())) { if (indiesToPaint.size() == 0 || (best).isDominant(indiesToPaint.getBestIndividual())) {
if (indiesToPaint.size() == 1) { if (indiesToPaint.size() == 1) {
indiesToPaint.set(0, best); indiesToPaint.set(0, best);
} else { } else {