Make Population a typed ArrayList
This commit is contained in:
parent
1dedb13dc9
commit
d778dc6e24
@ -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++) {
|
||||||
|
@ -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++) {
|
||||||
|
@ -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++) {
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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++) {
|
||||||
|
@ -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++) {
|
||||||
|
@ -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.
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user