Merging MK revs. 488,489;
Moving EvAProperties from client to EvAInfo.
This commit is contained in:
		@@ -1,5 +1,10 @@
 | 
			
		||||
package eva2;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.Properties;
 | 
			
		||||
 | 
			
		||||
import eva2.tools.BasicResourceLoader;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Main product and version information strings.
 | 
			
		||||
 * 
 | 
			
		||||
@@ -68,10 +73,11 @@ package eva2;
 | 
			
		||||
 * @author mkron
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class EvAInfo {
 | 
			
		||||
	public static final String productName = "EvA2";
 | 
			
		||||
	public static final String productLongName = "Evolutionary Algorithms Workbench 2";
 | 
			
		||||
	public static final String versionNum = new String ("2.043");
 | 
			
		||||
	// public static final String fullVersion = "2.043"; // moved to EvA2.props!
 | 
			
		||||
	public static final String url = "http://www.ra.cs.uni-tuebingen.de/software/EvA2";
 | 
			
		||||
 | 
			
		||||
	public static final String propertyFile = "resources/EvA2.props";
 | 
			
		||||
@@ -83,4 +89,48 @@ public class EvAInfo {
 | 
			
		||||
	public static final String infoTitle = productName+" Information";
 | 
			
		||||
	public static final String copyrightYear = "2010";
 | 
			
		||||
 | 
			
		||||
	////////////// Property handling...
 | 
			
		||||
	
 | 
			
		||||
	private static Properties EVA_PROPERTIES;
 | 
			
		||||
	static {
 | 
			
		||||
		try {
 | 
			
		||||
			EVA_PROPERTIES = BasicResourceLoader.readProperties(EvAInfo.propertyFile);
 | 
			
		||||
		} catch (Exception ex) {
 | 
			
		||||
			System.err.println("ERROR! Could not read the configuration file "+ EvAInfo.propertyFile);
 | 
			
		||||
			System.err.println(ex.getMessage());
 | 
			
		||||
			System.exit(1);
 | 
			
		||||
		}
 | 
			
		||||
		File f=new File(EvAInfo.iconLocation);
 | 
			
		||||
		if (!f.exists()) {
 | 
			
		||||
			System.err.println("Error: Could not find EvA2 resources. Did you copy the resources folder to working directory?");
 | 
			
		||||
			System.exit(2);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static String getProperty(String key) {
 | 
			
		||||
		String myVal = EVA_PROPERTIES.getProperty(key);
 | 
			
		||||
		return myVal;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static Properties getProperties() {
 | 
			
		||||
		return EVA_PROPERTIES;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private static void setProperty(String key, String value) {
 | 
			
		||||
		EVA_PROPERTIES.setProperty(key, value);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static String getVersion() {
 | 
			
		||||
		String version = getProperty("EvA2Version");
 | 
			
		||||
		if (version==null) System.err.println("ERROR, missing property EvA2Version!");
 | 
			
		||||
		return version;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static String propDefaultModule() {
 | 
			
		||||
		return getProperty("DefaultModule");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static String propShowModules() {
 | 
			
		||||
		return getProperty("ShowModules");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ public class ClassPreloader implements Runnable {
 | 
			
		||||
		if (clsNames !=null) {
 | 
			
		||||
			for (int i = 0; i < clsNames.length; i++) {
 | 
			
		||||
				if (TRACE) System.out.println("Preloading " + clsNames[i]);
 | 
			
		||||
				GenericObjectEditor.getClassesFromClassPath(clsNames[i]);
 | 
			
		||||
				GenericObjectEditor.getClassesFromClassPath(clsNames[i], null);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,6 @@ import eva2.tools.jproxy.RemoteStateListener;
 | 
			
		||||
public class EvAClient implements RemoteStateListener, Serializable {
 | 
			
		||||
	private final int splashScreenTime = 1500;
 | 
			
		||||
	private final int maxWindowMenuLength = 30;
 | 
			
		||||
	private static Properties EVA_PROPERTIES;
 | 
			
		||||
	
 | 
			
		||||
	public static boolean TRACE = false;
 | 
			
		||||
 | 
			
		||||
@@ -145,31 +144,6 @@ public class EvAClient implements RemoteStateListener, Serializable {
 | 
			
		||||
			return superListenerList.remove(l);
 | 
			
		||||
		} else return false;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static String getProperty(String key) {
 | 
			
		||||
		String myVal = EVA_PROPERTIES.getProperty(key);
 | 
			
		||||
		return myVal;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static Properties getProperties() {
 | 
			
		||||
		return EVA_PROPERTIES;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static void setProperty(String key, String value) {
 | 
			
		||||
		EVA_PROPERTIES.setProperty(key, value);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Statically loading Properties.
 | 
			
		||||
	 */
 | 
			
		||||
	static {
 | 
			
		||||
		try {
 | 
			
		||||
			EVA_PROPERTIES = BasicResourceLoader.readProperties(EvAInfo.propertyFile);
 | 
			
		||||
		} catch (Exception ex) {
 | 
			
		||||
			System.err.println("Could not read the configuration file "+ EvAInfo.propertyFile);
 | 
			
		||||
			ex.printStackTrace();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Constructor of GUI of EvA2.
 | 
			
		||||
@@ -298,7 +272,7 @@ public class EvAClient implements RemoteStateListener, Serializable {
 | 
			
		||||
	 */
 | 
			
		||||
	private void init(String hostName, String paramsFile, final Window parent) {
 | 
			
		||||
		//EVA_EDITOR_PROPERTIES
 | 
			
		||||
		useDefaultModule = getProperty("DefaultModule");
 | 
			
		||||
		useDefaultModule = EvAInfo.propDefaultModule();
 | 
			
		||||
		
 | 
			
		||||
		if (useDefaultModule != null) {
 | 
			
		||||
			useDefaultModule = useDefaultModule.trim();
 | 
			
		||||
@@ -312,7 +286,7 @@ public class EvAClient implements RemoteStateListener, Serializable {
 | 
			
		||||
			try {
 | 
			
		||||
				m_Frame.setIconImage(Toolkit.getDefaultToolkit().createImage(bytes));
 | 
			
		||||
			} catch (java.lang.NullPointerException e) {
 | 
			
		||||
				System.out.println("Could not find EvA2 icon, please move resources folder to working directory!");
 | 
			
		||||
				System.err.println("Could not find EvA2 icon, please move resources folder to working directory!");
 | 
			
		||||
			}
 | 
			
		||||
//			m_Frame.setTitle(EvAInfo.productName + " workbench");
 | 
			
		||||
 | 
			
		||||
@@ -328,7 +302,7 @@ public class EvAClient implements RemoteStateListener, Serializable {
 | 
			
		||||
			m_ProgressBar = new JProgressBar();
 | 
			
		||||
			m_Frame.getContentPane().add(m_ProgressBar, BorderLayout.SOUTH);
 | 
			
		||||
 | 
			
		||||
			if (getProperty("ShowModules") != null) showLoadModules = true;
 | 
			
		||||
			if (EvAInfo.propShowModules() != null) showLoadModules = true;
 | 
			
		||||
			else showLoadModules = false; // may be set to true again if default module couldnt be loaded
 | 
			
		||||
 | 
			
		||||
			createActions();
 | 
			
		||||
@@ -424,7 +398,7 @@ public class EvAClient implements RemoteStateListener, Serializable {
 | 
			
		||||
		sbuf.append(" - ");
 | 
			
		||||
		sbuf.append(EvAInfo.productLongName);
 | 
			
		||||
		sbuf.append(" - Version ");
 | 
			
		||||
		sbuf.append(EvAInfo.versionNum);
 | 
			
		||||
		sbuf.append(EvAInfo.getVersion());
 | 
			
		||||
		sbuf.append("\n");
 | 
			
		||||
		sbuf.append("License: ");
 | 
			
		||||
		sbuf.append(EvAInfo.LGPLFile);
 | 
			
		||||
@@ -885,7 +859,7 @@ public class EvAClient implements RemoteStateListener, Serializable {
 | 
			
		||||
				"\n University of Tübingen\n Chair for Computer Architecture\n " +
 | 
			
		||||
				"M. Kronfeld, H. Planatscher, M. de Paly, A. Dräger, F. Streichert, H. Ulmer\n " +
 | 
			
		||||
//				"H. Ulmer & F. Streichert & H. Planatscher & M. de Paly & M. Kronfeld\n" +
 | 
			
		||||
				"Prof. Dr. Andreas Zell \n (c) " + EvAInfo.copyrightYear + "\n Version " + EvAInfo.versionNum + 
 | 
			
		||||
				"Prof. Dr. Andreas Zell \n (c) " + EvAInfo.copyrightYear + "\n Version " + EvAInfo.getVersion()+ 
 | 
			
		||||
				"\n URL: " + EvAInfo.url, EvAInfo.infoTitle, 1);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
@@ -15,21 +15,17 @@ package eva2.client;
 | 
			
		||||
 *==========================================================================*/
 | 
			
		||||
 | 
			
		||||
import java.rmi.RemoteException;
 | 
			
		||||
import java.rmi.registry.Registry;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
import eva2.EvAInfo;
 | 
			
		||||
import eva2.gui.LogPanel;
 | 
			
		||||
import eva2.server.EvAMainAdapter;
 | 
			
		||||
import eva2.server.EvAMainAdapterImpl;
 | 
			
		||||
import eva2.server.RMIServerEvA;
 | 
			
		||||
import eva2.server.modules.ModuleAdapter;
 | 
			
		||||
import eva2.tools.jproxy.ComAdapter;
 | 
			
		||||
import eva2.tools.jproxy.MainAdapter;
 | 
			
		||||
import eva2.tools.jproxy.MainAdapterClient;
 | 
			
		||||
import eva2.tools.jproxy.MainAdapterClientImpl;
 | 
			
		||||
import eva2.tools.jproxy.RMIConnection;
 | 
			
		||||
import eva2.tools.jproxy.RMIInvocationHandler;
 | 
			
		||||
import eva2.tools.jproxy.RMIProxyLocal;
 | 
			
		||||
 | 
			
		||||
/*==========================================================================*
 | 
			
		||||
 * CLASS DECLARATION
 | 
			
		||||
@@ -54,7 +50,7 @@ public class EvAComAdapter extends ComAdapter {
 | 
			
		||||
	public static EvAComAdapter getInstance() {
 | 
			
		||||
		if (m_instance==null) {
 | 
			
		||||
			m_instance = new EvAComAdapter();
 | 
			
		||||
			m_instance.addServersFromProperties(EvAClient.getProperties());
 | 
			
		||||
			m_instance.addServersFromProperties(EvAInfo.getProperties());
 | 
			
		||||
		}
 | 
			
		||||
		return (EvAComAdapter)m_instance;
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package eva2.gui;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.awt.BorderLayout;
 | 
			
		||||
import java.awt.Component;
 | 
			
		||||
import java.awt.GridLayout;
 | 
			
		||||
import java.awt.Window;
 | 
			
		||||
import java.awt.event.ActionEvent;
 | 
			
		||||
@@ -11,24 +12,22 @@ import java.awt.event.ItemListener;
 | 
			
		||||
import java.beans.PropertyChangeEvent;
 | 
			
		||||
import java.beans.PropertyChangeListener;
 | 
			
		||||
import java.beans.PropertyChangeSupport;
 | 
			
		||||
import java.io.BufferedInputStream;
 | 
			
		||||
import java.io.BufferedOutputStream;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.FileInputStream;
 | 
			
		||||
import java.io.FileOutputStream;
 | 
			
		||||
import java.io.ObjectInputStream;
 | 
			
		||||
import java.io.ObjectOutputStream;
 | 
			
		||||
import java.lang.reflect.Method;
 | 
			
		||||
import java.lang.reflect.Modifier;
 | 
			
		||||
import java.lang.reflect.Proxy;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Vector;
 | 
			
		||||
 | 
			
		||||
import javax.swing.BorderFactory;
 | 
			
		||||
import javax.swing.DefaultComboBoxModel;
 | 
			
		||||
import javax.swing.JButton;
 | 
			
		||||
import javax.swing.JComboBox;
 | 
			
		||||
import javax.swing.JFileChooser;
 | 
			
		||||
import javax.swing.JList;
 | 
			
		||||
import javax.swing.JOptionPane;
 | 
			
		||||
import javax.swing.JPanel;
 | 
			
		||||
import javax.swing.JScrollPane;
 | 
			
		||||
import javax.swing.plaf.basic.BasicComboBoxRenderer;
 | 
			
		||||
 | 
			
		||||
import eva2.server.go.tools.FileTools;
 | 
			
		||||
import eva2.tools.EVAHELP;
 | 
			
		||||
@@ -58,8 +57,10 @@ public class GOEPanel extends JPanel implements ItemListener {
 | 
			
		||||
	/** edit source button */
 | 
			
		||||
//	private JButton m_editSourceBut;
 | 
			
		||||
	/** Creates the GUI editor component */
 | 
			
		||||
	private Vector<String> m_ClassesLongName;
 | 
			
		||||
//	private Vector<String> m_ClassesLongName;
 | 
			
		||||
	private GenericObjectEditor m_goe = null;
 | 
			
		||||
	private boolean withComboBoxToolTips = true; // should tool tips for the combo box be created?
 | 
			
		||||
	private int tipMaxLen = 100; // maximum length of tool tip
 | 
			
		||||
//	private String[] m_ClassesShortName;
 | 
			
		||||
//	private SourceCodeEditor m_SourceCodeEditor;
 | 
			
		||||
//	private PropertyDialog m_SourceCodeEditorFrame;
 | 
			
		||||
@@ -256,21 +257,42 @@ public class GOEPanel extends JPanel implements ItemListener {
 | 
			
		||||
	 */
 | 
			
		||||
	protected void updateClassType() {
 | 
			
		||||
		if (TRACE) System.out.println("# updating class "+m_goe.getClassType().getName());
 | 
			
		||||
		
 | 
			
		||||
		Vector<String> classesLongNames;
 | 
			
		||||
		ArrayList<Class<?>> instances = new ArrayList<Class<?>>(5);
 | 
			
		||||
		if (Proxy.isProxyClass(m_goe.getClassType())) {
 | 
			
		||||
			if (TRACE) System.out.println("PROXY! original was " + ((RMIProxyLocal)Proxy.getInvocationHandler(((Proxy)m_goe.getValue()))).getOriginalClass().getName());
 | 
			
		||||
			m_ClassesLongName = new Vector<String>(GenericObjectEditor.getClassesFromProperties(((RMIProxyLocal)Proxy.getInvocationHandler(((Proxy)m_goe.getValue()))).getOriginalClass().getName()));
 | 
			
		||||
			classesLongNames = new Vector<String>(GenericObjectEditor.getClassesFromProperties(((RMIProxyLocal)Proxy.getInvocationHandler(((Proxy)m_goe.getValue()))).getOriginalClass().getName(), null));
 | 
			
		||||
		} else {		
 | 
			
		||||
			m_ClassesLongName = new Vector<String>(GenericObjectEditor.getClassesFromProperties(m_goe.getClassType().getName()));
 | 
			
		||||
			classesLongNames = new Vector<String>(GenericObjectEditor.getClassesFromProperties(m_goe.getClassType().getName(), instances));
 | 
			
		||||
		}
 | 
			
		||||
		m_ObjectChooser.setModel(new DefaultComboBoxModel(m_ClassesLongName));
 | 
			
		||||
		if (m_ClassesLongName.size() > 1)  // testhu
 | 
			
		||||
		if (classesLongNames.size() > 1) {
 | 
			
		||||
			m_ObjectChooser.setModel(new DefaultComboBoxModel(classesLongNames));
 | 
			
		||||
			if (withComboBoxToolTips) m_ObjectChooser.setRenderer(new ToolTipComboBoxRenderer(collectComboToolTips(instances, tipMaxLen) ));
 | 
			
		||||
			add(m_ObjectChooser, BorderLayout.NORTH);
 | 
			
		||||
		else
 | 
			
		||||
			remove(m_ObjectChooser);
 | 
			
		||||
		} else remove(m_ObjectChooser);
 | 
			
		||||
		if (TRACE) System.out.println("# done updating class "+m_goe.getClassType().getName());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private String[] collectComboToolTips(List<Class<?>> instances, int maxLen) {
 | 
			
		||||
		String[] tips = new String[instances.size()];
 | 
			
		||||
		for (int i=0; i<tips.length; i++) {
 | 
			
		||||
			tips[i]=null;
 | 
			
		||||
			Class[] classParams = new Class[]{};
 | 
			
		||||
			try {
 | 
			
		||||
				String tip=null;
 | 
			
		||||
				Method giMeth = instances.get(i).getDeclaredMethod("globalInfo", classParams);
 | 
			
		||||
				if (Modifier.isStatic(giMeth.getModifiers())) {
 | 
			
		||||
					tip = (String)giMeth.invoke(null, (Object[])null);
 | 
			
		||||
				}
 | 
			
		||||
				if (tip!=null) {
 | 
			
		||||
					if (tip.length()<=maxLen) tips[i]=tip;
 | 
			
		||||
					else tips[i] = tip.substring(0,maxLen-2)+"..";
 | 
			
		||||
				}
 | 
			
		||||
			} catch (Exception e) {}
 | 
			
		||||
		}
 | 
			
		||||
		return tips;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected void updateChooser() {
 | 
			
		||||
		String objectName =  /*EVAHELP.cutClassName*/ (m_goe.getValue().getClass().getName());
 | 
			
		||||
		boolean found = false;
 | 
			
		||||
@@ -386,5 +408,32 @@ public class GOEPanel extends JPanel implements ItemListener {
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
} // end of inner class
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class ToolTipComboBoxRenderer extends BasicComboBoxRenderer {
 | 
			
		||||
	private static final long serialVersionUID = -5781643352198561208L;
 | 
			
		||||
	String[] toolTips = null;
 | 
			
		||||
	
 | 
			
		||||
	public ToolTipComboBoxRenderer(String[] tips) {
 | 
			
		||||
		super();
 | 
			
		||||
		toolTips=tips;
 | 
			
		||||
	}
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public Component getListCellRendererComponent(JList list, Object value,
 | 
			
		||||
        int index, boolean isSelected, boolean cellHasFocus) {
 | 
			
		||||
      if (isSelected) {
 | 
			
		||||
        setBackground(list.getSelectionBackground());
 | 
			
		||||
        setForeground(list.getSelectionForeground());
 | 
			
		||||
        if ((toolTips!=null) && (index >= 0)) {
 | 
			
		||||
        	if (toolTips[index]!=null) list.setToolTipText(toolTips[index]);
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        setBackground(list.getBackground());
 | 
			
		||||
        setForeground(list.getForeground());
 | 
			
		||||
      }
 | 
			
		||||
      setFont(list.getFont());
 | 
			
		||||
      setText((value == null) ? "" : value.toString());
 | 
			
		||||
      return this;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -53,14 +53,14 @@ public class GenericObjectEditor implements PropertyEditor {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Read the classes available for user selection from the properties or the classpath respectively
 | 
			
		||||
	 */
 | 
			
		||||
	public static ArrayList<String> getClassesFromProperties(String className) {
 | 
			
		||||
	public static ArrayList<String> getClassesFromProperties(String className, ArrayList<Class<?>> instances) {
 | 
			
		||||
		if (TRACE) System.out.println("getClassesFromProperties - requesting className: "+className);
 | 
			
		||||
		
 | 
			
		||||
		// Try to read the predefined classes from the props file.
 | 
			
		||||
		String typeOptions = EvAClient.getProperty(className);
 | 
			
		||||
		String typeOptions = EvAInfo.getProperty(className);
 | 
			
		||||
		if (typeOptions == null) {
 | 
			
		||||
			// If none are defined, all assignable classes are searched the hard way, using the ReflectPackage 
 | 
			
		||||
			return getClassesFromClassPath(className);
 | 
			
		||||
			return getClassesFromClassPath(className, instances);
 | 
			
		||||
		} else {
 | 
			
		||||
			StringTokenizer st = new StringTokenizer(typeOptions, ", ");
 | 
			
		||||
			ArrayList<String> classes = new ArrayList<String>();
 | 
			
		||||
@@ -68,7 +68,8 @@ public class GenericObjectEditor implements PropertyEditor {
 | 
			
		||||
				String current = st.nextToken().trim();
 | 
			
		||||
				//System.out.println("current ="+current);
 | 
			
		||||
				try {
 | 
			
		||||
					Class.forName(current); // test for instantiability
 | 
			
		||||
					Class<?> clz = Class.forName(current); // test for instantiability
 | 
			
		||||
					if (instances!=null) instances.add(clz);
 | 
			
		||||
					classes.add(current);
 | 
			
		||||
				} catch (Exception ex) {
 | 
			
		||||
					System.err.println("Couldn't load class with name: " + current);
 | 
			
		||||
@@ -90,7 +91,7 @@ public class GenericObjectEditor implements PropertyEditor {
 | 
			
		||||
	 * @param className
 | 
			
		||||
	 * @return
 | 
			
		||||
	 */
 | 
			
		||||
	public static ArrayList<String> getClassesFromClassPath(String className) { 
 | 
			
		||||
	public static ArrayList<String> getClassesFromClassPath(String className, ArrayList<Class<?>> instances) { 
 | 
			
		||||
		ArrayList<String> classes = new ArrayList<String>();
 | 
			
		||||
		Class<?>[] clsArr;
 | 
			
		||||
		clsArr=ReflectPackage.getAssignableClasses(className, true, true);
 | 
			
		||||
@@ -119,6 +120,7 @@ public class GenericObjectEditor implements PropertyEditor {
 | 
			
		||||
					try {
 | 
			
		||||
						Class<?>[] params = new Class[0];
 | 
			
		||||
						class1.getConstructor(params);
 | 
			
		||||
						if (instances!=null) instances.add(class1);
 | 
			
		||||
						classes.add(class1.getName());
 | 
			
		||||
					} catch (NoSuchMethodException e) {
 | 
			
		||||
						System.err.println("GOE warning: Class " + class1.getName() + " has no default constructor, skipping...");
 | 
			
		||||
@@ -264,9 +266,9 @@ public class GenericObjectEditor implements PropertyEditor {
 | 
			
		||||
		Vector<String> v=null;
 | 
			
		||||
		if (Proxy.isProxyClass(m_ClassType)) {
 | 
			
		||||
			if (TRACE) System.out.println("PROXY! original was " + ((RMIProxyLocal)Proxy.getInvocationHandler(((Proxy)m_Object))).getOriginalClass().getName());
 | 
			
		||||
			v = new Vector<String>(getClassesFromProperties(((RMIProxyLocal)Proxy.getInvocationHandler(((Proxy)m_Object))).getOriginalClass().getName()));
 | 
			
		||||
			v = new Vector<String>(getClassesFromProperties(((RMIProxyLocal)Proxy.getInvocationHandler(((Proxy)m_Object))).getOriginalClass().getName(), null));
 | 
			
		||||
		} else {		
 | 
			
		||||
			v = new Vector<String>(getClassesFromProperties(m_ClassType.getName()));
 | 
			
		||||
			v = new Vector<String>(getClassesFromProperties(m_ClassType.getName(), null));
 | 
			
		||||
		}
 | 
			
		||||
				
 | 
			
		||||
//		v = new Vector<String>(getClassesFromProperties(m_ClassType.getName()));
 | 
			
		||||
@@ -288,7 +290,7 @@ public class GenericObjectEditor implements PropertyEditor {
 | 
			
		||||
	public void setValue(Object o) {
 | 
			
		||||
		//System.err.println("setValue()" + m_ClassType.toString());
 | 
			
		||||
 | 
			
		||||
		if (m_ClassType == null) {
 | 
			
		||||
		if (o==null || m_ClassType == null) {
 | 
			
		||||
			System.err.println("No ClassType set up for GenericObjectEditor!!");
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -776,7 +776,7 @@ public class PropertySheetPanel extends JPanel implements PropertyChangeListener
 | 
			
		||||
	            ex.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
            if (TRACE) System.out.println("# cmp " + BeanInspector.toString(o) + "\n# vs. " + BeanInspector.toString(m_Values[i]));
 | 
			
		||||
            if (o == m_Values[i] && (BeanInspector.isJavaPrimitive(o.getClass()))) {
 | 
			
		||||
            if ((o!=null) && o == m_Values[i] && (BeanInspector.isJavaPrimitive(o.getClass()))) {
 | 
			
		||||
	            // The property is equal to its old value.
 | 
			
		||||
	            continue;
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ package eva2.server;
 | 
			
		||||
/*==========================================================================*
 | 
			
		||||
 * IMPORTS
 | 
			
		||||
 *==========================================================================*/
 | 
			
		||||
import eva2.client.EvAClient;
 | 
			
		||||
import eva2.EvAInfo;
 | 
			
		||||
import eva2.server.modules.ModuleAdapter;
 | 
			
		||||
import eva2.tools.jproxy.MainAdapterClient;
 | 
			
		||||
import eva2.tools.jproxy.MainAdapterImpl;
 | 
			
		||||
@@ -27,7 +27,7 @@ public class EvAMainAdapterImpl extends MainAdapterImpl implements EvAMainAdapte
 | 
			
		||||
 | 
			
		||||
  public EvAMainAdapterImpl() {
 | 
			
		||||
	  super();
 | 
			
		||||
	  m_ModulServer = new ModuleServer(EvAClient.getProperties());
 | 
			
		||||
	  m_ModulServer = new ModuleServer(EvAInfo.getProperties());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String[] getModuleNameList() {
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ public class EvAServer {
 | 
			
		||||
//    m_InsideClient = insideClient;
 | 
			
		||||
//    m_Restart = Restart;
 | 
			
		||||
    System.out.println ("*******************************************************************************");
 | 
			
		||||
    System.out.println ("This is EvA Server Version: "+ EvAInfo.versionNum);
 | 
			
		||||
    System.out.println ("This is EvA Server Version: "+ EvAInfo.getVersion());
 | 
			
		||||
    //System.out.println ("Java Version: " + System.getProperty("java.version") );
 | 
			
		||||
    System.out.println ("*******************************************************************************");
 | 
			
		||||
    m_UserName = System.getProperty("user.name");
 | 
			
		||||
 
 | 
			
		||||
@@ -181,7 +181,8 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
 | 
			
		||||
        }
 | 
			
		||||
        if ((object != null) && (editor != null)) paraPanel.registerEditor(object, editor);
 | 
			
		||||
        this.m_O1 = (paraPanel.makePanel());
 | 
			
		||||
        EvAClient.setProperty("eva2.server.oa.go.Tools.InterfaceTest", "eva2.server.oa.go.Tools.Test1,eva2.server.oa.go.Tools.Test2");
 | 
			
		||||
        // 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");
 | 
			
		||||
        this.m_OptionsPanel = new JTabbedPane();
 | 
			
		||||
        JParaPanel paraPanel2 = new JParaPanel(this.m_GO, "MyGUI");
 | 
			
		||||
        this.m_O2 = (paraPanel2.makePanel());
 | 
			
		||||
@@ -624,7 +625,7 @@ public class GOStandaloneVersion implements InterfaceGOStandalone, InterfacePopu
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a simple example framework for Evolutionary Algorithms.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ public interface InterfaceGOParameters {
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo();
 | 
			
		||||
//    public String globalInfo();
 | 
			
		||||
 | 
			
		||||
    /** This method allows you to serialize the current parameters into a *.ser file
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -612,15 +612,15 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
 | 
			
		||||
    	boolean result = true;
 | 
			
		||||
    	int i=0;
 | 
			
		||||
    	while (result && (i < fit1.length) && (i < fit2.length)) {
 | 
			
		||||
    		if (firstIsFiniteAndLarger(fit1[i], fit2[i])) result = false;
 | 
			
		||||
    		if (firstIsFiniteAndLargerOrEqual(fit1[i], fit2[i])) result = false;
 | 
			
		||||
    		i++;
 | 
			
		||||
    	}
 | 
			
		||||
    	return result;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    private static boolean firstIsFiniteAndLarger(double a, double b) {
 | 
			
		||||
    private static boolean firstIsFiniteAndLargerOrEqual(double a, double b) {
 | 
			
		||||
		if (Double.isNaN(a) || Double.isInfinite(a)) return false;
 | 
			
		||||
		else return (a > b);
 | 
			
		||||
		else return (a >= b);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -160,7 +160,7 @@ public class AbstractEAIndividualComparator implements Comparator<Object>, Seria
 | 
			
		||||
		return "Activate preference of feasible individuals in any comparison acc. to Deb's rules.";
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "A comparator class for general EA individuals. Compares individuals based on their fitness in context of minimization.";
 | 
			
		||||
	}
 | 
			
		||||
	public String getName() {
 | 
			
		||||
 
 | 
			
		||||
@@ -270,7 +270,7 @@ public class ESIndividualBinaryData extends AbstractEAIndividual implements Inte
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an ES individual adopted to optimize binary values.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -331,7 +331,7 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an ES individual suited to optimize double values.";
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -286,7 +286,7 @@ public class ESIndividualIntegerData extends AbstractEAIndividual implements Int
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an ES individual suited to optimize integer values.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -360,7 +360,7 @@ public class ESIndividualPermutationData extends AbstractEAIndividual implements
 | 
			
		||||
	 /** This method returns a global info string
 | 
			
		||||
	  * @return description
 | 
			
		||||
	  */
 | 
			
		||||
	 public String globalInfo() {
 | 
			
		||||
	 public static String globalInfo() {
 | 
			
		||||
		 return "This is an ES individual suited to optimize permutations.";
 | 
			
		||||
	 }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -309,7 +309,7 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a mixed data type combining a BitSet and a real-valued vector.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -246,7 +246,7 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a GA individual suited to optimize binary values.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -310,7 +310,7 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a GA individual suited to optimize double values.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -392,7 +392,7 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a GA individual suited to optimize int values.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -596,7 +596,7 @@ public class GEIndividualProgramData extends AbstractEAIndividual implements Int
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a GE individual suited to optimize programs.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -295,7 +295,7 @@ public class GIIndividualIntegerData extends AbstractEAIndividual implements Int
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a GI individual suited to optimize int values.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -308,7 +308,7 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a mixed data type combining an integer vector with a permutation vector.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -303,7 +303,7 @@ public class GPIndividualProgramData extends AbstractEAIndividual implements Int
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a GP individual suited to optimize Koza style program trees.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -265,7 +265,7 @@ public class OBGAIndividualPermutationData extends AbstractEAIndividual implemen
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a GA individual coding permutations.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -149,7 +149,7 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
 | 
			
		||||
     * @return a list of available AbstractGPNode implementations
 | 
			
		||||
     */
 | 
			
		||||
	public static Vector<AbstractGPNode> getNodeTypes() {
 | 
			
		||||
		ArrayList<String>cls = GenericObjectEditor.getClassesFromClassPath(AbstractGPNode.class.getCanonicalName());
 | 
			
		||||
		ArrayList<String>cls = GenericObjectEditor.getClassesFromClassPath(AbstractGPNode.class.getCanonicalName(), null);
 | 
			
		||||
		Vector<AbstractGPNode> nodeTypes = new Vector<AbstractGPNode>(cls.size());
 | 
			
		||||
		for (int i=0; i<cls.size(); i++) {
 | 
			
		||||
			try {
 | 
			
		||||
 
 | 
			
		||||
@@ -67,7 +67,7 @@ public class ArchivingAllDominating extends AbstractArchiving implements java.io
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a straightforward strategy, which selects all dominating individuals (very prone to generate OutOfMemory errors).";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -85,7 +85,7 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "Maxi Min Archiving.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
@@ -185,7 +185,7 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
 | 
			
		||||
//    /** This method returns a global info string
 | 
			
		||||
//     * @return description
 | 
			
		||||
//     */
 | 
			
		||||
//    public String globalInfo() {
 | 
			
		||||
//    public static String globalInfo() {
 | 
			
		||||
//        return "Maxi Min Archiving.";
 | 
			
		||||
//    }
 | 
			
		||||
//    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,7 @@ public class ArchivingNSGA extends AbstractArchiving implements java.io.Serializ
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "Non-dominating sorting GA revision 1.0.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -178,7 +178,7 @@ public class ArchivingNSGAII extends ArchivingNSGA implements java.io.Serializab
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "Non-dominating sorting GA revision 2.0.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -267,7 +267,7 @@ public class ArchivingPESAII extends AbstractArchiving implements java.io.Serial
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "Pareto Envelope-based Selection Algorithm revision 2.0.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -548,7 +548,7 @@ public class ArchivingSPEAII extends AbstractArchiving implements java.io.Serial
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "Strength Pareto EA revision 2.0. The variable k to calculate the k-th distance is given by max(2, sqrt(archive.size())).";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ public class InformationRetrievalInserting implements InterfaceInformationRetrie
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This Information Retrieval will insert the archive into current population by replacing random individuals if necessary.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ public class InformationRetrievalNone implements InterfaceInformationRetrieval,
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This implements a deactivated Information Retrieval.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ public class InformationRetrievalReplacing implements InterfaceInformationRetrie
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This Information Retrieval will replace the current population by the archive.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -477,7 +477,7 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "The Self-Organizing Maps, have been proposed by Kohonen (read this book on SOMs for further details).";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -219,7 +219,7 @@ public class ClusteringDensityBased implements InterfaceClustering, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "A density-based clustering algorithm (DBSCAN).";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										132
									
								
								src/eva2/server/go/operators/cluster/ClusteringDynPeakIdent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								src/eva2/server/go/operators/cluster/ClusteringDynPeakIdent.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,132 @@
 | 
			
		||||
package eva2.server.go.operators.cluster;
 | 
			
		||||
 | 
			
		||||
import eva2.gui.BeanInspector;
 | 
			
		||||
import eva2.server.go.individuals.AbstractEAIndividual;
 | 
			
		||||
import eva2.server.go.operators.distancemetric.InterfaceDistanceMetric;
 | 
			
		||||
import eva2.server.go.operators.distancemetric.PhenotypeMetric;
 | 
			
		||||
import eva2.server.go.populations.Population;
 | 
			
		||||
import eva2.tools.Pair;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Clustering using the DPI mechanism (dynamic peak identification).
 | 
			
		||||
 * Collect a number of peaks, which are the fittest individuals
 | 
			
		||||
 * which are not dominated by other individuals within a certain distance.
 | 
			
		||||
 * The remaining individuals are assigned to a peak if they have a distance
 | 
			
		||||
 * smaller than rho to that peak. 
 | 
			
		||||
 * The number of expected peaks (clusters) must be predefined. 
 | 
			
		||||
 * Note that the returned number of clusters may be smaller than q.
 | 
			
		||||
 * 
 | 
			
		||||
 * @author mkron
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public class ClusteringDynPeakIdent implements InterfaceClustering, java.io.Serializable {
 | 
			
		||||
	private static final boolean TRACE=true;
 | 
			
		||||
	private int numNiches;
 | 
			
		||||
	private double nicheRadius;
 | 
			
		||||
	private boolean strictNicheRadius=true; // if false, all individuals are clustered to the closest niche, otherwise some remain unclustered (those which are further than the nicheRadius from any peak)
 | 
			
		||||
	InterfaceDistanceMetric metric = new PhenotypeMetric();
 | 
			
		||||
 | 
			
		||||
	public ClusteringDynPeakIdent(int numNs, double nicheRad) {
 | 
			
		||||
		this.numNiches = numNs;
 | 
			
		||||
		this.nicheRadius = nicheRad;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public ClusteringDynPeakIdent(ClusteringDynPeakIdent o) {
 | 
			
		||||
		this(o.numNiches, o.nicheRadius);
 | 
			
		||||
		metric = o.metric;
 | 
			
		||||
		this.strictNicheRadius = o.strictNicheRadius;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Object clone() {
 | 
			
		||||
		return new ClusteringDynPeakIdent(this);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public int[] associateLoners(Population loners, Population[] species,
 | 
			
		||||
			Population referenceSet) {
 | 
			
		||||
		Population bests = new Population(species.length);
 | 
			
		||||
		for (int i=0; i<species.length; i++) bests.add(species[i].getBestEAIndividual());
 | 
			
		||||
		return assignLeaders(loners, bests);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Assign a set of "lone" individuals to a set of leaders. Returns a vector
 | 
			
		||||
	 * of ints which indicate for every loner the index of the associated leader.
 | 
			
		||||
	 * An index may be -1 if no leader is closer than the niche threshold AND strictNicheRadius
 | 
			
		||||
	 * is true. 
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param loners
 | 
			
		||||
	 * @param bests
 | 
			
		||||
	 * @return
 | 
			
		||||
	 */
 | 
			
		||||
	protected int[] assignLeaders(Population loners, Population bests) {
 | 
			
		||||
		int[] assoc = new int[loners.size()];
 | 
			
		||||
		for (int i=0; i<loners.size(); i++) {
 | 
			
		||||
			// check distances to best indies per species
 | 
			
		||||
			Pair<Integer, Double> closestInfo = Population.getClosestFarthestIndy(loners.getEAIndividual(i), bests, metric, true);
 | 
			
		||||
			// we have now the info about the closest best individual. If its closer than the threshold, we can assign the loner to that index
 | 
			
		||||
			if (!strictNicheRadius || (closestInfo.tail()<nicheRadius)) {
 | 
			
		||||
				assoc[i]=closestInfo.head();
 | 
			
		||||
			} else assoc[i]=-1;
 | 
			
		||||
		}
 | 
			
		||||
		return assoc;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Population[] cluster(Population pop, Population referenceSet) {
 | 
			
		||||
		Population sorted = pop.getSortedBestFirst();
 | 
			
		||||
		Population peaks = performDynPeakIdent(metric, sorted, numNiches, nicheRadius);
 | 
			
		||||
		Population[] clusters = new Population[peaks.size()+1];
 | 
			
		||||
		for (int i=0; i<clusters.length; i++) clusters[i]=new Population();
 | 
			
		||||
		
 | 
			
		||||
		Population rest = pop.cloneShallowInds();
 | 
			
		||||
		rest.filter(peaks);
 | 
			
		||||
		int[] assoc = assignLeaders(rest, peaks);
 | 
			
		||||
 | 
			
		||||
		for (int i=0; i<assoc.length; i++) {
 | 
			
		||||
			if (assoc[i]>=0) { // it can be assigned to a peak
 | 
			
		||||
				clusters[assoc[i]+1].add(rest.getEAIndividual(i));
 | 
			
		||||
			} else { // its a loner
 | 
			
		||||
				clusters[0].add(rest.getEAIndividual(i));
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return clusters;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String initClustering(Population pop) {
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean mergingSpecies(Population species1, Population species2,
 | 
			
		||||
			Population referenceSet) {
 | 
			
		||||
		// in our case just return true if the leaders are close enough
 | 
			
		||||
		return (metric.distance(species1.getBestEAIndividual(), species2.getBestEAIndividual())<nicheRadius);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * The DPI mechanism. Collect a number of peaks, which are the fittest individuals
 | 
			
		||||
	 * which are not dominated by other individuals within distance rho.
 | 
			
		||||
	 * Note that the returned set may be smaller than q.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param pop
 | 
			
		||||
	 * @param q the number of peaks to be identified
 | 
			
		||||
	 * @param rho the niche radius
 | 
			
		||||
	 * @return the dynamic peak set
 | 
			
		||||
	 */
 | 
			
		||||
	public static Population performDynPeakIdent(InterfaceDistanceMetric metric, Population sortedPop, int q, double rho) {
 | 
			
		||||
		int i=0;
 | 
			
		||||
		Population peaks = new Population(q);
 | 
			
		||||
		while (i<sortedPop.size() && (peaks.size() < q)) {
 | 
			
		||||
			if ((peaks.size()==0) || (!peaks.isWithinPopDist((AbstractEAIndividual)sortedPop.get(i), rho, metric))) {
 | 
			
		||||
				peaks.add(sortedPop.get(i));
 | 
			
		||||
				System.out.println("Added peak " + sortedPop.get(i));
 | 
			
		||||
			}
 | 
			
		||||
			i++;
 | 
			
		||||
		}
 | 
			
		||||
		if (TRACE) {
 | 
			
		||||
			System.out.println("Found " + peaks.size() + " peaks, ");
 | 
			
		||||
			for (int k=0; k<peaks.size(); k++) System.out.println("  " + peaks.getEAIndividual(k));
 | 
			
		||||
			System.out.println("Measures: " + BeanInspector.toString(peaks.getPopulationMeasures()));
 | 
			
		||||
		}
 | 
			
		||||
		return peaks;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -332,7 +332,7 @@ public class ClusteringKMeans implements InterfaceClustering, java.io.Serializab
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "Oldy but goldy: K-Means clustering.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -353,7 +353,7 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public String globalInfo() { 
 | 
			
		||||
    public static String globalInfo() { 
 | 
			
		||||
    	return "A tree is produced by assigning each individual the closest individual with better fitness. Connections with a distance above a certain threshold are cut. After that, each interconnected subtree forms a cluster.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -341,7 +341,7 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "Oldy but goldy: K-Means clustering.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -29,15 +29,27 @@ public interface InterfaceClustering {
 | 
			
		||||
     * All other populations group individuals into clusters.
 | 
			
		||||
     * It should make sure that the returned Population instances are of the same type
 | 
			
		||||
     * as the given one, which may be a subclass of Population.
 | 
			
		||||
     * If the clustering depends on population measures, a reference set may be given
 | 
			
		||||
     * which is the reference population to consider the measures of. This is for cases
 | 
			
		||||
     * where, e.g., subsets of a Population are to be clustered using measures of the
 | 
			
		||||
     * original population. 
 | 
			
		||||
     * 
 | 
			
		||||
     * @param pop       The population of individuals that is to be clustered.
 | 
			
		||||
     * @param referenceSet a reference population for dynamic measures
 | 
			
		||||
     * @return Population[]
 | 
			
		||||
     */
 | 
			
		||||
    public Population[] cluster(Population pop, Population referenceSet);
 | 
			
		||||
 | 
			
		||||
    /** This method allows you to decide if two species are to be merged regarding this clustering algorithm.
 | 
			
		||||
    /**
 | 
			
		||||
     * This method allows you to decide if two species are to be merged regarding this clustering algorithm.
 | 
			
		||||
     * If the clustering depends on population measures, a reference set may be given
 | 
			
		||||
     * which is the reference population to consider the measures of. This is for cases
 | 
			
		||||
     * where, e.g., subsets of a Population are to be clustered using measures of the
 | 
			
		||||
     * original population. 
 | 
			
		||||
     * 
 | 
			
		||||
     * @param species1  The first species.
 | 
			
		||||
     * @param species2  The second species.
 | 
			
		||||
     * @param referenceSet a reference population for dynamic measures
 | 
			
		||||
     * @return True if species converge, else False.
 | 
			
		||||
     */
 | 
			
		||||
    public boolean mergingSpecies(Population species1, Population species2, Population referenceSet);
 | 
			
		||||
@@ -69,9 +81,14 @@ public interface InterfaceClustering {
 | 
			
		||||
     * be associated, -1 is returned as individual entry.
 | 
			
		||||
     * Note that the last cluster threshold is used which may have depended on the last
 | 
			
		||||
     * generation.
 | 
			
		||||
     * If the clustering depends on population measures, a reference set may be given
 | 
			
		||||
     * which is the reference population to consider the measures of. This is for cases
 | 
			
		||||
     * where, e.g., subsets of a Population are to be clustered using measures of the
 | 
			
		||||
     * original population.
 | 
			
		||||
     * 
 | 
			
		||||
     * @param loners
 | 
			
		||||
     * @param species
 | 
			
		||||
     * @param referenceSet a reference population for dynamic measures
 | 
			
		||||
     * @return associative list matching loners to species.
 | 
			
		||||
     */
 | 
			
		||||
    public int[] associateLoners(Population loners, Population[] species, Population referenceSet);
 | 
			
		||||
 
 | 
			
		||||
@@ -69,7 +69,7 @@ public class ConstraintCollection extends AbstractConstraint {
 | 
			
		||||
		return constraintArray.length + " constr./" + getPenaltyFactor() + "/" + getHandlingMethod() + "/" + getPenaltyFactControl().getClass().getSimpleName();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "A set of constraints with a single parameter adaption mechanism.";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ public class DummyConstraint extends AbstractConstraint {
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "This constraint is always fulfilled.";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -102,7 +102,7 @@ public class GenericConstraint extends AbstractConstraint implements InterfaceDo
 | 
			
		||||
		return this.getClass().getSimpleName() + " " + constraintString;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "A generic constraint which is parsed from a String; n is dimension, x0..xn are solution components. Use prefix notation as in \"+(-(sum(x),n),sqrt(*(pi,x0)))\".";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ public class ImplicitConstraint extends AbstractConstraint {
 | 
			
		||||
		return "ImplicitCnstr-"+index;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "Similar to a multi-objective translation into fitness, this class allows to interpret fitness criteria as constraints.";
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ public class CrossoverEAMixer implements InterfaceCrossover, java.io.Serializabl
 | 
			
		||||
 | 
			
		||||
    public CrossoverEAMixer() {
 | 
			
		||||
        InterfaceCrossover[] tmpList;
 | 
			
		||||
        ArrayList<String> crossers = GenericObjectEditor.getClassesFromProperties("eva2.server.go.operators.crossover.InterfaceCrossover");
 | 
			
		||||
        ArrayList<String> crossers = GenericObjectEditor.getClassesFromProperties(InterfaceCrossover.class.getCanonicalName(), null);
 | 
			
		||||
        tmpList = new InterfaceCrossover[crossers.size()];
 | 
			
		||||
         for (int i = 0; i < crossers.size(); i++) {
 | 
			
		||||
        	 if (((String)crossers.get(i)).equals(this.getClass().getName())) continue;
 | 
			
		||||
@@ -140,7 +140,7 @@ public class CrossoverEAMixer implements InterfaceCrossover, java.io.Serializabl
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This meta-mutation operator allows you to combine multiple alternative mutation operators.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -118,7 +118,7 @@ public class CrossoverESArithmetical implements InterfaceCrossover, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an arithmetical crossover between m ES individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -124,7 +124,7 @@ public class CrossoverESBLXAlpha implements InterfaceCrossover, java.io.Serializ
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "The BLX crossover inits the values within the extreme values plus an additional alpha range (BLX-0.0 equals flat crossover).";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -118,7 +118,7 @@ public class CrossoverESDefault implements InterfaceCrossover, java.io.Serializa
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a discrete one-point crossover between m ES individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -120,7 +120,7 @@ public class CrossoverESFlat implements InterfaceCrossover, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "The flat crossover inits the values within the extreme values.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -107,7 +107,7 @@ public class CrossoverESIntermediate implements InterfaceCrossover, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an intermediate crossover between m ES individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -123,7 +123,7 @@ public class CrossoverESNPointDiscrete implements InterfaceCrossover, java.io.Se
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a discrete n-point crossover between m ES individuals.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -135,7 +135,7 @@ public class CrossoverESNPointDiscreteDislocation implements InterfaceCrossover,
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a discrete n-point crossover between m ES individuals with dislocation.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -288,7 +288,7 @@ public class CrossoverESPCX implements InterfaceCrossover, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is the Parent Centric Crossover (PCX).";
 | 
			
		||||
    }
 | 
			
		||||
    public void setEta(double a) {
 | 
			
		||||
 
 | 
			
		||||
@@ -192,7 +192,7 @@ public class CrossoverESSBX implements InterfaceCrossover, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "The SBX crossover simulates a binary crossover (works only for two partners!).";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -216,7 +216,7 @@ public class CrossoverESSPX implements InterfaceCrossover, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is the Simplex Crossover (SPX).";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -277,7 +277,7 @@ public class CrossoverESUNDX implements InterfaceCrossover, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is the Unimodal Normally Distributed crossover (UNDX), typically use more than two parents.";
 | 
			
		||||
    }
 | 
			
		||||
    public void setEta(double a) {
 | 
			
		||||
 
 | 
			
		||||
@@ -113,7 +113,7 @@ public class CrossoverESUniformDiscrete implements InterfaceCrossover, java.io.S
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a discrete n-point crossover between m ES individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -114,7 +114,7 @@ public class CrossoverGABitSimulated implements InterfaceCrossover, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a bit simulated crossover between m individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -141,7 +141,7 @@ public class CrossoverGADefault implements InterfaceCrossover,
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return description
 | 
			
		||||
	 */
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "This is a one-point crossover between two individuals.";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -128,7 +128,7 @@ public class CrossoverGANPoint implements InterfaceCrossover, java.io.Serializab
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an n-point crossover between m individuals.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -112,7 +112,7 @@ public class CrossoverGAUniform implements InterfaceCrossover, java.io.Serializa
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a uniform crossover between m individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -119,7 +119,7 @@ public class CrossoverGIDefault implements InterfaceCrossover, java.io.Serializa
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a discrete one-point crossover between m GI individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -125,7 +125,7 @@ public class CrossoverGINPoint implements InterfaceCrossover, java.io.Serializab
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an n-point crossover between m individuals.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -184,7 +184,7 @@ public class CrossoverGINPointVL implements InterfaceCrossover, java.io.Serializ
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a variable length n-point crossover between m individuals.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -116,7 +116,7 @@ public class CrossoverGIUniform implements InterfaceCrossover, java.io.Serializa
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a uniform crossover between m individuals.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -120,7 +120,7 @@ public class CrossoverGPDefault implements InterfaceCrossover, java.io.Serializa
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a one-point crossover between two programs.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@ public class CrossoverOBGAPMX implements InterfaceCrossover, java.io.Serializabl
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "The infamous PMX crossover for Permutations.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,7 @@ public class CrossoverOBGAPMXUniform implements InterfaceCrossover, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "The infamous PMX uniform crossover for Permutations.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -84,7 +84,7 @@ public class NoCrossover implements InterfaceCrossover, java.io.Serializable {
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "No crossover at all, even for occasional strategy paramters.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -76,7 +76,7 @@ public class EuclideanMetric implements InterfaceDistanceMetric {
 | 
			
		||||
	/** This method returns a global info string
 | 
			
		||||
	 * @return description
 | 
			
		||||
	 */
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "The euclidean metric calculates euclidian distances for individuals which have a real valued interpretation.";
 | 
			
		||||
	}
 | 
			
		||||
	/** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@ public class GenotypeMetricBitSet implements InterfaceDistanceMetric, java.io.Se
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a genotype based distance metric suited for binary data. The hamming distance is computed and normalized by chromosome length.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -75,7 +75,7 @@ public class IndividualDataMetric implements InterfaceDistanceMetric, Serializab
 | 
			
		||||
		this.normedDistance = normedDistance;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public String globalInfo() {
 | 
			
		||||
	public static String globalInfo() {
 | 
			
		||||
		return "Uses individual object data (so far only double[]) to calculate the distance.";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ public class ObjectiveSpaceMetric implements InterfaceDistanceMetric, java.io.Se
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "The objective space metric calculates euclidian distances on the fitness vectors.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -206,7 +206,7 @@ public class PhenotypeMetric implements InterfaceDistanceMetric, java.io.Seriali
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a phenotype based metric which can be applied to binary, integer, double, permutation, and program data types. For the latter two, the Levenshtein distance is computed. All distance values are normed.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -63,7 +63,7 @@ public class SigmaSingleMetricGlobalMutation implements InterfaceDistanceMetric,
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is an experimental method for individuals using global ES mutation.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,7 @@ public class FitnessAdaptiveClustering implements java.io.Serializable, Interfac
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a normation method based on Fitness Sharing. It adds a penalty for too similar individuals on the standard Normation method.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ public class FitnessModifierNone implements java.io.Serializable, InterfaceFitne
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "With this method the fitness remains unaltered.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -68,7 +68,7 @@ public class FitnessSharing implements java.io.Serializable, InterfaceFitnessMod
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a normation method based on Fitness Sharing. It adds a penalty for too similar individuals on the standard Normation method.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -80,7 +80,7 @@ public class MOBestMigration implements InterfaceMigration, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is multi-objective migration scheme.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -348,7 +348,7 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is migration scheme, which implements a clustering based partitioning.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -717,7 +717,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is migration scheme, which implements a cone separation based partitioning.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -350,7 +350,7 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is migration scheme, which implements a clustering based partitioning.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ public class SOBestMigration implements InterfaceMigration, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is a single-objective migration scheme.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ public class SOMONoMigration implements InterfaceMigration, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This is actually no mirgation scheme, because no individuals are exchanged.";
 | 
			
		||||
    }
 | 
			
		||||
    /** This method will return a naming String
 | 
			
		||||
 
 | 
			
		||||
@@ -94,7 +94,7 @@ public class MOSODynamicallyWeightedFitness implements InterfaceMOSOConverter, j
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method calcuates a dynamic weighted sum over TWO fitness values depending on the current generation.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -104,7 +104,7 @@ public class MOSOEpsilonConstraint implements InterfaceMOSOConverter, java.io.Se
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method uses n-1 objected as hard constraints.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -126,7 +126,7 @@ public class MOSOEpsilonThreshold implements InterfaceMOSOConverter, java.io.Ser
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method uses n-1 objected as soft constraints.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -93,7 +93,7 @@ public class MOSOGoalProgramming implements InterfaceMOSOConverter, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method minimizes the delta to a given target fitness values.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -115,7 +115,7 @@ public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializabl
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method minimizes the Lp metric to a given target fitness values, for (p<1) this equals the Tchebycheff metric.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,7 @@ public class MOSOMOGARankBased implements InterfaceMOSOConverter, java.io.Serial
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method calcuates the MOGA rank of each individual and uses the rank as fitness [Fonseca93Genetic].";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -144,7 +144,7 @@ public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method calculate the maximum of minimum distance over all criterias over all individuals.";
 | 
			
		||||
    }
 | 
			
		||||
//    /** This method allows you to choose the ScalingFactor for
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ public class MOSONoConvert implements InterfaceMOSOConverter, java.io.Serializab
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method leaves everything the same.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -84,7 +84,7 @@ public class MOSORandomChoice  implements InterfaceMOSOConverter, java.io.Serial
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method selects a random fitness value, actually this implements VEGA [Schaffer84Experiments].";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -91,7 +91,7 @@ public class MOSORandomWeight implements InterfaceMOSOConverter, java.io.Seriali
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method calcuates a randomly weighted sum over all fitness values [Murata95MOGA].";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -81,7 +81,7 @@ public class MOSORankbased implements InterfaceMOSOConverter, java.io.Serializab
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method calcuates the Pareto rank of each individual and uses the rank as fitness.";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -91,7 +91,7 @@ public class MOSOUtilityFunction implements InterfaceMOSOConverter, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method allows you to progamm an individual utility function.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -102,7 +102,7 @@ public class MOSOWeightedFitness implements InterfaceMOSOConverter, java.io.Seri
 | 
			
		||||
    /** This method returns a global info string
 | 
			
		||||
     * @return description
 | 
			
		||||
     */
 | 
			
		||||
    public String globalInfo() {
 | 
			
		||||
    public static String globalInfo() {
 | 
			
		||||
        return "This method calcuates the weighted sum over all fitness values.";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user