summaryrefslogtreecommitdiff
path: root/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness
diff options
context:
space:
mode:
Diffstat (limited to 'nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness')
-rwxr-xr-xnlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/ACRComparator.java90
-rwxr-xr-xnlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/BCHComparator.java47
-rwxr-xr-xnlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/IGoodnessCompareEngine.java38
-rwxr-xr-xnlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/PenaltyComparator.java41
-rwxr-xr-xnlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/SRComparator.java41
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]);
+ }
+ }
+
+}