Should be the last of the huge commits.
This commit is contained in:
Fabian Becker 2013-01-29 14:02:48 +00:00
parent 550e9956d8
commit bcf7a9a8a2
402 changed files with 8970 additions and 3416 deletions

View File

@ -91,7 +91,9 @@ public class EvAInfo {
public static String getVersion() { public static String getVersion() {
String version = getProperty("EvA2Version"); String version = getProperty("EvA2Version");
if (version==null) System.err.println("ERROR, missing property EvA2Version!"); if (version==null) {
System.err.println("ERROR, missing property EvA2Version!");
}
return version; return version;
} }

View File

@ -83,7 +83,9 @@ public class OptimizerRunnable implements Runnable {
cntID++; cntID++;
proc = new Processor(stats, null, params); proc = new Processor(stats, null, params);
if (proc.getStatistics() instanceof AbstractStatistics) ((AbstractStatistics)proc.getStatistics()).setSaveParams(false); if (proc.getStatistics() instanceof AbstractStatistics) {
((AbstractStatistics)proc.getStatistics()).setSaveParams(false);
}
doRestart = restart; doRestart = restart;
} }
@ -112,20 +114,28 @@ public class OptimizerRunnable implements Runnable {
} }
public void setStats(InterfaceStatistics stats) { public void setStats(InterfaceStatistics stats) {
if (proc.isOptRunning()) throw new RuntimeException("Error - cannot change statistics instance during optimization."); if (proc.isOptRunning()) {
throw new RuntimeException("Error - cannot change statistics instance during optimization.");
}
InterfaceGOParameters params = proc.getGOParams(); InterfaceGOParameters params = proc.getGOParams();
proc = new Processor(stats, null, params); proc = new Processor(stats, null, params);
if (proc.getStatistics() instanceof AbstractStatistics) ((AbstractStatistics)proc.getStatistics()).setSaveParams(false); if (proc.getStatistics() instanceof AbstractStatistics) {
((AbstractStatistics)proc.getStatistics()).setSaveParams(false);
}
} }
public void setTextListener(InterfaceTextListener lsnr) { public void setTextListener(InterfaceTextListener lsnr) {
proc.getStatistics().removeTextListener(listener); proc.getStatistics().removeTextListener(listener);
this.listener = lsnr; this.listener = lsnr;
if (listener != null) proc.getStatistics().addTextListener(listener); if (listener != null) {
proc.getStatistics().addTextListener(listener);
}
} }
public void addRemoteStateListener(RemoteStateListener rsl) { public void addRemoteStateListener(RemoteStateListener rsl) {
if (proc != null) proc.addListener(rsl); if (proc != null) {
proc.addListener(rsl);
}
} }
public void setDoRestart(boolean restart) { public void setDoRestart(boolean restart) {
@ -140,8 +150,12 @@ public class OptimizerRunnable implements Runnable {
if (postProcessOnly) { if (postProcessOnly) {
proc.performPostProcessing((PostProcessParams)proc.getGOParams().getPostProcessParams(), listener); proc.performPostProcessing((PostProcessParams)proc.getGOParams().getPostProcessParams(), listener);
} else { } else {
if (doRestart) proc.restartOpt(); if (doRestart) {
else proc.startOpt(); proc.restartOpt();
}
else {
proc.startOpt();
}
proc.runOptOnce(); proc.runOptOnce();
} }
} catch(Exception e) { } catch(Exception e) {
@ -204,28 +218,36 @@ public class OptimizerRunnable implements Runnable {
InterfaceTerminator term = proc.getGOParams().getTerminator(); InterfaceTerminator term = proc.getGOParams().getTerminator();
return term.lastTerminationMessage(); return term.lastTerminationMessage();
} }
} else return "Not yet terminated"; } else {
return "Not yet terminated";
}
} }
public double[] getDoubleSolution() { public double[] getDoubleSolution() {
IndividualInterface indy = getResult(); IndividualInterface indy = getResult();
if (indy instanceof InterfaceDataTypeDouble) { if (indy instanceof InterfaceDataTypeDouble) {
return ((InterfaceDataTypeDouble)indy).getDoubleData(); return ((InterfaceDataTypeDouble)indy).getDoubleData();
} else return null; } else {
return null;
}
} }
public BitSet getBinarySolution() { public BitSet getBinarySolution() {
IndividualInterface indy = getResult(); IndividualInterface indy = getResult();
if (indy instanceof InterfaceDataTypeBinary) { if (indy instanceof InterfaceDataTypeBinary) {
return ((InterfaceDataTypeBinary)indy).getBinaryData(); return ((InterfaceDataTypeBinary)indy).getBinaryData();
} else return null; } else {
return null;
}
} }
public int[] getIntegerSolution() { public int[] getIntegerSolution() {
IndividualInterface indy = getResult(); IndividualInterface indy = getResult();
if (indy instanceof InterfaceDataTypeInteger) { if (indy instanceof InterfaceDataTypeInteger) {
return ((InterfaceDataTypeInteger)indy).getIntegerData(); return ((InterfaceDataTypeInteger)indy).getIntegerData();
} else return null; } else {
return null;
}
} }
/** /**
@ -237,7 +259,9 @@ public class OptimizerRunnable implements Runnable {
public void setVerbosityLevel(int vLev) { public void setVerbosityLevel(int vLev) {
if (vLev >= 0 && vLev < proc.getStatistics().getStatisticsParameter().getOutputVerbosity().getTags().length) { if (vLev >= 0 && vLev < proc.getStatistics().getStatisticsParameter().getOutputVerbosity().getTags().length) {
proc.getStatistics().getStatisticsParameter().getOutputVerbosity().setSelectedTag(vLev); proc.getStatistics().getStatisticsParameter().getOutputVerbosity().setSelectedTag(vLev);
} else System.err.println("Invalid verbosity leveln in OptimizerRunnable.setVerbosityLevel!"); } else {
System.err.println("Invalid verbosity leveln in OptimizerRunnable.setVerbosityLevel!");
}
} }
/** /**

View File

@ -27,7 +27,9 @@ class RMIConnectionEvA extends RMIConnection {
if (m_MainAdapter instanceof EvAMainAdapter) { if (m_MainAdapter instanceof EvAMainAdapter) {
EvAMainAdapter evaAdapter = (EvAMainAdapter)m_MainAdapter; EvAMainAdapter evaAdapter = (EvAMainAdapter)m_MainAdapter;
ModuleAdapter ret = null; ModuleAdapter ret = null;
if (TRACE) System.out.println("ComAdapter.getModuleAdapter(" + Modul + ")"); if (TRACE) {
System.out.println("ComAdapter.getModuleAdapter(" + Modul + ")");
}
String hostAdd = ""; String hostAdd = "";
try { try {
hostAdd = InetAddress.getLocalHost().getHostAddress(); hostAdd = InetAddress.getLocalHost().getHostAddress();

View File

@ -98,7 +98,9 @@ public abstract class AbstractListSelectionEditor extends JPanel implements Prop
this.m_BlackCheck[i].addActionListener(new ActionListener() { this.m_BlackCheck[i].addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent ev) { public void actionPerformed(ActionEvent ev) {
if (actionOnSelect()) m_Support.firePropertyChange("AbstractListSelectionEditor", null, this); if (actionOnSelect()) {
m_Support.firePropertyChange("AbstractListSelectionEditor", null, this);
}
} }
}); });
this.m_NodePanel.add(this.m_BlackCheck[i]); this.m_NodePanel.add(this.m_BlackCheck[i]);
@ -125,7 +127,9 @@ public abstract class AbstractListSelectionEditor extends JPanel implements Prop
*/ */
@Override @Override
public void setValue(Object o) { public void setValue(Object o) {
if (setObject(o)) updateEditor(); if (setObject(o)) {
updateEditor();
}
} }
/** /**
@ -157,13 +161,17 @@ public abstract class AbstractListSelectionEditor extends JPanel implements Prop
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -202,7 +210,9 @@ public abstract class AbstractListSelectionEditor extends JPanel implements Prop
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_CustomEditor == null) this.initCustomEditor(); if (this.m_CustomEditor == null) {
this.initCustomEditor();
}
return m_CustomEditor; return m_CustomEditor;
} }

View File

@ -146,26 +146,38 @@ public class BeanInspector {
* @return Description of the Return Value * @return Description of the Return Value
*/ */
private static String toString(Object obj, char delim, boolean tight, String indentStr, int indentDepth, boolean withNewlines) { private static String toString(Object obj, char delim, boolean tight, String indentStr, int indentDepth, boolean withNewlines) {
if (obj == null) return "null"; if (obj == null) {
return "null";
}
// try the object itself // try the object itself
if (obj instanceof String) return (String)obj; // directly return a string object if (obj instanceof String) {
return (String)obj;
} // directly return a string object
Class<? extends Object> type = obj.getClass(); Class<? extends Object> type = obj.getClass();
if (type.isArray()) { // handle the array case if (type.isArray()) { // handle the array case
StringBuffer sbuf = new StringBuffer(); StringBuffer sbuf = new StringBuffer();
sbuf.append("["); sbuf.append("[");
if (!tight) sbuf.append(" "); if (!tight) {
sbuf.append(" ");
}
int len = Array.getLength(obj); int len = Array.getLength(obj);
for (int i=0; i<len; i++) { for (int i=0; i<len; i++) {
// sbuf.append(toString(Array.get(obj, i))); // sbuf.append(toString(Array.get(obj, i)));
if (withNewlines) sbuf.append('\n'); if (withNewlines) {
sbuf.append('\n');
}
sbuf.append(toString(Array.get(obj, i), delim, tight, indentStr, indentDepth, withNewlines)); sbuf.append(toString(Array.get(obj, i), delim, tight, indentStr, indentDepth, withNewlines));
if (i<len-1) { if (i<len-1) {
// sbuf.append(delim); // sbuf.append(delim);
if (!tight) sbuf.append(" "); if (!tight) {
sbuf.append(" ");
}
} }
} }
if (!tight) sbuf.append(" "); if (!tight) {
sbuf.append(" ");
}
sbuf.append("]"); sbuf.append("]");
return sbuf.toString(); return sbuf.toString();
} }
@ -176,17 +188,25 @@ public class BeanInspector {
if (obj instanceof List && !(obj instanceof Population)) { // handle the list case if (obj instanceof List && !(obj instanceof Population)) { // handle the list case
StringBuffer sbuf = new StringBuffer(); StringBuffer sbuf = new StringBuffer();
if (withNewlines) sbuf.append('\n'); if (withNewlines) {
sbuf.append('\n');
}
addIndent(sbuf, indentStr, indentDepth); addIndent(sbuf, indentStr, indentDepth);
sbuf.append("["); sbuf.append("[");
if (!tight) sbuf.append(" "); if (!tight) {
sbuf.append(" ");
}
List<?> lst = (List<?>)obj; List<?> lst = (List<?>)obj;
for (Object o : lst) { for (Object o : lst) {
sbuf.append(o.toString()); sbuf.append(o.toString());
sbuf.append(delim); sbuf.append(delim);
if (!tight) sbuf.append(" "); if (!tight) {
sbuf.append(" ");
}
} }
if (!tight && (sbuf.charAt(sbuf.length()-2) == delim)) sbuf.setCharAt(sbuf.length()-2, ' '); // delete the delim if (!tight && (sbuf.charAt(sbuf.length()-2) == delim)) {
sbuf.setCharAt(sbuf.length()-2, ' ');
} // delete the delim
sbuf.setCharAt(sbuf.length()-1, ']'); sbuf.setCharAt(sbuf.length()-1, ']');
return sbuf.toString(); return sbuf.toString();
} }
@ -198,7 +218,9 @@ public class BeanInspector {
//args[0] = obj; //args[0] = obj;
try { try {
String ret = (String) methods[ii].invoke(obj, args); String ret = (String) methods[ii].invoke(obj, args);
if (TRACE) System.out.println("toString on "+ obj.getClass() + " gave me " + ret); if (TRACE) {
System.out.println("toString on "+ obj.getClass() + " gave me " + ret);
}
return makeIndent(indentStr, indentDepth) + ret; return makeIndent(indentStr, indentDepth) + ret;
} catch (Exception e) { } catch (Exception e) {
System.err.println(" ERROR +"+ e.getMessage()); System.err.println(" ERROR +"+ e.getMessage());
@ -211,19 +233,25 @@ public class BeanInspector {
Pair<String[],Object[]> nameVals = getPublicPropertiesOf(obj, true, true); Pair<String[],Object[]> nameVals = getPublicPropertiesOf(obj, true, true);
StringBuffer sbuf = new StringBuffer(); StringBuffer sbuf = new StringBuffer();
if (withNewlines) sbuf.append('\n'); if (withNewlines) {
sbuf.append('\n');
}
addIndent(sbuf, indentStr, indentDepth); addIndent(sbuf, indentStr, indentDepth);
sbuf.append(type.getName()); sbuf.append(type.getName());
sbuf.append("{"); sbuf.append("{");
for (int i=0; i<nameVals.head.length; i++) { for (int i=0; i<nameVals.head.length; i++) {
if (nameVals.head[i]!=null) { if (nameVals.head[i]!=null) {
if (withNewlines) sbuf.append('\n'); if (withNewlines) {
sbuf.append('\n');
}
addIndent(sbuf, indentStr, indentDepth); addIndent(sbuf, indentStr, indentDepth);
sbuf.append(nameVals.head[i]); sbuf.append(nameVals.head[i]);
sbuf.append("="); sbuf.append("=");
sbuf.append(toString(nameVals.tail[i], delim, tight, indentStr, indentDepth+1, withNewlines)); sbuf.append(toString(nameVals.tail[i], delim, tight, indentStr, indentDepth+1, withNewlines));
sbuf.append(delim); sbuf.append(delim);
if (!tight) sbuf.append(" "); if (!tight) {
sbuf.append(" ");
}
} }
} }
@ -241,7 +269,9 @@ public class BeanInspector {
private static String makeIndent(String indentStr, int indentDepth) { private static String makeIndent(String indentStr, int indentDepth) {
if (indentStr!=null) { if (indentStr!=null) {
if (indentDepth<1) return ""; if (indentDepth<1) {
return "";
}
else { else {
StringBuffer sbuf = new StringBuffer(indentStr); StringBuffer sbuf = new StringBuffer(indentStr);
for (int i=2; i<=indentDepth; i++) { for (int i=2; i<=indentDepth; i++) {
@ -249,7 +279,9 @@ public class BeanInspector {
} }
return sbuf.toString(); return sbuf.toString();
} }
} else return ""; } else {
return "";
}
} }
public static void main(String[] args) { public static void main(String[] args) {
@ -412,7 +444,9 @@ public class BeanInspector {
e.printStackTrace(); e.printStackTrace();
return null; return null;
} }
} else return null; } else {
return null;
}
} }
/** /**
@ -423,7 +457,9 @@ public class BeanInspector {
* @return * @return
*/ */
public static Class[] toClassArray(Object[] o) { public static Class[] toClassArray(Object[] o) {
if (o==null) return null; if (o==null) {
return null;
}
Class[] clz = new Class[o.length]; Class[] clz = new Class[o.length];
for (int i=0; i<o.length; i++) { for (int i=0; i<o.length; i++) {
clz[i]=o[i].getClass(); clz[i]=o[i].getClass();
@ -461,15 +497,21 @@ public class BeanInspector {
for (Method method : meths) { for (Method method : meths) {
if (method.getName().equals(mName)) { // name match if (method.getName().equals(mName)) { // name match
Class[] methParamTypes = method.getParameterTypes(); Class[] methParamTypes = method.getParameterTypes();
if (paramTypes==null && methParamTypes.length==0) return method; // full match if (paramTypes==null && methParamTypes.length==0) {
return method;
} // full match
else { else {
if (paramTypes!=null && (methParamTypes.length==paramTypes.length)) { if (paramTypes!=null && (methParamTypes.length==paramTypes.length)) {
boolean mismatch = false; int i=0; boolean mismatch = false; int i=0;
while ((i<methParamTypes.length) && (!mismatch)) { while ((i<methParamTypes.length) && (!mismatch)) {
if (!methParamTypes[i].isAssignableFrom(paramTypes[i]) && !isBoxableFrom(methParamTypes[i], paramTypes[i])) mismatch=true; if (!methParamTypes[i].isAssignableFrom(paramTypes[i]) && !isBoxableFrom(methParamTypes[i], paramTypes[i])) {
mismatch=true;
}
i++; i++;
} }
if (!mismatch) return method; // parameter match, otherwise search on if (!mismatch) {
return method;
} // parameter match, otherwise search on
} // parameter mismatch, search on } // parameter mismatch, search on
} }
} }
@ -488,7 +530,9 @@ public class BeanInspector {
Class box = getBoxedType(clz1); Class box = getBoxedType(clz1);
if (box!=null && (clz2.isAssignableFrom(box))) { if (box!=null && (clz2.isAssignableFrom(box))) {
return true; return true;
} else return false; } else {
return false;
}
} }
/** /**
@ -500,16 +544,36 @@ public class BeanInspector {
*/ */
public static Class getBoxedType(Class cls) { public static Class getBoxedType(Class cls) {
if (cls.isPrimitive()) { if (cls.isPrimitive()) {
if (cls == double.class) return Double.class; if (cls == double.class) {
else if (cls == char.class) return Character.class; return Double.class;
else if (cls == int.class) return Integer.class; }
else if (cls == boolean.class) return Boolean.class; else if (cls == char.class) {
else if (cls == byte.class) return Byte.class; return Character.class;
else if (cls == short.class) return Short.class; }
else if (cls == long.class) return Long.class; else if (cls == int.class) {
else if (cls == float.class) return Float.class; return Integer.class;
else return Void.class; }
} else return null; else if (cls == boolean.class) {
return Boolean.class;
}
else if (cls == byte.class) {
return Byte.class;
}
else if (cls == short.class) {
return Short.class;
}
else if (cls == long.class) {
return Long.class;
}
else if (cls == float.class) {
return Float.class;
}
else {
return Void.class;
}
} else {
return null;
}
} }
/** /**
@ -517,16 +581,36 @@ public class BeanInspector {
* primitive class. * primitive class.
**/ **/
public static Class getUnboxedType(Class cls) { public static Class getUnboxedType(Class cls) {
if (cls == Double.class) return double.class; if (cls == Double.class) {
else if (cls == Character.class) return char.class; return double.class;
else if (cls == Integer.class) return int.class; }
else if (cls == Boolean.class) return boolean.class; else if (cls == Character.class) {
else if (cls == Byte.class) return byte.class; return char.class;
else if (cls == Short.class) return short.class; }
else if (cls == Long.class) return long.class; else if (cls == Integer.class) {
else if (cls == Float.class) return float.class; return int.class;
else if (cls == Void.class) return void.class; }
else return null; else if (cls == Boolean.class) {
return boolean.class;
}
else if (cls == Byte.class) {
return byte.class;
}
else if (cls == Short.class) {
return short.class;
}
else if (cls == Long.class) {
return long.class;
}
else if (cls == Float.class) {
return float.class;
}
else if (cls == Void.class) {
return void.class;
}
else {
return null;
}
} }
/** /**
@ -594,15 +678,21 @@ public class BeanInspector {
ArrayList<String> memberInfoList = new ArrayList<String>(); ArrayList<String> memberInfoList = new ArrayList<String>();
for (int i = 0; i < m_Properties.length; i++) { for (int i = 0; i < m_Properties.length; i++) {
if (m_Properties[i].isExpert()) continue; if (m_Properties[i].isExpert()) {
continue;
}
String name = m_Properties[i].getDisplayName(); String name = m_Properties[i].getDisplayName();
if (TRACE) System.out.println("PSP looking at "+ name); if (TRACE) {
System.out.println("PSP looking at "+ name);
}
Method getter = m_Properties[i].getReadMethod(); Method getter = m_Properties[i].getReadMethod();
Method setter = m_Properties[i].getWriteMethod(); Method setter = m_Properties[i].getWriteMethod();
// Only display read/write properties. // Only display read/write properties.
if (getter == null || setter == null) continue; if (getter == null || setter == null) {
continue;
}
try { try {
Object args[] = { }; Object args[] = { };
@ -612,7 +702,9 @@ public class BeanInspector {
if (value == null) { if (value == null) {
// If it's a user-defined property we give a warning. // If it's a user-defined property we give a warning.
String getterClass = m_Properties[i].getReadMethod().getDeclaringClass().getName(); String getterClass = m_Properties[i].getReadMethod().getDeclaringClass().getName();
if (getterClass.indexOf("java.") != 0) System.err.println("Warning: Property \"" + name+ "\" has null initial value. Skipping."); if (getterClass.indexOf("java.") != 0) {
System.err.println("Warning: Property \"" + name+ "\" has null initial value. Skipping.");
}
continue; continue;
} }
@ -633,10 +725,14 @@ public class BeanInspector {
memberInfoBf.append("String in {"); memberInfoBf.append("String in {");
for (int k=0; k<tags.length; k++) { for (int k=0; k<tags.length; k++) {
memberInfoBf.append(tags[k].getString()); memberInfoBf.append(tags[k].getString());
if (k+1<tags.length) memberInfoBf.append(", "); if (k+1<tags.length) {
memberInfoBf.append(", ");
}
} }
memberInfoBf.append("}"); memberInfoBf.append("}");
} else memberInfoBf.append(typeName); } else {
memberInfoBf.append(typeName);
}
if (withValues) { if (withValues) {
memberInfoBf.append('\t'); memberInfoBf.append('\t');
@ -671,15 +767,33 @@ public class BeanInspector {
* @throws IllegalArgumentException * @throws IllegalArgumentException
*/ */
public static double toDouble(Object val) throws IllegalArgumentException { public static double toDouble(Object val) throws IllegalArgumentException {
if (val instanceof Integer) return ((Integer)val).doubleValue(); if (val instanceof Integer) {
else if (val instanceof Double) return ((Double)val).doubleValue(); return ((Integer)val).doubleValue();
else if (val instanceof Boolean) return (((Boolean)val) ? 1. : 0.); }
else if (val instanceof Character) return ((Character)val).charValue(); else if (val instanceof Double) {
else if (val instanceof Byte) return ((Byte)val).doubleValue(); return ((Double)val).doubleValue();
else if (val instanceof Short) return ((Short)val).doubleValue(); }
else if (val instanceof Long) return ((Long)val).doubleValue(); else if (val instanceof Boolean) {
else if (val instanceof Float) return ((Float)val).doubleValue(); return (((Boolean)val) ? 1. : 0.);
else if (val instanceof Void) return 0; }
else if (val instanceof Character) {
return ((Character)val).charValue();
}
else if (val instanceof Byte) {
return ((Byte)val).doubleValue();
}
else if (val instanceof Short) {
return ((Short)val).doubleValue();
}
else if (val instanceof Long) {
return ((Long)val).doubleValue();
}
else if (val instanceof Float) {
return ((Float)val).doubleValue();
}
else if (val instanceof Void) {
return 0;
}
throw new IllegalArgumentException("Illegal type, cant convert " + val.getClass() + " to double."); throw new IllegalArgumentException("Illegal type, cant convert " + val.getClass() + " to double.");
} }
@ -691,14 +805,30 @@ public class BeanInspector {
* @return * @return
*/ */
public static Object stringToPrimitive(String str, Class<?> destType) throws NumberFormatException { public static Object stringToPrimitive(String str, Class<?> destType) throws NumberFormatException {
if ((destType == Integer.class) || (destType == int.class)) return Integer.valueOf(str); if ((destType == Integer.class) || (destType == int.class)) {
else if ((destType == Double.class) || (destType == double.class)) return Double.valueOf(str); return Integer.valueOf(str);
else if ((destType == Boolean.class) || (destType == boolean.class)) return Boolean.valueOf(str); }
else if ((destType == Byte.class) || (destType == byte.class)) return Byte.valueOf(str); else if ((destType == Double.class) || (destType == double.class)) {
else if ((destType == Short.class) || (destType == short.class)) return Short.valueOf(str); return Double.valueOf(str);
else if ((destType == Long.class) || (destType == long.class)) return Long.valueOf(str); }
else if ((destType == Float.class) || (destType == float.class)) return Float.valueOf(str); else if ((destType == Boolean.class) || (destType == boolean.class)) {
else if ((destType == Character.class) || (destType == char.class)) return str.charAt(0); return Boolean.valueOf(str);
}
else if ((destType == Byte.class) || (destType == byte.class)) {
return Byte.valueOf(str);
}
else if ((destType == Short.class) || (destType == short.class)) {
return Short.valueOf(str);
}
else if ((destType == Long.class) || (destType == long.class)) {
return Long.valueOf(str);
}
else if ((destType == Float.class) || (destType == float.class)) {
return Float.valueOf(str);
}
else if ((destType == Character.class) || (destType == char.class)) {
return str.charAt(0);
}
else { else {
// if (destType == Void.class) // if (destType == Void.class)
System.err.println("warning, value interpreted as void type"); System.err.println("warning, value interpreted as void type");
@ -714,18 +844,35 @@ public class BeanInspector {
* @return * @return
*/ */
public static Object doubleToPrimitive(Double d, Class<?> destType) { public static Object doubleToPrimitive(Double d, Class<?> destType) {
if ((destType == Double.class) || (destType == double.class)) return d; if ((destType == Double.class) || (destType == double.class)) {
if ((destType == Integer.class) || (destType == int.class)) return new Integer(d.intValue()); return d;
else if ((destType == Boolean.class) || (destType == boolean.class)) return (d!=0) ? Boolean.TRUE : Boolean.FALSE; }
else if ((destType == Byte.class) || (destType == byte.class)) return new Byte(d.byteValue()); if ((destType == Integer.class) || (destType == int.class)) {
else if ((destType == Short.class) || (destType == short.class)) return new Short(d.shortValue()); return new Integer(d.intValue());
else if ((destType == Long.class) || (destType == long.class)) return new Long(d.longValue()); }
else if ((destType == Float.class) || (destType == float.class)) return new Float(d.floatValue()); else if ((destType == Boolean.class) || (destType == boolean.class)) {
return (d!=0) ? Boolean.TRUE : Boolean.FALSE;
}
else if ((destType == Byte.class) || (destType == byte.class)) {
return new Byte(d.byteValue());
}
else if ((destType == Short.class) || (destType == short.class)) {
return new Short(d.shortValue());
}
else if ((destType == Long.class) || (destType == long.class)) {
return new Long(d.longValue());
}
else if ((destType == Float.class) || (destType == float.class)) {
return new Float(d.floatValue());
}
else { // this makes hardly sense... else { // this makes hardly sense...
System.err.println("warning: converting from double to character or void..."); System.err.println("warning: converting from double to character or void...");
if ((destType == Character.class) || (destType == char.class)) return new Character(d.toString().charAt(0)); if ((destType == Character.class) || (destType == char.class)) {
else //if (destType == Void.class) return 0; return new Character(d.toString().charAt(0));
return 0; }
else {
return 0;
}
} }
} }
@ -737,9 +884,13 @@ public class BeanInspector {
* @return * @return
*/ */
public static boolean isJavaPrimitive(Class<?> cls) { public static boolean isJavaPrimitive(Class<?> cls) {
if (cls.isPrimitive()) return true; if (cls.isPrimitive()) {
return true;
}
if ((cls == Double.class) || (cls == Integer.class) || (cls == Boolean.class) || (cls == Character.class) || (cls == Void.class) if ((cls == Double.class) || (cls == Integer.class) || (cls == Boolean.class) || (cls == Character.class) || (cls == Void.class)
|| (cls == Byte.class) || (cls == Short.class) || (cls == Long.class) || (cls == Float.class)) return true; || (cls == Byte.class) || (cls == Short.class) || (cls == Long.class) || (cls == Float.class)) {
return true;
}
return false; return false;
} }
@ -751,14 +902,30 @@ public class BeanInspector {
* @return * @return
*/ */
public static Class getJavaPrimitive(Class<?> cls) { public static Class getJavaPrimitive(Class<?> cls) {
if (cls.isPrimitive()) return cls; if (cls.isPrimitive()) {
if (cls == Double.class) return double.class; return cls;
else if (cls == Integer.class) return int.class; }
else if (cls == Boolean.class) return Boolean.class; if (cls == Double.class) {
else if (cls == Byte.class) return byte.class; return double.class;
else if (cls == Short.class) return short.class; }
else if (cls == Long.class) return long.class; else if (cls == Integer.class) {
else if (cls == Float.class) return float.class; return int.class;
}
else if (cls == Boolean.class) {
return Boolean.class;
}
else if (cls == Byte.class) {
return byte.class;
}
else if (cls == Short.class) {
return short.class;
}
else if (cls == Long.class) {
return long.class;
}
else if (cls == Float.class) {
return float.class;
}
return null; return null;
} }
/** /**
@ -776,8 +943,12 @@ public class BeanInspector {
return value; return value;
} }
if (destType == String.class || destType == SelectedTag.class) { if (destType == String.class || destType == SelectedTag.class) {
if (value.getClass() == String.class) return value; if (value.getClass() == String.class) {
else return value.toString(); return value;
}
else {
return value.toString();
}
} else if (isJavaPrimitive(destType)) { } else if (isJavaPrimitive(destType)) {
try { try {
if (value.getClass() == String.class) { if (value.getClass() == String.class) {

View File

@ -214,13 +214,17 @@ public class BigStringEditor implements PropertyEditor {
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
} }

View File

@ -339,7 +339,9 @@ public class DPointSetMultiIcon extends DComponent
{ {
p = m.getPoint(xMI.getImage(i), yMI.getImage(i)); p = m.getPoint(xMI.getImage(i), yMI.getImage(i));
if (p==null) continue; if (p==null) {
continue;
}
if (this.m_IconsMI.get(i) != null) if (this.m_IconsMI.get(i) != null)
{ {
g.setStroke(new BasicStroke()); g.setStroke(new BasicStroke());

View File

@ -37,8 +37,9 @@ public class DataViewer implements DataViewerInterface {
* *
*/ */
public static DataViewerInterface getInstance (MainAdapterClient client,String GraphWindowName) { public static DataViewerInterface getInstance (MainAdapterClient client,String GraphWindowName) {
if (m_ViewContainer == null) if (m_ViewContainer == null) {
m_ViewContainer = new ViewContainer(); m_ViewContainer = new ViewContainer();
}
DataViewerInterface ret =null; DataViewerInterface ret =null;
try { try {
if (!m_ViewContainer.containsName(GraphWindowName)) { if (!m_ViewContainer.containsName(GraphWindowName)) {
@ -50,13 +51,17 @@ public class DataViewer implements DataViewerInterface {
e.printStackTrace(); e.printStackTrace();
} }
if (client != null && client.getHostName().equals(m_MyHostName)== true) { if (client != null && client.getHostName().equals(m_MyHostName)== true) {
if (TRACE) System.out.println("no RMI"); if (TRACE) {
System.out.println("no RMI");
}
ret = new DataViewer(GraphWindowName,true); ret = new DataViewer(GraphWindowName,true);
} }
else { else {
ret = (DataViewerInterface) RMIProxyRemote.newInstance(new DataViewer(GraphWindowName,false), client); ret = (DataViewerInterface) RMIProxyRemote.newInstance(new DataViewer(GraphWindowName,false), client);
ret.init(); ret.init();
if (TRACE) System.out.println("with RMI"); if (TRACE) {
System.out.println("with RMI");
}
} }
@ -76,10 +81,13 @@ public class DataViewer implements DataViewerInterface {
* *
*/ */
private DataViewer(String PlotName,boolean initflag){ private DataViewer(String PlotName,boolean initflag){
if (TRACE) System.out.println("Constructor DataViewer"); if (TRACE) {
System.out.println("Constructor DataViewer");
}
m_Name = PlotName; m_Name = PlotName;
if(initflag) if(initflag) {
this.init(); this.init();
}
} }
/** /**
* *
@ -93,7 +101,9 @@ public class DataViewer implements DataViewerInterface {
@Override @Override
public Graph getNewGraph(String InfoString) { public Graph getNewGraph(String InfoString) {
m_GraphCounter++; m_GraphCounter++;
if (TRACE) System.out.println("Graph.getNewGraph No:"+m_GraphCounter); if (TRACE) {
System.out.println("Graph.getNewGraph No:"+m_GraphCounter);
}
return new Graph (InfoString,m_Plot,m_GraphCounter); return new Graph (InfoString,m_Plot,m_GraphCounter);
} }
/** /**
@ -131,9 +141,11 @@ class ViewContainer extends ArrayList {
* *
*/ */
public DataViewer getPlot (String name) { public DataViewer getPlot (String name) {
if (m_actualPlot!=null) if (m_actualPlot!=null) {
if (m_actualPlot.getName().equals(name)) if (m_actualPlot.getName().equals(name)) {
return m_actualPlot; return m_actualPlot;
}
}
DataViewer temp = null; DataViewer temp = null;
for (int i=0;i<size();i++) { for (int i=0;i<size();i++) {
temp = (DataViewer)(get(i)); temp = (DataViewer)(get(i));

View File

@ -49,7 +49,9 @@ public class EnumEditor extends PropertyEditorSupport {
@Override @Override
public String[] getTags() { public String[] getTags() {
if (getValue()==null) return null; if (getValue()==null) {
return null;
}
String[] tags = new String[enumConstants.length]; String[] tags = new String[enumConstants.length];
for (int i=0; i<tags.length; i++) { for (int i=0; i<tags.length; i++) {
tags[i]=enumConstants[i].toString(); tags[i]=enumConstants[i].toString();

View File

@ -48,7 +48,9 @@ public class EvATreeNode extends DefaultMutableTreeNode {
childrenNames = PropertySheetPanel.getPropertyNames(target); childrenNames = PropertySheetPanel.getPropertyNames(target);
childrenValues = PropertySheetPanel.getPropertyValues(target, true, true, true); childrenValues = PropertySheetPanel.getPropertyValues(target, true, true, true);
super.removeAllChildren(); super.removeAllChildren();
if (expand) initChildren(); if (expand) {
initChildren();
}
} }
public void setName(String name) { public void setName(String name) {
@ -65,8 +67,9 @@ public class EvATreeNode extends DefaultMutableTreeNode {
private void initChildren() { private void initChildren() {
for (int i=0; i<childrenValues.length; i++) { for (int i=0; i<childrenValues.length; i++) {
if (childrenValues[i]!=null) { if (childrenValues[i]!=null) {
if (doListPrimitives || !(BeanInspector.isJavaPrimitive(childrenValues[i].getClass()))) if (doListPrimitives || !(BeanInspector.isJavaPrimitive(childrenValues[i].getClass()))) {
super.add(new EvATreeNode(childrenNames[i], childrenValues[i])); super.add(new EvATreeNode(childrenNames[i], childrenValues[i]));
}
} }
} }
} }
@ -79,7 +82,11 @@ public class EvATreeNode extends DefaultMutableTreeNode {
} catch (Exception e) { } catch (Exception e) {
extendedInfo=null; extendedInfo=null;
} }
if (extendedInfo != null) return myName + " - "+ extendedInfo; if (extendedInfo != null) {
else return myName; return myName + " - "+ extendedInfo;
}
else {
return myName;
}
} }
} }

View File

@ -37,17 +37,24 @@ public class EvATreeSelectionListener implements TreeSelectionListener, Property
root = rootNode; root = rootNode;
jtree = jt; jtree = jt;
if (jtree!=null) jtree.addTreeSelectionListener(this); // listen to tree selection changes if (jtree!=null) {
if (goEditor!=null) goEditor.addPropertyChangeListener(this); // listen to changes to the parameters jtree.addTreeSelectionListener(this);
} // listen to tree selection changes
if (goEditor!=null) {
goEditor.addPropertyChangeListener(this);
} // listen to changes to the parameters
} }
@Override @Override
public void valueChanged(TreeSelectionEvent e) { public void valueChanged(TreeSelectionEvent e) {
if (TRACE) System.out.println("valueChanged to " + BeanInspector.toString(e.getPath())); if (TRACE) {
System.out.println("valueChanged to " + BeanInspector.toString(e.getPath()));
}
TreePath tp = e.getPath(); TreePath tp = e.getPath();
if (TRACE) for (int i=tp.getPathCount()-1; i>=0; i--) { if (TRACE) {
System.out.println("* " + i + " " + tp.getPathComponent(i)); for (int i=tp.getPathCount()-1; i>=0; i--) {
} System.out.println("* " + i + " " + tp.getPathComponent(i));
} }
EvATreeNode leafNode = (EvATreeNode)tp.getLastPathComponent(); EvATreeNode leafNode = (EvATreeNode)tp.getLastPathComponent();
// goe.setValue(leafNode.getUserObject()); // goe.setValue(leafNode.getUserObject());
Component editComp = goe.getCustomEditor(); Component editComp = goe.getCustomEditor();
@ -61,8 +68,12 @@ public class EvATreeSelectionListener implements TreeSelectionListener, Property
@Override @Override
public void propertyChange(PropertyChangeEvent evt) { public void propertyChange(PropertyChangeEvent evt) {
if (TRACE) System.out.println("EvATreeNode received change event " + evt); if (TRACE) {
System.out.println("EvATreeNode received change event " + evt);
}
root.setObject(evt.getNewValue(), true); root.setObject(evt.getNewValue(), true);
if (jtree !=null) jtree.setModel(new DefaultTreeModel(root)); // TODO this should be done differently so that the tree is not collapsed on each change! if (jtree !=null) {
jtree.setModel(new DefaultTreeModel(root));
} // TODO this should be done differently so that the tree is not collapsed on each change!
} }
} }

View File

@ -12,8 +12,12 @@ public class Exp extends DFunction {
private double minValue = 1e-10; // think of a minimal value we want to show in case invalid (<=0) values are requested private double minValue = 1e-10; // think of a minimal value we want to show in case invalid (<=0) values are requested
public void setMinValue(double v) { public void setMinValue(double v) {
if (v>0) minValue = v; if (v>0) {
else System.err.println("Error, minimal value for Exp must be positive!"); minValue = v;
}
else {
System.err.println("Error, minimal value for Exp must be positive!");
}
} }
/* /*
* (non-Javadoc) * (non-Javadoc)
@ -58,6 +62,8 @@ public class Exp extends DFunction {
} }
public void updateMinValue(double y) { public void updateMinValue(double y) {
if (y<minValue && (y>0)) minValue=y; if (y<minValue && (y>0)) {
minValue=y;
}
} }
} }

View File

@ -38,8 +38,9 @@ public abstract class ExtAction extends AbstractAction {
*/ */
public ExtAction(String s, Icon i, String toolTip, KeyStroke key){ public ExtAction(String s, Icon i, String toolTip, KeyStroke key){
this(s, i, toolTip); this(s, i, toolTip);
if (i==null) if (i==null) {
System.out.println("Icon == null"); System.out.println("Icon == null");
}
putValue(KEYSTROKE, key); putValue(KEYSTROKE, key);
} }
/** /**
@ -47,8 +48,9 @@ public abstract class ExtAction extends AbstractAction {
*/ */
public ExtAction(String s, Icon i, String toolTip){ public ExtAction(String s, Icon i, String toolTip){
super(null, i); super(null, i);
if (i==null) if (i==null) {
System.out.println("Icon == null"); System.out.println("Icon == null");
}
setValues(s, toolTip); setValues(s, toolTip);
} }
/** /**

View File

@ -52,7 +52,9 @@ public class GenericAreaEditor extends AbstractListSelectionEditor {
this.m_AreaObject = (GPArea) o; this.m_AreaObject = (GPArea) o;
m_AreaObject.addPropertyChangeListener(this); m_AreaObject.addPropertyChangeListener(this);
return true; return true;
} else return false; } else {
return false;
}
} }
@Override @Override

View File

@ -290,13 +290,17 @@ public class GenericDoubleArrayEditor extends JPanel implements PropertyEditor {
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -348,7 +352,9 @@ public class GenericDoubleArrayEditor extends JPanel implements PropertyEditor {
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_CustomEditor == null) this.initCustomEditor(); if (this.m_CustomEditor == null) {
this.initCustomEditor();
}
return m_CustomEditor; return m_CustomEditor;
} }
} }

View File

@ -197,13 +197,17 @@ public class GenericEpsilonConstraintEditor extends JPanel implements PropertyEd
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -255,7 +259,9 @@ public class GenericEpsilonConstraintEditor extends JPanel implements PropertyEd
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_CustomEditor == null) this.initCustomEditor(); if (this.m_CustomEditor == null) {
this.initCustomEditor();
}
return m_CustomEditor; return m_CustomEditor;
} }
} }

View File

@ -214,13 +214,17 @@ public class GenericEpsilonThresholdEditor extends JPanel implements PropertyEdi
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -272,7 +276,9 @@ public class GenericEpsilonThresholdEditor extends JPanel implements PropertyEdi
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_CustomEditor == null) this.initCustomEditor(); if (this.m_CustomEditor == null) {
this.initCustomEditor();
}
return m_CustomEditor; return m_CustomEditor;
} }
} }

View File

@ -85,13 +85,17 @@ public class GenericFilePathEditor extends JPanel implements PropertyEditor {
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -156,7 +160,9 @@ public class GenericFilePathEditor extends JPanel implements PropertyEditor {
m_FilePath.setCompleteFilePath(m_FileChooser.getSelectedFile().getAbsolutePath()); m_FilePath.setCompleteFilePath(m_FileChooser.getSelectedFile().getAbsolutePath());
m_Support.firePropertyChange("", m_FilePath, null); m_Support.firePropertyChange("", m_FilePath, null);
Window w = (Window) m_FileChooser.getTopLevelAncestor(); Window w = (Window) m_FileChooser.getTopLevelAncestor();
if (w != null) w.dispose(); if (w != null) {
w.dispose();
}
m_Panel = null; m_Panel = null;
} }
} }

View File

@ -173,13 +173,17 @@ public class GenericIntArrayEditor extends JPanel implements PropertyEditor {
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -231,7 +235,9 @@ public class GenericIntArrayEditor extends JPanel implements PropertyEditor {
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_CustomEditor == null) this.initCustomEditor(); if (this.m_CustomEditor == null) {
this.initCustomEditor();
}
return m_CustomEditor; return m_CustomEditor;
} }
} }

View File

@ -42,7 +42,9 @@ public class GenericObjectListSelectionEditor extends AbstractListSelectionEdito
this.objList = (PropertySelectableList) o; this.objList = (PropertySelectableList) o;
objList.addPropertyChangeListener(this); objList.addPropertyChangeListener(this);
return true; return true;
} else return false; } else {
return false;
}
} }
/** Retruns the current object. /** Retruns the current object.

View File

@ -80,13 +80,18 @@ public class GenericOptimizationObjectivesEditor extends JPanel implements Prope
try { try {
this.m_Editors[i].m_Value = list[i]; this.m_Editors[i].m_Value = list[i];
this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass()); this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass());
if (this.m_Editors[i].m_Editor == null) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class); if (this.m_Editors[i].m_Editor == null) {
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class);
}
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationTarget.class); ((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationTarget.class);
}
this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value); this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value);
this.m_Editors[i].m_Editor.addPropertyChangeListener(this); this.m_Editors[i].m_Editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.m_Editors[i]); AbstractObjectEditor.findViewFor(this.m_Editors[i]);
if (this.m_Editors[i].m_View != null) this.m_Editors[i].m_View.repaint(); if (this.m_Editors[i].m_View != null) {
this.m_Editors[i].m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -217,13 +222,18 @@ public class GenericOptimizationObjectivesEditor extends JPanel implements Prope
try { try {
newEdit[l].m_Value = list[l]; newEdit[l].m_Value = list[l];
newEdit[l].m_Editor = PropertyEditorProvider.findEditor(newEdit[l].m_Value.getClass()); newEdit[l].m_Editor = PropertyEditorProvider.findEditor(newEdit[l].m_Value.getClass());
if (newEdit[l].m_Editor == null) newEdit[l].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class); if (newEdit[l].m_Editor == null) {
if (newEdit[l].m_Editor instanceof GenericObjectEditor) newEdit[l].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class);
}
if (newEdit[l].m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) newEdit[l].m_Editor).setClassType(InterfaceOptimizationTarget.class); ((GenericObjectEditor) newEdit[l].m_Editor).setClassType(InterfaceOptimizationTarget.class);
}
newEdit[l].m_Editor.setValue(newEdit[l].m_Value); newEdit[l].m_Editor.setValue(newEdit[l].m_Value);
newEdit[l].m_Editor.addPropertyChangeListener(m_self); newEdit[l].m_Editor.addPropertyChangeListener(m_self);
AbstractObjectEditor.findViewFor(newEdit[l]); AbstractObjectEditor.findViewFor(newEdit[l]);
if (newEdit[l].m_View != null) newEdit[l].m_View.repaint(); if (newEdit[l].m_View != null) {
newEdit[l].m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -240,7 +250,9 @@ public class GenericOptimizationObjectivesEditor extends JPanel implements Prope
int l = m_OptimizationObjectives.getSelectedTargets().length, j = 0; int l = m_OptimizationObjectives.getSelectedTargets().length, j = 0;
GeneralGOEProperty[] newEdit = new GeneralGOEProperty[l-1]; GeneralGOEProperty[] newEdit = new GeneralGOEProperty[l-1];
for (int i = 0; i < m_Delete.length; i++) { for (int i = 0; i < m_Delete.length; i++) {
if (event.getSource().equals(m_Delete[i])) m_OptimizationObjectives.removeTarget(i); if (event.getSource().equals(m_Delete[i])) {
m_OptimizationObjectives.removeTarget(i);
}
else { else {
newEdit[j] = m_Editors[i]; newEdit[j] = m_Editors[i];
j++; j++;
@ -361,7 +373,9 @@ public class GenericOptimizationObjectivesEditor extends JPanel implements Prope
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_Editor == null) this.initCustomEditor(); if (this.m_Editor == null) {
this.initCustomEditor();
}
return m_Editor; return m_Editor;
} }
@ -377,13 +391,17 @@ public class GenericOptimizationObjectivesEditor extends JPanel implements Prope
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
/** This will wait for the GenericObjectEditor to finish /** This will wait for the GenericObjectEditor to finish
@ -402,13 +420,18 @@ public class GenericOptimizationObjectivesEditor extends JPanel implements Prope
try { try {
this.m_Editors[i].m_Value = list[i]; this.m_Editors[i].m_Value = list[i];
this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass()); this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass());
if (this.m_Editors[i].m_Editor == null) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class); if (this.m_Editors[i].m_Editor == null) {
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class);
}
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationTarget.class); ((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationTarget.class);
}
this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value); this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value);
this.m_Editors[i].m_Editor.addPropertyChangeListener(this); this.m_Editors[i].m_Editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.m_Editors[i]); AbstractObjectEditor.findViewFor(this.m_Editors[i]);
if (this.m_Editors[i].m_View != null) this.m_Editors[i].m_View.repaint(); if (this.m_Editors[i].m_View != null) {
this.m_Editors[i].m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }

View File

@ -83,13 +83,18 @@ public class GenericOptimizationObjectivesWithParamEditor extends JPanel impleme
try { try {
this.m_Editors[i].m_Value = list[i]; this.m_Editors[i].m_Value = list[i];
this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass()); this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass());
if (this.m_Editors[i].m_Editor == null) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class); if (this.m_Editors[i].m_Editor == null) {
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class);
}
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationObjective.class); ((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationObjective.class);
}
this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value); this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value);
this.m_Editors[i].m_Editor.addPropertyChangeListener(this); this.m_Editors[i].m_Editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.m_Editors[i]); AbstractObjectEditor.findViewFor(this.m_Editors[i]);
if (this.m_Editors[i].m_View != null) this.m_Editors[i].m_View.repaint(); if (this.m_Editors[i].m_View != null) {
this.m_Editors[i].m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -242,13 +247,18 @@ public class GenericOptimizationObjectivesWithParamEditor extends JPanel impleme
try { try {
newEdit[l].m_Value = list[l]; newEdit[l].m_Value = list[l];
newEdit[l].m_Editor = PropertyEditorProvider.findEditor(newEdit[l].m_Value.getClass()); newEdit[l].m_Editor = PropertyEditorProvider.findEditor(newEdit[l].m_Value.getClass());
if (newEdit[l].m_Editor == null) newEdit[l].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class); if (newEdit[l].m_Editor == null) {
if (newEdit[l].m_Editor instanceof GenericObjectEditor) newEdit[l].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class);
}
if (newEdit[l].m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) newEdit[l].m_Editor).setClassType(InterfaceOptimizationObjective.class); ((GenericObjectEditor) newEdit[l].m_Editor).setClassType(InterfaceOptimizationObjective.class);
}
newEdit[l].m_Editor.setValue(newEdit[l].m_Value); newEdit[l].m_Editor.setValue(newEdit[l].m_Value);
newEdit[l].m_Editor.addPropertyChangeListener(m_self); newEdit[l].m_Editor.addPropertyChangeListener(m_self);
AbstractObjectEditor.findViewFor(newEdit[l]); AbstractObjectEditor.findViewFor(newEdit[l]);
if (newEdit[l].m_View != null) newEdit[l].m_View.repaint(); if (newEdit[l].m_View != null) {
newEdit[l].m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -265,7 +275,9 @@ public class GenericOptimizationObjectivesWithParamEditor extends JPanel impleme
int l = m_OptimizationObjectivesWithWeights.getSelectedTargets().length, j = 0; int l = m_OptimizationObjectivesWithWeights.getSelectedTargets().length, j = 0;
GeneralGOEProperty[] newEdit = new GeneralGOEProperty[l-1]; GeneralGOEProperty[] newEdit = new GeneralGOEProperty[l-1];
for (int i = 0; i < m_Delete.length; i++) { for (int i = 0; i < m_Delete.length; i++) {
if (event.getSource().equals(m_Delete[i])) m_OptimizationObjectivesWithWeights.removeTarget(i); if (event.getSource().equals(m_Delete[i])) {
m_OptimizationObjectivesWithWeights.removeTarget(i);
}
else { else {
newEdit[j] = m_Editors[i]; newEdit[j] = m_Editors[i];
j++; j++;
@ -432,7 +444,9 @@ public class GenericOptimizationObjectivesWithParamEditor extends JPanel impleme
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_Editor == null) this.initCustomEditor(); if (this.m_Editor == null) {
this.initCustomEditor();
}
return m_Editor; return m_Editor;
} }
@ -448,13 +462,17 @@ public class GenericOptimizationObjectivesWithParamEditor extends JPanel impleme
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
/** This will wait for the GenericObjectEditor to finish /** This will wait for the GenericObjectEditor to finish
@ -473,13 +491,18 @@ public class GenericOptimizationObjectivesWithParamEditor extends JPanel impleme
try { try {
this.m_Editors[i].m_Value = list[i]; this.m_Editors[i].m_Value = list[i];
this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass()); this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(this.m_Editors[i].m_Value.getClass());
if (this.m_Editors[i].m_Editor == null) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class); if (this.m_Editors[i].m_Editor == null) {
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) this.m_Editors[i].m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizationObjective.class);
}
if (this.m_Editors[i].m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationObjective.class); ((GenericObjectEditor) this.m_Editors[i].m_Editor).setClassType(InterfaceOptimizationObjective.class);
}
this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value); this.m_Editors[i].m_Editor.setValue(this.m_Editors[i].m_Value);
this.m_Editors[i].m_Editor.addPropertyChangeListener(this); this.m_Editors[i].m_Editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.m_Editors[i]); AbstractObjectEditor.findViewFor(this.m_Editors[i]);
if (this.m_Editors[i].m_View != null) this.m_Editors[i].m_View.repaint(); if (this.m_Editors[i].m_View != null) {
this.m_Editors[i].m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }

View File

@ -107,8 +107,12 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
JButton tmpB; JButton tmpB;
byte[] bytes; byte[] bytes;
bytes = BasicResourceLoader.instance().getBytesFromResourceLocation(iconSrc, false); bytes = BasicResourceLoader.instance().getBytesFromResourceLocation(iconSrc, false);
if (bytes!=null) tmpB = new JButton(title, new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes))); if (bytes!=null) {
else tmpB = new JButton(title); tmpB = new JButton(title, new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
}
else {
tmpB = new JButton(title);
}
return tmpB; return tmpB;
} }
@ -148,8 +152,12 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 0, 1); setGBC(gbc, GridBagConstraints.WEST, GridBagConstraints.BOTH, 0, 1);
this.m_Status[i] = new JButton(" "); this.m_Status[i] = new JButton(" ");
this.m_Status[i].setEnabled(false); this.m_Status[i].setEnabled(false);
if (this.m_RemoteServers.isServerOnline(t.m_ServerName)) this.m_Status[i].setBackground(Color.GREEN); if (this.m_RemoteServers.isServerOnline(t.m_ServerName)) {
else this.m_Status[i].setBackground(Color.RED); this.m_Status[i].setBackground(Color.GREEN);
}
else {
this.m_Status[i].setBackground(Color.RED);
}
this.m_ServerList.add(this.m_Status[i], gbc); this.m_ServerList.add(this.m_Status[i], gbc);
// the server name // the server name
gbc = new GridBagConstraints(); gbc = new GridBagConstraints();
@ -263,7 +271,9 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
@Override @Override
public void actionPerformed(ActionEvent event) { public void actionPerformed(ActionEvent event) {
for (int i = 0; i < m_Delete.length; i++) { for (int i = 0; i < m_Delete.length; i++) {
if (event.getSource().equals(m_Delete[i])) m_RemoteServers.removeServerNode(m_RemoteServers.get(i).m_ServerName); if (event.getSource().equals(m_Delete[i])) {
m_RemoteServers.removeServerNode(m_RemoteServers.get(i).m_ServerName);
}
} }
updateServerList(); updateServerList();
updateEditor(); updateEditor();
@ -343,7 +353,9 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
@Override @Override
public void keyReleased(KeyEvent event) { public void keyReleased(KeyEvent event) {
for (int i = 0; i < m_Names.length; i++) { for (int i = 0; i < m_Names.length; i++) {
if (event.getSource().equals(m_Names[i])) m_RemoteServers.setNameFor(i, m_Names[i].getText()); if (event.getSource().equals(m_Names[i])) {
m_RemoteServers.setNameFor(i, m_Names[i].getText());
}
} }
} }
}; };
@ -354,7 +366,9 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
@Override @Override
public void itemStateChanged(ItemEvent event) { public void itemStateChanged(ItemEvent event) {
for (int i = 0; i < m_CPUs.length; i++) { for (int i = 0; i < m_CPUs.length; i++) {
if (event.getSource().equals(m_CPUs[i])) m_RemoteServers.setCPUsFor(i, m_CPUs[i].getSelectedIndex()+1); if (event.getSource().equals(m_CPUs[i])) {
m_RemoteServers.setCPUsFor(i, m_CPUs[i].getSelectedIndex()+1);
}
} }
} }
}; };
@ -419,13 +433,17 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -477,7 +495,9 @@ public class GenericRemoteServersEditor extends JPanel implements PropertyEditor
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_Editor == null) this.initCustomEditor(); if (this.m_Editor == null) {
this.initCustomEditor();
}
return m_Editor; return m_Editor;
} }
} }

View File

@ -221,13 +221,17 @@ public class GenericWeigthedLPTchebycheffEditor extends JPanel implements Proper
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
@ -279,7 +283,9 @@ public class GenericWeigthedLPTchebycheffEditor extends JPanel implements Proper
*/ */
@Override @Override
public Component getCustomEditor() { public Component getCustomEditor() {
if (this.m_CustomEditor == null) this.initCustomEditor(); if (this.m_CustomEditor == null) {
this.initCustomEditor();
}
return m_CustomEditor; return m_CustomEditor;
} }
} }

View File

@ -264,10 +264,11 @@ public class GraphPointSet {
int[] GraphSize = new int[m_PointSetContainer.size()]; int[] GraphSize = new int[m_PointSetContainer.size()];
for (int i = 0; i < m_PointSetContainer.size(); i++) { for (int i = 0; i < m_PointSetContainer.size(); i++) {
GraphSize[i] = ((PointSet) m_PointSetContainer.get(i)).getSize(); GraphSize[i] = ((PointSet) m_PointSetContainer.get(i)).getSize();
if (GraphSize[i] <= 0) if (GraphSize[i] <= 0) {
System.err.println("Warning: invalid graph size of " System.err.println("Warning: invalid graph size of "
+ GraphSize[i] + " at " + i + GraphSize[i] + " at " + i
+ "! (GraphPointSet.addGraph)"); + "! (GraphPointSet.addGraph)");
}
} }
if (Mathematics.sum(GraphSize) == 0) { if (Mathematics.sum(GraphSize) == 0) {
System.err System.err
@ -309,8 +310,9 @@ public class GraphPointSet {
y[i] = m_PointSetContainer.get(i).m_Y[index[i]]; y[i] = m_PointSetContainer.get(i).m_Y[index[i]];
index[i]++; index[i]++;
numberofpoints++; numberofpoints++;
} else } else {
y[i] = 0; y[i] = 0;
}
} }
double ymean = Mathematics.sum(y) / numberofpoints; double ymean = Mathematics.sum(y) / numberofpoints;
// compute median double median = getMedian(y); // compute median double median = getMedian(y);
@ -499,10 +501,12 @@ public class GraphPointSet {
} }
m_ConnectedPointSet.removeAllPoints(); m_ConnectedPointSet.removeAllPoints();
for (int i = 0; i < buf.length; i++) { for (int i = 0; i < buf.length; i++) {
if (buf[i].x == x.x && buf[i].y == x.y) if (buf[i].x == x.x && buf[i].y == x.y) {
System.out.println("point found"); System.out.println("point found");
else }
m_ConnectedPointSet.addDPoint(buf[i]); else {
m_ConnectedPointSet.addDPoint(buf[i]);
}
} }
} }
@ -563,7 +567,9 @@ public class GraphPointSet {
* @return the median point of this point set or null if it is empty * @return the median point of this point set or null if it is empty
*/ */
public DPoint getMedPoint() { public DPoint getMedPoint() {
if (m_ConnectedPointSet==null) return null; if (m_ConnectedPointSet==null) {
return null;
}
int medX = m_ConnectedPointSet.getSize()/2; int medX = m_ConnectedPointSet.getSize()/2;
return m_ConnectedPointSet.getDPoint(medX); return m_ConnectedPointSet.getDPoint(medX);
} }

View File

@ -65,8 +65,12 @@ public class GraphPointSetLegend {
GraphPointSet pointset = pointSetContainer.get(i); GraphPointSet pointset = pointSetContainer.get(i);
if (pointset.getPointSet().getSize()>0) { if (pointset.getPointSet().getSize()>0) {
String entryStr; String entryStr;
if (appendIndex) entryStr = StringTools.expandPrefixZeros(i, pointSetContainer.size()-1) + ": " + pointset.getInfoString(); if (appendIndex) {
else entryStr = pointset.getInfoString(); entryStr = StringTools.expandPrefixZeros(i, pointSetContainer.size()-1) + ": " + pointset.getInfoString();
}
else {
entryStr = pointset.getInfoString();
}
legendEntries.add(new Pair<String, Color>(entryStr,pointset.getColor())); legendEntries.add(new Pair<String, Color>(entryStr,pointset.getColor()));
} }
} }

View File

@ -50,7 +50,9 @@ public abstract class JDocFrame extends JInternalFrame{
* *
*/ */
public void save(){ public void save(){
if(m_file != null) save(m_file); if(m_file != null) {
save(m_file);
}
} }
/** /**
* *
@ -67,14 +69,20 @@ public abstract class JDocFrame extends JInternalFrame{
*/ */
private void setChangedImpl(boolean value){ private void setChangedImpl(boolean value){
changed = value; changed = value;
if(changed) setTitle(titleStr + " *"); if(changed) {
else setTitle(titleStr); setTitle(titleStr + " *");
}
else {
setTitle(titleStr);
}
} }
/** /**
* *
*/ */
protected void setChanged(boolean value){ protected void setChanged(boolean value){
if(changed != value) setChangedImpl(value); if(changed != value) {
setChangedImpl(value);
}
} }
/** /**
* *

View File

@ -31,8 +31,11 @@ public class JExtFileChooser extends JFileChooser{
if(getDialogType() == JFileChooser.SAVE_DIALOG && overwriteWarning){ if(getDialogType() == JFileChooser.SAVE_DIALOG && overwriteWarning){
File f = getSelectedFile(); File f = getSelectedFile();
if(f != null && f.exists()) if(f != null && f.exists()) {
if(JOptionPane.showConfirmDialog(this, "Die Datei " + f.getPath() + " existiert bereits.\nSoll sie <20>berschrieben werden?", "Achtung", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION) return; if (JOptionPane.showConfirmDialog(this, "Die Datei " + f.getPath() + " existiert bereits.\nSoll sie <20>berschrieben werden?", "Achtung", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION) {
return;
}
}
} }
super.approveSelection(); super.approveSelection();

View File

@ -49,11 +49,17 @@ public class JExtMenu extends JMenu{
JMenuItem item = super.add(a); JMenuItem item = super.add(a);
Object o; Object o;
o = a.getValue(ExtAction.MNEMONIC); o = a.getValue(ExtAction.MNEMONIC);
if(o != null) item.setMnemonic(((Character)o).charValue()); if(o != null) {
item.setMnemonic(((Character)o).charValue());
}
o = a.getValue(ExtAction.TOOLTIP); o = a.getValue(ExtAction.TOOLTIP);
if(o != null) item.setToolTipText((String)o); if(o != null) {
item.setToolTipText((String)o);
}
o = a.getValue(ExtAction.KEYSTROKE); o = a.getValue(ExtAction.KEYSTROKE);
if(o != null) item.setAccelerator((KeyStroke)o); if(o != null) {
item.setAccelerator((KeyStroke)o);
}
return item; return item;
} }
/** /**
@ -65,19 +71,31 @@ public class JExtMenu extends JMenu{
@Override @Override
public void propertyChange(PropertyChangeEvent e) { public void propertyChange(PropertyChangeEvent e) {
JMenuItem menuItem = (JMenuItem)component; JMenuItem menuItem = (JMenuItem)component;
if(menuItem == null) return; if(menuItem == null) {
return;
}
String propertyName = e.getPropertyName(); String propertyName = e.getPropertyName();
if(propertyName.equals(Action.NAME)) menuItem.setText((String)e.getNewValue()); if(propertyName.equals(Action.NAME)) {
else if(propertyName.equals("enabled")) menuItem.setEnabled(((Boolean)e.getNewValue()).booleanValue()); menuItem.setText((String)e.getNewValue());
}
else if(propertyName.equals("enabled")) {
menuItem.setEnabled(((Boolean)e.getNewValue()).booleanValue());
}
else if(propertyName.equals(Action.SMALL_ICON)){ else if(propertyName.equals(Action.SMALL_ICON)){
Icon icon = (Icon)e.getNewValue(); Icon icon = (Icon)e.getNewValue();
menuItem.setIcon(icon); menuItem.setIcon(icon);
menuItem.invalidate(); menuItem.invalidate();
menuItem.repaint(); menuItem.repaint();
} }
else if(propertyName.equals(ExtAction.MNEMONIC)) menuItem.setMnemonic(((Character)e.getNewValue()).charValue()); else if(propertyName.equals(ExtAction.MNEMONIC)) {
else if(propertyName.equals(ExtAction.TOOLTIP)) menuItem.setToolTipText((String)e.getNewValue()); menuItem.setMnemonic(((Character)e.getNewValue()).charValue());
else if(propertyName.equals(ExtAction.KEYSTROKE)) menuItem.setAccelerator((KeyStroke)e.getNewValue()); }
else if(propertyName.equals(ExtAction.TOOLTIP)) {
menuItem.setToolTipText((String)e.getNewValue());
}
else if(propertyName.equals(ExtAction.KEYSTROKE)) {
menuItem.setAccelerator((KeyStroke)e.getNewValue());
}
} }
}; };
} }

View File

@ -39,7 +39,9 @@ public class JExtToolBar extends JToolBar{
if(k != null){ if(k != null){
int modifiers = k.getModifiers(); int modifiers = k.getModifiers();
if(modifiers > 0) result.append(KeyEvent.getKeyModifiersText(modifiers) + "+"); if(modifiers > 0) {
result.append(KeyEvent.getKeyModifiersText(modifiers) + "+");
}
result.append(KeyEvent.getKeyText(k.getKeyCode())); result.append(KeyEvent.getKeyText(k.getKeyCode()));
} }
if(result.length() > 0){ if(result.length() > 0){

View File

@ -104,12 +104,18 @@ public class JTextEditorInternalFrame extends JDocFrame{
private JToolBar barEdit; private JToolBar barEdit;
@Override @Override
public JMenu getMenu(String group){ public JMenu getMenu(String group){
if(GROUP_EDIT.equals(group)) return mnuEdit; if(GROUP_EDIT.equals(group)) {
else return null; return mnuEdit;
}
else {
return null;
}
} }
@Override @Override
public JToolBar getToolBar(String group){ public JToolBar getToolBar(String group){
if(GROUP_EDIT.equals(group)) return barEdit; if(GROUP_EDIT.equals(group)) {
return barEdit;
}
return null; return null;
} }
@ -156,7 +162,9 @@ public class JTextEditorInternalFrame extends JDocFrame{
a = (Action)hashActions.get(DefaultEditorKit.cutAction); a = (Action)hashActions.get(DefaultEditorKit.cutAction);
keyActions = keys.getKeyStrokesForAction(a); keyActions = keys.getKeyStrokesForAction(a);
if(keyActions != null && keyActions.length > 0) a.putValue(ExtAction.KEYSTROKE, keyActions[0]); if(keyActions != null && keyActions.length > 0) {
a.putValue(ExtAction.KEYSTROKE, keyActions[0]);
}
a.putValue(Action.SMALL_ICON, new ImageIcon("images/EditCut.gif")); a.putValue(Action.SMALL_ICON, new ImageIcon("images/EditCut.gif"));
a.putValue(ExtAction.CAPTION, "Ausschneiden"); a.putValue(ExtAction.CAPTION, "Ausschneiden");
a.putValue(ExtAction.MNEMONIC, new Character('a')); a.putValue(ExtAction.MNEMONIC, new Character('a'));
@ -166,7 +174,9 @@ public class JTextEditorInternalFrame extends JDocFrame{
a = (Action)hashActions.get(DefaultEditorKit.copyAction); a = (Action)hashActions.get(DefaultEditorKit.copyAction);
keyActions = keys.getKeyStrokesForAction(a); keyActions = keys.getKeyStrokesForAction(a);
if(keyActions != null && keyActions.length > 0) a.putValue(ExtAction.KEYSTROKE, keyActions[0]); if(keyActions != null && keyActions.length > 0) {
a.putValue(ExtAction.KEYSTROKE, keyActions[0]);
}
a.putValue(Action.SMALL_ICON, new ImageIcon("images/EditCopy.gif")); a.putValue(Action.SMALL_ICON, new ImageIcon("images/EditCopy.gif"));
a.putValue(ExtAction.CAPTION, "Kopieren"); a.putValue(ExtAction.CAPTION, "Kopieren");
a.putValue(ExtAction.MNEMONIC, new Character('k')); a.putValue(ExtAction.MNEMONIC, new Character('k'));
@ -176,7 +186,9 @@ public class JTextEditorInternalFrame extends JDocFrame{
a = (Action)hashActions.get(DefaultEditorKit.pasteAction); a = (Action)hashActions.get(DefaultEditorKit.pasteAction);
keyActions = keys.getKeyStrokesForAction(a); keyActions = keys.getKeyStrokesForAction(a);
if(keyActions != null && keyActions.length > 0) a.putValue(ExtAction.KEYSTROKE, keyActions[0]); if(keyActions != null && keyActions.length > 0) {
a.putValue(ExtAction.KEYSTROKE, keyActions[0]);
}
a.putValue(Action.SMALL_ICON, new ImageIcon("images/EditPaste.gif")); a.putValue(Action.SMALL_ICON, new ImageIcon("images/EditPaste.gif"));
a.putValue(ExtAction.CAPTION, "Einf<EFBFBD>gen"); a.putValue(ExtAction.CAPTION, "Einf<EFBFBD>gen");
a.putValue(ExtAction.MNEMONIC, new Character('e')); a.putValue(ExtAction.MNEMONIC, new Character('e'));
@ -188,7 +200,9 @@ public class JTextEditorInternalFrame extends JDocFrame{
a = (Action)hashActions.get(DefaultEditorKit.selectAllAction); a = (Action)hashActions.get(DefaultEditorKit.selectAllAction);
keyActions = keys.getKeyStrokesForAction(a); keyActions = keys.getKeyStrokesForAction(a);
if(keyActions != null && keyActions.length > 0) a.putValue(ExtAction.KEYSTROKE, keyActions[0]); if(keyActions != null && keyActions.length > 0) {
a.putValue(ExtAction.KEYSTROKE, keyActions[0]);
}
a.putValue(ExtAction.CAPTION, "Alles markieren"); a.putValue(ExtAction.CAPTION, "Alles markieren");
a.putValue(ExtAction.MNEMONIC, new Character('m')); a.putValue(ExtAction.MNEMONIC, new Character('m'));
a.putValue(ExtAction.TOOLTIP, "Markiert das ganze Dokument"); a.putValue(ExtAction.TOOLTIP, "Markiert das ganze Dokument");
@ -259,10 +273,12 @@ public class JTextEditorInternalFrame extends JDocFrame{
} }
catch(IOException exc){} catch(IOException exc){}
finally{ finally{
if(in != null) try{ if(in != null) {
in.close(); try{
} in.close();
catch(IOException exc){} }
catch(IOException exc){}
}
} }
} }
@ -279,10 +295,12 @@ public class JTextEditorInternalFrame extends JDocFrame{
} }
catch(IOException exc){} catch(IOException exc){}
finally{ finally{
if(out != null) try{ if(out != null) {
out.close(); try{
} out.close();
catch(IOException exc){} }
catch(IOException exc){}
}
} }
super.save(f); super.save(f);
@ -292,6 +310,8 @@ public class JTextEditorInternalFrame extends JDocFrame{
public void setSelected(boolean value) throws java.beans.PropertyVetoException{ public void setSelected(boolean value) throws java.beans.PropertyVetoException{
super.setSelected(value); super.setSelected(value);
if(value) textArea.requestFocus(); if(value) {
textArea.requestFocus();
}
} }
} }

View File

@ -73,13 +73,17 @@ public class MultiLineStringEditor implements PropertyEditor {
@Override @Override
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (listeners == null) listeners = new PropertyChangeSupport(this); if (listeners == null) {
listeners = new PropertyChangeSupport(this);
}
listeners.addPropertyChangeListener(l); listeners.addPropertyChangeListener(l);
} }
@Override @Override
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (listeners == null) listeners = new PropertyChangeSupport(this); if (listeners == null) {
listeners = new PropertyChangeSupport(this);
}
listeners.removePropertyChangeListener(l); listeners.removePropertyChangeListener(l);
} }
} }

View File

@ -15,10 +15,12 @@ public class PropertyBoolSelector extends JCheckBox {
public PropertyBoolSelector(PropertyEditor pe) { public PropertyBoolSelector(PropertyEditor pe) {
super(); super();
m_Editor = pe; m_Editor = pe;
if (m_Editor.getAsText().equals("True")) if (m_Editor.getAsText().equals("True")) {
setSelected(true); setSelected(true);
else }
setSelected(false); else {
setSelected(false);
}
addItemListener(new ItemListener () { addItemListener(new ItemListener () {
@Override @Override

View File

@ -29,15 +29,21 @@ public class PropertyDoubleArray implements java.io.Serializable {
* @param d * @param d
*/ */
public PropertyDoubleArray(int rows, int cols, double ... d) { public PropertyDoubleArray(int rows, int cols, double ... d) {
if (rows>0 && cols>0) this.m_DoubleArray = new double[rows][cols]; if (rows>0 && cols>0) {
else this.m_DoubleArray=null; this.m_DoubleArray = new double[rows][cols];
}
else {
this.m_DoubleArray=null;
}
this.m_numCols=cols; this.m_numCols=cols;
int index=0; int index=0;
for (int i=0; i<rows; i++) { for (int i=0; i<rows; i++) {
for (int j=0; j<cols; j++) { for (int j=0; j<cols; j++) {
m_DoubleArray[i][j]=d[index]; m_DoubleArray[i][j]=d[index];
index++; index++;
if (index>=d.length) index=0; if (index>=d.length) {
index=0;
}
} }
} }
} }
@ -63,8 +69,12 @@ public class PropertyDoubleArray implements java.io.Serializable {
*/ */
public void setDoubleArray(double[][] d) { public void setDoubleArray(double[][] d) {
this.m_DoubleArray = d; this.m_DoubleArray = d;
if (d.length>0) m_numCols=d[0].length; if (d.length>0) {
else m_numCols=1; m_numCols=d[0].length;
}
else {
m_numCols=1;
}
} }
/** /**
@ -109,8 +119,12 @@ public class PropertyDoubleArray implements java.io.Serializable {
double[][] newDD = new double[k][m_numCols]; double[][] newDD = new double[k][m_numCols];
for (int i=0; i<k; i++) { for (int i=0; i<k; i++) {
for (int j=0; j<m_numCols; j++) { for (int j=0; j<m_numCols; j++) {
if (i<m_DoubleArray.length) newDD[i][j]=m_DoubleArray[i][j]; if (i<m_DoubleArray.length) {
else newDD[i][j]=m_DoubleArray[m_DoubleArray.length-1][j]; newDD[i][j]=m_DoubleArray[i][j];
}
else {
newDD[i][j]=m_DoubleArray[m_DoubleArray.length-1][j];
}
} }
} }
setDoubleArray(newDD); setDoubleArray(newDD);
@ -118,11 +132,15 @@ public class PropertyDoubleArray implements java.io.Serializable {
} }
public void deleteRow(int k) { public void deleteRow(int k) {
if (k<0 || k>=getNumRows()) throw new IllegalArgumentException("Invalid index to deleteRow: " + k + " is not a valid row."); if (k<0 || k>=getNumRows()) {
throw new IllegalArgumentException("Invalid index to deleteRow: " + k + " is not a valid row.");
}
double[][] newDD = new double[getNumRows()-1][getNumCols()]; double[][] newDD = new double[getNumRows()-1][getNumCols()];
int inc=0; int inc=0;
for (int i = 0; i < newDD.length; i++) { for (int i = 0; i < newDD.length; i++) {
if (i==k) inc=1; if (i==k) {
inc=1;
}
for (int j=0; j<getNumCols(); j++) { for (int j=0; j<getNumCols(); j++) {
newDD[i][j] = m_DoubleArray[i+inc][j]; newDD[i][j] = m_DoubleArray[i+inc][j];
} }
@ -137,7 +155,9 @@ public class PropertyDoubleArray implements java.io.Serializable {
* @param k * @param k
*/ */
public void addRowCopy(int k) { public void addRowCopy(int k) {
if (k<0 || k>= getNumRows()) k=getNumRows()-1; if (k<0 || k>= getNumRows()) {
k=getNumRows()-1;
}
double[][] newDD = new double[getNumRows()+1][getNumCols()]; double[][] newDD = new double[getNumRows()+1][getNumCols()];
for (int i = 0; i < getNumRows(); i++) { for (int i = 0; i < getNumRows(); i++) {
@ -145,12 +165,14 @@ public class PropertyDoubleArray implements java.io.Serializable {
newDD[i][j] = m_DoubleArray[i][j]; newDD[i][j] = m_DoubleArray[i][j];
} }
} }
if (k>=0) for (int j=0; j<getNumCols(); j++) { if (k>=0) {
newDD[newDD.length-1][j] = newDD[k][j]; for (int j=0; j<getNumCols(); j++) {
} newDD[newDD.length-1][j] = newDD[k][j];
else for (int j=0; j<getNumCols(); j++) { } }
newDD[newDD.length-1][j] = 1.; else {
} // if the array was empty for (int j=0; j<getNumCols(); j++) {
newDD[newDD.length-1][j] = 1.;
} } // if the array was empty
setDoubleArray(newDD); setDoubleArray(newDD);
} }
@ -164,9 +186,10 @@ public class PropertyDoubleArray implements java.io.Serializable {
for (int i = 0; i < getNumRows(); i++) { for (int i = 0; i < getNumRows(); i++) {
colSum += m_DoubleArray[i][j]; colSum += m_DoubleArray[i][j];
} }
if (colSum!=0) for (int i = 0; i < getNumRows(); i++) { if (colSum!=0) {
m_DoubleArray[i][j]/=colSum; for (int i = 0; i < getNumRows(); i++) {
} m_DoubleArray[i][j]/=colSum;
} }
} }
} }

View File

@ -25,12 +25,20 @@ public class PropertyEditorProvider {
// if (TRACE) System.out.println((editor == null ) ? "No editor from PEM" : ("Found " + editor.getClass())); // if (TRACE) System.out.println((editor == null ) ? "No editor from PEM" : ("Found " + editor.getClass()));
if ((editor == null) && useDefaultGOE ) { if ((editor == null) && useDefaultGOE ) {
if (cls.isArray()) editor = new GenericArrayEditor(); if (cls.isArray()) {
else if (cls.isEnum()) editor = new EnumEditor(); editor = new GenericArrayEditor();
else editor = new GenericObjectEditor(); }
else if (cls.isEnum()) {
editor = new EnumEditor();
}
else {
editor = new GenericObjectEditor();
}
// if (TRACE) System.out.println("using GOE/GAE"); // if (TRACE) System.out.println("using GOE/GAE");
} }
if (TRACE) System.out.println("# using "+ editor.getClass().getName() + " for " + cls.getName()); if (TRACE) {
System.out.println("# using "+ editor.getClass().getName() + " for " + cls.getName());
}
return editor; return editor;
} }
@ -89,47 +97,83 @@ public class PropertyEditorProvider {
PropertyEditor editor = null; PropertyEditor editor = null;
Class pec = prop.getPropertyEditorClass(); Class pec = prop.getPropertyEditorClass();
Class type = prop.getPropertyType(); Class type = prop.getPropertyType();
if (TRACE) System.out.println("PropertyEditorProvider: Searching editor for " + value.getClass()); if (TRACE) {
System.out.println("PropertyEditorProvider: Searching editor for " + value.getClass());
}
try { try {
if (pec != null) editor = (PropertyEditor)pec.newInstance(); if (pec != null) {
editor = (PropertyEditor)pec.newInstance();
}
} catch (Exception e) { } catch (Exception e) {
editor = null; editor = null;
} }
if (editor == null) { if (editor == null) {
if (TRACE) System.out.println("PropertySheetPanel.makeEditor(): No editor from PEC."); if (TRACE) {
System.out.println("PropertySheetPanel.makeEditor(): No editor from PEC.");
}
//@todo Streiche: Here i'm looking for a specialized editor //@todo Streiche: Here i'm looking for a specialized editor
//if (TRACE) System.out.println("PropertySheetPanel.setTarget(): trying to find specialised editor for "+value.getClass()+"."); //if (TRACE) System.out.println("PropertySheetPanel.setTarget(): trying to find specialised editor for "+value.getClass()+".");
if (TRACE) System.out.println("A PropertySheetPanel.makeEditor(): checking " + value.getClass()); if (TRACE) {
if (value != null) editor = PropertyEditorManager.findEditor(value.getClass()); System.out.println("A PropertySheetPanel.makeEditor(): checking " + value.getClass());
if (TRACE) System.out.println((editor == null ) ? "No editor from PEM" : ("Found " + editor.getClass())); }
if (value != null) {
editor = PropertyEditorManager.findEditor(value.getClass());
}
if (TRACE) {
System.out.println((editor == null ) ? "No editor from PEM" : ("Found " + editor.getClass()));
}
if (editor == null && (BeanInspector.isJavaPrimitive(value.getClass()))) { if (editor == null && (BeanInspector.isJavaPrimitive(value.getClass()))) {
Class<?> prim = BeanInspector.getBoxedType(value.getClass()); Class<?> prim = BeanInspector.getBoxedType(value.getClass());
if (TRACE) System.out.println("B1 PropertySheetPanel.makeEditor(): checking " + prim); if (TRACE) {
if (prim!=null) editor = PropertyEditorManager.findEditor(prim); System.out.println("B1 PropertySheetPanel.makeEditor(): checking " + prim);
}
if (prim!=null) {
editor = PropertyEditorManager.findEditor(prim);
}
if (editor ==null) { if (editor ==null) {
if (TRACE) System.out.println((editor == null ) ? "No editor from PEM by boxed type " : ("Found " + editor.getClass())); if (TRACE) {
System.out.println((editor == null ) ? "No editor from PEM by boxed type " : ("Found " + editor.getClass()));
}
prim = BeanInspector.getUnboxedType(value.getClass()); prim = BeanInspector.getUnboxedType(value.getClass());
if (TRACE) System.out.println("B2 PropertySheetPanel.makeEditor(): checking " + prim); if (TRACE) {
if (prim!=null) editor = PropertyEditorManager.findEditor(prim); System.out.println("B2 PropertySheetPanel.makeEditor(): checking " + prim);
if (TRACE) System.out.println((editor == null ) ? "No editor from PEM by unboxed type " : ("Found " + editor.getClass())); }
if (prim!=null) {
editor = PropertyEditorManager.findEditor(prim);
}
if (TRACE) {
System.out.println((editor == null ) ? "No editor from PEM by unboxed type " : ("Found " + editor.getClass()));
}
} }
} }
if (editor == null) { if (editor == null) {
if (TRACE) System.out.println("C PropertySheetPanel.makeEditor(): checking " + type); if (TRACE) {
System.out.println("C PropertySheetPanel.makeEditor(): checking " + type);
}
editor = PropertyEditorManager.findEditor(type); editor = PropertyEditorManager.findEditor(type);
if (TRACE) System.out.println((editor == null ) ? "No editor from PEM by type" : ("Found " + editor.getClass())); if (TRACE) {
System.out.println((editor == null ) ? "No editor from PEM by type" : ("Found " + editor.getClass()));
}
} }
if ((editor == null) && useDefaultGOE ) { if ((editor == null) && useDefaultGOE ) {
if (type.isArray()) editor = new GenericArrayEditor(); if (type.isArray()) {
else if (type.isEnum()) editor = new EnumEditor(); editor = new GenericArrayEditor();
else editor = new GenericObjectEditor(); }
if (TRACE) System.out.println("using GOE/GAE"); else if (type.isEnum()) {
editor = new EnumEditor();
}
else {
editor = new GenericObjectEditor();
}
if (TRACE) {
System.out.println("using GOE/GAE");
}
} }
} }
if (editor == null) { if (editor == null) {
@ -145,7 +189,9 @@ public class PropertyEditorProvider {
// ((GenericObjectEditor) editor).getCustomEditor(); // ((GenericObjectEditor) editor).getCustomEditor();
((GenericObjectEditor) editor).setClassType(type); ((GenericObjectEditor) editor).setClassType(type);
} }
if (TRACE) System.out.println("+ using "+ editor.getClass().getName() + " for " + value.getClass().getName()); if (TRACE) {
System.out.println("+ using "+ editor.getClass().getName() + " for " + value.getClass().getName());
}
return editor; return editor;
} }

View File

@ -48,8 +48,12 @@ public class PropertyFilePath implements java.io.Serializable {
*/ */
public static PropertyFilePath getFilePathFromResource(String relPath) { public static PropertyFilePath getFilePathFromResource(String relPath) {
String fName = ReflectPackage.getResourcePathFromCP(relPath); String fName = ReflectPackage.getResourcePathFromCP(relPath);
if (fName == null) return null; if (fName == null) {
else return new PropertyFilePath(fName); return null;
}
else {
return new PropertyFilePath(fName);
}
} }
@Override @Override
@ -67,16 +71,26 @@ public class PropertyFilePath implements java.io.Serializable {
String old = this.getCompleteFilePath(); String old = this.getCompleteFilePath();
try { try {
if (trace) System.out.println("Complete Filename: " +s); if (trace) {
System.out.println("Complete Filename: " +s);
}
filesep = System.getProperty("file.separator"); filesep = System.getProperty("file.separator");
if (trace) System.out.println("File.Separator: " +filesep); if (trace) {
System.out.println("File.Separator: " +filesep);
}
this.FileName = s.substring(s.lastIndexOf(filesep)+1); this.FileName = s.substring(s.lastIndexOf(filesep)+1);
this.FileExtension = this.FileName.substring(this.FileName.lastIndexOf(".")); this.FileExtension = this.FileName.substring(this.FileName.lastIndexOf("."));
this.FilePath = s.substring(0, s.lastIndexOf(filesep)+1); this.FilePath = s.substring(0, s.lastIndexOf(filesep)+1);
if (trace) System.out.println("FilePath: " +this.FilePath); if (trace) {
if (trace) System.out.println("Filename: " + this.FileName); System.out.println("FilePath: " +this.FilePath);
if (trace) System.out.println("Fileext.: " + this.FileExtension); }
if (trace) {
System.out.println("Filename: " + this.FileName);
}
if (trace) {
System.out.println("Fileext.: " + this.FileExtension);
}
} catch (Exception e) { } catch (Exception e) {
this.setCompleteFilePath(old); this.setCompleteFilePath(old);
} }

View File

@ -58,7 +58,9 @@ public class PropertyOptimizationObjectives implements java.io.Serializable {
* @param index The index of the target to be removed. * @param index The index of the target to be removed.
*/ */
public void removeTarget(int index) { public void removeTarget(int index) {
if ((index < 0) || (index >= this.m_SelectedObjectives.length)) return; if ((index < 0) || (index >= this.m_SelectedObjectives.length)) {
return;
}
InterfaceOptimizationObjective[] newList = new InterfaceOptimizationObjective[this.m_SelectedObjectives.length-1]; InterfaceOptimizationObjective[] newList = new InterfaceOptimizationObjective[this.m_SelectedObjectives.length-1];
int j = 0; int j = 0;

View File

@ -59,7 +59,9 @@ public class PropertyOptimizationObjectivesWithParam implements java.io.Serializ
return; return;
} }
if (d.length == this.m_Weights.length) return; if (d.length == this.m_Weights.length) {
return;
}
if (d.length > this.m_Weights.length) { if (d.length > this.m_Weights.length) {
double[] newWeights = new double[d.length]; double[] newWeights = new double[d.length];
@ -134,7 +136,9 @@ public class PropertyOptimizationObjectivesWithParam implements java.io.Serializ
* @param index The index of the target to be removed. * @param index The index of the target to be removed.
*/ */
public void removeTarget(int index) { public void removeTarget(int index) {
if ((index < 0) || (index >= this.m_SelectedObjectives.length)) return; if ((index < 0) || (index >= this.m_SelectedObjectives.length)) {
return;
}
InterfaceOptimizationObjective[] newList = new InterfaceOptimizationObjective[this.m_SelectedObjectives.length-1]; InterfaceOptimizationObjective[] newList = new InterfaceOptimizationObjective[this.m_SelectedObjectives.length-1];
double[] newWeights = new double[this.m_Weights.length - 1]; double[] newWeights = new double[this.m_Weights.length - 1];

View File

@ -73,7 +73,9 @@ public class PropertyRemoteServers implements java.io.Serializable {
// first check for double instances // first check for double instances
for (int i = 0; i < this.m_AvailableNodes.length; i++) { for (int i = 0; i < this.m_AvailableNodes.length; i++) {
if (this.m_AvailableNodes[i].m_ServerName.equalsIgnoreCase(name)) { if (this.m_AvailableNodes[i].m_ServerName.equalsIgnoreCase(name)) {
if (cpus > this.m_AvailableNodes[i].m_CPUs) this.m_AvailableNodes[i].m_CPUs = cpus; if (cpus > this.m_AvailableNodes[i].m_CPUs) {
this.m_AvailableNodes[i].m_CPUs = cpus;
}
return; return;
} }
} }
@ -165,8 +167,12 @@ public class PropertyRemoteServers implements java.io.Serializable {
public boolean isServerOnline(String name) { public boolean isServerOnline(String name) {
try { try {
String[] list = Naming.list("rmi://" + name + ":" + 1099); String[] list = Naming.list("rmi://" + name + ":" + 1099);
if (list == null) return false; if (list == null) {
else return true; return false;
}
else {
return true;
}
} catch (Exception et) { } catch (Exception et) {
return false; return false;
} }
@ -231,10 +237,12 @@ public class PropertyRemoteServers implements java.io.Serializable {
} }
public ServerNode get(int i) { public ServerNode get(int i) {
if ((i >= 0) && (i < this.m_AvailableNodes.length)) if ((i >= 0) && (i < this.m_AvailableNodes.length)) {
return this.m_AvailableNodes[i]; return this.m_AvailableNodes[i];
else }
else {
return null; return null;
}
} }
public String writeToText() { public String writeToText() {
@ -246,11 +254,15 @@ public class PropertyRemoteServers implements java.io.Serializable {
} }
public void setNameFor(int i, String name) { public void setNameFor(int i, String name) {
if ((i >= 0) && (i < this.m_AvailableNodes.length)) this.m_AvailableNodes[i].m_ServerName = name; if ((i >= 0) && (i < this.m_AvailableNodes.length)) {
this.m_AvailableNodes[i].m_ServerName = name;
}
} }
public void setCPUsFor(int i, int c) { public void setCPUsFor(int i, int c) {
if ((i >= 0) && (i < this.m_AvailableNodes.length)) this.m_AvailableNodes[i].m_CPUs = c; if ((i >= 0) && (i < this.m_AvailableNodes.length)) {
this.m_AvailableNodes[i].m_CPUs = c;
}
} }
public void readFromText(String text) { public void readFromText(String text) {

View File

@ -48,7 +48,9 @@ public class PropertySelectableList<T> implements java.io.Serializable {
public void setObjects(T[] o, boolean[] selection) { public void setObjects(T[] o, boolean[] selection) {
this.m_Objects = o; this.m_Objects = o;
this.m_Selection = selection; this.m_Selection = selection;
if (o.length != selection.length) throw new RuntimeException("Error, mismatching length of arrays in " + this.getClass()); if (o.length != selection.length) {
throw new RuntimeException("Error, mismatching length of arrays in " + this.getClass());
}
m_Support.firePropertyChange("PropertySelectableList", null, this); m_Support.firePropertyChange("PropertySelectableList", null, this);
} }
@ -63,7 +65,9 @@ public class PropertySelectableList<T> implements java.io.Serializable {
public T[] getSelectedObjects() { public T[] getSelectedObjects() {
T[] selObjects = getObjects().clone(); T[] selObjects = getObjects().clone();
for (int i=0; i<selObjects.length; i++) { for (int i=0; i<selObjects.length; i++) {
if (!m_Selection[i]) selObjects[i]=null; if (!m_Selection[i]) {
selObjects[i]=null;
}
} }
return selObjects; return selObjects;
} }
@ -98,8 +102,12 @@ public class PropertySelectableList<T> implements java.io.Serializable {
} }
public int size() { public int size() {
if (m_Objects == null) return 0; if (m_Objects == null) {
else return m_Objects.length; return 0;
}
else {
return m_Objects.length;
}
} }
public T get(int i) { public T get(int i) {
@ -138,12 +146,16 @@ public class PropertySelectableList<T> implements java.io.Serializable {
// } // }
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support == null) m_Support = new PropertyChangeSupport(this); if (m_Support == null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
} }

View File

@ -48,7 +48,9 @@ public class StringSelectionEditor extends AbstractListSelectionEditor {
strs = (StringSelection) o; strs = (StringSelection) o;
// m_AreaObject.addPropertyChangeListener(this); // m_AreaObject.addPropertyChangeListener(this);
return true; return true;
} else return false; } else {
return false;
}
} }
@Override @Override
@ -62,7 +64,9 @@ public class StringSelectionEditor extends AbstractListSelectionEditor {
boolean first = true; boolean first = true;
for (int i=0; i<getElementCount(); i++) { for (int i=0; i<getElementCount(); i++) {
if (isElementSelected(i)) { if (isElementSelected(i)) {
if (!first) sbuf.append(", "); if (!first) {
sbuf.append(", ");
}
sbuf.append(getElementName(i)); sbuf.append(getElementName(i));
first=false; first=false;
} }

View File

@ -53,10 +53,12 @@ public class TopoPlot extends Plot {
* @param color_scale the topologies color coding. Values (0-3) are valid. @See ColorBarCalculator. * @param color_scale the topologies color coding. Values (0-3) are valid. @See ColorBarCalculator.
*/ */
public void setParams(int gridX, int gridY, int color_scale) { public void setParams(int gridX, int gridY, int color_scale) {
if (gridX>m_Frame.getWidth()) if (gridX>m_Frame.getWidth()) {
gridX = m_Frame.getWidth(); gridX = m_Frame.getWidth();
if (gridY>m_Frame.getHeight()) }
gridY = m_Frame.getHeight(); if (gridY>m_Frame.getHeight()) {
gridY = m_Frame.getHeight();
}
gridx = gridX; gridx = gridX;
gridy = gridY; gridy = gridY;
colorScale = color_scale; colorScale = color_scale;
@ -114,9 +116,15 @@ public class TopoPlot extends Plot {
pos[0] = border[0][0]+x*deltaX; pos[0] = border[0][0]+x*deltaX;
pos[1] = border[1][0]+y*deltaY; pos[1] = border[1][0]+y*deltaY;
tmp = (float)(problem.functionValue(pos)); tmp = (float)(problem.functionValue(pos));
if (TRACEMETH) System.out.println(pos[0] + " " + pos[1] + " " + tmp); if (TRACEMETH) {
if (tmp < min) min = tmp; System.out.println(pos[0] + " " + pos[1] + " " + tmp);
if (tmp > max) max = tmp; }
if (tmp < min) {
min = tmp;
}
if (tmp > max) {
max = tmp;
}
if (withGradientsIfAvailable && (problem instanceof InterfaceFirstOrderDerivableProblem)) { if (withGradientsIfAvailable && (problem instanceof InterfaceFirstOrderDerivableProblem)) {
double[] deriv = ((InterfaceFirstOrderDerivableProblem)problem).getFirstOrderGradients(problem.project2DPoint(pos)); double[] deriv = ((InterfaceFirstOrderDerivableProblem)problem).getFirstOrderGradients(problem.project2DPoint(pos));
for (int i=0; i<2;i++) { for (int i=0; i<2;i++) {

View File

@ -166,7 +166,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
} catch(java.lang.ClassNotFoundException e) { } catch(java.lang.ClassNotFoundException e) {
System.out.println("No Class found for " + tmp); System.out.println("No Class found for " + tmp);
} }
if ((object != null) && (editor != null)) paraPanel.registerEditor(object, editor); if ((object != null) && (editor != null)) {
paraPanel.registerEditor(object, editor);
}
this.m_O1 = (paraPanel.makePanel()); this.m_O1 = (paraPanel.makePanel());
// TODO this is defunct anyways... (MK, 2010-03) // TODO this is defunct anyways... (MK, 2010-03)
// EvAClient.setProperty("eva2.server.oa.go.Tools.InterfaceTest", "eva2.server.oa.go.Tools.Test1,eva2.server.oa.go.Tools.Test2"); // EvAClient.setProperty("eva2.server.oa.go.Tools.InterfaceTest", "eva2.server.oa.go.Tools.Test1,eva2.server.oa.go.Tools.Test2");
@ -367,7 +369,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
public Object doWork() { public Object doWork() {
try { try {
this.m_GO.saveInstance(); this.m_GO.saveInstance();
if (this.show) this.m_StatusField.setText("Optimizing..."); if (this.show) {
this.m_StatusField.setText("Optimizing...");
}
RNG.setRandomSeed(m_GO.getSeed()); RNG.setRandomSeed(m_GO.getSeed());
// opening output file... // opening output file...
@ -403,10 +407,12 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
this.m_GO.getProblem().initProblem(); // in the loop as well, dynamic probs may need that (MK) this.m_GO.getProblem().initProblem(); // in the loop as well, dynamic probs may need that (MK)
this.m_TmpData = new ArrayList(); this.m_TmpData = new ArrayList();
this.currentRun = j; this.currentRun = j;
if (this.show) if (this.show) {
this.m_StatusField.setText("Optimizing Run " + (j+1) + " of " + this.m_MultiRuns + " Multi Runs..."); this.m_StatusField.setText("Optimizing Run " + (j+1) + " of " + this.m_MultiRuns + " Multi Runs...");
if (Thread.interrupted()) }
if (Thread.interrupted()) {
throw new InterruptedException(); throw new InterruptedException();
}
// write header to file // write header to file
this.writeToFile(" FitnessCalls\t Best\t Mean\t Worst \t" + BeanInspector.toString(this.m_GO.getProblem().getAdditionalDataHeader(), '\t', false, "")); this.writeToFile(" FitnessCalls\t Best\t Mean\t Worst \t" + BeanInspector.toString(this.m_GO.getProblem().getAdditionalDataHeader(), '\t', false, ""));
if ((this.m_ContinueFlag) && (this.m_Backup != null)) { if ((this.m_ContinueFlag) && (this.m_Backup != null)) {
@ -426,7 +432,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
//while (this.m_GO.getOptimizer().getPopulation().getFunctionCalls() < this.m_FunctionCalls) { //while (this.m_GO.getOptimizer().getPopulation().getFunctionCalls() < this.m_FunctionCalls) {
while (!this.m_GO.getTerminator().isTerminated(this.m_GO.getOptimizer().getPopulation())) { while (!this.m_GO.getTerminator().isTerminated(this.m_GO.getOptimizer().getPopulation())) {
//System.out.println("Simulated Function calls "+ this.m_Optimizer.getPopulation().getFunctionCalls()); //System.out.println("Simulated Function calls "+ this.m_Optimizer.getPopulation().getFunctionCalls());
if (Thread.interrupted()) throw new InterruptedException(); if (Thread.interrupted()) {
throw new InterruptedException();
}
m_GO.getOptimizer().optimize(); m_GO.getOptimizer().optimize();
} }
System.gc(); System.gc();
@ -434,13 +442,19 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
//this.writeToFile(this.m_GO.getProblem().getStringRepresentationForProblem(this.m_GO.getOptimizer())); //this.writeToFile(this.m_GO.getProblem().getStringRepresentationForProblem(this.m_GO.getOptimizer()));
tmpMultiRun.add(this.m_TmpData); tmpMultiRun.add(this.m_TmpData);
} }
if (this.show) this.m_Plot.setInfoString(this.currentExperiment, this.m_ExperimentName, 0.5f); if (this.show) {
if (this.show) this.draw(); this.m_Plot.setInfoString(this.currentExperiment, this.m_ExperimentName, 0.5f);
}
if (this.show) {
this.draw();
}
this.m_ExperimentName = this.m_GO.getOptimizer().getName()+"-"+this.m_PerformedRuns.size(); this.m_ExperimentName = this.m_GO.getOptimizer().getName()+"-"+this.m_PerformedRuns.size();
} }
catch (InterruptedException e) { catch (InterruptedException e) {
updateStatus(0); updateStatus(0);
if (this.show) this.m_StatusField.setText("Interrupted..."); if (this.show) {
this.m_StatusField.setText("Interrupted...");
}
return "Interrupted"; return "Interrupted";
} }
if (this.m_OutputFile != null) { if (this.m_OutputFile != null) {
@ -450,11 +464,14 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
System.out.println("Failed to close output file!"); System.out.println("Failed to close output file!");
} }
} }
if (this.show) for (int i = 0; i < this.m_MultiRuns; i++) { if (this.show) {
this.m_Plot.clearGraph(1000 +i); for (int i = 0; i < this.m_MultiRuns; i++) {
} this.m_Plot.clearGraph(1000 +i);
} }
updateStatus(0); updateStatus(0);
if (this.show) this.m_StatusField.setText("Finished..."); if (this.show) {
this.m_StatusField.setText("Finished...");
}
return "All Done"; return "All Done";
} }
@ -506,8 +523,12 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
// if (this.m_GO.getOptimizer().getName().equalsIgnoreCase("CBN-EA")) tmpColor = Color.black; // if (this.m_GO.getOptimizer().getName().equalsIgnoreCase("CBN-EA")) tmpColor = Color.black;
for (int j = 0; j < data.length; j++) { for (int j = 0; j < data.length; j++) {
if (this.m_ContinueFlag) this.m_Plot.setConnectedPoint(data[j][0]+this.m_RecentFC, data[j][1], this.currentExperiment); if (this.m_ContinueFlag) {
else this.m_Plot.setConnectedPoint(data[j][0], data[j][1], this.currentExperiment); this.m_Plot.setConnectedPoint(data[j][0]+this.m_RecentFC, data[j][1], this.currentExperiment);
}
else {
this.m_Plot.setConnectedPoint(data[j][0], data[j][1], this.currentExperiment);
}
} }
this.currentExperiment++; this.currentExperiment++;
} }
@ -593,8 +614,12 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
// instead of adding simply the best fitness value i'll ask the problem what to show // instead of adding simply the best fitness value i'll ask the problem what to show
tmpData[1] = this.m_GO.getProblem().getDoublePlotValue(population); tmpData[1] = this.m_GO.getProblem().getDoublePlotValue(population);
if (this.m_Plot != null) { if (this.m_Plot != null) {
if (this.m_ContinueFlag) this.m_Plot.setConnectedPoint(tmpData[0].doubleValue()+this.m_RecentFC, tmpData[1].doubleValue(), 1000+this.currentRun); if (this.m_ContinueFlag) {
else this.m_Plot.setConnectedPoint(tmpData[0].doubleValue(), tmpData[1].doubleValue(), 1000+this.currentRun); this.m_Plot.setConnectedPoint(tmpData[0].doubleValue()+this.m_RecentFC, tmpData[1].doubleValue(), 1000+this.currentRun);
}
else {
this.m_Plot.setConnectedPoint(tmpData[0].doubleValue(), tmpData[1].doubleValue(), 1000+this.currentRun);
}
} }
this.m_TmpData.add(tmpData); this.m_TmpData.add(tmpData);
} }
@ -605,7 +630,9 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
*/ */
private void writeToFile(String line) { private void writeToFile(String line) {
String write = line + "\n"; String write = line + "\n";
if (this.m_OutputFile == null) return; if (this.m_OutputFile == null) {
return;
}
try { try {
this.m_OutputFile.write(write, 0, write.length()); this.m_OutputFile.write(write, 0, write.length());
this.m_OutputFile.flush(); this.m_OutputFile.flush();

View File

@ -212,15 +212,27 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
private void checkForObjectives(String w) { private void checkForObjectives(String w) {
System.out.println("I'm currently "+w); System.out.println("I'm currently "+w);
System.out.print("Original Problem is "); System.out.print("Original Problem is ");
if (this.m_State.m_OriginalProblem.isMultiObjective()) System.out.println("multi-objective."); if (this.m_State.m_OriginalProblem.isMultiObjective()) {
else System.out.println("single-objective."); System.out.println("multi-objective.");
}
else {
System.out.println("single-objective.");
}
System.out.print("Current Problem is "); System.out.print("Current Problem is ");
if (this.m_State.m_CurrentProblem.isMultiObjective()) System.out.println("multi-objective."); if (this.m_State.m_CurrentProblem.isMultiObjective()) {
else System.out.println("single-objective."); System.out.println("multi-objective.");
}
else {
System.out.println("single-objective.");
}
if (this.m_State.m_BackupProblem != null) { if (this.m_State.m_BackupProblem != null) {
System.out.print("Backup Problem is "); System.out.print("Backup Problem is ");
if (this.m_State.m_BackupProblem.isMultiObjective()) System.out.println("multi-objective."); if (this.m_State.m_BackupProblem.isMultiObjective()) {
else System.out.println("single-objective."); System.out.println("multi-objective.");
}
else {
System.out.println("single-objective.");
}
} else { } else {
System.out.println("No Backup Problem"); System.out.println("No Backup Problem");
} }
@ -235,7 +247,9 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
s = "Objectives: {"; s = "Objectives: {";
for (int i = 0; i < obj.length; i++) { for (int i = 0; i < obj.length; i++) {
s += obj[i].getIdentName(); s += obj[i].getIdentName();
if (i < (obj.length-1)) s += "; "; if (i < (obj.length-1)) {
s += "; ";
}
} }
s += "}"; s += "}";
System.out.println(""+s); System.out.println(""+s);
@ -244,7 +258,9 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
s = "Weights : {"; s = "Weights : {";
for (int i = 0; i < prop.getNumRows(); i++) { for (int i = 0; i < prop.getNumRows(); i++) {
s += prop.getValue(i,0); s += prop.getValue(i,0);
if (i < (prop.getNumRows()-1)) s += "; "; if (i < (prop.getNumRows()-1)) {
s += "; ";
}
} }
s += "}"; s += "}";
System.out.println(""+s); System.out.println(""+s);
@ -328,10 +344,12 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
throw new Exception("Object not of type MOCCOState"); throw new Exception("Object not of type MOCCOState");
} return obj; } return obj;
} catch (Exception ex) { } catch (Exception ex) {
if (this.m_JFrame != null) if (this.m_JFrame != null) {
JOptionPane.showMessageDialog(this.m_JFrame, "Couldn't read object: " + selected.getName() + "\n" + ex.getMessage(), "Open object file", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(this.m_JFrame, "Couldn't read object: " + selected.getName() + "\n" + ex.getMessage(), "Open object file", JOptionPane.ERROR_MESSAGE);
else }
System.out.println("Couldn't read object: " + selected.getName() + "\n" + ex.getMessage()); else {
System.out.println("Couldn't read object: " + selected.getName() + "\n" + ex.getMessage());
}
} }
return null; return null;
} }
@ -346,10 +364,12 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
oo.writeObject(this.m_State); oo.writeObject(this.m_State);
oo.close(); oo.close();
} catch (Exception ex) { } catch (Exception ex) {
if (this.m_JFrame != null) if (this.m_JFrame != null) {
JOptionPane.showMessageDialog(this.m_JFrame, "Couldn't write to file: " + sFile.getName() + "\n" + ex.getMessage(), "Save object", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(this.m_JFrame, "Couldn't write to file: " + sFile.getName() + "\n" + ex.getMessage(), "Save object", JOptionPane.ERROR_MESSAGE);
else }
System.out.println("Couldn't write to file: " + sFile.getName() + "\n" + ex.getMessage()); else {
System.out.println("Couldn't write to file: " + sFile.getName() + "\n" + ex.getMessage());
}
} }
} }
@ -365,10 +385,14 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
} }
this.m_StillWorking = true; this.m_StillWorking = true;
this.m_State.m_Optimizer.setProblem(this.m_State.m_CurrentProblem); this.m_State.m_Optimizer.setProblem(this.m_State.m_CurrentProblem);
if (this.m_Debug) System.out.println(""+this.m_State.m_Optimizer.getStringRepresentation()); if (this.m_Debug) {
System.out.println(""+this.m_State.m_Optimizer.getStringRepresentation());
}
this.m_State.m_CurrentProblem.evaluate(this.m_State.m_Optimizer.getPopulation()); this.m_State.m_CurrentProblem.evaluate(this.m_State.m_Optimizer.getPopulation());
this.m_State.m_Optimizer.getPopulation().SetFunctionCalls(0); this.m_State.m_Optimizer.getPopulation().SetFunctionCalls(0);
if (this.m_State.m_Optimizer.getPopulation().size() == 0) this.m_State.m_Optimizer.init(); if (this.m_State.m_Optimizer.getPopulation().size() == 0) {
this.m_State.m_Optimizer.init();
}
this.m_State.m_Optimizer.addPopulationChangedEventListener(this); this.m_State.m_Optimizer.addPopulationChangedEventListener(this);
worker = new SwingWorker() { worker = new SwingWorker() {
@Override @Override
@ -394,7 +418,9 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
m_State.addPopulation2History(pop[i]); m_State.addPopulation2History(pop[i]);
} }
} }
if (m_View != null) m_View.problemChanged(true); if (m_View != null) {
m_View.problemChanged(true);
}
m_StillWorking = false; m_StillWorking = false;
} }
}; };
@ -427,9 +453,13 @@ public class MOCCOStandalone implements InterfaceGOStandalone, InterfacePopulati
*/ */
Object doWork() { Object doWork() {
try { try {
if (Thread.interrupted()) throw new InterruptedException(); if (Thread.interrupted()) {
throw new InterruptedException();
}
while (!this.m_State.m_Terminator.isTerminated(this.m_State.m_Optimizer.getPopulation())) { while (!this.m_State.m_Terminator.isTerminated(this.m_State.m_Optimizer.getPopulation())) {
if (Thread.interrupted()) throw new InterruptedException(); if (Thread.interrupted()) {
throw new InterruptedException();
}
this.m_State.m_Optimizer.optimize(); this.m_State.m_Optimizer.optimize();
} }
System.gc(); System.gc();

View File

@ -76,7 +76,9 @@ public class AbstractEAIndividualComparator implements Comparator<Object>, Seria
if (other instanceof AbstractEAIndividualComparator) { if (other instanceof AbstractEAIndividualComparator) {
AbstractEAIndividualComparator o = (AbstractEAIndividualComparator)other; AbstractEAIndividualComparator o = (AbstractEAIndividualComparator)other;
if ((indyDataKey==o.indyDataKey) || (indyDataKey!=null && (indyDataKey.equals(o.indyDataKey)))) { if ((indyDataKey==o.indyDataKey) || (indyDataKey!=null && (indyDataKey.equals(o.indyDataKey)))) {
if ((fitCriterion == o.fitCriterion) && (preferFeasible == o.preferFeasible)) return true; if ((fitCriterion == o.fitCriterion) && (preferFeasible == o.preferFeasible)) {
return true;
}
} }
} }
return false; return false;
@ -127,32 +129,48 @@ public class AbstractEAIndividualComparator implements Comparator<Object>, Seria
if (preferFeasible) { // check constraint violation first? if (preferFeasible) { // check constraint violation first?
int constrViolComp = ((AbstractEAIndividual) o1).compareConstraintViolation((AbstractEAIndividual) o2); int constrViolComp = ((AbstractEAIndividual) o1).compareConstraintViolation((AbstractEAIndividual) o2);
if (constrViolComp>0) return -1; if (constrViolComp>0) {
else if (constrViolComp < 0) return 1; return -1;
}
else if (constrViolComp < 0) {
return 1;
}
// otherwise both do not violate, so regard fitness // otherwise both do not violate, so regard fitness
} }
if (indyDataKey != null && (indyDataKey.length()>0)) { // check specific key if (indyDataKey != null && (indyDataKey.length()>0)) { // check specific key
double[] fit1 = (double[])((AbstractEAIndividual)o1).getData(indyDataKey); double[] fit1 = (double[])((AbstractEAIndividual)o1).getData(indyDataKey);
double[] fit2 = (double[])((AbstractEAIndividual)o2).getData(indyDataKey); double[] fit2 = (double[])((AbstractEAIndividual)o2).getData(indyDataKey);
if ((fit1==null) || (fit2==null)) throw new RuntimeException("Unknown individual data key " + indyDataKey + ", unable to compare individuals ("+this.getClass().getSimpleName()+")"); if ((fit1==null) || (fit2==null)) {
throw new RuntimeException("Unknown individual data key " + indyDataKey + ", unable to compare individuals ("+this.getClass().getSimpleName()+")");
}
if (fitCriterion < 0) { if (fitCriterion < 0) {
o1domO2 = AbstractEAIndividual.isDominatingFitness(fit1, fit2); o1domO2 = AbstractEAIndividual.isDominatingFitness(fit1, fit2);
o2domO1 = AbstractEAIndividual.isDominatingFitness(fit2, fit1); o2domO1 = AbstractEAIndividual.isDominatingFitness(fit2, fit1);
} else { } else {
if (fit1[fitCriterion] == fit2[fitCriterion]) return 0; if (fit1[fitCriterion] == fit2[fitCriterion]) {
else return (fit1[fitCriterion] < fit2[fitCriterion]) ? -1 : 1; return 0;
}
else {
return (fit1[fitCriterion] < fit2[fitCriterion]) ? -1 : 1;
}
} }
} else { } else {
if (fitCriterion < 0) { if (fitCriterion < 0) {
o1domO2 = ((AbstractEAIndividual) o1).isDominating((AbstractEAIndividual) o2); o1domO2 = ((AbstractEAIndividual) o1).isDominating((AbstractEAIndividual) o2);
o2domO1 = ((AbstractEAIndividual) o2).isDominating((AbstractEAIndividual) o1); o2domO1 = ((AbstractEAIndividual) o2).isDominating((AbstractEAIndividual) o1);
} else { } else {
if (((AbstractEAIndividual) o1).getFitness()[fitCriterion] == ((AbstractEAIndividual) o2).getFitness()[fitCriterion]) return 0; if (((AbstractEAIndividual) o1).getFitness()[fitCriterion] == ((AbstractEAIndividual) o2).getFitness()[fitCriterion]) {
return 0;
}
return (((AbstractEAIndividual) o1).getFitness()[fitCriterion] < ((AbstractEAIndividual) o2).getFitness()[fitCriterion]) ? -1 : 1; return (((AbstractEAIndividual) o1).getFitness()[fitCriterion] < ((AbstractEAIndividual) o2).getFitness()[fitCriterion]) ? -1 : 1;
} }
} }
if (o1domO2 ^ o2domO1) return (o1domO2 ? -1 : 1); // they are comparable if (o1domO2 ^ o2domO1) {
else return 0; // they are not comparable return (o1domO2 ? -1 : 1);
} // they are comparable
else {
return 0;
} // they are not comparable
} }
public String getIndyDataKey() { public String getIndyDataKey() {

View File

@ -36,8 +36,9 @@ public class ESIndividualBinaryData extends AbstractEAIndividual implements Inte
} }
public ESIndividualBinaryData(ESIndividualBinaryData individual) { public ESIndividualBinaryData(ESIndividualBinaryData individual) {
if (individual.m_Phenotype != null) if (individual.m_Phenotype != null) {
this.m_Phenotype = (BitSet) individual.m_Phenotype.clone(); this.m_Phenotype = (BitSet) individual.m_Phenotype.clone();
}
this.m_Genotype = new double[individual.m_Genotype.length]; this.m_Genotype = new double[individual.m_Genotype.length];
this.m_Range = new double[individual.m_Genotype.length][2]; this.m_Range = new double[individual.m_Genotype.length][2];
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
@ -77,12 +78,22 @@ public class ESIndividualBinaryData extends AbstractEAIndividual implements Inte
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof ESIndividualBinaryData) { if (individual instanceof ESIndividualBinaryData) {
ESIndividualBinaryData indy = (ESIndividualBinaryData) individual; ESIndividualBinaryData indy = (ESIndividualBinaryData) individual;
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
if ((this.m_Range == null) || (indy.m_Range == null)) return false; return false;
}
if ((this.m_Range == null) || (indy.m_Range == null)) {
return false;
}
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.m_Range.length; i++) {
if (this.m_Genotype[i] != indy.m_Genotype[i]) return false; if (this.m_Genotype[i] != indy.m_Genotype[i]) {
if (this.m_Range[i][0] != indy.m_Range[i][0]) return false; return false;
if (this.m_Range[i][1] != indy.m_Range[i][1]) return false; }
if (this.m_Range[i][0] != indy.m_Range[i][0]) {
return false;
}
if (this.m_Range[i][1] != indy.m_Range[i][1]) {
return false;
}
} }
return true; return true;
} else { } else {
@ -166,11 +177,19 @@ public class ESIndividualBinaryData extends AbstractEAIndividual implements Inte
this.SetBinaryPhenotype(binaryData); this.SetBinaryPhenotype(binaryData);
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if (this.m_UseHardSwitch) { if (this.m_UseHardSwitch) {
if (binaryData.get(i)) this.m_Genotype[i] = RNG.randomDouble(0.55,1.0); if (binaryData.get(i)) {
else this.m_Genotype[i] = RNG.randomDouble(0.0,0.45); this.m_Genotype[i] = RNG.randomDouble(0.55,1.0);
}
else {
this.m_Genotype[i] = RNG.randomDouble(0.0,0.45);
}
} else { } else {
if (binaryData.get(i)) this.m_Genotype[i] = 0.9; if (binaryData.get(i)) {
else this.m_Genotype[i] = 0.1; this.m_Genotype[i] = 0.9;
}
else {
this.m_Genotype[i] = 0.1;
}
} }
} }
} }
@ -240,8 +259,12 @@ public class ESIndividualBinaryData extends AbstractEAIndividual implements Inte
public void SetDGenotype(double[] b) { public void SetDGenotype(double[] b) {
this.m_Genotype = b; this.m_Genotype = b;
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if (this.m_Genotype[i] < this.m_Range[i][0]) this.m_Genotype[i] = this.m_Range[1][0]; if (this.m_Genotype[i] < this.m_Range[i][0]) {
if (this.m_Genotype[i] > this.m_Range[i][1]) this.m_Genotype[i] = this.m_Range[1][1]; this.m_Genotype[i] = this.m_Range[1][0];
}
if (this.m_Genotype[i] > this.m_Range[i][1]) {
this.m_Genotype[i] = this.m_Range[1][1];
}
} }
} }
@ -271,8 +294,12 @@ public class ESIndividualBinaryData extends AbstractEAIndividual implements Inte
@Override @Override
public void defaultInit(InterfaceOptimizationProblem prob) { public void defaultInit(InterfaceOptimizationProblem prob) {
if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) ESIndividualDoubleData.defaultInit(m_Genotype, (double[][])((InterfaceHasInitRange)prob).getInitRange()); if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) {
else ESIndividualDoubleData.defaultInit(m_Genotype, m_Range); ESIndividualDoubleData.defaultInit(m_Genotype, (double[][])((InterfaceHasInitRange)prob).getInitRange());
}
else {
ESIndividualDoubleData.defaultInit(m_Genotype, m_Range);
}
} }
/********************************************************************************************************************** /**********************************************************************************************************************
* These are for GUI * These are for GUI

View File

@ -79,14 +79,28 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof ESIndividualDoubleData) { if (individual instanceof ESIndividualDoubleData) {
ESIndividualDoubleData indy = (ESIndividualDoubleData) individual; ESIndividualDoubleData indy = (ESIndividualDoubleData) individual;
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
if ((this.m_Range == null) || (indy.m_Range == null)) return false; return false;
if (this.m_Genotype.length != indy.m_Genotype.length) return false; }
if (this.m_Range.length != indy.m_Range.length) return false; if ((this.m_Range == null) || (indy.m_Range == null)) {
return false;
}
if (this.m_Genotype.length != indy.m_Genotype.length) {
return false;
}
if (this.m_Range.length != indy.m_Range.length) {
return false;
}
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if (this.m_Genotype[i] != indy.m_Genotype[i]) return false; if (this.m_Genotype[i] != indy.m_Genotype[i]) {
if (this.m_Range[i][0] != indy.m_Range[i][0]) return false; return false;
if (this.m_Range[i][1] != indy.m_Range[i][1]) return false; }
if (this.m_Range[i][0] != indy.m_Range[i][0]) {
return false;
}
if (this.m_Range[i][1] != indy.m_Range[i][1]) {
return false;
}
} }
return true; return true;
} else { } else {
@ -172,7 +186,9 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
public double[] getDoubleData() { public double[] getDoubleData() {
// since the phenotype is set to null if the genotype is changed, // since the phenotype is set to null if the genotype is changed,
// it should now be save to only perform the copy if the phenotype is null // it should now be save to only perform the copy if the phenotype is null
if (this.m_Phenotype!=null) return m_Phenotype; if (this.m_Phenotype!=null) {
return m_Phenotype;
}
else { else {
this.m_Phenotype = new double[this.m_Genotype.length]; this.m_Phenotype = new double[this.m_Genotype.length];
System.arraycopy(this.m_Genotype, 0, this.m_Phenotype, 0, this.m_Genotype.length); System.arraycopy(this.m_Genotype, 0, this.m_Phenotype, 0, this.m_Genotype.length);
@ -187,8 +203,12 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
*/ */
@Override @Override
public double[] getDoubleDataWithoutUpdate() { public double[] getDoubleDataWithoutUpdate() {
if (m_Phenotype==null) return getDoubleData(); if (m_Phenotype==null) {
else return this.m_Phenotype; return getDoubleData();
}
else {
return this.m_Phenotype;
}
} }
/** This method allows you to set the phenotype double data. To change the genotype, /** This method allows you to set the phenotype double data. To change the genotype,
@ -222,7 +242,9 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
public void init(InterfaceOptimizationProblem opt) { public void init(InterfaceOptimizationProblem opt) {
super.init(opt); super.init(opt);
// evil operators may not respect the range, so at least give some hint // evil operators may not respect the range, so at least give some hint
if (!Mathematics.isInRange(m_Genotype, m_Range)) EVAERROR.errorMsgOnce("Warning: Individual out of range after initialization (and potential initial crossover/mutation)!"); if (!Mathematics.isInRange(m_Genotype, m_Range)) {
EVAERROR.errorMsgOnce("Warning: Individual out of range after initialization (and potential initial crossover/mutation)!");
}
} }
/** This method will init the individual with a given value for the /** This method will init the individual with a given value for the
@ -234,7 +256,9 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
public void initByValue(Object obj, InterfaceOptimizationProblem opt) { public void initByValue(Object obj, InterfaceOptimizationProblem opt) {
if (obj instanceof double[]) { if (obj instanceof double[]) {
double[] bs = (double[]) obj; double[] bs = (double[]) obj;
if (bs.length != this.m_Genotype.length) System.out.println("Init value and requested length doesn't match!"); if (bs.length != this.m_Genotype.length) {
System.out.println("Init value and requested length doesn't match!");
}
this.SetDoubleGenotype(bs); this.SetDoubleGenotype(bs);
} else { } else {
this.defaultInit(opt); this.defaultInit(opt);
@ -290,8 +314,12 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
this.m_Genotype = b; this.m_Genotype = b;
this.m_Phenotype=null; // mark it as invalid this.m_Phenotype=null; // mark it as invalid
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if (this.m_Genotype[i] < this.m_Range[i][0]) this.m_Genotype[i] = this.m_Range[i][0]; if (this.m_Genotype[i] < this.m_Range[i][0]) {
if (this.m_Genotype[i] > this.m_Range[i][1]) this.m_Genotype[i] = this.m_Range[i][1]; this.m_Genotype[i] = this.m_Range[i][0];
}
if (this.m_Genotype[i] > this.m_Range[i][1]) {
this.m_Genotype[i] = this.m_Range[i][1];
}
} }
} }
@ -322,14 +350,22 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
public static void defaultMutate(double[] genotype, double[][] range) { public static void defaultMutate(double[] genotype, double[][] range) {
int mutationIndex = RNG.randomInt(0, genotype.length-1); int mutationIndex = RNG.randomInt(0, genotype.length-1);
genotype[mutationIndex] += ((range[mutationIndex][1] - range[mutationIndex][0])/2)*RNG.gaussianDouble(0.05f); genotype[mutationIndex] += ((range[mutationIndex][1] - range[mutationIndex][0])/2)*RNG.gaussianDouble(0.05f);
if (genotype[mutationIndex] < range[mutationIndex][0]) genotype[mutationIndex] = range[mutationIndex][0]; if (genotype[mutationIndex] < range[mutationIndex][0]) {
if (genotype[mutationIndex] > range[mutationIndex][1]) genotype[mutationIndex] = range[mutationIndex][1]; genotype[mutationIndex] = range[mutationIndex][0];
}
if (genotype[mutationIndex] > range[mutationIndex][1]) {
genotype[mutationIndex] = range[mutationIndex][1];
}
} }
@Override @Override
public void defaultInit(InterfaceOptimizationProblem prob) { public void defaultInit(InterfaceOptimizationProblem prob) {
if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) ESIndividualDoubleData.defaultInit(m_Genotype, (double[][])((InterfaceHasInitRange)prob).getInitRange()); if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) {
else ESIndividualDoubleData.defaultInit(m_Genotype, m_Range); ESIndividualDoubleData.defaultInit(m_Genotype, (double[][])((InterfaceHasInitRange)prob).getInitRange());
}
else {
ESIndividualDoubleData.defaultInit(m_Genotype, m_Range);
}
m_Phenotype = null; // mark as invalid m_Phenotype = null; // mark as invalid
} }

View File

@ -74,12 +74,22 @@ public class ESIndividualIntegerData extends AbstractEAIndividual implements Int
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof ESIndividualIntegerData) { if (individual instanceof ESIndividualIntegerData) {
ESIndividualIntegerData indy = (ESIndividualIntegerData) individual; ESIndividualIntegerData indy = (ESIndividualIntegerData) individual;
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
if ((this.m_Range == null) || (indy.m_Range == null)) return false; return false;
}
if ((this.m_Range == null) || (indy.m_Range == null)) {
return false;
}
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.m_Range.length; i++) {
if (this.m_Genotype[i] != indy.m_Genotype[i]) return false; if (this.m_Genotype[i] != indy.m_Genotype[i]) {
if (this.m_Range[i][0] != indy.m_Range[i][0]) return false; return false;
if (this.m_Range[i][1] != indy.m_Range[i][1]) return false; }
if (this.m_Range[i][0] != indy.m_Range[i][0]) {
return false;
}
if (this.m_Range[i][1] != indy.m_Range[i][1]) {
return false;
}
} }
return true; return true;
} else { } else {
@ -156,8 +166,12 @@ public class ESIndividualIntegerData extends AbstractEAIndividual implements Int
this.m_Phenotype = new int[this.m_Genotype.length]; this.m_Phenotype = new int[this.m_Genotype.length];
for (int i = 0; i < this.m_Phenotype.length; i++) { for (int i = 0; i < this.m_Phenotype.length; i++) {
this.m_Phenotype[i] = (int) this.m_Genotype[i]; this.m_Phenotype[i] = (int) this.m_Genotype[i];
if (this.m_Phenotype[i] < this.m_Range[i][0]) this.m_Phenotype[i] = this.m_Range[i][0]; if (this.m_Phenotype[i] < this.m_Range[i][0]) {
if (this.m_Phenotype[i] > this.m_Range[i][1]) this.m_Phenotype[i] = this.m_Range[i][1]; this.m_Phenotype[i] = this.m_Range[i][0];
}
if (this.m_Phenotype[i] > this.m_Range[i][1]) {
this.m_Phenotype[i] = this.m_Range[i][1];
}
} }
return this.m_Phenotype; return this.m_Phenotype;
} }
@ -204,7 +218,9 @@ public class ESIndividualIntegerData extends AbstractEAIndividual implements Int
public void initByValue(Object obj, InterfaceOptimizationProblem opt) { public void initByValue(Object obj, InterfaceOptimizationProblem opt) {
if (obj instanceof int[]) { if (obj instanceof int[]) {
int[] bs = (int[]) obj; int[] bs = (int[]) obj;
if (bs.length != this.m_Genotype.length) System.out.println("Init value and requested length doesn't match!"); if (bs.length != this.m_Genotype.length) {
System.out.println("Init value and requested length doesn't match!");
}
this.SetIntGenotype(bs); this.SetIntGenotype(bs);
} else { } else {
this.defaultInit(opt); this.defaultInit(opt);
@ -257,8 +273,12 @@ public class ESIndividualIntegerData extends AbstractEAIndividual implements Int
public void SetDGenotype(double[] b) { public void SetDGenotype(double[] b) {
this.m_Genotype = b; this.m_Genotype = b;
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if (this.m_Genotype[i] < this.m_Range[i][0]) this.m_Genotype[i] = this.m_Range[i][0]; if (this.m_Genotype[i] < this.m_Range[i][0]) {
if (this.m_Genotype[i] > this.m_Range[i][1]) this.m_Genotype[i] = this.m_Range[i][1]; this.m_Genotype[i] = this.m_Range[i][0];
}
if (this.m_Genotype[i] > this.m_Range[i][1]) {
this.m_Genotype[i] = this.m_Range[i][1];
}
} }
} }
@ -268,8 +288,12 @@ public class ESIndividualIntegerData extends AbstractEAIndividual implements Int
public void defaultMutate() { public void defaultMutate() {
int mutationIndex = RNG.randomInt(0, this.m_Genotype.length-1); int mutationIndex = RNG.randomInt(0, this.m_Genotype.length-1);
this.m_Genotype[mutationIndex] += ((this.m_Range[mutationIndex][1] - this.m_Range[mutationIndex][0])/2)*RNG.gaussianDouble(0.05f); this.m_Genotype[mutationIndex] += ((this.m_Range[mutationIndex][1] - this.m_Range[mutationIndex][0])/2)*RNG.gaussianDouble(0.05f);
if (this.m_Genotype[mutationIndex] < this.m_Range[mutationIndex][0]) this.m_Genotype[mutationIndex] = this.m_Range[mutationIndex][0]; if (this.m_Genotype[mutationIndex] < this.m_Range[mutationIndex][0]) {
if (this.m_Genotype[mutationIndex] > this.m_Range[mutationIndex][1]) this.m_Genotype[mutationIndex] = this.m_Range[mutationIndex][1]; this.m_Genotype[mutationIndex] = this.m_Range[mutationIndex][0];
}
if (this.m_Genotype[mutationIndex] > this.m_Range[mutationIndex][1]) {
this.m_Genotype[mutationIndex] = this.m_Range[mutationIndex][1];
}
} }
/** This method will return the range for all double attributes. /** This method will return the range for all double attributes.
@ -288,7 +312,9 @@ public class ESIndividualIntegerData extends AbstractEAIndividual implements Int
@Override @Override
public void defaultInit(InterfaceOptimizationProblem prob) { public void defaultInit(InterfaceOptimizationProblem prob) {
int[][] range = m_Range; int[][] range = m_Range;
if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) range = (int[][])((InterfaceHasInitRange)prob).getInitRange(); if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) {
range = (int[][])((InterfaceHasInitRange)prob).getInitRange();
}
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
this.m_Genotype[i] = RNG.randomInt(range[i][0], range[i][1]); this.m_Genotype[i] = RNG.randomInt(range[i][0], range[i][1]);
} }

View File

@ -92,13 +92,25 @@ public class ESIndividualPermutationData extends AbstractEAIndividual implements
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof ESIndividualPermutationData) { if (individual instanceof ESIndividualPermutationData) {
ESIndividualPermutationData indy = (ESIndividualPermutationData) individual; ESIndividualPermutationData indy = (ESIndividualPermutationData) individual;
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
if ((this.m_Range == null) || (indy.m_Range == null)) return false; return false;
if (this.m_Range.length != indy.m_Range.length) return false; }
if ((this.m_Range == null) || (indy.m_Range == null)) {
return false;
}
if (this.m_Range.length != indy.m_Range.length) {
return false;
}
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.m_Range.length; i++) {
if (this.m_Genotype[i] != indy.m_Genotype[i]) return false; if (this.m_Genotype[i] != indy.m_Genotype[i]) {
if (this.m_Range[i][0] != indy.m_Range[i][0]) return false; return false;
if (this.m_Range[i][1] != indy.m_Range[i][1]) return false; }
if (this.m_Range[i][0] != indy.m_Range[i][0]) {
return false;
}
if (this.m_Range[i][1] != indy.m_Range[i][1]) {
return false;
}
} }
return true; return true;
} else { } else {
@ -163,8 +175,12 @@ public class ESIndividualPermutationData extends AbstractEAIndividual implements
int smallest = Integer.MAX_VALUE; int smallest = Integer.MAX_VALUE;
this.m_Range[p] = new double[perm[p].length][2]; this.m_Range[p] = new double[perm[p].length][2];
for (int i = 0; i < perm[p].length; i++) { for (int i = 0; i < perm[p].length; i++) {
if (perm[p][i] > biggest) biggest = perm[p][i]; if (perm[p][i] > biggest) {
if (perm[p][i] < smallest) smallest = perm[p][i]; biggest = perm[p][i];
}
if (perm[p][i] < smallest) {
smallest = perm[p][i];
}
this.m_Range[p][i][0] = 0; this.m_Range[p][i][0] = 0;
this.m_Range[p][i][1] = 1; this.m_Range[p][i][1] = 1;
} }
@ -196,7 +212,9 @@ public class ESIndividualPermutationData extends AbstractEAIndividual implements
} }
for (int i = 0; i < this.m_Genotype[p].length; i++) { for (int i = 0; i < this.m_Genotype[p].length; i++) {
for (int j = 0; j < this.m_Genotype[p].length; j++) { for (int j = 0; j < this.m_Genotype[p].length; j++) {
if (this.m_Genotype[p][i] > this.m_Genotype[p][j]) this.m_Phenotype[p][i]++; if (this.m_Genotype[p][i] > this.m_Genotype[p][j]) {
this.m_Phenotype[p][i]++;
}
} }
} }
} }
@ -233,7 +251,9 @@ public class ESIndividualPermutationData extends AbstractEAIndividual implements
public void initByValue(Object obj, InterfaceOptimizationProblem opt) { public void initByValue(Object obj, InterfaceOptimizationProblem opt) {
if (obj instanceof int[][]) { if (obj instanceof int[][]) {
int[][] bs = (int[][]) obj; int[][] bs = (int[][]) obj;
if (bs.length != this.m_Genotype.length) System.out.println("Init value and requested length doesn't match!"); if (bs.length != this.m_Genotype.length) {
System.out.println("Init value and requested length doesn't match!");
}
this.SetPermutationGenotype(bs); this.SetPermutationGenotype(bs);
} else { } else {
this.defaultInit(opt); this.defaultInit(opt);
@ -318,8 +338,12 @@ public class ESIndividualPermutationData extends AbstractEAIndividual implements
this.m_Genotype = mapVectorToMatrix(b, this.sizePermutation()); this.m_Genotype = mapVectorToMatrix(b, this.sizePermutation());
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
for (int j = 0; j < this.m_Genotype[i].length; j++) { for (int j = 0; j < this.m_Genotype[i].length; j++) {
if (this.m_Genotype[i][j] < this.m_Range[i][j][0]) this.m_Genotype[i][j] = this.m_Range[i][j][0]; if (this.m_Genotype[i][j] < this.m_Range[i][j][0]) {
if (this.m_Genotype[i][j] > this.m_Range[i][j][1]) this.m_Genotype[i][j] = this.m_Range[i][j][1]; this.m_Genotype[i][j] = this.m_Range[i][j][0];
}
if (this.m_Genotype[i][j] > this.m_Range[i][j][1]) {
this.m_Genotype[i][j] = this.m_Range[i][j][1];
}
} }
} }
@ -338,7 +362,9 @@ public class ESIndividualPermutationData extends AbstractEAIndividual implements
@Override @Override
public void defaultInit(InterfaceOptimizationProblem prob) { public void defaultInit(InterfaceOptimizationProblem prob) {
double[][][] range = m_Range; double[][][] range = m_Range;
if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) range = (double[][][])((InterfaceHasInitRange)prob).getInitRange(); if ((prob != null) && (prob instanceof InterfaceHasInitRange) && (((InterfaceHasInitRange)prob).getInitRange()!=null)) {
range = (double[][][])((InterfaceHasInitRange)prob).getInitRange();
}
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
ESIndividualDoubleData.defaultInit(m_Genotype[i], range[i]); ESIndividualDoubleData.defaultInit(m_Genotype[i], range[i]);

View File

@ -60,8 +60,12 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof GAESIndividualBinaryDoubleData) { if (individual instanceof GAESIndividualBinaryDoubleData) {
GAESIndividualBinaryDoubleData indy = (GAESIndividualBinaryDoubleData)individual; GAESIndividualBinaryDoubleData indy = (GAESIndividualBinaryDoubleData)individual;
if (!((AbstractEAIndividual)this.m_Numbers).equalGenotypes((AbstractEAIndividual)indy.m_Numbers)) return false; if (!((AbstractEAIndividual)this.m_Numbers).equalGenotypes((AbstractEAIndividual)indy.m_Numbers)) {
if (!((AbstractEAIndividual)this.m_BitSet).equalGenotypes((AbstractEAIndividual)indy.m_BitSet)) return false; return false;
}
if (!((AbstractEAIndividual)this.m_BitSet).equalGenotypes((AbstractEAIndividual)indy.m_BitSet)) {
return false;
}
return true; return true;
} else { } else {
return false; return false;
@ -109,8 +113,12 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme
*/ */
@Override @Override
public void mutate() { public void mutate() {
if (RNG.flipCoin(this.m_MutationProbability))((AbstractEAIndividual)this.m_Numbers).mutate(); if (RNG.flipCoin(this.m_MutationProbability)) {
if (RNG.flipCoin(this.m_MutationProbability))((AbstractEAIndividual)this.m_BitSet).mutate(); ((AbstractEAIndividual)this.m_Numbers).mutate();
}
if (RNG.flipCoin(this.m_MutationProbability)) {
((AbstractEAIndividual)this.m_BitSet).mutate();
}
} }
@Override @Override

View File

@ -37,11 +37,13 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
} }
public GAIndividualBinaryData(GAIndividualBinaryData individual) { public GAIndividualBinaryData(GAIndividualBinaryData individual) {
if (individual.m_Phenotype != null) if (individual.m_Phenotype != null) {
this.m_Phenotype = (BitSet) individual.m_Phenotype.clone(); this.m_Phenotype = (BitSet) individual.m_Phenotype.clone();
}
this.m_GenotypeLength = individual.m_GenotypeLength; this.m_GenotypeLength = individual.m_GenotypeLength;
if (individual.m_Genotype != null) if (individual.m_Genotype != null) {
this.m_Genotype = (BitSet)individual.m_Genotype.clone(); this.m_Genotype = (BitSet)individual.m_Genotype.clone();
}
// cloning the members of AbstractEAIndividual // cloning the members of AbstractEAIndividual
this.m_Age = individual.m_Age; this.m_Age = individual.m_Age;
@ -73,9 +75,15 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof GAIndividualBinaryData) { if (individual instanceof GAIndividualBinaryData) {
GAIndividualBinaryData indy = (GAIndividualBinaryData) individual; GAIndividualBinaryData indy = (GAIndividualBinaryData) individual;
if (this.m_GenotypeLength != indy.m_GenotypeLength) return false; if (this.m_GenotypeLength != indy.m_GenotypeLength) {
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; return false;
if (!this.m_Genotype.equals(indy.m_Genotype)) return false; }
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
return false;
}
if (!this.m_Genotype.equals(indy.m_Genotype)) {
return false;
}
return true; return true;
} else { } else {
return false; return false;
@ -89,7 +97,9 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
public double defaultEvaulateAsMiniBits() { public double defaultEvaulateAsMiniBits() {
double result = 0; double result = 0;
for (int i = 0; i < this.m_GenotypeLength; i++) { for (int i = 0; i < this.m_GenotypeLength; i++) {
if (this.m_Genotype.get(i)) result++; if (this.m_Genotype.get(i)) {
result++;
}
} }
return result; return result;
} }
@ -146,9 +156,15 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
result += "})\n Value: "; result += "})\n Value: ";
result += "{"; result += "{";
for (int i = 0; i < this.m_GenotypeLength; i++) { for (int i = 0; i < this.m_GenotypeLength; i++) {
if (i%8==0) result+="|"; if (i%8==0) {
if (this.m_Genotype.get(i)) result += "1"; result+="|";
else result += "0"; }
if (this.m_Genotype.get(i)) {
result += "1";
}
else {
result += "0";
}
} }
result += "}"; result += "}";
result += "\n Mutation ("+this.m_MutationProbability+"):" + this.m_MutationOperator.getStringRepresentation(); result += "\n Mutation ("+this.m_MutationProbability+"):" + this.m_MutationOperator.getStringRepresentation();
@ -187,8 +203,12 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
@Override @Override
public void defaultInit(InterfaceOptimizationProblem prob) { public void defaultInit(InterfaceOptimizationProblem prob) {
for (int i = 0; i < this.m_GenotypeLength; i++) { for (int i = 0; i < this.m_GenotypeLength; i++) {
if (RNG.flipCoin(0.5)) this.m_Genotype.set(i); if (RNG.flipCoin(0.5)) {
else this.m_Genotype.clear(i); this.m_Genotype.set(i);
}
else {
this.m_Genotype.clear(i);
}
} }
} }
@ -198,8 +218,12 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
public void defaultMutate() { public void defaultMutate() {
int mutationIndex = RNG.randomInt(0, this.m_GenotypeLength); int mutationIndex = RNG.randomInt(0, this.m_GenotypeLength);
//if (mutationIndex > 28) System.out.println("Mutate: " + this.getSolutionRepresentationFor()); //if (mutationIndex > 28) System.out.println("Mutate: " + this.getSolutionRepresentationFor());
if (this.m_Genotype.get(mutationIndex)) this.m_Genotype.clear(mutationIndex); if (this.m_Genotype.get(mutationIndex)) {
else this.m_Genotype.set(mutationIndex); this.m_Genotype.clear(mutationIndex);
}
else {
this.m_Genotype.set(mutationIndex);
}
//if (mutationIndex > 28) System.out.println(this.getSolutionRepresentationFor()); //if (mutationIndex > 28) System.out.println(this.getSolutionRepresentationFor());
} }

View File

@ -86,12 +86,22 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte
if (individual instanceof GAIndividualDoubleData) { if (individual instanceof GAIndividualDoubleData) {
GAIndividualDoubleData indy = (GAIndividualDoubleData) individual; GAIndividualDoubleData indy = (GAIndividualDoubleData) individual;
//@todo Eigendlich k<EFBFBD>nnte ich noch das Koding vergleichen //@todo Eigendlich k<EFBFBD>nnte ich noch das Koding vergleichen
if (this.m_GenotypeLength != indy.m_GenotypeLength) return false; if (this.m_GenotypeLength != indy.m_GenotypeLength) {
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; return false;
if (!this.m_Genotype.equals(indy.m_Genotype)) return false; }
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
return false;
}
if (!this.m_Genotype.equals(indy.m_Genotype)) {
return false;
}
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.m_Range.length; i++) {
if (this.m_Range[i][0] != indy.m_Range[i][0]) return false; if (this.m_Range[i][0] != indy.m_Range[i][0]) {
if (this.m_Range[i][1] != indy.m_Range[i][1]) return false; return false;
}
if (this.m_Range[i][1] != indy.m_Range[i][1]) {
return false;
}
} }
return true; return true;
} else { } else {
@ -227,7 +237,9 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte
public void initByValue(Object obj, InterfaceOptimizationProblem opt) { public void initByValue(Object obj, InterfaceOptimizationProblem opt) {
if (obj instanceof double[]) { if (obj instanceof double[]) {
double[] bs = (double[]) obj; double[] bs = (double[]) obj;
if (bs.length != this.m_Range.length) System.out.println("Init value and requested length doesn't match!"); if (bs.length != this.m_Range.length) {
System.out.println("Init value and requested length doesn't match!");
}
this.SetDoubleGenotype(bs); this.SetDoubleGenotype(bs);
} else { } else {
this.defaultInit(opt); this.defaultInit(opt);
@ -262,8 +274,12 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte
result += "]\n"; result += "]\n";
result += "{"; result += "{";
for (int i = 0; i < this.m_GenotypeLength; i++) { for (int i = 0; i < this.m_GenotypeLength; i++) {
if (this.m_Genotype.get(i)) result += "1"; if (this.m_Genotype.get(i)) {
else result += "0"; result += "1";
}
else {
result += "0";
}
} }
result += "}"; result += "}";
return result; return result;
@ -303,8 +319,12 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte
@Override @Override
public void defaultInit(InterfaceOptimizationProblem prob) { public void defaultInit(InterfaceOptimizationProblem prob) {
for (int i = 0; i < this.m_GenotypeLength; i++) { for (int i = 0; i < this.m_GenotypeLength; i++) {
if (RNG.flipCoin(0.5)) this.m_Genotype.set(i); if (RNG.flipCoin(0.5)) {
else this.m_Genotype.clear(i); this.m_Genotype.set(i);
}
else {
this.m_Genotype.clear(i);
}
} }
} }
@ -313,8 +333,12 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte
@Override @Override
public void defaultMutate() { public void defaultMutate() {
int mutationIndex = RNG.randomInt(0, this.m_GenotypeLength); int mutationIndex = RNG.randomInt(0, this.m_GenotypeLength);
if (this.m_Genotype.get(mutationIndex)) this.m_Genotype.clear(mutationIndex); if (this.m_Genotype.get(mutationIndex)) {
else this.m_Genotype.set(mutationIndex); this.m_Genotype.clear(mutationIndex);
}
else {
this.m_Genotype.set(mutationIndex);
}
} }
/********************************************************************************************************************** /**********************************************************************************************************************
* These are for GUI * These are for GUI

View File

@ -86,12 +86,22 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int
if (individual instanceof GAIndividualIntegerData) { if (individual instanceof GAIndividualIntegerData) {
GAIndividualIntegerData indy = (GAIndividualIntegerData) individual; GAIndividualIntegerData indy = (GAIndividualIntegerData) individual;
//@todo Eigendlich k<EFBFBD>nnte ich noch das Koding vergleichen //@todo Eigendlich k<EFBFBD>nnte ich noch das Koding vergleichen
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
if (!this.m_Genotype.equals(indy.m_Genotype)) return false; return false;
if (this.m_Range.length != indy.m_Range.length) return false; }
if (!this.m_Genotype.equals(indy.m_Genotype)) {
return false;
}
if (this.m_Range.length != indy.m_Range.length) {
return false;
}
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.m_Range.length; i++) {
if (this.m_Range[i][0] != indy.m_Range[i][0]) return false; if (this.m_Range[i][0] != indy.m_Range[i][0]) {
if (this.m_Range[i][1] != indy.m_Range[i][1]) return false; return false;
}
if (this.m_Range[i][1] != indy.m_Range[i][1]) {
return false;
}
} }
return true; return true;
} else { } else {
@ -253,7 +263,9 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int
public void initByValue(Object obj, InterfaceOptimizationProblem opt) { public void initByValue(Object obj, InterfaceOptimizationProblem opt) {
if (obj instanceof int[]) { if (obj instanceof int[]) {
int[] bs = (int[]) obj; int[] bs = (int[]) obj;
if (bs.length != this.m_Range.length) System.out.println("Init value and requested length doesn't match!"); if (bs.length != this.m_Range.length) {
System.out.println("Init value and requested length doesn't match!");
}
this.SetIntGenotype(bs); this.SetIntGenotype(bs);
} else { } else {
this.defaultInit(opt); this.defaultInit(opt);
@ -302,8 +314,12 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int
overallLength += this.m_CodingLenghts[i]; overallLength += this.m_CodingLenghts[i];
} }
for (int i = 0; i < overallLength; i++) { for (int i = 0; i < overallLength; i++) {
if (this.m_Genotype.get(i)) result += "1"; if (this.m_Genotype.get(i)) {
else result += "0"; result += "1";
}
else {
result += "0";
}
} }
result += "}"; result += "}";
return result; return result;
@ -351,8 +367,12 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int
overallLength += this.m_CodingLenghts[i]; overallLength += this.m_CodingLenghts[i];
} }
for (int i = 0; i < overallLength; i++) { for (int i = 0; i < overallLength; i++) {
if (RNG.flipCoin(0.5)) this.m_Genotype.set(i); if (RNG.flipCoin(0.5)) {
else this.m_Genotype.clear(i); this.m_Genotype.set(i);
}
else {
this.m_Genotype.clear(i);
}
} }
} }
@ -365,8 +385,12 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int
overallLength += this.m_CodingLenghts[i]; overallLength += this.m_CodingLenghts[i];
} }
int mutationIndex = RNG.randomInt(0, overallLength); int mutationIndex = RNG.randomInt(0, overallLength);
if (this.m_Genotype.get(mutationIndex)) this.m_Genotype.clear(mutationIndex); if (this.m_Genotype.get(mutationIndex)) {
else this.m_Genotype.set(mutationIndex); this.m_Genotype.clear(mutationIndex);
}
else {
this.m_Genotype.set(mutationIndex);
}
} }
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -60,8 +60,12 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof GAPIndividualProgramData) { if (individual instanceof GAPIndividualProgramData) {
GAPIndividualProgramData indy = (GAPIndividualProgramData)individual; GAPIndividualProgramData indy = (GAPIndividualProgramData)individual;
if (!((AbstractEAIndividual)this.m_Numbers).equalGenotypes((AbstractEAIndividual)indy.m_Numbers)) return false; if (!((AbstractEAIndividual)this.m_Numbers).equalGenotypes((AbstractEAIndividual)indy.m_Numbers)) {
if (!((AbstractEAIndividual)this.m_Program).equalGenotypes((AbstractEAIndividual)indy.m_Program)) return false; return false;
}
if (!((AbstractEAIndividual)this.m_Program).equalGenotypes((AbstractEAIndividual)indy.m_Program)) {
return false;
}
return true; return true;
} else { } else {
return false; return false;
@ -109,8 +113,12 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In
*/ */
@Override @Override
public void mutate() { public void mutate() {
if (RNG.flipCoin(this.m_MutationProbability))((AbstractEAIndividual)this.m_Numbers).mutate(); if (RNG.flipCoin(this.m_MutationProbability)) {
if (RNG.flipCoin(this.m_MutationProbability))((AbstractEAIndividual)this.m_Program).mutate(); ((AbstractEAIndividual)this.m_Numbers).mutate();
}
if (RNG.flipCoin(this.m_MutationProbability)) {
((AbstractEAIndividual)this.m_Program).mutate();
}
} }
@Override @Override

View File

@ -58,8 +58,9 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
this.m_MaxNumberOfNodes = individual.m_MaxNumberOfNodes; this.m_MaxNumberOfNodes = individual.m_MaxNumberOfNodes;
this.m_NumberOfBitPerInt= individual.m_NumberOfBitPerInt; this.m_NumberOfBitPerInt= individual.m_NumberOfBitPerInt;
this.m_CurrentIndex = individual.m_CurrentIndex; this.m_CurrentIndex = individual.m_CurrentIndex;
if (individual.m_Genotype != null) if (individual.m_Genotype != null) {
this.m_Genotype = (BitSet)individual.m_Genotype.clone(); this.m_Genotype = (BitSet)individual.m_Genotype.clone();
}
if (individual.m_Area != null) { if (individual.m_Area != null) {
this.m_Area = new GPArea[individual.m_Area.length]; this.m_Area = new GPArea[individual.m_Area.length];
for (int i = 0; i < this.m_Area.length; i++) { for (int i = 0; i < this.m_Area.length; i++) {
@ -120,11 +121,21 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof GEIndividualProgramData) { if (individual instanceof GEIndividualProgramData) {
GEIndividualProgramData indy = (GEIndividualProgramData) individual; GEIndividualProgramData indy = (GEIndividualProgramData) individual;
if (this.m_GenotypeLengthPerProgram != indy.m_GenotypeLengthPerProgram) return false; if (this.m_GenotypeLengthPerProgram != indy.m_GenotypeLengthPerProgram) {
if (this.m_MaxNumberOfNodes != indy.m_MaxNumberOfNodes) return false; return false;
if (this.m_NumberOfBitPerInt != indy.m_NumberOfBitPerInt) return false; }
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if (this.m_MaxNumberOfNodes != indy.m_MaxNumberOfNodes) {
if (!this.m_Genotype.equals(indy.m_Genotype)) return false; return false;
}
if (this.m_NumberOfBitPerInt != indy.m_NumberOfBitPerInt) {
return false;
}
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
return false;
}
if (!this.m_Genotype.equals(indy.m_Genotype)) {
return false;
}
return true; return true;
} else { } else {
return false; return false;
@ -148,7 +159,9 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
ArrayList area = this.m_Area[t].getReducedList(); ArrayList area = this.m_Area[t].getReducedList();
for (int i = 0; i < area.size(); i++) { for (int i = 0; i < area.size(); i++) {
arity = ((AbstractGPNode) area.get(i)).getArity(); arity = ((AbstractGPNode) area.get(i)).getArity();
if (arity > maxArity) maxArity = arity; if (arity > maxArity) {
maxArity = arity;
}
} }
// Now i get a sorted list // Now i get a sorted list
@ -182,7 +195,9 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
} }
} }
tmpExpr[i] = tmpRule; tmpExpr[i] = tmpRule;
if (tmpRule != null) numberOfRules++; if (tmpRule != null) {
numberOfRules++;
}
} }
// Now get rid of the null rules // Now get rid of the null rules
int[][] trueExpr = new int[numberOfRules][]; int[][] trueExpr = new int[numberOfRules][];
@ -218,11 +233,17 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
// first the Non-Terminals // first the Non-Terminals
result += "N \t := \t{"; result += "N \t := \t{";
for (int i = 0; i < this.m_Rules[t].length; i++) { for (int i = 0; i < this.m_Rules[t].length; i++) {
if (i == 0) result += "expr, "; if (i == 0) {
result += "expr, ";
}
else { else {
if (i == 1) result += "var, "; if (i == 1) {
result += "var, ";
}
else { else {
if (((AbstractGPNode[])this.m_Rules[t][i]).length > 0) result += "op"+(i-1)+", "; if (((AbstractGPNode[])this.m_Rules[t][i]).length > 0) {
result += "op"+(i-1)+", ";
}
} }
} }
} }
@ -247,7 +268,9 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
int[][] rulz = (int[][])this.m_Rules[t][i]; int[][] rulz = (int[][])this.m_Rules[t][i];
for (int j = 0; j < rulz.length; j++) { for (int j = 0; j < rulz.length; j++) {
result += this.getRuleString(rulz[j]) + "\n"; result += this.getRuleString(rulz[j]) + "\n";
if ((j+1) < rulz.length) result += "\t \t \t \t \t \t"; if ((j+1) < rulz.length) {
result += "\t \t \t \t \t \t";
}
} }
} else { } else {
// now the rules for the terminals // now the rules for the terminals
@ -285,9 +308,15 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
String result = ""; String result = "";
result += "{"; result += "{";
for (int i = 0; i < this.m_GenotypeLengthPerProgram*this.m_Area.length; i++) { for (int i = 0; i < this.m_GenotypeLengthPerProgram*this.m_Area.length; i++) {
if (i % this.m_NumberOfBitPerInt == 0) result += " "; if (i % this.m_NumberOfBitPerInt == 0) {
if (this.m_Genotype.get(i)) result += "1"; result += " ";
else result += "0"; }
if (this.m_Genotype.get(i)) {
result += "1";
}
else {
result += "0";
}
} }
result += "}"; result += "}";
return result; return result;
@ -300,9 +329,15 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
private String getRuleString(int[] rule) { private String getRuleString(int[] rule) {
String result =""; String result ="";
for (int k = 0; k < rule.length; k++) { for (int k = 0; k < rule.length; k++) {
if (rule[k] == 0) result += "<expr> "; if (rule[k] == 0) {
if (rule[k] == 1) result += "<var> "; result += "<expr> ";
if (rule[k] > 1) result += "<op"+(rule[k]-1)+"> "; }
if (rule[k] == 1) {
result += "<var> ";
}
if (rule[k] > 1) {
result += "<op"+(rule[k]-1)+"> ";
}
} }
return result; return result;
} }
@ -326,7 +361,9 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
this.m_Area[t] = oldArea[oldArea.length-1]; this.m_Area[t] = oldArea[oldArea.length-1];
} }
this.m_Rules = new Object[length][]; this.m_Rules = new Object[length][];
if (oldRulz == null) return; if (oldRulz == null) {
return;
}
for (int t = 0; ((t < this.m_Area.length) && (t < oldArea.length)); t++) { for (int t = 0; ((t < this.m_Area.length) && (t < oldArea.length)); t++) {
if (oldRulz[t] != null) { if (oldRulz[t] != null) {
this.m_Rules[t] = new Object[oldRulz[t].length]; this.m_Rules[t] = new Object[oldRulz[t].length];
@ -382,10 +419,13 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
private int decodeNextInt(int t) { private int decodeNextInt(int t) {
int result = 0; int result = 0;
for (int i = 0; i < this.m_NumberOfBitPerInt; i++) { for (int i = 0; i < this.m_NumberOfBitPerInt; i++) {
if (this.m_Genotype.get(this.m_CurrentIndex+(t*this.m_GenotypeLengthPerProgram))) if (this.m_Genotype.get(this.m_CurrentIndex+(t*this.m_GenotypeLengthPerProgram))) {
result += Math.pow(2, i); result += Math.pow(2, i);
}
this.m_CurrentIndex++; this.m_CurrentIndex++;
if (this.m_CurrentIndex >= (t+1)*this.m_GenotypeLengthPerProgram) this.m_CurrentIndex = t*this.m_GenotypeLengthPerProgram; if (this.m_CurrentIndex >= (t+1)*this.m_GenotypeLengthPerProgram) {
this.m_CurrentIndex = t*this.m_GenotypeLengthPerProgram;
}
} }
return result; return result;
} }
@ -445,7 +485,9 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
// lets decode the stuff! // lets decode the stuff!
if (this.m_Rules == null) { if (this.m_Rules == null) {
this.compileArea(); this.compileArea();
if (this.m_Rules == null) return null; if (this.m_Rules == null) {
return null;
}
} }
this.m_CurrentIndex = 0; this.m_CurrentIndex = 0;
this.m_CurrentNumberOfNodes = 0; this.m_CurrentNumberOfNodes = 0;
@ -491,7 +533,9 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
@Override @Override
public void SetProgramGenotype(InterfaceProgram[] program) { public void SetProgramGenotype(InterfaceProgram[] program) {
this.SetProgramPhenotype(program); this.SetProgramPhenotype(program);
if (program instanceof AbstractGPNode[]) System.err.println("Warning setProgram() for GEIndividualProgramData not implemented!"); if (program instanceof AbstractGPNode[]) {
System.err.println("Warning setProgram() for GEIndividualProgramData not implemented!");
}
} }
/** This method allows you to set the function area /** This method allows you to set the function area
@ -546,8 +590,12 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
result += "GEIndividual coding program:\n"; result += "GEIndividual coding program:\n";
result += "{"; result += "{";
for (int i = 0; i < this.m_GenotypeLengthPerProgram*this.m_Area.length; i++) { for (int i = 0; i < this.m_GenotypeLengthPerProgram*this.m_Area.length; i++) {
if (this.m_Genotype.get(i)) result += "1"; if (this.m_Genotype.get(i)) {
else result += "0"; result += "1";
}
else {
result += "0";
}
} }
result += "}\n"; result += "}\n";
InterfaceProgram[] data = this.getProgramData(); InterfaceProgram[] data = this.getProgramData();
@ -591,8 +639,12 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
@Override @Override
public void defaultInit(InterfaceOptimizationProblem prob) { public void defaultInit(InterfaceOptimizationProblem prob) {
for (int i = 0; i < this.m_GenotypeLengthPerProgram*this.m_Area.length; i++) { for (int i = 0; i < this.m_GenotypeLengthPerProgram*this.m_Area.length; i++) {
if (RNG.flipCoin(0.5)) this.m_Genotype.set(i); if (RNG.flipCoin(0.5)) {
else this.m_Genotype.clear(i); this.m_Genotype.set(i);
}
else {
this.m_Genotype.clear(i);
}
} }
} }
@ -602,8 +654,12 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
public void defaultMutate() { public void defaultMutate() {
int mutationIndex = RNG.randomInt(0, this.m_GenotypeLengthPerProgram*this.m_Area.length); int mutationIndex = RNG.randomInt(0, this.m_GenotypeLengthPerProgram*this.m_Area.length);
//if (mutationIndex > 28) System.out.println("Mutate: " + this.getSolutionRepresentationFor()); //if (mutationIndex > 28) System.out.println("Mutate: " + this.getSolutionRepresentationFor());
if (this.m_Genotype.get(mutationIndex)) this.m_Genotype.clear(mutationIndex); if (this.m_Genotype.get(mutationIndex)) {
else this.m_Genotype.set(mutationIndex); this.m_Genotype.clear(mutationIndex);
}
else {
this.m_Genotype.set(mutationIndex);
}
//if (mutationIndex > 28) System.out.println(this.getSolutionRepresentationFor()); //if (mutationIndex > 28) System.out.println(this.getSolutionRepresentationFor());
} }

View File

@ -85,12 +85,22 @@ public class GIIndividualIntegerData extends AbstractEAIndividual implements Int
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof GIIndividualIntegerData) { if (individual instanceof GIIndividualIntegerData) {
GIIndividualIntegerData indy = (GIIndividualIntegerData) individual; GIIndividualIntegerData indy = (GIIndividualIntegerData) individual;
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
if (this.m_Genotype.length != indy.m_Genotype.length) return false; return false;
}
if (this.m_Genotype.length != indy.m_Genotype.length) {
return false;
}
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.m_Range.length; i++) {
if (this.m_Genotype[i] != indy.m_Genotype[i]) return false; if (this.m_Genotype[i] != indy.m_Genotype[i]) {
if (this.m_Range[i][0] != indy.m_Range[i][0]) return false; return false;
if (this.m_Range[i][1] != indy.m_Range[i][1]) return false; }
if (this.m_Range[i][0] != indy.m_Range[i][0]) {
return false;
}
if (this.m_Range[i][1] != indy.m_Range[i][1]) {
return false;
}
} }
return true; return true;
} else { } else {
@ -212,7 +222,9 @@ public class GIIndividualIntegerData extends AbstractEAIndividual implements Int
public void initByValue(Object obj, InterfaceOptimizationProblem opt) { public void initByValue(Object obj, InterfaceOptimizationProblem opt) {
if (obj instanceof int[]) { if (obj instanceof int[]) {
int[] bs = (int[]) obj; int[] bs = (int[]) obj;
if (bs.length != this.m_Range.length) System.out.println("Init value and requested length doesn't match!"); if (bs.length != this.m_Range.length) {
System.out.println("Init value and requested length doesn't match!");
}
this.SetIntGenotype(bs); this.SetIntGenotype(bs);
} else { } else {
this.defaultInit(opt); this.defaultInit(opt);
@ -309,7 +321,9 @@ public class GIIndividualIntegerData extends AbstractEAIndividual implements Int
} }
} else if (rng instanceof int[][]){ } else if (rng instanceof int[][]){
range = (int[][])rng; range = (int[][])rng;
} else System.err.println("Error, invalid initial range provided by " + prob + ", expecting int[][] or double[][], disregarding initialization range"); } else {
System.err.println("Error, invalid initial range provided by " + prob + ", expecting int[][] or double[][], disregarding initialization range");
}
} }
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {

View File

@ -58,8 +58,12 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof GIOBGAIndividualIntegerPermutationData) { if (individual instanceof GIOBGAIndividualIntegerPermutationData) {
GIOBGAIndividualIntegerPermutationData indy = (GIOBGAIndividualIntegerPermutationData)individual; GIOBGAIndividualIntegerPermutationData indy = (GIOBGAIndividualIntegerPermutationData)individual;
if (!((AbstractEAIndividual)this.m_Integer).equalGenotypes((AbstractEAIndividual)indy.m_Integer)) return false; if (!((AbstractEAIndividual)this.m_Integer).equalGenotypes((AbstractEAIndividual)indy.m_Integer)) {
if (!((AbstractEAIndividual)this.m_Permutation).equalGenotypes((AbstractEAIndividual)indy.m_Permutation)) return false; return false;
}
if (!((AbstractEAIndividual)this.m_Permutation).equalGenotypes((AbstractEAIndividual)indy.m_Permutation)) {
return false;
}
return true; return true;
} else { } else {
return false; return false;
@ -107,8 +111,12 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual
*/ */
@Override @Override
public void mutate() { public void mutate() {
if (RNG.flipCoin(this.m_MutationProbability))((AbstractEAIndividual)this.m_Integer).mutate(); if (RNG.flipCoin(this.m_MutationProbability)) {
if (RNG.flipCoin(this.m_MutationProbability))((AbstractEAIndividual)this.m_Permutation).mutate(); ((AbstractEAIndividual)this.m_Integer).mutate();
}
if (RNG.flipCoin(this.m_MutationProbability)) {
((AbstractEAIndividual)this.m_Permutation).mutate();
}
} }
@Override @Override

View File

@ -41,7 +41,9 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
if (individual.m_Phenotype != null) { if (individual.m_Phenotype != null) {
this.m_Phenotype = new AbstractGPNode[individual.m_Phenotype.length]; this.m_Phenotype = new AbstractGPNode[individual.m_Phenotype.length];
for (int i = 0; i < individual.m_Phenotype.length; i++) { for (int i = 0; i < individual.m_Phenotype.length; i++) {
if (individual.m_Phenotype[i] != null) this.m_Phenotype[i] = (AbstractGPNode)individual.m_Phenotype[i].clone(); if (individual.m_Phenotype[i] != null) {
this.m_Phenotype[i] = (AbstractGPNode)individual.m_Phenotype[i].clone();
}
} }
} }
if (individual.m_Genotype != null) { if (individual.m_Genotype != null) {
@ -52,7 +54,9 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
this.m_Genotype[i] = (AbstractGPNode)individual.m_Genotype[i].clone(); this.m_Genotype[i] = (AbstractGPNode)individual.m_Genotype[i].clone();
this.m_Genotype[i].connect(null); this.m_Genotype[i].connect(null);
} }
if (individual.m_Area[i] != null) this.m_Area[i] = (GPArea)individual.m_Area[i].clone(); if (individual.m_Area[i] != null) {
this.m_Area[i] = (GPArea)individual.m_Area[i].clone();
}
} }
} }
this.m_InitFullGrowRatio = individual.m_InitFullGrowRatio; this.m_InitFullGrowRatio = individual.m_InitFullGrowRatio;
@ -91,14 +95,17 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
if (individual instanceof GPIndividualProgramData) { if (individual instanceof GPIndividualProgramData) {
GPIndividualProgramData indy = (GPIndividualProgramData) individual; GPIndividualProgramData indy = (GPIndividualProgramData) individual;
//@todo Eigendlich k<EFBFBD>nnte ich noch die Areas vergleichen //@todo Eigendlich k<EFBFBD>nnte ich noch die Areas vergleichen
if (this.m_maxAllowedDepth != indy.m_maxAllowedDepth) if (this.m_maxAllowedDepth != indy.m_maxAllowedDepth) {
return false; return false;
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) }
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
return false; return false;
}
else { else {
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if ((this.m_Genotype[i] == null) || (indy.m_Genotype[i] == null) || (!this.m_Genotype[i].equals(indy.m_Genotype[i]))) if ((this.m_Genotype[i] == null) || (indy.m_Genotype[i] == null) || (!this.m_Genotype[i].equals(indy.m_Genotype[i]))) {
return false; return false;
}
} }
} }
return true; return true;
@ -156,8 +163,12 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
*/ */
@Override @Override
public InterfaceProgram[] getProgramDataWithoutUpdate() { public InterfaceProgram[] getProgramDataWithoutUpdate() {
if (this.m_Phenotype==null) return getProgramData(); if (this.m_Phenotype==null) {
else return this.m_Phenotype; return getProgramData();
}
else {
return this.m_Phenotype;
}
} }
/** This method allows you to set the program phenotype. /** This method allows you to set the program phenotype.
@ -243,7 +254,9 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
} }
result += "})\n Value: "; result += "})\n Value: ";
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if (this.m_Genotype[i] != null) result += this.m_Genotype[i].getStringRepresentation(); if (this.m_Genotype[i] != null) {
result += this.m_Genotype[i].getStringRepresentation();
}
result += "\nUsing " + this.m_Genotype[i].getNumberOfNodes() + " nodes."; result += "\nUsing " + this.m_Genotype[i].getNumberOfNodes() + " nodes.";
} }
return result; return result;
@ -321,10 +334,12 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
this.m_Genotype[i] = (AbstractGPNode)(this.m_Area[i].getRandomNonTerminal()).clone(); this.m_Genotype[i] = (AbstractGPNode)(this.m_Area[i].getRandomNonTerminal()).clone();
this.m_Genotype[i].setDepth(0); this.m_Genotype[i].setDepth(0);
int targetDepth = RNG.randomInt(1, this.m_InitDepth); int targetDepth = RNG.randomInt(1, this.m_InitDepth);
if (RNG.flipCoin(this.m_InitFullGrowRatio)) if (RNG.flipCoin(this.m_InitFullGrowRatio)) {
this.m_Genotype[i].initFull(this.m_Area[i], targetDepth); this.m_Genotype[i].initFull(this.m_Area[i], targetDepth);
else }
else {
this.m_Genotype[i].initGrow(this.m_Area[i], targetDepth); this.m_Genotype[i].initGrow(this.m_Area[i], targetDepth);
}
} }
} }
} }
@ -365,8 +380,12 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
* @param b The new init Full Grow Ratio of the GP Tree. * @param b The new init Full Grow Ratio of the GP Tree.
*/ */
public void setInitFullGrowRatio(double b) { public void setInitFullGrowRatio(double b) {
if (b < 0) b = 0; if (b < 0) {
if (b > 1) b = 1; b = 0;
}
if (b > 1) {
b = 1;
}
this.m_InitFullGrowRatio = b; this.m_InitFullGrowRatio = b;
} }
public double getInitFullGrowRatio() { public double getInitFullGrowRatio() {

View File

@ -33,9 +33,15 @@ public class IndividualDistanceComparator implements Comparator<Object>, Seriali
double d1 = distMetric.distance((AbstractEAIndividual)o1, refIndy); double d1 = distMetric.distance((AbstractEAIndividual)o1, refIndy);
double d2 = distMetric.distance((AbstractEAIndividual)o2, refIndy); double d2 = distMetric.distance((AbstractEAIndividual)o2, refIndy);
if (d1==d2) return 0; if (d1==d2) {
if (closerMeansLess) return ((d1<d2) ? -1 : 1); return 0;
else return ((d1<d2) ? 1 : -1); }
if (closerMeansLess) {
return ((d1<d2) ? -1 : 1);
}
else {
return ((d1<d2) ? 1 : -1);
}
} }
} }

View File

@ -36,12 +36,18 @@ public class IndividualWeightedFitnessComparator implements Comparator<Object>,
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj instanceof IndividualWeightedFitnessComparator) { if (obj instanceof IndividualWeightedFitnessComparator) {
IndividualWeightedFitnessComparator o = (IndividualWeightedFitnessComparator)obj; IndividualWeightedFitnessComparator o = (IndividualWeightedFitnessComparator)obj;
if (fitWeights==null && (o.fitWeights==null)) return true; if (fitWeights==null && (o.fitWeights==null)) {
if (fitWeights==null || o.fitWeights==null) return false; return true;
}
if (fitWeights==null || o.fitWeights==null) {
return false;
}
// now both are non null: // now both are non null:
if (fitWeights.length==o.fitWeights.length) { if (fitWeights.length==o.fitWeights.length) {
for (int i=0; i<fitWeights.length; i++) { for (int i=0; i<fitWeights.length; i++) {
if (fitWeights[i]!=o.fitWeights[i]) return false; if (fitWeights[i]!=o.fitWeights[i]) {
return false;
}
} }
return true; return true;
} }
@ -55,7 +61,9 @@ public class IndividualWeightedFitnessComparator implements Comparator<Object>,
*/ */
@Override @Override
public int hashCode() { public int hashCode() {
if (fitWeights==null) return super.hashCode(); if (fitWeights==null) {
return super.hashCode();
}
int code=0; int code=0;
for (int i=0; i<fitWeights.length; i++) { for (int i=0; i<fitWeights.length; i++) {
code+=(int)(fitWeights[i]*10000)%(10000*(i+1)); code+=(int)(fitWeights[i]*10000)%(10000*(i+1));
@ -75,9 +83,15 @@ public class IndividualWeightedFitnessComparator implements Comparator<Object>,
double score1 = calcScore(f1); double score1 = calcScore(f1);
double score2 = calcScore(f2); double score2 = calcScore(f2);
if (score1 < score2) return -1; if (score1 < score2) {
else if (score1 > score2) return 1; return -1;
else return 0; }
else if (score1 > score2) {
return 1;
}
else {
return 0;
}
} }
/** /**
@ -86,10 +100,16 @@ public class IndividualWeightedFitnessComparator implements Comparator<Object>,
* @return * @return
*/ */
private double calcScore(double[] f) { private double calcScore(double[] f) {
if (f==null || fitWeights==null) throw new RuntimeException("Error, missing information in " + this.getClass()); if (f==null || fitWeights==null) {
throw new RuntimeException("Error, missing information in " + this.getClass());
}
if (f.length!=fitWeights.length) { if (f.length!=fitWeights.length) {
if (f.length<fitWeights.length) EVAERROR.errorMsgOnce("Warning, fitness vector has less dimensions than the weights... some weights are ignored, in " + this.getClass()); if (f.length<fitWeights.length) {
else EVAERROR.errorMsgOnce("Warning, fitness vector has more dimensions than the weights... some fitness values are ignored, in " + this.getClass()); EVAERROR.errorMsgOnce("Warning, fitness vector has less dimensions than the weights... some weights are ignored, in " + this.getClass());
}
else {
EVAERROR.errorMsgOnce("Warning, fitness vector has more dimensions than the weights... some fitness values are ignored, in " + this.getClass());
}
} }
double s = 0; double s = 0;
for (int i=0; i<Math.min(f.length, fitWeights.length); i++) { for (int i=0; i<Math.min(f.length, fitWeights.length); i++) {

View File

@ -72,13 +72,20 @@ public class OBGAIndividualPermutationData extends AbstractEAIndividual implemen
public boolean equalGenotypes(AbstractEAIndividual individual) { public boolean equalGenotypes(AbstractEAIndividual individual) {
if (individual instanceof OBGAIndividualPermutationData) { if (individual instanceof OBGAIndividualPermutationData) {
OBGAIndividualPermutationData indy = (OBGAIndividualPermutationData) individual; OBGAIndividualPermutationData indy = (OBGAIndividualPermutationData) individual;
if ((this.m_Genotype == null) || (indy.m_Genotype == null)) return false; if ((this.m_Genotype == null) || (indy.m_Genotype == null)) {
if (m_Genotype.length != indy.m_Genotype.length) return false; return false;
}
if (m_Genotype.length != indy.m_Genotype.length) {
return false;
}
for (int i = 0; i < this.m_Genotype.length; i++) { for (int i = 0; i < this.m_Genotype.length; i++) {
if (this.m_Genotype[i].length != indy.m_Genotype[i].length) if (this.m_Genotype[i].length != indy.m_Genotype[i].length) {
for (int j = 0; j < this.m_Genotype[i].length; j++) { for (int j = 0; j < this.m_Genotype[i].length; j++) {
if (this.m_Genotype[i][j] != indy.m_Genotype[i][j]) return false; if (this.m_Genotype[i][j] != indy.m_Genotype[i][j]) {
} return false;
}
}
}
} }
return true; return true;

View File

@ -42,8 +42,12 @@ public class GAGrayCodingDouble implements InterfaceGADoubleCoding, java.io.Seri
for (int j = 1; j <= i; j++) { for (int j = 1; j <= i; j++) {
tmpB ^= refBitSet.get(locus[0] + j); tmpB ^= refBitSet.get(locus[0] + j);
} }
if (tmpB) tmpBitSet.set(i); if (tmpB) {
else tmpBitSet.clear(i); tmpBitSet.set(i);
}
else {
tmpBitSet.clear(i);
}
} }
return this.m_HelpingHand.decodeValue(tmpBitSet, range, tmpLocus, correction); return this.m_HelpingHand.decodeValue(tmpBitSet, range, tmpLocus, correction);
} }
@ -66,11 +70,19 @@ public class GAGrayCodingDouble implements InterfaceGADoubleCoding, java.io.Seri
tmpLocus[1] = locus[1]; tmpLocus[1] = locus[1];
tmpBitSet = new BitSet(tmpLocus.length); tmpBitSet = new BitSet(tmpLocus.length);
this.m_HelpingHand.codeValue(value, range, tmpBitSet, tmpLocus); this.m_HelpingHand.codeValue(value, range, tmpBitSet, tmpLocus);
if (tmpBitSet.get(0)) refBitSet.set(locus[0]); if (tmpBitSet.get(0)) {
else refBitSet.clear(locus[0]); refBitSet.set(locus[0]);
}
else {
refBitSet.clear(locus[0]);
}
for (int i = 1; i < locus[1]; i++) { for (int i = 1; i < locus[1]; i++) {
if (tmpBitSet.get(i)^tmpBitSet.get(i-1)) refBitSet.set(locus[0] + i); if (tmpBitSet.get(i)^tmpBitSet.get(i-1)) {
else refBitSet.clear(locus[0] + i); refBitSet.set(locus[0] + i);
}
else {
refBitSet.clear(locus[0] + i);
}
} }
} }
@ -115,8 +127,12 @@ public class GAGrayCodingDouble implements InterfaceGADoubleCoding, java.io.Seri
String output = "{"; String output = "{";
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
if (b.get(i)) output += "1"; if (b.get(i)) {
else output += "0"; output += "1";
}
else {
output += "0";
}
} }
output += "}\n"; output += "}\n";
return output; return output;

View File

@ -43,8 +43,12 @@ public class GAGrayCodingInteger implements InterfaceGAIntegerCoding,java.io.Ser
for (int j = 1; j <= i; j++) { for (int j = 1; j <= i; j++) {
tmpB ^= refBitSet.get(locus[0] + j); tmpB ^= refBitSet.get(locus[0] + j);
} }
if (tmpB) tmpBitSet.set(i); if (tmpB) {
else tmpBitSet.clear(i); tmpBitSet.set(i);
}
else {
tmpBitSet.clear(i);
}
} }
return this.m_HelpingHand.decodeValue(tmpBitSet, range, tmpLocus, correction); return this.m_HelpingHand.decodeValue(tmpBitSet, range, tmpLocus, correction);
} }
@ -74,11 +78,19 @@ public class GAGrayCodingInteger implements InterfaceGAIntegerCoding,java.io.Ser
// if (tmpBitSet.get(i)^tmpBitSet.get(i-1)) refBitSet.set(locus[1] + i); // if (tmpBitSet.get(i)^tmpBitSet.get(i-1)) refBitSet.set(locus[1] + i);
// else refBitSet.clear(locus[1] + i); // else refBitSet.clear(locus[1] + i);
// } // }
if (tmpBitSet.get(0)) refBitSet.set(locus[0]); if (tmpBitSet.get(0)) {
else refBitSet.clear(locus[0]); refBitSet.set(locus[0]);
}
else {
refBitSet.clear(locus[0]);
}
for (int i = 1; i < locus[1]; i++) { for (int i = 1; i < locus[1]; i++) {
if (tmpBitSet.get(i)^tmpBitSet.get(i-1)) refBitSet.set(locus[0] + i); if (tmpBitSet.get(i)^tmpBitSet.get(i-1)) {
else refBitSet.clear(locus[0] + i); refBitSet.set(locus[0] + i);
}
else {
refBitSet.clear(locus[0] + i);
}
} }
} }
@ -106,8 +118,12 @@ public class GAGrayCodingInteger implements InterfaceGAIntegerCoding,java.io.Ser
String output = "{"; String output = "{";
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
if (b.get(i)) output += "1"; if (b.get(i)) {
else output += "0"; output += "1";
}
else {
output += "0";
}
} }
output += "}\n"; output += "}\n";
return output; return output;

View File

@ -83,7 +83,9 @@ public class GAStandardCodingDouble implements InterfaceGADoubleCoding, java.io.
for (int i=1+locus[0]; i<locus[0]+locus[1]; i++) { for (int i=1+locus[0]; i<locus[0]+locus[1]; i++) {
val *= 2.; val *= 2.;
if (refBitSet.get(i)) val+=1.; if (refBitSet.get(i)) {
val+=1.;
}
} }
return range[0]+((range[1]-range[0])*val)/lastMaxVal; return range[0]+((range[1]-range[0])*val)/lastMaxVal;
@ -134,8 +136,12 @@ public class GAStandardCodingDouble implements InterfaceGADoubleCoding, java.io.
//System.out.print("FLOAT Value coded : " + value + " " + this.printBitSet(tmpBitSet, m_length)); //System.out.print("FLOAT Value coded : " + value + " " + this.printBitSet(tmpBitSet, m_length));
//System.out.println(tmpV + "/" + m_max + "*(" + u_max + "-" + u_min + ")+" + u_min +"\n"); //System.out.println(tmpV + "/" + m_max + "*(" + u_max + "-" + u_min + ")+" + u_min +"\n");
for (int i = 0; i < m_length; i++) { for (int i = 0; i < m_length; i++) {
if (tmpBitSet.get(i)) refBitSet.set(m_start + m_length - 1 - i); if (tmpBitSet.get(i)) {
else refBitSet.clear(m_start + m_length - 1 - i); refBitSet.set(m_start + m_length - 1 - i);
}
else {
refBitSet.clear(m_start + m_length - 1 - i);
}
} }
} }
@ -157,8 +163,12 @@ public class GAStandardCodingDouble implements InterfaceGADoubleCoding, java.io.
range[0] = -110; range[0] = -110;
range[1] = 1000; range[1] = 1000;
for (int i = 0; i < test.length(); i++) { for (int i = 0; i < test.length(); i++) {
if (test.charAt(i) == '1') tmpBitSet.set(i); if (test.charAt(i) == '1') {
else tmpBitSet.clear(i); tmpBitSet.set(i);
}
else {
tmpBitSet.clear(i);
}
} }
// value = t.decodeValue(tmpBitSet, range, locus, false); // value = t.decodeValue(tmpBitSet, range, locus, false);
// System.out.println("Value: " + value); // System.out.println("Value: " + value);
@ -195,8 +205,12 @@ public class GAStandardCodingDouble implements InterfaceGADoubleCoding, java.io.
String output = "{"; String output = "{";
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
if (b.get(i)) output += "1"; if (b.get(i)) {
else output += "0"; output += "1";
}
else {
output += "0";
}
} }
output += "}\n"; output += "}\n";
return output; return output;

View File

@ -91,8 +91,12 @@ public class GAStandardCodingInteger implements InterfaceGAIntegerCoding, java.i
m_min = 0; m_min = 0;
tmpV = value - u_min; tmpV = value - u_min;
long tmpOut = tmpV;// damit ist tmpV im range m_Min m_Max long tmpOut = tmpV;// damit ist tmpV im range m_Min m_Max
if (tmpV > m_max) tmpV = m_max; if (tmpV > m_max) {
if (tmpV < m_min) tmpV = m_min; tmpV = m_max;
}
if (tmpV < m_min) {
tmpV = m_min;
}
tmpBitSet = new BitSet(m_length); tmpBitSet = new BitSet(m_length);
while (tmpV >= 1) { while (tmpV >= 1) {
//System.out.println(tmpV); //System.out.println(tmpV);
@ -111,12 +115,20 @@ public class GAStandardCodingInteger implements InterfaceGAIntegerCoding, java.i
//System.out.println("tmpV " + tmpOut + " Range("+m_min+";"+m_max+") "+m_length+" "+this.printBitSet(tmpBitSet,m_length)); //System.out.println("tmpV " + tmpOut + " Range("+m_min+";"+m_max+") "+m_length+" "+this.printBitSet(tmpBitSet,m_length));
// Das sieht bis hierher richtig toll aus, nur jetzt wirds scheisse m_Length war im Arsch // Das sieht bis hierher richtig toll aus, nur jetzt wirds scheisse m_Length war im Arsch
for (int i = 0; i < m_length; i++) { for (int i = 0; i < m_length; i++) {
if (tmpBitSet.get(i)) refBitSet.set(m_start + m_length - 1 - i); if (tmpBitSet.get(i)) {
else refBitSet.clear(m_start + m_length - 1 - i); refBitSet.set(m_start + m_length - 1 - i);
}
else {
refBitSet.clear(m_start + m_length - 1 - i);
}
} }
for (int i = 0; i < m_length; i++) { for (int i = 0; i < m_length; i++) {
if (refBitSet.get(m_start + m_length - 1 - i)) tmpBitSet.set(m_length - 1 - i); if (refBitSet.get(m_start + m_length - 1 - i)) {
else tmpBitSet.clear(m_start + m_length - 1 - i); tmpBitSet.set(m_length - 1 - i);
}
else {
tmpBitSet.clear(m_start + m_length - 1 - i);
}
} }
//System.out.println("INT Value coded : " + value + " " + this.printBitSet(tmpBitSet, m_length)); //System.out.println("INT Value coded : " + value + " " + this.printBitSet(tmpBitSet, m_length));
} }
@ -150,8 +162,12 @@ public class GAStandardCodingInteger implements InterfaceGAIntegerCoding, java.i
String output = "{"; String output = "{";
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
if (b.get(i)) output += "1"; if (b.get(i)) {
else output += "0"; output += "1";
}
else {
output += "0";
}
} }
output += "}\n"; output += "}\n";
return output; return output;

View File

@ -80,7 +80,9 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
sbuf.append("("); sbuf.append("(");
for (int i = 0; i < node.m_Nodes.length; i++) { for (int i = 0; i < node.m_Nodes.length; i++) {
sbuf.append(node.m_Nodes[i].getStringRepresentation()); sbuf.append(node.m_Nodes[i].getStringRepresentation());
if (i<node.m_Nodes.length-1) sbuf.append(", "); if (i<node.m_Nodes.length-1) {
sbuf.append(", ");
}
} }
sbuf.append(")"); sbuf.append(")");
} }
@ -119,10 +121,14 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
System.err.println("String has unknown prefix: " + str); System.err.println("String has unknown prefix: " + str);
} }
} }
else if (matchSet.size()>1) System.err.println("String has ambiguous prefix: " + str + " -- " + BeanInspector.toString(matchSet)); else if (matchSet.size()>1) {
System.err.println("String has ambiguous prefix: " + str + " -- " + BeanInspector.toString(matchSet));
}
else { // exactly one match: else { // exactly one match:
AbstractGPNode currentNode = (AbstractGPNode)matchSet.get(0).clone(); AbstractGPNode currentNode = (AbstractGPNode)matchSet.get(0).clone();
if (TRACE) System.out.println("Found match: " + currentNode.getOpIdentifier() + "/" + currentNode.getArity()); if (TRACE) {
System.out.println("Found match: " + currentNode.getOpIdentifier() + "/" + currentNode.getArity());
}
int cutFront=currentNode.getOpIdentifier().length(); int cutFront=currentNode.getOpIdentifier().length();
String restStr; String restStr;
if (currentNode.getArity()==0) { if (currentNode.getArity()==0) {
@ -151,7 +157,9 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
e.printStackTrace(); e.printStackTrace();
} }
} }
if (TRACE) System.out.println("read " + currentNode.getName() + ", rest: " + restStr); if (TRACE) {
System.out.println("read " + currentNode.getName() + ", rest: " + restStr);
}
return new Pair<AbstractGPNode,String>(currentNode, restStr); return new Pair<AbstractGPNode,String>(currentNode, restStr);
} }
} }
@ -182,18 +190,28 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
private static Pair<Double, String> readDouble(String str, boolean expect) { private static Pair<Double, String> readDouble(String str, boolean expect) {
String firstArg; String firstArg;
int argLen = str.indexOf(','); int argLen = str.indexOf(',');
if (argLen<0) argLen = str.indexOf(')'); if (argLen<0) {
argLen = str.indexOf(')');
}
else { else {
int firstBrace = str.indexOf(')'); int firstBrace = str.indexOf(')');
if ((firstBrace >= 0) && (firstBrace<argLen)) argLen = firstBrace; if ((firstBrace >= 0) && (firstBrace<argLen)) {
argLen = firstBrace;
}
} }
if (argLen>0) firstArg=str.substring(0,argLen); if (argLen>0) {
else firstArg=str.trim(); firstArg=str.substring(0,argLen);
}
else {
firstArg=str.trim();
}
try { try {
Double d=Double.parseDouble(firstArg); Double d=Double.parseDouble(firstArg);
return new Pair<Double,String>(d, str.substring(firstArg.length())); return new Pair<Double,String>(d, str.substring(firstArg.length()));
} catch(NumberFormatException e) { } catch(NumberFormatException e) {
if (expect) System.err.println("String has unknown prefix: " + str); if (expect) {
System.err.println("String has unknown prefix: " + str);
}
return null; return null;
} }
} }
@ -203,8 +221,12 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
* @return string * @return string
*/ */
public static String makeStringRepresentation(AbstractGPNode[] nodes, String op) { public static String makeStringRepresentation(AbstractGPNode[] nodes, String op) {
if (nodes.length==0) return op; if (nodes.length==0) {
else if (nodes.length==1) return op+"(" + nodes[0].getStringRepresentation()+")"; return op;
}
else if (nodes.length==1) {
return op+"(" + nodes[0].getStringRepresentation()+")";
}
else { else {
String result = "( "+nodes[0].getStringRepresentation(); String result = "( "+nodes[0].getStringRepresentation();
for (int i = 1; i < nodes.length; i++) { for (int i = 1; i < nodes.length; i++) {
@ -229,9 +251,15 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
Vector<AbstractGPNode> matching = new Vector<AbstractGPNode>(); Vector<AbstractGPNode> matching = new Vector<AbstractGPNode>();
for (int i=0; i<nodeTypes.size(); i++) { for (int i=0; i<nodeTypes.size(); i++) {
String reqPrefix=nodeTypes.get(i).getOpIdentifier(); String reqPrefix=nodeTypes.get(i).getOpIdentifier();
if (nodeTypes.get(i).getArity()>0) reqPrefix+="("; if (nodeTypes.get(i).getArity()>0) {
if (str.startsWith(reqPrefix)) matching.add(nodeTypes.get(i)); reqPrefix+="(";
else if (ignoreCase && str.toLowerCase().startsWith(reqPrefix.toLowerCase())) matching.add(nodeTypes.get(i)); }
if (str.startsWith(reqPrefix)) {
matching.add(nodeTypes.get(i));
}
else if (ignoreCase && str.toLowerCase().startsWith(reqPrefix.toLowerCase())) {
matching.add(nodeTypes.get(i));
}
} }
if (matching.size()>1 && firstLongestOnly) { // allow only the longest match (or first longest) if (matching.size()>1 && firstLongestOnly) { // allow only the longest match (or first longest)
int maxLen = matching.get(0).getOpIdentifier().length(); int maxLen = matching.get(0).getOpIdentifier().length();
@ -244,7 +272,9 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
maxLen = longest.getOpIdentifier().length(); maxLen = longest.getOpIdentifier().length();
longestList.clear(); longestList.clear();
longestList.add(longest); longestList.add(longest);
} else if (matching.get(i).getOpIdentifier().length()==maxLen) longestList.add(matching.get(i)); } else if (matching.get(i).getOpIdentifier().length()==maxLen) {
longestList.add(matching.get(i));
}
} }
matching.clear(); matching.clear();
matching.addAll(longestList); matching.addAll(longestList);
@ -316,7 +346,9 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
Class<?> cls = AbstractGPNode.class; Class<?> cls = AbstractGPNode.class;
Class<?>[] nodes = ReflectPackage.getAssignableClassesInPackage(cls.getPackage().getName(), AbstractGPNode.class, true, false); Class<?>[] nodes = ReflectPackage.getAssignableClassesInPackage(cls.getPackage().getName(), AbstractGPNode.class, true, false);
for (Class<?> c : nodes) { for (Class<?> c : nodes) {
if (Modifier.isAbstract(c.getModifiers()) || c.isInterface()) continue; if (Modifier.isAbstract(c.getModifiers()) || c.isInterface()) {
continue;
}
AbstractGPNode node; AbstractGPNode node;
try { try {
node = (AbstractGPNode)c.newInstance(); node = (AbstractGPNode)c.newInstance();
@ -412,7 +444,9 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
if (m_Nodes.length>0) { if (m_Nodes.length>0) {
int k=RNG.randomInt(m_Nodes.length); int k=RNG.randomInt(m_Nodes.length);
return m_Nodes[k].getRandomLeaf(); return m_Nodes[k].getRandomLeaf();
} else return this; } else {
return this;
}
} }
/** This method allows you to set the parent of the node /** This method allows you to set the parent of the node
@ -433,8 +467,12 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
*/ */
public void connect(AbstractGPNode parent) { public void connect(AbstractGPNode parent) {
this.m_Parent = parent; this.m_Parent = parent;
if (parent != null) this.m_Depth = this.m_Parent.getDepth()+1; if (parent != null) {
else this.m_Depth = 0; this.m_Depth = this.m_Parent.getDepth()+1;
}
else {
this.m_Depth = 0;
}
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
this.m_Nodes[i].connect(this); this.m_Nodes[i].connect(this);
} }
@ -453,8 +491,12 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
public void initFull(GPArea area, int depth) { public void initFull(GPArea area, int depth) {
this.m_Nodes = new AbstractGPNode[this.getArity()]; this.m_Nodes = new AbstractGPNode[this.getArity()];
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
if (this.m_Depth+1 >= depth) this.m_Nodes[i] = (AbstractGPNode)area.getRandomNodeWithArity(0).clone(); if (this.m_Depth+1 >= depth) {
else this.m_Nodes[i] = (AbstractGPNode)area.getRandomNonTerminal().clone(); this.m_Nodes[i] = (AbstractGPNode)area.getRandomNodeWithArity(0).clone();
}
else {
this.m_Nodes[i] = (AbstractGPNode)area.getRandomNonTerminal().clone();
}
this.m_Nodes[i].setDepth(this.m_Depth+1); this.m_Nodes[i].setDepth(this.m_Depth+1);
this.m_Nodes[i].setParent(this); this.m_Nodes[i].setParent(this);
this.m_Nodes[i].initFull(area, depth); this.m_Nodes[i].initFull(area, depth);
@ -468,8 +510,12 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
public void initGrow(GPArea area, int depth) { public void initGrow(GPArea area, int depth) {
this.m_Nodes = new AbstractGPNode[this.getArity()]; this.m_Nodes = new AbstractGPNode[this.getArity()];
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
if (this.m_Depth+1 >= depth) this.m_Nodes[i] = (AbstractGPNode)area.getRandomNodeWithArity(0).clone(); if (this.m_Depth+1 >= depth) {
else this.m_Nodes[i] = (AbstractGPNode)area.getRandomNode().clone(); this.m_Nodes[i] = (AbstractGPNode)area.getRandomNodeWithArity(0).clone();
}
else {
this.m_Nodes[i] = (AbstractGPNode)area.getRandomNode().clone();
}
this.m_Nodes[i].setDepth(this.m_Depth+1); this.m_Nodes[i].setDepth(this.m_Depth+1);
this.m_Nodes[i].setParent(this); this.m_Nodes[i].setParent(this);
this.m_Nodes[i].initGrow(area, depth); this.m_Nodes[i].initGrow(area, depth);
@ -494,7 +540,9 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
public int getMaxDepth() { public int getMaxDepth() {
int result = this.m_Depth; int result = this.m_Depth;
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
if (this.m_Nodes[i] != null) result = Math.max(result, this.m_Nodes[i].getMaxDepth()); if (this.m_Nodes[i] != null) {
result = Math.max(result, this.m_Nodes[i].getMaxDepth());
}
} }
return result; return result;
} }
@ -514,8 +562,12 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
* @return True if MaxDepth is violated * @return True if MaxDepth is violated
*/ */
public boolean isMaxDepthViolated(int maxDepth) { public boolean isMaxDepthViolated(int maxDepth) {
if (maxDepth < this.getMaxDepth()) return true; if (maxDepth < this.getMaxDepth()) {
else return false; return true;
}
else {
return false;
}
// if (depth > this.m_Depth) return false; // if (depth > this.m_Depth) return false;
// else { // else {
// boolean result = true; // boolean result = true;
@ -559,10 +611,16 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj.getClass().equals(this.getClass())) { if (obj.getClass().equals(this.getClass())) {
AbstractGPNode node = (AbstractGPNode)obj; AbstractGPNode node = (AbstractGPNode)obj;
if (this.getArity()!=node.getArity()) return false; if (this.getArity()!=node.getArity()) {
if (this.m_Nodes.length != node.m_Nodes.length) return false; return false;
}
if (this.m_Nodes.length != node.m_Nodes.length) {
return false;
}
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; if (!this.m_Nodes[i].equals(node.m_Nodes[i])) {
return false;
}
} }
return true; return true;
} else { } else {
@ -593,7 +651,9 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
return false; return false;
} }
for (int i=0; i<m_Nodes.length; i++) { for (int i=0; i<m_Nodes.length; i++) {
if (!m_Nodes[i].checkDepth(myDepth+1)) return false; if (!m_Nodes[i].checkDepth(myDepth+1)) {
return false;
}
} }
return true; return true;
} }

View File

@ -28,12 +28,15 @@ public class GPArea implements java.io.Serializable {
} }
public GPArea(GPArea g) { public GPArea(GPArea g) {
if (g.m_BlackList != null) if (g.m_BlackList != null) {
this.m_BlackList = (ArrayList<Boolean>)g.m_BlackList.clone(); this.m_BlackList = (ArrayList<Boolean>)g.m_BlackList.clone();
if (g.m_ReducedList != null) }
if (g.m_ReducedList != null) {
this.m_ReducedList = (ArrayList<AbstractGPNode>)g.m_ReducedList.clone(); this.m_ReducedList = (ArrayList<AbstractGPNode>)g.m_ReducedList.clone();
if (g.m_CompleteList != null) }
if (g.m_CompleteList != null) {
this.m_CompleteList = (ArrayList<AbstractGPNode>)g.m_CompleteList.clone(); this.m_CompleteList = (ArrayList<AbstractGPNode>)g.m_CompleteList.clone();
}
} }
@Override @Override
@ -118,17 +121,27 @@ public class GPArea implements java.io.Serializable {
public AbstractGPNode getRandomNodeWithArity(int targetarity) { public AbstractGPNode getRandomNodeWithArity(int targetarity) {
ArrayList<AbstractGPNode> tmpArray = new ArrayList<AbstractGPNode>(); ArrayList<AbstractGPNode> tmpArray = new ArrayList<AbstractGPNode>();
for (int i = 0; i < this.m_ReducedList.size(); i++) { for (int i = 0; i < this.m_ReducedList.size(); i++) {
if (((AbstractGPNode)this.m_ReducedList.get(i)).getArity() == targetarity) tmpArray.add(this.m_ReducedList.get(i)); if (((AbstractGPNode)this.m_ReducedList.get(i)).getArity() == targetarity) {
tmpArray.add(this.m_ReducedList.get(i));
}
}
if (tmpArray.size() == 0) {
return null;
}
else {
return (AbstractGPNode)tmpArray.get(RNG.randomInt(0, tmpArray.size()-1));
} }
if (tmpArray.size() == 0) return null;
else return (AbstractGPNode)tmpArray.get(RNG.randomInt(0, tmpArray.size()-1));
} }
/** This method will return a random node. /** This method will return a random node.
*/ */
public AbstractGPNode getRandomNode() { public AbstractGPNode getRandomNode() {
if (this.m_ReducedList.size() == 0) return null; if (this.m_ReducedList.size() == 0) {
else return (AbstractGPNode)this.m_ReducedList.get(RNG.randomInt(0, this.m_ReducedList.size()-1)); return null;
}
else {
return (AbstractGPNode)this.m_ReducedList.get(RNG.randomInt(0, this.m_ReducedList.size()-1));
}
} }
/** This method will return a non terminal /** This method will return a non terminal
@ -136,10 +149,16 @@ public class GPArea implements java.io.Serializable {
public AbstractGPNode getRandomNonTerminal() { public AbstractGPNode getRandomNonTerminal() {
ArrayList<AbstractGPNode> tmpArray = new ArrayList<AbstractGPNode>(); ArrayList<AbstractGPNode> tmpArray = new ArrayList<AbstractGPNode>();
for (int i = 0; i < this.m_ReducedList.size(); i++) { for (int i = 0; i < this.m_ReducedList.size(); i++) {
if (((AbstractGPNode)this.m_ReducedList.get(i)).getArity() > 0) tmpArray.add(this.m_ReducedList.get(i)); if (((AbstractGPNode)this.m_ReducedList.get(i)).getArity() > 0) {
tmpArray.add(this.m_ReducedList.get(i));
}
}
if (tmpArray.size() == 0) {
return null;
}
else {
return (AbstractGPNode)tmpArray.get(RNG.randomInt(0, tmpArray.size()-1));
} }
if (tmpArray.size() == 0) return null;
else return (AbstractGPNode)tmpArray.get(RNG.randomInt(0, tmpArray.size()-1));
} }
public boolean isEmpty() { public boolean isEmpty() {
@ -154,14 +173,18 @@ public class GPArea implements java.io.Serializable {
} }
public void addPropertyChangeListener(PropertyChangeListener l) { public void addPropertyChangeListener(PropertyChangeListener l) {
if (m_Support==null) m_Support = new PropertyChangeSupport(this); if (m_Support==null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.addPropertyChangeListener(l); m_Support.addPropertyChangeListener(l);
} }
/** /**
* *
*/ */
public void removePropertyChangeListener(PropertyChangeListener l) { public void removePropertyChangeListener(PropertyChangeListener l) {
if (m_Support==null) m_Support = new PropertyChangeSupport(this); if (m_Support==null) {
m_Support = new PropertyChangeSupport(this);
}
m_Support.removePropertyChangeListener(l); m_Support.removePropertyChangeListener(l);
} }
} }

View File

@ -48,11 +48,17 @@ public class GPNodeAbs extends AbstractGPNode implements java.io.Serializable {
double result = 0; double result = 0;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result += ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
result += ((Double)tmpObj).doubleValue();
}
Double ret = new Double(result); Double ret = new Double(result);
if (ret<0) return -ret; if (ret<0) {
else return ret; return -ret;
}
else {
return ret;
}
} }
@Override @Override

View File

@ -54,7 +54,9 @@ public class GPNodeAdd extends AbstractGPNode implements java.io.Serializable {
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
tmpObj = this.m_Nodes[i].evaluate(environment); tmpObj = this.m_Nodes[i].evaluate(environment);
if (tmpObj instanceof Double) result += ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
result += ((Double)tmpObj).doubleValue();
}
} }
return new Double(result); return new Double(result);
} }

View File

@ -24,7 +24,9 @@ public class GPNodeConst extends AbstractGPNode implements java.io.Serializable
if (obj instanceof GPNodeConst) { if (obj instanceof GPNodeConst) {
GPNodeConst node = (GPNodeConst)obj; GPNodeConst node = (GPNodeConst)obj;
return (node.value==this.value); return (node.value==this.value);
} else return false; } else {
return false;
}
} }
/** This method will be used to identify the node in the GPAreaEditor /** This method will be used to identify the node in the GPAreaEditor

View File

@ -50,7 +50,9 @@ public class GPNodeCos extends AbstractGPNode implements java.io.Serializable {
double result = 1; double result = 1;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result = Math.sin(((Double)tmpObj).doubleValue()); if (tmpObj instanceof Double) {
result = Math.sin(((Double)tmpObj).doubleValue());
}
return new Double(result); return new Double(result);
} }

View File

@ -59,14 +59,21 @@ public class GPNodeDiv extends AbstractGPNode implements java.io.Serializable {
double tmpValue = 0; double tmpValue = 0;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result = ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
result = ((Double)tmpObj).doubleValue();
}
for (int i = 1; i < this.m_Nodes.length; i++) { for (int i = 1; i < this.m_Nodes.length; i++) {
tmpObj = this.m_Nodes[i].evaluate(environment); tmpObj = this.m_Nodes[i].evaluate(environment);
if (tmpObj instanceof Double) if (tmpObj instanceof Double) {
tmpValue = ((Double)tmpObj).doubleValue(); tmpValue = ((Double)tmpObj).doubleValue();
}
if (Math.abs(tmpValue) < this.m_LowerBorderForSec) { if (Math.abs(tmpValue) < this.m_LowerBorderForSec) {
if (tmpValue < 0) tmpValue = -this.m_LowerBorderForSec; if (tmpValue < 0) {
else tmpValue = this.m_LowerBorderForSec; tmpValue = -this.m_LowerBorderForSec;
}
else {
tmpValue = this.m_LowerBorderForSec;
}
} }
result /= tmpValue; result /= tmpValue;
} }

View File

@ -50,7 +50,9 @@ public class GPNodeExp extends AbstractGPNode implements java.io.Serializable {
double result = 1; double result = 1;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result = Math.exp(((Double)tmpObj).doubleValue()); if (tmpObj instanceof Double) {
result = Math.exp(((Double)tmpObj).doubleValue());
}
return new Double(result); return new Double(result);
} }

View File

@ -41,7 +41,9 @@ public class GPNodeInput extends AbstractGPNode implements java.io.Serializable
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj instanceof GPNodeInput) { if (obj instanceof GPNodeInput) {
GPNodeInput node = (GPNodeInput)obj; GPNodeInput node = (GPNodeInput)obj;
if (!this.m_Identifier.equalsIgnoreCase(node.m_Identifier)) return false; if (!this.m_Identifier.equalsIgnoreCase(node.m_Identifier)) {
return false;
}
return true; return true;
} else { } else {
return false; return false;
@ -85,13 +87,17 @@ public class GPNodeInput extends AbstractGPNode implements java.io.Serializable
*/ */
@Override @Override
public String getOpIdentifier() { public String getOpIdentifier() {
if (this.lastValue == null) return this.m_Identifier; if (this.lastValue == null) {
return this.m_Identifier;
}
else { else {
if (this.lastValue instanceof Double) { if (this.lastValue instanceof Double) {
double tmpD = ((Double)this.lastValue).doubleValue(); double tmpD = ((Double)this.lastValue).doubleValue();
tmpD = ((long)(tmpD*10000.0 + ((tmpD>=0.0)?0.5:-0.5)))/10000.0; tmpD = ((long)(tmpD*10000.0 + ((tmpD>=0.0)?0.5:-0.5)))/10000.0;
return ("S:" +this.m_Identifier + " = " + tmpD); return ("S:" +this.m_Identifier + " = " + tmpD);
} else return ("S:" +this.m_Identifier + " = " + this.lastValue.toString()); } else {
return ("S:" +this.m_Identifier + " = " + this.lastValue.toString());
}
} }
} }
} }

View File

@ -52,8 +52,12 @@ public class GPNodeMult extends AbstractGPNode implements java.io.Serializable {
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
tmpObj = this.m_Nodes[i].evaluate(environment); tmpObj = this.m_Nodes[i].evaluate(environment);
if (tmpObj instanceof Double) result *= ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
else System.err.println("Unexpected type returned in evaluate for "+this.getClass().getSimpleName()); result *= ((Double)tmpObj).doubleValue();
}
else {
System.err.println("Unexpected type returned in evaluate for "+this.getClass().getSimpleName());
}
} }
return new Double(result); return new Double(result);
} }

View File

@ -51,10 +51,14 @@ public class GPNodeNeg extends AbstractGPNode implements java.io.Serializable {
double result = 0; double result = 0;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result += ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
result += ((Double)tmpObj).doubleValue();
}
for (int i = 1; i < this.m_Nodes.length; i++) { for (int i = 1; i < this.m_Nodes.length; i++) {
tmpObj = this.m_Nodes[i].evaluate(environment); tmpObj = this.m_Nodes[i].evaluate(environment);
if (tmpObj instanceof Double) result -= ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
result -= ((Double)tmpObj).doubleValue();
}
} }
return new Double(result); return new Double(result);
} }

View File

@ -36,7 +36,9 @@ public class GPNodeOutput extends AbstractGPNode implements java.io.Serializable
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj instanceof GPNodeOutput) { if (obj instanceof GPNodeOutput) {
GPNodeOutput node = (GPNodeOutput)obj; GPNodeOutput node = (GPNodeOutput)obj;
if (!this.m_Identifier.equalsIgnoreCase(node.m_Identifier)) return false; if (!this.m_Identifier.equalsIgnoreCase(node.m_Identifier)) {
return false;
}
return true; return true;
} else { } else {
return false; return false;

View File

@ -50,7 +50,9 @@ public class GPNodePow2 extends AbstractGPNode implements java.io.Serializable {
double result = 1; double result = 1;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result = Math.pow(((Double)tmpObj).doubleValue(), 2); if (tmpObj instanceof Double) {
result = Math.pow(((Double)tmpObj).doubleValue(), 2);
}
return new Double(result); return new Double(result);
} }

View File

@ -50,7 +50,9 @@ public class GPNodePow3 extends AbstractGPNode implements java.io.Serializable {
double result = 1; double result = 1;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result = Math.pow(((Double)tmpObj).doubleValue(), 3); if (tmpObj instanceof Double) {
result = Math.pow(((Double)tmpObj).doubleValue(), 3);
}
return new Double(result); return new Double(result);
} }

View File

@ -42,13 +42,17 @@ public class GPNodeProd extends AbstractGPNode implements java.io.Serializable {
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
tmpObj = this.m_Nodes[i].evaluate(environment); tmpObj = this.m_Nodes[i].evaluate(environment);
if (tmpObj instanceof double[]) result*=Mathematics.product((double[])tmpObj); if (tmpObj instanceof double[]) {
result*=Mathematics.product((double[])tmpObj);
}
else if (tmpObj instanceof Double[]) { else if (tmpObj instanceof Double[]) {
Double[] vals = (Double[])tmpObj; Double[] vals = (Double[])tmpObj;
for (int j=0; j<vals.length; j++) { for (int j=0; j<vals.length; j++) {
result*=vals[j]; result*=vals[j];
} }
} else if (tmpObj instanceof Double) result=(Double)tmpObj; } else if (tmpObj instanceof Double) {
result=(Double)tmpObj;
}
} }
return new Double(result); return new Double(result);
} }

View File

@ -50,7 +50,9 @@ public class GPNodeSin extends AbstractGPNode implements java.io.Serializable {
double result = 1; double result = 1;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result = Math.sin(((Double)tmpObj).doubleValue()); if (tmpObj instanceof Double) {
result = Math.sin(((Double)tmpObj).doubleValue());
}
return new Double(result); return new Double(result);
} }

View File

@ -51,7 +51,9 @@ public class GPNodeSqrt extends AbstractGPNode implements java.io.Serializable {
double result = 1; double result = 1;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result = Math.sqrt(Math.abs(((Double)tmpObj).doubleValue())); if (tmpObj instanceof Double) {
result = Math.sqrt(Math.abs(((Double)tmpObj).doubleValue()));
}
return new Double(result); return new Double(result);
} }

View File

@ -51,10 +51,14 @@ public class GPNodeSub extends AbstractGPNode implements java.io.Serializable {
double result = 0; double result = 0;
tmpObj = this.m_Nodes[0].evaluate(environment); tmpObj = this.m_Nodes[0].evaluate(environment);
if (tmpObj instanceof Double) result += ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
result += ((Double)tmpObj).doubleValue();
}
for (int i = 1; i < this.m_Nodes.length; i++) { for (int i = 1; i < this.m_Nodes.length; i++) {
tmpObj = this.m_Nodes[i].evaluate(environment); tmpObj = this.m_Nodes[i].evaluate(environment);
if (tmpObj instanceof Double) result -= ((Double)tmpObj).doubleValue(); if (tmpObj instanceof Double) {
result -= ((Double)tmpObj).doubleValue();
}
} }
return new Double(result); return new Double(result);
} }

View File

@ -51,13 +51,17 @@ public class GPNodeSum extends AbstractGPNode implements java.io.Serializable {
for (int i = 0; i < this.m_Nodes.length; i++) { for (int i = 0; i < this.m_Nodes.length; i++) {
tmpObj = this.m_Nodes[i].evaluate(environment); tmpObj = this.m_Nodes[i].evaluate(environment);
if (tmpObj instanceof double[]) result+=Mathematics.sum((double[])tmpObj); if (tmpObj instanceof double[]) {
result+=Mathematics.sum((double[])tmpObj);
}
else if (tmpObj instanceof Double[]) { else if (tmpObj instanceof Double[]) {
Double[] vals = (Double[])tmpObj; Double[] vals = (Double[])tmpObj;
for (int j=0; j<vals.length; j++) { for (int j=0; j<vals.length; j++) {
result+=vals[j]; result+=vals[j];
} }
} else if (tmpObj instanceof Double) result=(Double)tmpObj; } else if (tmpObj instanceof Double) {
result=(Double)tmpObj;
}
} }
return new Double(result); return new Double(result);
} }

View File

@ -92,8 +92,12 @@ public class MOCCOChooseReferenceSolution extends MOCCOPhase implements Interfac
gbc.gridx = 1; gbc.gridx = 1;
gbc.gridy = i+1; gbc.gridy = i+1;
gbc.weightx = 1; gbc.weightx = 1;
if (obj[i].is2BMinimized()) textA = new JTextField("min"); if (obj[i].is2BMinimized()) {
else textA = new JTextField("max"); textA = new JTextField("min");
}
else {
textA = new JTextField("max");
}
textA.setEditable(false); textA.setEditable(false);
tmpP.add(textA, gbc); tmpP.add(textA, gbc);
gbc.gridx = 2; gbc.gridx = 2;

View File

@ -97,8 +97,12 @@ public class MOCCOParameterizeGDF extends MOCCOPhase implements InterfaceProcess
this.m_TradeOff[i][j] = new JTextField(""); this.m_TradeOff[i][j] = new JTextField("");
if (i == j) { if (i == j) {
this.m_TradeOff[i][j].setBackground(Color.WHITE); this.m_TradeOff[i][j].setBackground(Color.WHITE);
if (obj[i].getOptimizationMode().contains("Objective")) this.m_TradeOff[i][j].setEditable(true); if (obj[i].getOptimizationMode().contains("Objective")) {
else this.m_TradeOff[i][j].setEditable(false); this.m_TradeOff[i][j].setEditable(true);
}
else {
this.m_TradeOff[i][j].setEditable(false);
}
this.m_TradeOff[i][j].setText("1.0"); this.m_TradeOff[i][j].setText("1.0");
this.m_TradeOff[i][j].addActionListener(weightListener); this.m_TradeOff[i][j].addActionListener(weightListener);
} else { } else {
@ -130,12 +134,17 @@ public class MOCCOParameterizeGDF extends MOCCOPhase implements InterfaceProcess
try { try {
this.m_EOpt.m_Value = this.m_Opt; this.m_EOpt.m_Value = this.m_Opt;
this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(this.m_EOpt.m_Value.getClass()); this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(this.m_EOpt.m_Value.getClass());
if (this.m_EOpt.m_Editor == null) this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class); if (this.m_EOpt.m_Editor == null) {
if (this.m_EOpt.m_Editor instanceof GenericObjectEditor) this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class);
}
if (this.m_EOpt.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_EOpt.m_Editor).setClassType(InterfaceOptimizer.class); ((GenericObjectEditor) this.m_EOpt.m_Editor).setClassType(InterfaceOptimizer.class);
}
this.m_EOpt.m_Editor.setValue(this.m_EOpt.m_Value); this.m_EOpt.m_Editor.setValue(this.m_EOpt.m_Value);
AbstractObjectEditor.findViewFor(this.m_EOpt); AbstractObjectEditor.findViewFor(this.m_EOpt);
if (this.m_EOpt.m_View != null) this.m_EOpt.m_View.repaint(); if (this.m_EOpt.m_View != null) {
this.m_EOpt.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -153,12 +162,17 @@ public class MOCCOParameterizeGDF extends MOCCOPhase implements InterfaceProcess
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Terminator; editor.m_Value = this.m_Mocco.m_State.m_Terminator;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -190,7 +204,9 @@ public class MOCCOParameterizeGDF extends MOCCOPhase implements InterfaceProcess
w[i] = new Double(m_TradeOff[i][i].getText()).doubleValue(); w[i] = new Double(m_TradeOff[i][i].getText()).doubleValue();
sum += w[i]; sum += w[i];
} }
if (new Double(sum).isNaN()) return; if (new Double(sum).isNaN()) {
return;
}
for (int i = 0; i < m_TradeOff.length; i++) { for (int i = 0; i < m_TradeOff.length; i++) {
for (int j = 0; j < m_TradeOff.length; j++) { for (int j = 0; j < m_TradeOff.length; j++) {
if (i != j) { if (i != j) {
@ -241,7 +257,9 @@ public class MOCCOParameterizeGDF extends MOCCOPhase implements InterfaceProcess
System.out.println("obj.length = " + obj.length); System.out.println("obj.length = " + obj.length);
System.out.println("d.length = " + d.length); System.out.println("d.length = " + d.length);
for (int i = 0; i < obj.length; i++) { for (int i = 0; i < obj.length; i++) {
if (obj[i].getOptimizationMode().contains("Objective")) tmpA.add(new Double(d[i])); if (obj[i].getOptimizationMode().contains("Objective")) {
tmpA.add(new Double(d[i]));
}
} }
double[] result = new double[tmpA.size()]; double[] result = new double[tmpA.size()];

View File

@ -87,12 +87,17 @@ public class MOCCOParameterizeMO extends MOCCOPhase implements InterfaceProcessE
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Optimizer; editor.m_Value = this.m_Mocco.m_State.m_Optimizer;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceOptimizer.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceOptimizer.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -110,12 +115,17 @@ public class MOCCOParameterizeMO extends MOCCOPhase implements InterfaceProcessE
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Terminator; editor.m_Value = this.m_Mocco.m_State.m_Terminator;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -141,11 +151,15 @@ public class MOCCOParameterizeMO extends MOCCOPhase implements InterfaceProcessE
m_Mocco.m_State.m_Optimizer.setProblem(m_Mocco.m_State.m_CurrentProblem); m_Mocco.m_State.m_Optimizer.setProblem(m_Mocco.m_State.m_CurrentProblem);
Population pop = m_Mocco.m_State.m_Optimizer.getPopulation(); Population pop = m_Mocco.m_State.m_Optimizer.getPopulation();
pop.clear(); pop.clear();
if (pop.getArchive() != null) pop.getArchive().clear(); if (pop.getArchive() != null) {
pop.getArchive().clear();
}
if (m_Mocco.m_State.m_PopulationHistory.length > 0) { if (m_Mocco.m_State.m_PopulationHistory.length > 0) {
pop = m_Mocco.m_State.getSelectedPopulations(); pop = m_Mocco.m_State.getSelectedPopulations();
m_Mocco.m_State.m_Optimizer.initByPopulation(pop, false); m_Mocco.m_State.m_Optimizer.initByPopulation(pop, false);
if (pop.size() == 0) m_Mocco.m_State.m_Optimizer.init(); if (pop.size() == 0) {
m_Mocco.m_State.m_Optimizer.init();
}
} }
m_Finished = true; m_Finished = true;
} }

View File

@ -111,12 +111,17 @@ public class MOCCOParameterizeRefPoint extends MOCCOPhase implements InterfacePr
try { try {
this.m_EMOSO.m_Value = this.m_LpMetric; this.m_EMOSO.m_Value = this.m_LpMetric;
this.m_EMOSO.m_Editor = PropertyEditorProvider.findEditor(this.m_EMOSO.m_Value.getClass()); this.m_EMOSO.m_Editor = PropertyEditorProvider.findEditor(this.m_EMOSO.m_Value.getClass());
if (this.m_EMOSO.m_Editor == null) this.m_EMOSO.m_Editor = PropertyEditorProvider.findEditor(MOSOLpMetric.class); if (this.m_EMOSO.m_Editor == null) {
if (this.m_EMOSO.m_Editor instanceof GenericObjectEditor) this.m_EMOSO.m_Editor = PropertyEditorProvider.findEditor(MOSOLpMetric.class);
}
if (this.m_EMOSO.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_EMOSO.m_Editor).setClassType(MOSOLpMetric.class); ((GenericObjectEditor) this.m_EMOSO.m_Editor).setClassType(MOSOLpMetric.class);
}
this.m_EMOSO.m_Editor.setValue(this.m_EMOSO.m_Value); this.m_EMOSO.m_Editor.setValue(this.m_EMOSO.m_Value);
AbstractObjectEditor.findViewFor(this.m_EMOSO); AbstractObjectEditor.findViewFor(this.m_EMOSO);
if (this.m_EMOSO.m_View != null) this.m_EMOSO.m_View.repaint(); if (this.m_EMOSO.m_View != null) {
this.m_EMOSO.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -142,12 +147,17 @@ public class MOCCOParameterizeRefPoint extends MOCCOPhase implements InterfacePr
try { try {
this.m_EIMEA.m_Value = this.m_Island; this.m_EIMEA.m_Value = this.m_Island;
this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(this.m_EIMEA.m_Value.getClass()); this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(this.m_EIMEA.m_Value.getClass());
if (this.m_EIMEA.m_Editor == null) this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(IslandModelEA.class); if (this.m_EIMEA.m_Editor == null) {
if (this.m_EIMEA.m_Editor instanceof GenericObjectEditor) this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(IslandModelEA.class);
}
if (this.m_EIMEA.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_EIMEA.m_Editor).setClassType(IslandModelEA.class); ((GenericObjectEditor) this.m_EIMEA.m_Editor).setClassType(IslandModelEA.class);
}
this.m_EIMEA.m_Editor.setValue(this.m_EIMEA.m_Value); this.m_EIMEA.m_Editor.setValue(this.m_EIMEA.m_Value);
AbstractObjectEditor.findViewFor(this.m_EIMEA); AbstractObjectEditor.findViewFor(this.m_EIMEA);
if (this.m_EIMEA.m_View != null) this.m_EIMEA.m_View.repaint(); if (this.m_EIMEA.m_View != null) {
this.m_EIMEA.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -165,12 +175,17 @@ public class MOCCOParameterizeRefPoint extends MOCCOPhase implements InterfacePr
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Terminator; editor.m_Value = this.m_Mocco.m_State.m_Terminator;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -242,8 +257,12 @@ public class MOCCOParameterizeRefPoint extends MOCCOPhase implements InterfacePr
for (int i = 0; i < m_Perturbations; i++) { for (int i = 0; i < m_Perturbations; i++) {
tmpD = new double[m_RefPoint.length]; tmpD = new double[m_RefPoint.length];
for (int j = 0; j < tmpD.length; j++) { for (int j = 0; j < tmpD.length; j++) {
if (i > 0) tmpD[j] = m_RefPoint[j] + RNG.gaussianDouble(m_Perturbation); if (i > 0) {
else tmpD[j] = m_RefPoint[j]; tmpD[j] = m_RefPoint[j] + RNG.gaussianDouble(m_Perturbation);
}
else {
tmpD[j] = m_RefPoint[j];
}
} }
tmpLPs[i] = (MOSOLpMetric)m_LpMetric.clone(); tmpLPs[i] = (MOSOLpMetric)m_LpMetric.clone();
// I've to set this before I change the parameters, because the problem sets the // I've to set this before I change the parameters, because the problem sets the

View File

@ -80,12 +80,17 @@ public class MOCCOParameterizeSO extends MOCCOPhase implements InterfaceProcessE
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Optimizer; editor.m_Value = this.m_Mocco.m_State.m_Optimizer;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceOptimizer.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceOptimizer.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -103,12 +108,17 @@ public class MOCCOParameterizeSO extends MOCCOPhase implements InterfaceProcessE
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Terminator; editor.m_Value = this.m_Mocco.m_State.m_Terminator;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }

View File

@ -129,8 +129,12 @@ public class MOCCOParameterizeSTEP extends MOCCOPhase implements InterfaceProces
gbc.gridx = 1; gbc.gridx = 1;
gbc.gridy = i+1; gbc.gridy = i+1;
gbc.weightx = 1; gbc.weightx = 1;
if (obj[i].is2BMinimized()) panelSTEP.add(new JLabel("min"), gbc); if (obj[i].is2BMinimized()) {
else panelSTEP.add(new JLabel("max"), gbc); panelSTEP.add(new JLabel("min"), gbc);
}
else {
panelSTEP.add(new JLabel("max"), gbc);
}
gbc.gridx = 2; gbc.gridx = 2;
gbc.gridy = i+1; gbc.gridy = i+1;
this.m_RefSol[i] = new JTextField(""+((Double)m_RefSolution.getData(obj[i].getIdentName())).doubleValue()); this.m_RefSol[i] = new JTextField(""+((Double)m_RefSolution.getData(obj[i].getIdentName())).doubleValue());
@ -144,8 +148,12 @@ public class MOCCOParameterizeSTEP extends MOCCOPhase implements InterfaceProces
gbc.gridx = 4; gbc.gridx = 4;
gbc.gridy = i+1; gbc.gridy = i+1;
this.m_Weight[i] = new JTextField("1.0"); this.m_Weight[i] = new JTextField("1.0");
if (obj[i].getOptimizationMode().contains("Objective")) this.m_Weight[i].setEditable(true); if (obj[i].getOptimizationMode().contains("Objective")) {
else this.m_Weight[i].setEditable(false); this.m_Weight[i].setEditable(true);
}
else {
this.m_Weight[i].setEditable(false);
}
//this.m_Satisfied[i].addActionListener(valueChanged); //this.m_Satisfied[i].addActionListener(valueChanged);
panelSTEP.add(this.m_Weight[i], gbc); panelSTEP.add(this.m_Weight[i], gbc);
gbc.gridx = 5; gbc.gridx = 5;
@ -172,12 +180,17 @@ public class MOCCOParameterizeSTEP extends MOCCOPhase implements InterfaceProces
try { try {
this.m_EOpt.m_Value = this.m_Opt; this.m_EOpt.m_Value = this.m_Opt;
this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(this.m_EOpt.m_Value.getClass()); this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(this.m_EOpt.m_Value.getClass());
if (this.m_EOpt.m_Editor == null) this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class); if (this.m_EOpt.m_Editor == null) {
if (this.m_EOpt.m_Editor instanceof GenericObjectEditor) this.m_EOpt.m_Editor = PropertyEditorProvider.findEditor(InterfaceOptimizer.class);
}
if (this.m_EOpt.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_EOpt.m_Editor).setClassType(InterfaceOptimizer.class); ((GenericObjectEditor) this.m_EOpt.m_Editor).setClassType(InterfaceOptimizer.class);
}
this.m_EOpt.m_Editor.setValue(this.m_EOpt.m_Value); this.m_EOpt.m_Editor.setValue(this.m_EOpt.m_Value);
AbstractObjectEditor.findViewFor(this.m_EOpt); AbstractObjectEditor.findViewFor(this.m_EOpt);
if (this.m_EOpt.m_View != null) this.m_EOpt.m_View.repaint(); if (this.m_EOpt.m_View != null) {
this.m_EOpt.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -195,12 +208,17 @@ public class MOCCOParameterizeSTEP extends MOCCOPhase implements InterfaceProces
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Terminator; editor.m_Value = this.m_Mocco.m_State.m_Terminator;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -318,7 +336,9 @@ public class MOCCOParameterizeSTEP extends MOCCOPhase implements InterfaceProces
System.out.println("obj.length = " + obj.length); System.out.println("obj.length = " + obj.length);
System.out.println("d.length = " + d.length); System.out.println("d.length = " + d.length);
for (int i = 0; i < obj.length; i++) { for (int i = 0; i < obj.length; i++) {
if (obj[i].getOptimizationMode().contains("Objective")) tmpA.add(new Double(d[i])); if (obj[i].getOptimizationMode().contains("Objective")) {
tmpA.add(new Double(d[i]));
}
} }
double[] result = new double[tmpA.size()]; double[] result = new double[tmpA.size()];

View File

@ -119,12 +119,17 @@ public class MOCCOParameterizeTchebycheff extends MOCCOPhase implements Interfac
try { try {
this.m_EIMEA.m_Value = this.m_Island; this.m_EIMEA.m_Value = this.m_Island;
this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(this.m_EIMEA.m_Value.getClass()); this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(this.m_EIMEA.m_Value.getClass());
if (this.m_EIMEA.m_Editor == null) this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(IslandModelEA.class); if (this.m_EIMEA.m_Editor == null) {
if (this.m_EIMEA.m_Editor instanceof GenericObjectEditor) this.m_EIMEA.m_Editor = PropertyEditorProvider.findEditor(IslandModelEA.class);
}
if (this.m_EIMEA.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_EIMEA.m_Editor).setClassType(IslandModelEA.class); ((GenericObjectEditor) this.m_EIMEA.m_Editor).setClassType(IslandModelEA.class);
}
this.m_EIMEA.m_Editor.setValue(this.m_EIMEA.m_Value); this.m_EIMEA.m_Editor.setValue(this.m_EIMEA.m_Value);
AbstractObjectEditor.findViewFor(this.m_EIMEA); AbstractObjectEditor.findViewFor(this.m_EIMEA);
if (this.m_EIMEA.m_View != null) this.m_EIMEA.m_View.repaint(); if (this.m_EIMEA.m_View != null) {
this.m_EIMEA.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -142,12 +147,17 @@ public class MOCCOParameterizeTchebycheff extends MOCCOPhase implements Interfac
try { try {
editor.m_Value = this.m_Mocco.m_State.m_Terminator; editor.m_Value = this.m_Mocco.m_State.m_Terminator;
editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass()); editor.m_Editor = PropertyEditorProvider.findEditor(editor.m_Value.getClass());
if (editor.m_Editor == null) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class); if (editor.m_Editor == null) {
if (editor.m_Editor instanceof GenericObjectEditor) editor.m_Editor = PropertyEditorProvider.findEditor(InterfaceTerminator.class);
}
if (editor.m_Editor instanceof GenericObjectEditor) {
((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class); ((GenericObjectEditor) editor.m_Editor).setClassType(InterfaceTerminator.class);
}
editor.m_Editor.setValue(editor.m_Value); editor.m_Editor.setValue(editor.m_Value);
AbstractObjectEditor.findViewFor(editor); AbstractObjectEditor.findViewFor(editor);
if (editor.m_View != null) editor.m_View.repaint(); if (editor.m_View != null) {
editor.m_View.repaint();
}
} catch (Exception e) { } catch (Exception e) {
System.out.println("Darn can't read the value..."); System.out.println("Darn can't read the value...");
} }
@ -256,17 +266,29 @@ public class MOCCOParameterizeTchebycheff extends MOCCOPhase implements Interfac
try { try {
u = new Double(m_UpperLimit[j].getText()).doubleValue(); u = new Double(m_UpperLimit[j].getText()).doubleValue();
} catch (NumberFormatException e) {} } catch (NumberFormatException e) {}
if (l < 0) l = 0; if (l < 0) {
if (u > 1) u = 1; l = 0;
if (u < 0) u = 0; }
if (l > 1) l = 1; if (u > 1) {
u = 1;
}
if (u < 0) {
u = 0;
}
if (l > 1) {
l = 1;
}
if (u < l) { if (u < l) {
double t = u; double t = u;
u = l; l = t; u = l; l = t;
} }
if (i > 0) tmpD[j] = RNG.randomDouble(l,u); if (i > 0) {
else tmpD[j] = 1; tmpD[j] = RNG.randomDouble(l,u);
}
else {
tmpD[j] = 1;
}
sum += tmpD[j]; sum += tmpD[j];
} }
for (int j = 0; j < tmpD.length; j++) { for (int j = 0; j < tmpD.length; j++) {

View File

@ -118,7 +118,9 @@ public class MOCCOState {
fitness.add(((AbstractEAIndividual)newPop[newPop.length-1].get(j)).getFitness()); fitness.add(((AbstractEAIndividual)newPop[newPop.length-1].get(j)).getFitness());
constraint.add(new Double(((AbstractEAIndividual)newPop[newPop.length-1].get(j)).getConstraintViolation())); constraint.add(new Double(((AbstractEAIndividual)newPop[newPop.length-1].get(j)).getConstraintViolation()));
} }
if (this.m_ObjectiveCache != null) this.m_ObjectiveCache.add(objectives); if (this.m_ObjectiveCache != null) {
this.m_ObjectiveCache.add(objectives);
}
this.m_FitnessCache.add(fitness); this.m_FitnessCache.add(fitness);
this.m_ConstraintCache.add(constraint); this.m_ConstraintCache.add(constraint);
} }
@ -153,7 +155,9 @@ public class MOCCOState {
public Population getSelectedPopulations() { public Population getSelectedPopulations() {
Population result = new Population(); Population result = new Population();
for (int i = 0; i < this.m_PopulationHistory.length; i++) { for (int i = 0; i < this.m_PopulationHistory.length; i++) {
if (this.m_Use[i]) result.addPopulation(this.m_PopulationHistory[i]); if (this.m_Use[i]) {
result.addPopulation(this.m_PopulationHistory[i]);
}
} }
this.m_CurrentProblem.evaluate(result); this.m_CurrentProblem.evaluate(result);
return result; return result;
@ -201,8 +205,12 @@ public class MOCCOState {
if (tmpObj != null) { if (tmpObj != null) {
double[] tmoF = new double[tmpObj.length]; double[] tmoF = new double[tmpObj.length];
for (int k = 0; k < tmpObj.length; k++) { for (int k = 0; k < tmpObj.length; k++) {
if (this.m_PopulationHistory[i].get(j) == null) System.out.println("Individual "+i+" == null!"); if (this.m_PopulationHistory[i].get(j) == null) {
if (tmpObj[k] == null) System.out.println("Objective "+k+" == null!"); System.out.println("Individual "+i+" == null!");
}
if (tmpObj[k] == null) {
System.out.println("Objective "+k+" == null!");
}
if (((AbstractEAIndividual)this.m_PopulationHistory[i].get(j)).getData(tmpObj[k].getIdentName()) == null) { if (((AbstractEAIndividual)this.m_PopulationHistory[i].get(j)).getData(tmpObj[k].getIdentName()) == null) {
System.out.println("User Data "+k+" "+tmpObj[k].getIdentName()+" == null!"); System.out.println("User Data "+k+" "+tmpObj[k].getIdentName()+" == null!");
} }
@ -213,7 +221,9 @@ public class MOCCOState {
fitness.add(((AbstractEAIndividual)this.m_PopulationHistory[i].get(j)).getFitness()); fitness.add(((AbstractEAIndividual)this.m_PopulationHistory[i].get(j)).getFitness());
constraint.add(new Double(((AbstractEAIndividual)this.m_PopulationHistory[i].get(j)).getConstraintViolation())); constraint.add(new Double(((AbstractEAIndividual)this.m_PopulationHistory[i].get(j)).getConstraintViolation()));
} }
if (this.m_ObjectiveCache != null) this.m_ObjectiveCache.add(objectives); if (this.m_ObjectiveCache != null) {
this.m_ObjectiveCache.add(objectives);
}
this.m_FitnessCache.add(fitness); this.m_FitnessCache.add(fitness);
this.m_ConstraintCache.add(constraint); this.m_ConstraintCache.add(constraint);
} }

View File

@ -373,7 +373,9 @@ public class MOCCOViewer extends JPanel implements InterfaceRefSolutionListener,
public void plot1DFitnessPlot() { public void plot1DFitnessPlot() {
double xmin = 0, ymin = Double.POSITIVE_INFINITY, xmax = Double.NEGATIVE_INFINITY, ymax = Double.NEGATIVE_INFINITY, fitness; double xmin = 0, ymin = Double.POSITIVE_INFINITY, xmax = Double.NEGATIVE_INFINITY, ymax = Double.NEGATIVE_INFINITY, fitness;
Population[] pops = this.m_MOCCO.m_State.m_PopulationHistory; Population[] pops = this.m_MOCCO.m_State.m_PopulationHistory;
if ((pops == null) || (pops.length < 1)) return; if ((pops == null) || (pops.length < 1)) {
return;
}
GraphPointSet mySet; GraphPointSet mySet;
DPoint myPoint; DPoint myPoint;
DPointIcon icon; DPointIcon icon;
@ -390,13 +392,19 @@ public class MOCCOViewer extends JPanel implements InterfaceRefSolutionListener,
((InterfaceDPointWithContent)icon).setEAIndividual(pops[i].getBestEAIndividual()); ((InterfaceDPointWithContent)icon).setEAIndividual(pops[i].getBestEAIndividual());
myPoint.setIcon(icon); myPoint.setIcon(icon);
mySet.addDPoint(myPoint); mySet.addDPoint(myPoint);
if (fitness < ymin) ymin = fitness; if (fitness < ymin) {
if (fitness > ymax) ymax = fitness; ymin = fitness;
}
if (fitness > ymax) {
ymax = fitness;
}
} }
mySet = new GraphPointSet(2, this.m_1DView); mySet = new GraphPointSet(2, this.m_1DView);
mySet.setConnectedMode(false); mySet.setConnectedMode(false);
double yrange = ymax - ymin; double yrange = ymax - ymin;
if (yrange < 0.00001) yrange = 0.00001; if (yrange < 0.00001) {
yrange = 0.00001;
}
mySet.addDPoint(0, ymin - 0.1 * yrange); mySet.addDPoint(0, ymin - 0.1 * yrange);
mySet.addDPoint(pops.length+2, ymax + 0.1 * yrange); mySet.addDPoint(pops.length+2, ymax + 0.1 * yrange);
this.m_ViewPanel.validate(); this.m_ViewPanel.validate();
@ -413,13 +421,19 @@ public class MOCCOViewer extends JPanel implements InterfaceRefSolutionListener,
*/ */
@Override @Override
public void individualSelected(AbstractEAIndividual indy) { public void individualSelected(AbstractEAIndividual indy) {
if (indy.isMarked()) indy.unmark(); if (indy.isMarked()) {
indy.unmark();
}
else { else {
if (this.m_SelectUniqueSolution) this.m_MOCCO.m_State.m_ParetoFront.unmarkAllIndividuals(); if (this.m_SelectUniqueSolution) {
this.m_MOCCO.m_State.m_ParetoFront.unmarkAllIndividuals();
}
indy.mark(); indy.mark();
} }
this.m_View.updateView(); this.m_View.updateView();
if (this.m_RefSolutionListener != null) this.m_RefSolutionListener.individualSelected(indy); if (this.m_RefSolutionListener != null) {
this.m_RefSolutionListener.individualSelected(indy);
}
} }
/** This method allows to toggle unique selection mode /** This method allows to toggle unique selection mode
@ -468,7 +482,9 @@ public class MOCCOViewer extends JPanel implements InterfaceRefSolutionListener,
@Override @Override
public void refPointGiven(double[] point) { public void refPointGiven(double[] point) {
this.m_ReferencePoint = point; this.m_ReferencePoint = point;
if (this.m_RefPointListener != null) this.m_RefPointListener.refPointGiven(point); if (this.m_RefPointListener != null) {
this.m_RefPointListener.refPointGiven(point);
}
this.m_View.updateView(); this.m_View.updateView();
} }

View File

@ -157,12 +157,18 @@ public class ParetoFrontView2D extends JPanel implements InterfaceParetoFrontVie
this.m_Area.removeAll(); this.m_Area.removeAll();
// first set the names of the objectives // first set the names of the objectives
String[] tmpS = this.getAvailableObjectiveNames(); String[] tmpS = this.getAvailableObjectiveNames();
if (tmpS.length != this.m_JCObjective1.getItemCount()) updateObjectiveComboBoxes(); if (tmpS.length != this.m_JCObjective1.getItemCount()) {
updateObjectiveComboBoxes();
}
boolean equal = true; boolean equal = true;
for (int i = 0; i < tmpS.length; i++) { for (int i = 0; i < tmpS.length; i++) {
if (!tmpS[i].equalsIgnoreCase((String)this.m_JCObjective1.getItemAt(i))) equal = false; if (!tmpS[i].equalsIgnoreCase((String)this.m_JCObjective1.getItemAt(i))) {
equal = false;
}
}
if (!equal) {
updateObjectiveComboBoxes();
} }
if (!equal) updateObjectiveComboBoxes();
if (this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem instanceof InterfaceMultiObjectiveDeNovoProblem) { if (this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem instanceof InterfaceMultiObjectiveDeNovoProblem) {
//InterfaceOptimizationObjective[] tmp = ((InterfaceMultiObjectiveDeNovoProblem)this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem).getProblemObjectives(); //InterfaceOptimizationObjective[] tmp = ((InterfaceMultiObjectiveDeNovoProblem)this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem).getProblemObjectives();
String[] objectives = this.getAvailableObjectiveNames(); String[] objectives = this.getAvailableObjectiveNames();
@ -201,29 +207,49 @@ public class ParetoFrontView2D extends JPanel implements InterfaceParetoFrontVie
for (int j = 0; j < ((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_FitnessCache.get(i)).size(); j++) { for (int j = 0; j < ((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_FitnessCache.get(i)).size(); j++) {
fitness = (double[])((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_FitnessCache.get(i)).get(j); fitness = (double[])((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_FitnessCache.get(i)).get(j);
myPoint = new DPoint(fitness[indexX], fitness[indexY]); myPoint = new DPoint(fitness[indexX], fitness[indexY]);
if (((Double)((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ConstraintCache.get(i)).get(j)).doubleValue() == 0) if (((Double)((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ConstraintCache.get(i)).get(j)).doubleValue() == 0) {
myPoint.setIcon(new Chart2DDPointIconCross()); myPoint.setIcon(new Chart2DDPointIconCross());
else }
else {
myPoint.setIcon(new Chart2DDPointIconPoint()); myPoint.setIcon(new Chart2DDPointIconPoint());
}
mySet.addDPoint(myPoint); mySet.addDPoint(myPoint);
if (fitness[indexX] < xmin) xmin = fitness[indexX]; if (fitness[indexX] < xmin) {
if (fitness[indexX] > xmax) xmax = fitness[indexX]; xmin = fitness[indexX];
if (fitness[indexY] < ymin) ymin = fitness[indexY]; }
if (fitness[indexY] > ymax) ymax = fitness[indexY]; if (fitness[indexX] > xmax) {
xmax = fitness[indexX];
}
if (fitness[indexY] < ymin) {
ymin = fitness[indexY];
}
if (fitness[indexY] > ymax) {
ymax = fitness[indexY];
}
} }
} else { } else {
for (int j = 0; j < ((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ObjectiveCache.get(i)).size(); j++) { for (int j = 0; j < ((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ObjectiveCache.get(i)).size(); j++) {
fitness = (double[])((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ObjectiveCache.get(i)).get(j); fitness = (double[])((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ObjectiveCache.get(i)).get(j);
myPoint = new DPoint(fitness[indexX], fitness[indexY]); myPoint = new DPoint(fitness[indexX], fitness[indexY]);
if (((Double)((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ConstraintCache.get(i)).get(j)).doubleValue() == 0) if (((Double)((ArrayList)this.m_MOCCOViewer.m_MOCCO.m_State.m_ConstraintCache.get(i)).get(j)).doubleValue() == 0) {
myPoint.setIcon(new Chart2DDPointIconCross()); myPoint.setIcon(new Chart2DDPointIconCross());
else }
else {
myPoint.setIcon(new Chart2DDPointIconPoint()); myPoint.setIcon(new Chart2DDPointIconPoint());
}
mySet.addDPoint(myPoint); mySet.addDPoint(myPoint);
if (fitness[indexX] < xmin) xmin = fitness[indexX]; if (fitness[indexX] < xmin) {
if (fitness[indexX] > xmax) xmax = fitness[indexX]; xmin = fitness[indexX];
if (fitness[indexY] < ymin) ymin = fitness[indexY]; }
if (fitness[indexY] > ymax) ymax = fitness[indexY]; if (fitness[indexX] > xmax) {
xmax = fitness[indexX];
}
if (fitness[indexY] < ymin) {
ymin = fitness[indexY];
}
if (fitness[indexY] > ymax) {
ymax = fitness[indexY];
}
} }
} }
} }
@ -249,15 +275,25 @@ public class ParetoFrontView2D extends JPanel implements InterfaceParetoFrontVie
} }
point = new DPoint(fitness[indexX], fitness[indexY]); point = new DPoint(fitness[indexX], fitness[indexY]);
icon = new Chart2DDPointContentSelectable(); icon = new Chart2DDPointContentSelectable();
if (this.m_MOCCOViewer.m_RefSolutionSelectable) ((Chart2DDPointContentSelectable)icon).addSelectionListener(this.m_MOCCOViewer); if (this.m_MOCCOViewer.m_RefSolutionSelectable) {
((Chart2DDPointContentSelectable)icon).addSelectionListener(this.m_MOCCOViewer);
}
((InterfaceDPointWithContent)icon).setProblem(this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem); ((InterfaceDPointWithContent)icon).setProblem(this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem);
((InterfaceDPointWithContent)icon).setEAIndividual((AbstractEAIndividual)pf.get(i)); ((InterfaceDPointWithContent)icon).setEAIndividual((AbstractEAIndividual)pf.get(i));
point.setIcon(icon); point.setIcon(icon);
mySet.addDPoint(point); mySet.addDPoint(point);
if (fitness[indexX] < xmin) xmin = fitness[indexX]; if (fitness[indexX] < xmin) {
if (fitness[indexX] > xmax) xmax = fitness[indexX]; xmin = fitness[indexX];
if (fitness[indexY] < ymin) ymin = fitness[indexY]; }
if (fitness[indexY] > ymax) ymax = fitness[indexY]; if (fitness[indexX] > xmax) {
xmax = fitness[indexX];
}
if (fitness[indexY] < ymin) {
ymin = fitness[indexY];
}
if (fitness[indexY] > ymax) {
ymax = fitness[indexY];
}
} }
} }

View File

@ -69,7 +69,9 @@ class SimpleView extends JComponent implements InterfaceRefPointListener {
} else { } else {
int index = 0; int index = 0;
for (int i = 0; i < this.m_Obj1; i++) { for (int i = 0; i < this.m_Obj1; i++) {
if (!tmpObj[i].getOptimizationMode().equalsIgnoreCase("Constraint")) index++; if (!tmpObj[i].getOptimizationMode().equalsIgnoreCase("Constraint")) {
index++;
}
} }
// System.out.println("obj 1 is accessing fitness of " + tmpObj[this.m_Obj1].getIdentName() + " using " +index); // System.out.println("obj 1 is accessing fitness of " + tmpObj[this.m_Obj1].getIdentName() + " using " +index);
@ -81,7 +83,9 @@ class SimpleView extends JComponent implements InterfaceRefPointListener {
} else { } else {
int index = 0; int index = 0;
for (int i = 0; i < this.m_Obj2; i++) { for (int i = 0; i < this.m_Obj2; i++) {
if (!tmpObj[i].getOptimizationMode().equalsIgnoreCase("Constraint")) index++; if (!tmpObj[i].getOptimizationMode().equalsIgnoreCase("Constraint")) {
index++;
}
} }
// System.out.println("obj 2 is accessing fitness of " + tmpObj[this.m_Obj2].getIdentName() + " using " +index); // System.out.println("obj 2 is accessing fitness of " + tmpObj[this.m_Obj2].getIdentName() + " using " +index);
// System.out.println(" fitness.length = " + indy.getFitness().length); // System.out.println(" fitness.length = " + indy.getFitness().length);
@ -123,21 +127,35 @@ class SimpleView extends JComponent implements InterfaceRefPointListener {
plotValue = this.fetchPlotValueFor((AbstractEAIndividual)pf.get(i)); plotValue = this.fetchPlotValueFor((AbstractEAIndividual)pf.get(i));
point = new DPoint(plotValue[0], plotValue[1]); point = new DPoint(plotValue[0], plotValue[1]);
icon = new Chart2DDPointContentSelectable(); icon = new Chart2DDPointContentSelectable();
if (this.m_Dad.m_MOCCOViewer.m_RefSolutionSelectable) ((Chart2DDPointContentSelectable)icon).addSelectionListener(this.m_Dad.m_MOCCOViewer); if (this.m_Dad.m_MOCCOViewer.m_RefSolutionSelectable) {
((Chart2DDPointContentSelectable)icon).addSelectionListener(this.m_Dad.m_MOCCOViewer);
}
((InterfaceDPointWithContent)icon).setProblem(this.m_Dad.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem); ((InterfaceDPointWithContent)icon).setProblem(this.m_Dad.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem);
((InterfaceDPointWithContent)icon).setEAIndividual((AbstractEAIndividual)pf.get(i)); ((InterfaceDPointWithContent)icon).setEAIndividual((AbstractEAIndividual)pf.get(i));
point.setIcon(icon); point.setIcon(icon);
mySet.addDPoint(point); mySet.addDPoint(point);
if (plotValue[0] < xmin) xmin = plotValue[0]; if (plotValue[0] < xmin) {
if (plotValue[0] > xmax) xmax = plotValue[0]; xmin = plotValue[0];
if (plotValue[1] < ymin) ymin = plotValue[1]; }
if (plotValue[1] > ymax) ymax = plotValue[1]; if (plotValue[0] > xmax) {
xmax = plotValue[0];
}
if (plotValue[1] < ymin) {
ymin = plotValue[1];
}
if (plotValue[1] > ymax) {
ymax = plotValue[1];
}
} }
mySet = new GraphPointSet(0, this.m_Area); mySet = new GraphPointSet(0, this.m_Area);
mySet.setConnectedMode(false); mySet.setConnectedMode(false);
double xrange = (xmax - xmin), yrange = (ymax - ymin); double xrange = (xmax - xmin), yrange = (ymax - ymin);
if (xrange < 0.0000001) xrange = 0.0000001; if (xrange < 0.0000001) {
if (yrange < 0.0000001) yrange = 0.0000001; xrange = 0.0000001;
}
if (yrange < 0.0000001) {
yrange = 0.0000001;
}
if ((new Double(xrange)).isNaN()) { if ((new Double(xrange)).isNaN()) {
mySet.addDPoint(0, 0); mySet.addDPoint(0, 0);
mySet.addDPoint(1, 1); mySet.addDPoint(1, 1);
@ -335,8 +353,12 @@ public class ParetoFrontViewScatterPlot extends JPanel implements InterfaceParet
// first set the names of the objectives // first set the names of the objectives
InterfaceOptimizationObjective[] tmp = ((InterfaceMultiObjectiveDeNovoProblem)this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem).getProblemObjectives(); InterfaceOptimizationObjective[] tmp = ((InterfaceMultiObjectiveDeNovoProblem)this.m_MOCCOViewer.m_MOCCO.m_State.m_CurrentProblem).getProblemObjectives();
if (this.m_Scatter == null) this.makeScatter(); if (this.m_Scatter == null) {
if (this.m_Scatter.length != tmp.length) this.makeScatter(); this.makeScatter();
}
if (this.m_Scatter.length != tmp.length) {
this.makeScatter();
}
if (this.m_Scatter != null) { if (this.m_Scatter != null) {
for (int i = 0; i < tmp.length; i++) { for (int i = 0; i < tmp.length; i++) {
for (int j = 0; j < tmp.length; j++) { for (int j = 0; j < tmp.length; j++) {

View File

@ -39,11 +39,15 @@ public abstract class AbstractArchiving implements InterfaceArchiving, java.io.S
public boolean isDominant(AbstractEAIndividual indy, Population pop) { public boolean isDominant(AbstractEAIndividual indy, Population pop) {
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.m_ObeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominatingDebConstraints(indy))) return false; if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominatingDebConstraints(indy))) {
return false;
}
} }
} else { } else {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominating(indy))) return false; if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominating(indy))) {
return false;
}
} }
} }
return true; return true;
@ -63,8 +67,12 @@ public abstract class AbstractArchiving implements InterfaceArchiving, java.io.S
tmpFitness = ((AbstractEAIndividual)archive.get(i)).getFitness(); tmpFitness = ((AbstractEAIndividual)archive.get(i)).getFitness();
try { try {
for (int j = 0; j < indyFitness.length; j++) { for (int j = 0; j < indyFitness.length; j++) {
if (indyFitness[j] <= tmpFitness[j]) isDominating &= true; if (indyFitness[j] <= tmpFitness[j]) {
else isDominating &= false; isDominating &= true;
}
else {
isDominating &= false;
}
} }
} catch (java.lang.ArrayIndexOutOfBoundsException e) { } catch (java.lang.ArrayIndexOutOfBoundsException e) {
//System.out.println("-------addIndividualToArchive-------("+indyFitness.length+"/"+tmpFitness.length+")"); //System.out.println("-------addIndividualToArchive-------("+indyFitness.length+"/"+tmpFitness.length+")");
@ -144,7 +152,9 @@ public abstract class AbstractArchiving implements InterfaceArchiving, java.io.S
myPoint.setIcon(icons[index]); myPoint.setIcon(icons[index]);
mySet.addDPoint(myPoint); mySet.addDPoint(myPoint);
} }
if (lastValue != null) plot.setConnectedPoint(lastValue[0], lastValue[1], 20000+p); if (lastValue != null) {
plot.setConnectedPoint(lastValue[0], lastValue[1], 20000+p);
}
p++; p++;
} }

View File

@ -35,7 +35,9 @@ public class ArchivingAllDominating extends AbstractArchiving implements java.io
@Override @Override
public void addElementsToArchive(Population pop) { public void addElementsToArchive(Population pop) {
if (pop.getArchive() == null) pop.SetArchive(new Population()); if (pop.getArchive() == null) {
pop.SetArchive(new Population());
}
// System.out.println("addElementsToArchive"); // System.out.println("addElementsToArchive");
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.m_ObeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {

View File

@ -46,7 +46,9 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
public void addElementsToArchive(Population pop) { public void addElementsToArchive(Population pop) {
Population archive; Population archive;
double[] tmpD; double[] tmpD;
if (pop.getArchive() == null) pop.SetArchive(new Population()); if (pop.getArchive() == null) {
pop.SetArchive(new Population());
}
// First merge the current population and the archive // First merge the current population and the archive
Population tmpPop = new Population(); Population tmpPop = new Population();

View File

@ -34,7 +34,9 @@ public class ArchivingNSGA extends AbstractArchiving implements java.io.Serializ
@Override @Override
public void addElementsToArchive(Population pop) { public void addElementsToArchive(Population pop) {
if (pop.getArchive() == null) pop.SetArchive(new Population()); if (pop.getArchive() == null) {
pop.SetArchive(new Population());
}
// test for each element in population if it // test for each element in population if it
// is dominating a element in the archive // is dominating a element in the archive

View File

@ -35,7 +35,9 @@ public class ArchivingNSGAII extends ArchivingNSGA implements java.io.Serializab
@Override @Override
public void addElementsToArchive(Population pop) { public void addElementsToArchive(Population pop) {
if (pop.getArchive() == null) pop.SetArchive(new Population()); if (pop.getArchive() == null) {
pop.SetArchive(new Population());
}
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
if (this.m_Debug && false) { if (this.m_Debug && false) {

Some files were not shown because too many files have changed in this diff Show More