From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- .../net/adaptivebox/goodness/ACRComparator.java | 91 ++++++++++++++++++++++ .../net/adaptivebox/goodness/BCHComparator.java | 46 +++++++++++ .../goodness/IGoodnessCompareEngine.java | 41 ++++++++++ 3 files changed, 178 insertions(+) create mode 100644 nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/ACRComparator.java create mode 100644 nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/BCHComparator.java create mode 100644 nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/IGoodnessCompareEngine.java (limited to 'nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness') 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 100644 index 000000000..284549506 --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/ACRComparator.java @@ -0,0 +1,91 @@ +/** + * 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 equality 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.global.IUpdateCycleEngine; +import net.adaptivebox.knowledge.Library; + +public class ACRComparator implements IGoodnessCompareEngine, IUpdateCycleEngine { + private final Library socialPool; + private double epsilon_t = 0; + + private static final double RU = 0.75; + private static final double RL = 0.25; + private static final double BETAF = 0.618; + private static final double BETAL = 0.618; + private static final double BETAU = 1.382; + + private final double T; + + private static final 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); + } + + private static 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 100644 index 000000000..8140650dd --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/BCHComparator.java @@ -0,0 +1,46 @@ +/** + * 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 frontal is more important */ + private 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 100644 index 000000000..17a85993d --- /dev/null +++ b/nlpsolver/ThirdParty/EvolutionarySolver/src/net/adaptivebox/goodness/IGoodnessCompareEngine.java @@ -0,0 +1,41 @@ +/** + * 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 { + int LARGER_THAN = 2; + int EQUAL_TO = 1; + 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 equal to goodness2 + */ + int compare(double[] goodness1, double[] goodness2); +} -- cgit v1.2.3