Implement several CLI params for PSO

Refactor PSO implementation
This commit is contained in:
Fabian Becker 2014-01-24 18:03:17 +01:00
parent d51fdc560e
commit b363e46ad1
5 changed files with 123 additions and 85 deletions

View File

@ -4,6 +4,7 @@ import com.google.gson.*;
import eva2.OptimizerFactory;
import eva2.optimization.OptimizationStateListener;
import eva2.optimization.enums.DETypeEnum;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.operator.crossover.CrossoverESDefault;
@ -15,8 +16,6 @@ import eva2.optimization.operator.selection.SelectXProbRouletteWheel;
import eva2.optimization.operator.terminators.CombinedTerminator;
import eva2.optimization.operator.terminators.FitnessValueTerminator;
import eva2.optimization.population.Population;
import eva2.optimization.problems.AbstractOptimizationProblem;
import eva2.optimization.problems.AbstractProblemDouble;
import eva2.optimization.problems.AbstractProblemDoubleOffset;
import eva2.optimization.strategies.DifferentialEvolution;
import eva2.optimization.strategies.InterfaceOptimizer;
@ -493,15 +492,42 @@ public class Main implements OptimizationStateListener, InterfacePopulationChang
break;
}
case "ParticleSwarmOptimization": {
opt.addOption("initialVelocity", true, "Initial Velocity");
double phi1 = 2.05, phi2 = 2.05, speedLimit = 0.1;
int topoRange = 2;
PSOTopologyEnum selectedTopology = PSOTopologyEnum.star;
opt.addOption("speedLimit", true, "Speed Limit");
opt.addOption("topology", true, "Particle Swarm Topology (0-7)");
opt.addOption("swarmRadius", true, "Radius of the Swarm");
opt.addOption("phi1", true, "Phi 1");
opt.addOption("phi2", true, "Phi 2");
opt.addOption("inertnessOrChi", true, "Inertness or Chi");
opt.addOption("algType", true, "Type of PSO");
/**
* Parse default options.
*/
try {
commandLine = cliParser.parse(opt, optimizerParams);
} catch (ParseException e) {
showHelp(opt);
System.exit(-1);
}
if (commandLine.hasOption("phi1")) {
phi1 = Double.parseDouble(commandLine.getOptionValue("phi1"));
}
if (commandLine.hasOption("phi2")) {
phi2 = Double.parseDouble(commandLine.getOptionValue("phi2"));
}
if (commandLine.hasOption("topology")) {
selectedTopology = PSOTopologyEnum.getFromId(Integer.parseInt(commandLine.getOptionValue("topology")));
}
if (commandLine.hasOption("speedLimit")) {
speedLimit = Double.parseDouble(commandLine.getOptionValue("speedLimit"));
}
this.optimizer = OptimizerFactory.createParticleSwarmOptimization(problem, this.populationSize, phi1, phi2, speedLimit, selectedTopology, topoRange, this);
break;
}
case "EvolutionStrategies": {
@ -537,6 +563,18 @@ public class Main implements OptimizationStateListener, InterfacePopulationChang
pc = 0.9;
}
if (commandLine.hasOption("mu")) {
mu = Integer.parseInt(commandLine.getOptionValue("mu"));
}
if (commandLine.hasOption("lambda")) {
lambda = Integer.parseInt(commandLine.getOptionValue("lambda"));
}
if (commandLine.hasOption("plusStrategy")) {
plusStrategy = Boolean.parseBoolean(commandLine.getOptionValue("plusStrategy"));
}
this.optimizer = OptimizerFactory.createEvolutionStrategy(mu, lambda, plusStrategy, this.mutator, pm, this.crossover, pc, this.selection, problem, this);
break;
}

View File

@ -37,7 +37,7 @@ public enum PSOTopologyEnum {
* @param oldID
* @return
*/
public static PSOTopologyEnum translateOldID(int oldID) {
public static PSOTopologyEnum getFromId(int oldID) {
switch (oldID) {
case 0:
return linear;
@ -56,7 +56,7 @@ public enum PSOTopologyEnum {
case 7:
return dms;
default:
System.err.println("Error: invalid old topology ID in PSOTopologyEnum translateOldID! Returning grid.");
System.err.println("Error: invalid old topology ID in PSOTopologyEnum getFromId! Returning grid.");
return grid;
}
}

View File

@ -151,7 +151,7 @@ public class DynamicParticleSwarmOptimization extends ParticleSwarmOptimization
//double[] rand = getUniformRandVect(position.length, range);
Mathematics.vvAdd(newPos, rand, newPos);
if (m_CheckRange) {
if (checkRange) {
Mathematics.projectToRange(newPos, range);
}
@ -256,9 +256,9 @@ public class DynamicParticleSwarmOptimization extends ParticleSwarmOptimization
/* old ways
curVelocity[i] = this.m_Inertness * velocity[i];
curVelocity[i] += (this.m_Phi1 * getSpeedLimit(index) * (range[i][1] - range[i][0]) * RNG.randomDouble(-1., 1.));
curVelocity[i] += (this.phi1 * getSpeedLimit(index) * (range[i][1] - range[i][0]) * RNG.randomDouble(-1., 1.));
// the component from the social model
curVelocity[i] += this.m_Phi2*RNG.randomDouble(0,1)*(localBestPos[i]-curPosition[i]);
curVelocity[i] += this.phi2*RNG.randomDouble(0,1)*(localBestPos[i]-curPosition[i]);
*/
for (int i = 0; i < lastVelocity.length; i++) {
@ -301,9 +301,9 @@ public class DynamicParticleSwarmOptimization extends ParticleSwarmOptimization
* @return a double value
*/
protected double getIndySocialModifier(int index, double chiVal) {
return (this.m_Phi2 * chiVal * RNG.randomDouble(0, 1));
// if (index < 50) return (this.m_Phi2 * chi * RNG.randomDouble(0,1));
// else return (this.m_Phi2 * chi * (-1.) * RNG.randomDouble(0,1));
return (this.phi2 * chiVal * RNG.randomDouble(0, 1));
// if (index < 50) return (this.phi2 * chi * RNG.randomDouble(0,1));
// else return (this.phi2 * chi * (-1.) * RNG.randomDouble(0,1));
}
/**
@ -315,12 +315,12 @@ public class DynamicParticleSwarmOptimization extends ParticleSwarmOptimization
@Override
protected double getSpeedLimit(int index) {
if (index >= ((double) (m_Population.size() * highEnergyRatio))) {
return m_SpeedLimit;
return speedLimit;
} else {
if (highEnergyRaise == 0.) {
return maxSpeedLimit;
} else {
return m_SpeedLimit * highEnergyRaise;
return speedLimit * highEnergyRaise;
}
}
}

View File

@ -1017,7 +1017,7 @@ public class NichePSO implements InterfaceAdditionalPopulationInformer, Interfac
// }
public void SetMainSwarmTopologyTag(int mainSwarmTopologyTag) {
// Possible topologies are: "Linear", "Grid", "Star", "Multi-Swarm", "Tree", "HPSO", "Random" in that order starting by 0.
this.mainSwarmTopology = PSOTopologyEnum.translateOldID(mainSwarmTopologyTag);
this.mainSwarmTopology = PSOTopologyEnum.getFromId(mainSwarmTopologyTag);
}
public PSOTopologyEnum getMainSwarmTopology() {

View File

@ -50,7 +50,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
Object[] sortedPop = null;
protected AbstractEAIndividual m_BestIndividual = null;
protected InterfaceOptimizationProblem m_Problem = new F1Problem();
protected boolean m_CheckRange = true;
protected boolean checkRange = true;
protected boolean checkSpeedLimit = false;
protected boolean useAlternative = false;
protected PSOTopologyEnum topology = PSOTopologyEnum.grid;
@ -59,13 +59,13 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* constriction (using chi)
*/
protected SelectedTag algType;
protected int m_TopologyRange = 2;
protected double m_InitialVelocity = 0.2;
protected double m_SpeedLimit = 0.1;
protected double m_Phi1 = 2.05;
protected double m_Phi2 = 2.05;
protected int topologyRange = 2;
protected double initialVelocity = 0.2;
protected double speedLimit = 0.1;
protected double phi1 = 2.05;
protected double phi2 = 2.05;
// for multi-swarm topology: radius of the swarm relative to the range
protected double m_swarmRadius = 0.2;
protected double swarmRadius = 0.2;
// for multi-swarm: maximum sub swarm size. zero means unlimited
protected int maxSubSwarmSize = 0;
protected int minSubSwarmSize = 2;
@ -131,12 +131,12 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
this.m_Population = (Population) a.m_Population.clone();
this.m_Problem = a.m_Problem;
this.m_Identifier = a.m_Identifier;
this.m_InitialVelocity = a.m_InitialVelocity;
this.m_SpeedLimit = a.m_SpeedLimit;
this.m_Phi1 = a.m_Phi1;
this.m_Phi2 = a.m_Phi2;
this.initialVelocity = a.initialVelocity;
this.speedLimit = a.speedLimit;
this.phi1 = a.phi1;
this.phi2 = a.phi2;
this.inertnessOrChi = a.inertnessOrChi;
this.m_TopologyRange = a.m_TopologyRange;
this.topologyRange = a.topologyRange;
this.paramControl = (ParameterControlManager) a.paramControl.clone();
//this.setCheckSpeedLimit(a.isCheckSpeedLimit());
}
@ -155,7 +155,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
algType.setSelectedTag(1); // set to constriction
m_Population = new Population(popSize);
setPhiValues(p1, p2);
m_TopologyRange = topoRange;
topologyRange = topoRange;
topology = topo;
}
@ -481,14 +481,14 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
treeLevels = 0;
// the HPSO tree will contain layers 0...HPSOLevels, the last one is "incomplete" with only HPSOOrphans number of nodes
if (getTopology() == PSOTopologyEnum.hpso || getTopology() == PSOTopologyEnum.tree) {
if (m_TopologyRange < 2) {
if (topologyRange < 2) {
System.err.println("Error, tree/hpso requires topology range of at least 2!");
} else {
while (getMaxNodes(m_TopologyRange, treeLevels) < m_Population.size()) {
while (getMaxNodes(topologyRange, treeLevels) < m_Population.size()) {
treeLevels++;
}
treeOrphans = m_Population.size() - getMaxNodes(m_TopologyRange, treeLevels - 1);
treeLastFullLevelNodeCnt = (int) Math.pow(m_TopologyRange, treeLevels - 1);
treeOrphans = m_Population.size() - getMaxNodes(topologyRange, treeLevels - 1);
treeLastFullLevelNodeCnt = (int) Math.pow(topologyRange, treeLevels - 1);
}
}
if (getTopology() == PSOTopologyEnum.dms) {
@ -511,7 +511,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
indy = (AbstractEAIndividual) pop.get(i);
if (indy instanceof InterfaceDataTypeDouble) {
if (!externalInitialPop || (!defaultsDone(indy))) {
initIndividualDefaults(indy, m_InitialVelocity);
initIndividualDefaults(indy, initialVelocity);
}
}
indy.putData(indexKey, i);
@ -602,7 +602,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
}
protected void resetIndividual(AbstractEAIndividual indy) {
resetIndividual(indy, m_InitialVelocity);
resetIndividual(indy, initialVelocity);
plotIndy(((InterfaceDataTypeDouble) indy).getDoubleData(), null, (Integer) indy.getData(indexKey));
}
@ -666,7 +666,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
}
// enforce range constraints if necessary
if (m_CheckRange) {
if (checkRange) {
ensureConstraints(curPosition, curVelocity, range);
}
@ -792,8 +792,8 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
// if (algType.getSelectedTag().getID()==1) chi=inertnessOrChi;
// else chi = 1.;
//
// double scaleCog = this.m_Phi1*chi*RNG.randomDouble(0,1);
// double scaleNei = this.m_Phi2*chi*RNG.randomDouble(0,1);
// double scaleCog = this.phi1*chi*RNG.randomDouble(0,1);
// double scaleNei = this.phi2*chi*RNG.randomDouble(0,1);
//
//
// for (int i=0; i<lastVelocity.length; i++) {
@ -808,16 +808,16 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
// if (algType.getSelectedTag().getID()==1) chi=inertnessOrChi;
// else chi = 1.;
// // the component from the cognition model
// //curVelocity[i] += this.m_Phi1*chi*RNG.randomDouble(0,1)*(personalBestPos[i]-curPosition[i]);
// //curVelocity[i] += this.phi1*chi*RNG.randomDouble(0,1)*(personalBestPos[i]-curPosition[i]);
// double dir,diff;
// dir = (personalBestPos[i] < curPosition[i]) ? -1 : 1;
// diff = Math.abs((personalBestPos[i]-curPosition[i]));
// curVelocity[i] += this.m_Phi1*chi*.5*dir*Math.max(diff, .1);
// curVelocity[i] += this.phi1*chi*.5*dir*Math.max(diff, .1);
// // the component from the social model
// //curVelocity[i] += this.m_Phi2*chi*RNG.randomDouble(0,1)*(neighbourBestPos[i]-curPosition[i]);
// //curVelocity[i] += this.phi2*chi*RNG.randomDouble(0,1)*(neighbourBestPos[i]-curPosition[i]);
// dir = (neighbourBestPos[i]< curPosition[i]) ? -1 : 1;
// diff = Math.abs((neighbourBestPos[i]-curPosition[i]));
// curVelocity[i] += this.m_Phi2*chi*.5*dir*Math.max(diff, .1);
// curVelocity[i] += this.phi2*chi*.5*dir*Math.max(diff, .1);
// }
double[] accel, curVelocity = new double[lastVelocity.length];
@ -851,9 +851,9 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
chi = 1.;
}
// the component from the cognition model
accel[i] = this.m_Phi1 * chi * RNG.randomDouble(0, 1) * (personalBestPos[i] - curPosition[i]);
accel[i] = this.phi1 * chi * RNG.randomDouble(0, 1) * (personalBestPos[i] - curPosition[i]);
// the component from the social model
accel[i] += this.m_Phi2 * chi * RNG.randomDouble(0, 1) * (neighbourBestPos[i] - curPosition[i]);
accel[i] += this.phi2 * chi * RNG.randomDouble(0, 1) * (neighbourBestPos[i] - curPosition[i]);
}
return accel;
}
@ -909,11 +909,11 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
//
// for (int i = 0; i < curPosition.length; i++) {
// // the component from the cognition model
// // accel[i] = this.m_Phi1*chi*/*RNG.randomDouble(0,1)**/cogRand.getElement(i);
// accel[i] = this.m_Phi1*chi*/*RNG.randomDouble(0,1)**/cogRandB.get(i,0);
// // accel[i] = this.phi1*chi*/*RNG.randomDouble(0,1)**/cogRand.getElement(i);
// accel[i] = this.phi1*chi*/*RNG.randomDouble(0,1)**/cogRandB.get(i,0);
// // the component from the social model
// // accel[i] += this.m_Phi2*chi*/*RNG.randomDouble(0,1)**/socRand.getElement(i);
// accel[i] += this.m_Phi2*chi*/*RNG.randomDouble(0,1)**/socRandB.get(i,0);
// // accel[i] += this.phi2*chi*/*RNG.randomDouble(0,1)**/socRand.getElement(i);
// accel[i] += this.phi2*chi*/*RNG.randomDouble(0,1)**/socRandB.get(i,0);
// }
// return accel;
// } else {
@ -1045,7 +1045,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
switch (topology) {
case linear:
// linear
for (int x = -this.m_TopologyRange; x <= this.m_TopologyRange; x++) {
for (int x = -this.topologyRange; x <= this.topologyRange; x++) {
if (wrapTopology) {
tmpIndex = (index + x + pop.size()) % pop.size();
} else {
@ -1060,8 +1060,8 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
case grid:
// grid
int corner = 1 + (int) Math.sqrt(pop.size());
for (int x = -this.m_TopologyRange; x <= this.m_TopologyRange; x++) {
for (int y = -this.m_TopologyRange; y <= this.m_TopologyRange; y++) {
for (int x = -this.topologyRange; x <= this.topologyRange; x++) {
for (int y = -this.topologyRange; y <= this.topologyRange; y++) {
tmpIndex = index + x + (y * corner);
if (wrapTopology) {
tmpIndex = (tmpIndex + pop.size()) % pop.size(); // wrap the grid toroidal
@ -1099,13 +1099,13 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
sortedIndex = (Integer) ((AbstractEAIndividual) sortedPop[index]).getData(sortedIndexKey);
if (sortedIndex > 0) { // its found and its not the root. root has no parent to check for
k = getParentIndex(m_TopologyRange, sortedIndex, pop.size());
k = getParentIndex(topologyRange, sortedIndex, pop.size());
compareAndSetAttractor(localBestFitness, localBestPosition, (AbstractEAIndividual) sortedPop[k], useHistoric);
}
if (treeStruct == 1) { // loop all children
if (isComplete(sortedIndex, pop.size())) { // the node has full degree
k = m_TopologyRange * sortedIndex + 1; // this is the offset of the nodes children
for (int i = 0; i < m_TopologyRange; i++) {
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);
}
} else if (isIncomplete(sortedIndex, pop.size())) { // the node does not have full degree but might have orphans
@ -1129,7 +1129,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
break;
case hpso: // Hierarchical PSO
if (index >= 0) {
k = getParentIndex(m_TopologyRange, index, pop.size());
k = getParentIndex(topologyRange, index, pop.size());
// compareAndSet(localBestFitness, localBestPosition, (AbstractEAIndividual)pop.get(k), useHistoric);
indy = (AbstractEAIndividual) pop.get(k);
System.arraycopy((double[]) indy.getData(partBestFitKey), 0, localBestFitness, 0, localBestFitness.length);
@ -1137,8 +1137,8 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
}
break;
case random: // m_TopologyRange random informants, may be the same several times
for (int i = 0; i < m_TopologyRange; i++) {
case random: // topologyRange random informants, may be the same several times
for (int i = 0; i < topologyRange; i++) {
// select random informant
indy = (AbstractEAIndividual) pop.get(RNG.randomInt(0, pop.size() - 1));
// set local values
@ -1245,7 +1245,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
for (int i = 0; i < curPosition.length; i++) {
newPosition[i] = curPosition[i] + curVelocity[i];
}
if (m_CheckRange && isOutOfRange(newPosition, range)) {
if (checkRange && isOutOfRange(newPosition, range)) {
System.err.println("error, individual violates constraints!");
}
@ -1254,7 +1254,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
((InterfaceDataTypeDouble) indy).setDoubleGenotype(newPosition);
} else {
((InterfaceDataTypeDouble) indy).setDoubleGenotype(newPosition); // WARNING, this does a checkBounds in any case!
if (!m_CheckRange) {
if (!checkRange) {
System.err.println("warning, checkbounds will be forced by InterfaceESIndividual!");
}
}
@ -1516,7 +1516,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
for (int i = 0; i < leaders.size(); i++) {
dist = metric.distance((AbstractEAIndividual) sortedPop[cur], leaders.get(i));
//System.out.println("dist is "+dist);
if ((m_swarmRadius * 2.) > dist) { // a formal leader is found
if ((swarmRadius * 2.) > dist) { // a formal leader is found
int sSize = (Integer) (leaders.get(i)).getData(multiSwSizeKey);
if ((maxSubSwarmSize > 0) && (sSize >= maxSubSwarmSize)) {
// swarm is too big already
@ -1546,7 +1546,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
cur++;
}
// for (int i=0; i<pop.size(); i++) { // this causes quadratic complexity. however, popsizes are usually small for pso, so its acceptable for testing
// if ((i!=index) && ((m_swarmRadius*2.)>metric.distance((AbstractEAIndividual)pop.get(i), (AbstractEAIndividual)pop.get(index)))) {
// if ((i!=index) && ((swarmRadius*2.)>metric.distance((AbstractEAIndividual)pop.get(i), (AbstractEAIndividual)pop.get(index)))) {
// this.compareAndSet(localBestFitness, localBestPosition, (AbstractEAIndividual)pop.get(i));
// }
// }
@ -1563,7 +1563,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
AbstractEAIndividualComparator comp = new AbstractEAIndividualComparator(partBestFitKey);
for (int i = 0; i < pop.size(); i++) {
// loop over the part of the tree which is complete (full degree in each level)
parentIndex = getParentIndex(m_TopologyRange, i, pop.size());
parentIndex = getParentIndex(topologyRange, i, pop.size());
if (comp.compare(pop.get(i), pop.get(parentIndex)) < 0) { // sibling is dominant!
// so switch them
indy = (AbstractEAIndividual) pop.get(i);
@ -1755,7 +1755,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
if (indy == null) {
System.err.println("Error in PSO.setPopulation!");
} else if (!indy.hasData(partTypeKey)) {
initIndividualDefaults(indy, m_InitialVelocity);
initIndividualDefaults(indy, initialVelocity);
initIndividualMemory(indy);
indy.putData(indexKey, i);
indy.setIndividualIndex(i);
@ -1787,11 +1787,11 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param f
*/
public void setInitialVelocity(double f) {
this.m_InitialVelocity = f;
this.initialVelocity = f;
}
public double getInitialVelocity() {
return this.m_InitialVelocity;
return this.initialVelocity;
}
public String initialVelocityTipText() {
@ -1810,11 +1810,11 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
if (k > 1) {
k = 1;
}
this.m_SpeedLimit = k;
this.speedLimit = k;
}
public double getSpeedLimit() {
return this.m_SpeedLimit;
return this.speedLimit;
}
/**
@ -1824,7 +1824,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @return
*/
protected double getSpeedLimit(int index) {
return this.m_SpeedLimit;
return this.speedLimit;
}
public String speedLimitTipText() {
@ -1853,8 +1853,8 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
if (!getAlgoType().isSelectedString("Constriction")) {
System.err.println("Warning, PSO algorithm variant constriction expected!");
}
m_Phi1 = tau1;
m_Phi2 = tau2;
phi1 = tau1;
phi2 = tau2;
setInertnessOrChi(2. / (Math.abs(2 - pSum - Math.sqrt((pSum * pSum) - (4 * pSum)))));
}
}
@ -1882,14 +1882,14 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param l
*/
public void setPhi1(double l) {
this.m_Phi1 = l;
this.phi1 = l;
if (algType.getSelectedTag().getID() == 1) {
setConstriction(getPhi1(), getPhi2());
}
}
public double getPhi1() {
return this.m_Phi1;
return this.phi1;
}
public String phi1TipText() {
@ -1902,14 +1902,14 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param l
*/
public void setPhi2(double l) {
this.m_Phi2 = l;
this.phi2 = l;
if (algType.getSelectedTag().getID() == 1) {
setConstriction(getPhi1(), getPhi2());
}
}
public double getPhi2() {
return this.m_Phi2;
return this.phi2;
}
public String phi2TipText() {
@ -1924,8 +1924,8 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param phi2
*/
public void setPhiValues(double phi1, double phi2) {
m_Phi1 = phi1;
m_Phi2 = phi2;
this.phi1 = phi1;
this.phi2 = phi2;
if (algType.isSelectedString("Constriction")) {
setConstriction(phi1, phi2);
}
@ -1940,8 +1940,8 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param inertness
*/
public void setParameterValues(double phi1, double phi2, double inertness) {
m_Phi1 = phi1;
m_Phi2 = phi2;
this.phi1 = phi1;
this.phi2 = phi2;
setInertnessOrChi(inertness);
}
@ -2008,11 +2008,11 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param s The range.
*/
public void setTopologyRange(int s) {
this.m_TopologyRange = s;
this.topologyRange = s;
}
public int getTopologyRange() {
return this.m_TopologyRange;
return this.topologyRange;
}
public String topologyRangeTipText() {
@ -2025,11 +2025,11 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param s Check Constraints.
*/
public void setCheckRange(boolean s) {
this.m_CheckRange = s;
this.checkRange = s;
}
public boolean isCheckRange() {
return this.m_CheckRange;
return this.checkRange;
}
public String checkRangeTipText() {
@ -2102,11 +2102,11 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
}
public double getSubSwarmRadius() {
return m_swarmRadius;
return swarmRadius;
}
public void setSubSwarmRadius(double radius) {
m_swarmRadius = radius;
swarmRadius = radius;
}
public String subSwarmRadiusTipText() {