diff options
Diffstat (limited to 'nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness')
5 files changed, 257 insertions, 0 deletions
diff --git a/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/ACRComparator.java b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/ACRComparator.java new file mode 100755 index 000000000000..1efd3c7ac8af --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/ACRComparator.java @@ -0,0 +1,90 @@ +/** + * Description: For comparison of goodness in landscape with loosed constraints + * which varied adaptively according to the social information. + * + * @Applied domain: efficiently for ridge class feasible space (SF), such as + * the problem with eqaulity constraints + * + * @ Author Create/Modi Note + * Xiaofeng Xie Jun 24, 2003 Created + * Xiaofeng Xie May 11, 2004 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * Please acknowledge the author(s) if you use this code in any way. + * + * @version 1.0 + * @Since MAOS1.2 + * + * [1] Xie X F, Zhang W J, Bi D C. Handling equality constraints by adaptive + * relaxing rule for swarm algorithms. Congress on Evolutionary Computation, + * Oregon, USA, 2004 + */ + +package net.adaptivebox.goodness; + +import net.adaptivebox.knowledge.*; +import net.adaptivebox.global.*; + + +public class ACRComparator implements IGoodnessCompareEngine, IUpdateCycleEngine { + private Library socialPool; + private double epsilon_t = 0; + + private double RU = 0.75; + private double RL = 0.25; + private double BETAF = 0.618; + private double BETAL = 0.618; + private double BETAU = 1.382; + + private double T = -1; + + private double TthR = 0.5; + + public ACRComparator(Library lib, int T) { + socialPool = lib; + this.T = T; + //set the (epsilon_t|t=0) as the maximum CONS value among the SearchPoints in the library + epsilon_t = lib.getExtremalVcon(true); + } + + static public int compare(double data1, double data2) { + if (data1 < data2) + return LESS_THAN; + else if (data1 > data2) + return LARGER_THAN; + else + return EQUAL_TO; + } + + public int compare(double[] fit1, double[] fit2) { + if(Math.max(fit1[0], fit2[0])<=Math.max(0, epsilon_t)) { //epsilon>0 + return compare(fit1[1], fit2[1]); + } else { + return compare(fit1[0], fit2[0]); + } + } + + public void updateCycle(int t) { + //calculates the ratio + double rn = (double)socialPool.getVconThanNum(epsilon_t)/(double)socialPool.getPopSize(); + if(t>TthR*T &&T!=-1) { //Forcing sub-rule + epsilon_t *= BETAF; + } else { //Ratio-keeping sub-rules + if(rn>RU) { + epsilon_t *= BETAL; //Shrink + } + if(rn<RL) { + epsilon_t *= BETAU; //Relax + } + } + } +} diff --git a/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/BCHComparator.java b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/BCHComparator.java new file mode 100755 index 000000000000..695fb6fe8894 --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/BCHComparator.java @@ -0,0 +1,47 @@ +/** + * Description: For formation the basic goodness landscape. + * + * @ Author Create/Modi Note + * Xiaofeng Xie Jun 24, 2003 Created + * Xiaofeng Xie May 11, 2004 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * Please acknowledge the author(s) if you use this code in any way. + * + * @version 1.0 + * @Since MAOS1.2 + * + * [1] Deb K. An efficient constraint handling method for genetic algorithms. + * Computer Methods in Applied Mechanics and Engineering, 2000, 186(2-4): 311-338 + */ + +package net.adaptivebox.goodness; + +public class BCHComparator implements IGoodnessCompareEngine { + +/* check the magnitude of two array, the frontial is more important + **/ + public static int compareArray(double[] fit1, double[] fit2) { + for (int i=0; i<fit1.length; i++) { + if (fit1[i]>fit2[i]) { + return LARGER_THAN; //Large than + } else if (fit1[i]<fit2[i]){ + return LESS_THAN; //Less than + } + } + return IGoodnessCompareEngine.EQUAL_TO; //same + } + + public int compare(double[] fit1, double[] fit2) { + return compareArray(fit1, fit2); + } +} diff --git a/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/IGoodnessCompareEngine.java b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/IGoodnessCompareEngine.java new file mode 100755 index 000000000000..1ff1dfb01923 --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/IGoodnessCompareEngine.java @@ -0,0 +1,38 @@ +/** + * Description: For comparison of goodness. + * + * @ Author Create/Modi Note + * Xiaofeng Xie Feb 19, 2004 + * Xiaofeng Xie May 11, 2004 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * Please acknowledge the author(s) if you use this code in any way. + * + * @version 1.0 + * @Since MAOS1.2 + */ + +package net.adaptivebox.goodness; + +public abstract interface IGoodnessCompareEngine { + public static final int LARGER_THAN = 2; + public static final int EQUAL_TO = 1; + public static final int LESS_THAN = 0; + + /** + * check the magnitude of two IEncodeEngine + * LARGER_THAN: goodness1 is worse than goodness2 + * LESS_THAN: goodness1 is better than goodness2 + * EQUAL_TO : goodness1 is eqaul to goodness2 + **/ + public abstract int compare(double[] goodness1, double[] goodness2); +} diff --git a/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/PenaltyComparator.java b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/PenaltyComparator.java new file mode 100755 index 000000000000..f0f8da3a2ff6 --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/PenaltyComparator.java @@ -0,0 +1,41 @@ +/** + * Description: For comparison of goodness in landscape with penalty method. + * + * @Applied domain: efficiently for ridge class feasible space (SF), such as + * the problem with eqaulity constraints + * + * @ Author Create/Modi Note + * Xiaofeng Xie May 29, 2004 + * + * @version 1.0 + * + * [1] Runarsson T P, Yao X. Stochastic ranking for constrained evolutionary + * optimization. IEEE Trans. on Evolutionary Computation. 2000, 4 (3): 284-294 + * + */ + +package net.adaptivebox.goodness; + +import net.adaptivebox.global.*; + +public class PenaltyComparator implements IGoodnessCompareEngine { + public double Rg = 0; + + public PenaltyComparator() {} + + public PenaltyComparator(double rg) { + this.Rg = rg; + } + + public double calcPenaltyValue(double fit1, double fit2) { + return fit1+Rg*fit2; + } + /** + * check the magnitude of two array, the frontial is more important + * Stoch ranking: array size = 2 + **/ + public int compare(double[] fit1, double[] fit2) { + return GlobalCompare.compare(calcPenaltyValue(fit1[1], fit1[0]), calcPenaltyValue(fit2[1], fit2[0])); + } + +} diff --git a/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/SRComparator.java b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/SRComparator.java new file mode 100755 index 000000000000..7a8e59d74f59 --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/SRComparator.java @@ -0,0 +1,41 @@ +/** + * Description: For comparison of goodness in landscape with stoch. ranking. + * + * @ Author Create/Modi Note + * Xiaofeng Xie May 29, 2004 + * + * [1] Runarsson T P, Yao X. Stochastic ranking for constrained evolutionary + * optimization. IEEE Trans. on Evolutionary Computation. 2000, 4 (3): 284-294 + * + */ + +package net.adaptivebox.goodness; + +import net.adaptivebox.global.*; + +public class SRComparator implements IGoodnessCompareEngine, IUpdateCycleEngine { + public double Pf = 0.5; + + public SRComparator() {} + + public SRComparator(double pf) { + this.Pf = pf; + } + + public void updateCycle(int t) { + Pf *=0.995; + } + + /** + * check the magnitude of two array, the frontial is more important + * Stoch ranking: array size = 2 + **/ + public int compare(double[] fit1, double[] fit2) { + if((fit1[0]==fit2[0])||Pf>Math.random()) { + return GlobalCompare.compare(fit1[1], fit2[1]); + } else { + return GlobalCompare.compare(fit1[0], fit2[0]); + } + } + +} |