<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://mobile.aau.at/selforganized-wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Welmenre</id>
		<title>Self-Organization Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://mobile.aau.at/selforganized-wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Welmenre"/>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php/Special:Contributions/Welmenre"/>
		<updated>2026-10-22T21:25:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.1</generator>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Programming_and_Modeling_Tools&amp;diff=892</id>
		<title>Programming and Modeling Tools</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Programming_and_Modeling_Tools&amp;diff=892"/>
				<updated>2011-09-14T08:34:06Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [http://www.python.org/ Python 2.6.4]&lt;br /&gt;
* [http://www.scipy.org/ NumPy 1.4.0 and SciPy 0.7.1 (MATLAB-like numerical packages)]&lt;br /&gt;
* [http://sourceforge.net/projects/numpy/files/ NumPy download]&lt;br /&gt;
* [http://sourceforge.net/projects/scipy/files/ SciPy download]&lt;br /&gt;
* [http://matplotlib.sourceforge.net/ Matplotlib 0.99.1 (MATLAB-like visualization package)]&lt;br /&gt;
* [http://networkx.lanl.gov/ NetworkX 1.0rc1]&lt;br /&gt;
* [http://vlado.fmf.uni-lj.si/pub/networks/pajek/ Pajek - Program for large network analysis]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Guides:&lt;br /&gt;
* [http://wiki.python.org/moin/BeginnersGuide Beginner's Guide to Python]&lt;br /&gt;
* [http://www.python.org/doc/2.6.4/ Python 2.6.4 Documentation]&lt;br /&gt;
* [http://docs.python.org/library/index.html Python 2.6.4 Library Reference]&lt;br /&gt;
* [http://docs.scipy.org/doc/ NumPy and SciPy Documentation]&lt;br /&gt;
* [http://www.scipy.org/Tentative_NumPy_Tutorial NumPy Tutorial]&lt;br /&gt;
* [http://www.scipy.org/Numpy_Functions_by_Category NumPy Functions by Category]&lt;br /&gt;
* [http://www.scipy.org/SciPy_Tutorial SciPy Tutorial]&lt;br /&gt;
* [http://matplotlib.sourceforge.net/users/screenshots.html Matplotlib Screenshots and Sample Codes]&lt;br /&gt;
* [http://matplotlib.sourceforge.net/contents.html Matplotlib Documentation]&lt;br /&gt;
* [http://networkx.lanl.gov/tutorial/index.html NetworkX Tutorial]&lt;br /&gt;
* [http://networkx.lanl.gov/reference/index.html NetworkX Reference]&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [http://www.eclipse.org Eclipse IDE]&lt;br /&gt;
* [http://www.frevotool.tk/ Frevo - Framework for evolutionary design of complex systems]&lt;br /&gt;
* [http://graphstream.sourceforge.net/ A dynamic Graph Library for Java]&lt;br /&gt;
&lt;br /&gt;
However, quick visualization in Java is a pain without appropriate tools.&lt;br /&gt;
There is a nice discussion on Java Scientific Packages similar to SciPy at&lt;br /&gt;
[http://stackoverflow.com/questions/482305/java-scientific-packages-similar-to-scipy]&lt;br /&gt;
&lt;br /&gt;
In summary, the proposed packages for Java which could be interesting&lt;br /&gt;
are:&lt;br /&gt;
* Apache Commons Math&lt;br /&gt;
* Java Numerics&lt;br /&gt;
* Colt&lt;br /&gt;
* Matlib&lt;br /&gt;
* Java Scientific Library&lt;br /&gt;
* JFreeChart&lt;br /&gt;
* JScience&lt;br /&gt;
* jHepWork&lt;br /&gt;
&lt;br /&gt;
See also our [[Data Visualization with Java|detailed report on data visualization in Java]].&lt;br /&gt;
&lt;br /&gt;
== HTML5 ==&lt;br /&gt;
&lt;br /&gt;
HTML5 is offering a full frame buffer, audio stack, and embedded video. It thus makes it possible to implement powerful browser-based applications that run independently on all operating systems and various different browsers like Chrome, Firefox, etc.&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [http://code.google.com/webtoolkit/ Google Web Toolkit (GWT)]: a development toolkit for building and optimizing complex browser-based applications&lt;br /&gt;
&lt;br /&gt;
== Graph and Network Analysis Tools ==&lt;br /&gt;
&lt;br /&gt;
===JGraphT===&lt;br /&gt;
&lt;br /&gt;
[http://jgrapht.sourceforge.net/ JGraphT] is a free Java graph library that provides mathematical graph-theory objects and algorithms. JGraphT supports various types of graphs including:&lt;br /&gt;
&lt;br /&gt;
* directed and undirected graphs.&lt;br /&gt;
* graphs with weighted / unweighted / labeled or any user-defined edges.&lt;br /&gt;
* various edge multiplicity options, including: simple-graphs, multigraphs, pseudographs.&lt;br /&gt;
* unmodifiable graphs - allow modules to provide &amp;quot;read-only&amp;quot; access to internal graphs.&lt;br /&gt;
* listenable graphs - allow external listeners to track modification events.&lt;br /&gt;
* subgraphs graphs that are auto-updating subgraph views on other graphs.&lt;br /&gt;
* all compositions of above graphs.&lt;br /&gt;
&lt;br /&gt;
Although powerful, JGraphT is designed to be simple and type-safe (via Java generics). For example, graph vertices can be of any objects. You can create graphs based on: Strings, URLs, XML documents, etc; you can even create graphs of graphs! This code example shows how.&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=891</id>
		<title>FREVO Tutorial - New Problem</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=891"/>
				<updated>2011-07-20T14:43:15Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains how to model and implement a new problem in FREVO. FREVO (see www.frevotool.tk) is an open-source framework developed in Java to help engineers and scientists in evolutionary design or optimization tasks. The major feature of FREVO is the componentwise decomposition and separation of the key building blocks for each optimization tasks. We identify these as the problem definition, solution representation and the optimization method. &lt;br /&gt;
&lt;br /&gt;
In this tutorial we will implement a simulation where agents try to find an emergency exit. Let's start:&lt;br /&gt;
&lt;br /&gt;
* Run ComponentCreator.java. (ComponentCreator.java can be found, as you see in the picture, in the package utils)&lt;br /&gt;
&lt;br /&gt;
[[Image:FindingComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
* A window opens. Here you have to select the type of the component you want to create (Problem, Method, Representation, Ranking). For a simulation the right choice is Problem. Then you have to enter a name and a short description.&lt;br /&gt;
&lt;br /&gt;
[[Image:ComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Create&amp;quot; and follow the instructions that are shown. A new folder, containing your *.java file, and an *.xml file will be generated generatet. (in this case &amp;quot;EmergencyExit.java&amp;quot; and &amp;quot;EmergencyExit.xml&amp;quot;)&lt;br /&gt;
* The generated *.java file looks like this:&lt;br /&gt;
  package emergencyexit;&lt;br /&gt;
  &lt;br /&gt;
  import interfaces.IProblem;&lt;br /&gt;
  import interfaces.IRepresentation;&lt;br /&gt;
  &lt;br /&gt;
  public class EmergencyExit2 extends IProblem {&lt;br /&gt;
  &lt;br /&gt;
  	@Override&lt;br /&gt;
  	public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
  		// TODO Auto-generated method stub&lt;br /&gt;
  		return 0;&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	@Override&lt;br /&gt;
  	public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
  		// TODO Auto-generated method stub&lt;br /&gt;
  &lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
**getResult() is called to simulate without visualization.&lt;br /&gt;
**replayWithVisualization() is (as the name says) called to replay the simulation with visualization.&lt;br /&gt;
&lt;br /&gt;
*Implement your simulation. (it’s useful to extract it in an own function. So you can call it from getResult() and replayWithVisualization).&lt;br /&gt;
For this tutorial I started with a very simple simulation:&lt;br /&gt;
   int steps;&lt;br /&gt;
   int xpositionofEmergencyExit = 0;&lt;br /&gt;
   int ypositionofEmergencyExit = 0;&lt;br /&gt;
   int width;&lt;br /&gt;
   int height;&lt;br /&gt;
   int xpositionofAgent;&lt;br /&gt;
   int ypositionofAgent;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
 &lt;br /&gt;
 void calcSim(){&lt;br /&gt;
    &lt;br /&gt;
     xpositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;xpositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     ypositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;ypositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     xpositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;xpositionofAgent&amp;quot;).getValue());&lt;br /&gt;
     ypositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;ypositionofAgent&amp;quot;).getValue());&lt;br /&gt;
    &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
       input.add((float) (xpositionofEmergencyExit - xpositionofAgent));&lt;br /&gt;
       input.add((float) (ypositionofEmergencyExit - ypositionofAgent));&lt;br /&gt;
 &lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; output = c[0].getOutput(input);&lt;br /&gt;
 &lt;br /&gt;
       float xVelocity = output.get(0).floatValue()*2.0f-1.0f;&lt;br /&gt;
       float yVelocity = output.get(1).floatValue()*2.0f-1.0f;&lt;br /&gt;
 &lt;br /&gt;
       if /* */(xVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;lt; width - 1) xpositionofAgent += 1;&lt;br /&gt;
       else if (xVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;gt; 0 /*   */) xpositionofAgent -= 1;&lt;br /&gt;
       if /* */(yVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;lt; height - 1) ypositionofAgent += 1;&lt;br /&gt;
       else if (yVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;gt; 0 /*    */) ypositionofAgent -= 1;&lt;br /&gt;
     } &lt;br /&gt;
   }&lt;br /&gt;
	&lt;br /&gt;
The position of the emergency exit and the agent are read from the *.xml file which is accessed getProperties().get(name).getValue(). Where name represents the name of the value in the *.xml file.&lt;br /&gt;
The value of &amp;quot;steps&amp;quot;, &amp;quot;width&amp;quot; and &amp;quot;height&amp;quot; are written in the functions getResult() and replayWithVisualization().&lt;br /&gt;
The main function of FREVO is to find the best way how to connect the input and the output. So you just have to collect all the inputs and the representation (here it is c[0]) will return the output. It’s important that all the inputs and all the outputs are always in the same order. The output is always a float value between 0.0 and 1.0. You have to decide how to handle these outputs. In this simulation the output describes how the agent moves.&lt;br /&gt;
*Now the code of the simulation is finished but it still has to be called by getResult().&lt;br /&gt;
 public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
    &lt;br /&gt;
     calcSim();&lt;br /&gt;
    &lt;br /&gt;
     return -Math.sqrt(Math.pow((xpositionofEmergencyExit - xpositionofAgent), 2)&lt;br /&gt;
     /*            */+ Math.pow((ypositionofEmergencyExit - ypositionofAgent), 2));&lt;br /&gt;
   }&lt;br /&gt;
As we said before the values of “steps”, “width” and “height” have to be written in this function. They are read from the *.xml file.&lt;br /&gt;
The return value of this function says how good this representation was. It says if this value is high, the connection of input and output is good.&lt;br /&gt;
For the emergencyExit simulation this value is the negative distance between the agent and the emergency exit. So if the agent reaches the emergency exit within the amount of steps, the distance will be 0 and so it says it is a good way of connecting input and output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*At the end you have to implement a visualization for your simulation:&lt;br /&gt;
&lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display display;&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     steps = 0;&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(440, 495, &amp;quot;SimplifiedEmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     whiteboard = new WhiteBoard(400, 400, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;-&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;+&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       } &lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         if /* */(x == xpositionofEmergencyExit &amp;amp;&amp;amp; y == ypositionofEmergencyExit) data[x][y] = 2;&lt;br /&gt;
         else if (x == xpositionofAgent /*    */&amp;amp;&amp;amp; y == ypositionofAgent) /*    */data[x][y] = 1;&lt;br /&gt;
         else /*                                                                */data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Therefore the class WhiteBoard can be used. It is an extension of JPanel which represents a two- or three-dimensional grid of data in form of colors or pictures in a grid. It only has to be initialized and added to a JFrame or an extension of JFrame. Here the class Display is used. It is an extension of JFrame with a new constructor and a few settings that have already been done. &lt;br /&gt;
The window of this visualization contains the WhiteBoard and two buttons, which are used to go through the simulation step by step.&lt;br /&gt;
The simulation always does as much steps as the value of “steps” says. The simulation with visualization always works with the same representation and the same starting conditions.&lt;br /&gt;
So it is possible to increase the value of “steps” and start a simulation from the beginning by clicking on plusbutton without having any differences in the agent’s behaviour. You will just see the next step of the simulation.&lt;br /&gt;
For displaying the result the position of the agent and the emergency exit have to be converted into a two-dimensional array. Also the color-scale of the WhiteBoard has to be set.&lt;br /&gt;
The conversion is done by displayResult(). The setting of the colorscale is done in replayWithVisualization by the function addColorToScale(int lowerLimit, Color c). All values within lowerLimit and the next lowerLimit or, if there is no next lowerLimit, the top, have the color c.&lt;br /&gt;
As soon as this has been done you have to set the data which should be shown by the WhiteBoard. The data is set with the function setData(int[][] data).&lt;br /&gt;
The call of repaint() will force the WhiteBoard to visualize the data which will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:SimulationWithVisualization.jpg]] &lt;br /&gt;
&lt;br /&gt;
The black square represents the agent and the green square the emergency exit.&lt;br /&gt;
&lt;br /&gt;
*A form of this simulation which has got a few more complexity is this:&lt;br /&gt;
&lt;br /&gt;
 import java.awt.Color;&lt;br /&gt;
 import java.awt.Dimension;&lt;br /&gt;
 import java.awt.event.ActionEvent;&lt;br /&gt;
 import java.awt.event.ActionListener;&lt;br /&gt;
 import java.util.Random;&lt;br /&gt;
 import java.util.Vector;&lt;br /&gt;
 &lt;br /&gt;
 import javax.swing.JButton;&lt;br /&gt;
 import javax.swing.JFrame;&lt;br /&gt;
 import javax.swing.JTextField;&lt;br /&gt;
 &lt;br /&gt;
 import GridVisualization.*;&lt;br /&gt;
 &lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
   &lt;br /&gt;
   int               steps;&lt;br /&gt;
   int               width;&lt;br /&gt;
   int               height;&lt;br /&gt;
   int               numberofAgents;&lt;br /&gt;
   int               numberofExits;&lt;br /&gt;
   int               seed;&lt;br /&gt;
   agent[]           agents;&lt;br /&gt;
   Exit[]            EmergencyExits;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
   JTextField        seedTextField;&lt;br /&gt;
   &lt;br /&gt;
   // this function is called to simulate without visualization. It is used to find the best Representation&lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (int s = seed; s &amp;lt; seed + 10; s++) {&lt;br /&gt;
       setupField(s);&lt;br /&gt;
       Fitness += calcSim();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / 10);&lt;br /&gt;
   } &lt;br /&gt;
  &lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display    display;&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(840, 695, &amp;quot;EmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     &lt;br /&gt;
     whiteboard = new WhiteBoard(600, 600, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     // you can decide whether to take images or colors to represent things on the whiteboard&lt;br /&gt;
     //whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addImageToScale(1, &amp;quot;Components\\Problems\\EmergencyExit\\agent.png&amp;quot;);&lt;br /&gt;
     //whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     whiteboard.addImageToScale(2, &amp;quot;Components\\Problems\\EmergencyExit\\EmergencyExit.png&amp;quot;);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;&amp;lt;--&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;--&amp;gt;&amp;quot;);&lt;br /&gt;
     seedTextField = new JTextField(&amp;quot;&amp;quot; + seed);&lt;br /&gt;
     seedTextField.setPreferredSize(new Dimension(50, 20));&lt;br /&gt;
     JButton startButton = new JButton(&amp;quot;Change seed&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     display.add(seedTextField);&lt;br /&gt;
     display.add(startButton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.2f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     startButton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps = 0;&lt;br /&gt;
         seed = Integer.parseInt(seedTextField.getText());&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     setupField(seed);&lt;br /&gt;
     double Fitness = calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     int agentsleft = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
     }&lt;br /&gt;
     String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
     display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Displays the result of the last Simulation&lt;br /&gt;
    */&lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       data[a.xpos][a.ypos] = 1;&lt;br /&gt;
     }&lt;br /&gt;
     for (Exit e : EmergencyExits) {&lt;br /&gt;
       data[e.xpos][e.ypos] = 2;&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   void setupField(int s) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     numberofAgents /**/= Integer.parseInt(getProperties().get(&amp;quot;NumberofAgents&amp;quot;).getValue());&lt;br /&gt;
     numberofExits /* */= Integer.parseInt(getProperties().get(&amp;quot;NumberofEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     &lt;br /&gt;
     numberofAgents /**/= Math.min(numberofAgents, Math.max(width, height));&lt;br /&gt;
     numberofExits /* */= Math.min(numberofExits, width * height);&lt;br /&gt;
     agents /*        */= new agent[numberofAgents];&lt;br /&gt;
     EmergencyExits /**/= new Exit[numberofExits];&lt;br /&gt;
     // it is important to reset the Representation. Otherwise there would sometimes be simulation mistakes because the Representation wouldn't start from the same seed&lt;br /&gt;
     c[0].reset();&lt;br /&gt;
     // create the agents and place them in a straight line from the upper left to the lower right corner&lt;br /&gt;
     &lt;br /&gt;
     for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
       agents[i] = new agent(c[0].clone(), (i + 1) * width / (agents.length + 1), (i + 1) * height / (agents.length + 1), false);&lt;br /&gt;
     }&lt;br /&gt;
     Random positionGenerator = new Random(s);&lt;br /&gt;
     for (int i = 0; i &amp;lt; EmergencyExits.length; i++) {&lt;br /&gt;
       EmergencyExits[i] = new Exit();&lt;br /&gt;
       boolean PositionExistsAlready = false;&lt;br /&gt;
       do {&lt;br /&gt;
         EmergencyExits[i].xpos = positionGenerator.nextInt(width);&lt;br /&gt;
         EmergencyExits[i].ypos = positionGenerator.nextInt(width);&lt;br /&gt;
         PositionExistsAlready = false;&lt;br /&gt;
         for (int j = 0; j &amp;lt; i; j++) {&lt;br /&gt;
           if (EmergencyExits[i].xpos == EmergencyExits[j].xpos &amp;amp;&amp;amp; EmergencyExits[i].ypos == EmergencyExits[j].ypos) PositionExistsAlready = true;&lt;br /&gt;
         }&lt;br /&gt;
       } while (PositionExistsAlready);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Calculates one Simulation whit a certain amount of steps, which has to be defined before calling this method&lt;br /&gt;
    * &lt;br /&gt;
    * @return Returns the negative Sum of the distances between the agents and the Emergency Exit&lt;br /&gt;
    */&lt;br /&gt;
   double calcSim() {&lt;br /&gt;
     &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
         agent a = agents[i];&lt;br /&gt;
         if (!a.hasReachedExit) {&lt;br /&gt;
           &lt;br /&gt;
           Exit nearestExit = EmergencyExits[0];&lt;br /&gt;
           double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
           for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
             double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
             if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
               minimumDistance = Distance;&lt;br /&gt;
               nearestExit = EmergencyExits[e];&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
          &lt;br /&gt;
           // input[0] .. horizontal distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[1] .. vertical distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[2] .. field north      of the agent is occupied&lt;br /&gt;
           // input[3] .. field north-east of the agent is occupied&lt;br /&gt;
           // input[4] .. field east       of the agent is occupied&lt;br /&gt;
           // input[5] .. field south-east of the agent is occupied&lt;br /&gt;
           // input[6] .. field south      of the agent is occupied&lt;br /&gt;
           // input[7] .. field south-west of the agent is occupied&lt;br /&gt;
           // input[8] .. field west       of the agent is occupied&lt;br /&gt;
           // input[9] .. field north-west of the agent is occupied&lt;br /&gt;
           &lt;br /&gt;
           // determine which fields around the agent are occupied by another agent&lt;br /&gt;
           boolean northoccupied /**/= false;&lt;br /&gt;
           boolean northeastoccupied = false;&lt;br /&gt;
           boolean eastoccupied /* */= false;&lt;br /&gt;
           boolean southeastoccupied = false;&lt;br /&gt;
           boolean southoccupied /**/= false;&lt;br /&gt;
           boolean southwestoccupied = false;&lt;br /&gt;
           boolean westoccupied /* */= false;&lt;br /&gt;
           boolean northwestoccupied = false;&lt;br /&gt;
           &lt;br /&gt;
           for (int j = 0; j &amp;lt; agents.length; j++) {&lt;br /&gt;
             agent ag = agents[j];&lt;br /&gt;
             if (!ag.hasReachedExit) { // If a agent has reached the Emergency Exit he cannot occupy a field&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northoccupied /**/= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northeastoccupied = true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) eastoccupied /* */= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southeastoccupied = true;&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southoccupied /**/= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southwestoccupied = true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) westoccupied /* */= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northwestoccupied = true;&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
           input.add((float) (nearestExit.xpos - a.xpos));&lt;br /&gt;
           input.add((float) (nearestExit.ypos - a.ypos));&lt;br /&gt;
           input.add(northoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(eastoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(westoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           &lt;br /&gt;
           // output[0] .. horizontal velocity of the agent&lt;br /&gt;
           // output[1] .. vertical velocity of the agent&lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; output = a.representation.getOutput(input);&lt;br /&gt;
           &lt;br /&gt;
           // the elements of output are float values between 0.0 and 1.0&lt;br /&gt;
           // for the simulation it is useful to format these values so that you can see what each value means&lt;br /&gt;
           float xVfloat = output.get(0).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           float yVfloat = output.get(1).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           &lt;br /&gt;
           int xVelocity = Math.round(xVfloat); // -1 .. move one field in negative horizontal direction&lt;br /&gt;
                                                //  0 .. do not move in any horizontal direction&lt;br /&gt;
                                                //  1 .. move one field in positive horizontal direction&lt;br /&gt;
           int yVelocity = Math.round(yVfloat); // -1 .. move one field in negative vertical direction&lt;br /&gt;
                                                //  0 .. do not move in any vertical direction&lt;br /&gt;
                                                //  1 .. move one field in positive vertical direction&lt;br /&gt;
           &lt;br /&gt;
           // move the agent (only if the place, that he wants to move is not occupied by another agent)&lt;br /&gt;
           if /*   */(xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !eastoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;lt; width - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !westoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;gt; 0/*    */) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           for (int n = 0; n &amp;lt; EmergencyExits.length &amp;amp;&amp;amp; !a.hasReachedExit; n++) {&lt;br /&gt;
             if (a.xpos == EmergencyExits[n].xpos &amp;amp;&amp;amp; a.ypos == EmergencyExits[n].ypos) a.hasReachedExit = true;&lt;br /&gt;
             else /*                                                                 */a.hasReachedExit = false;&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
       for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
         double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
         if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
           minimumDistance = Distance;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
       Fitness += -minimumDistance / Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / numberofAgents);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class agent {&lt;br /&gt;
     public IRepresentation representation;&lt;br /&gt;
     public int             xpos;&lt;br /&gt;
     public int             ypos;&lt;br /&gt;
     public boolean         hasReachedExit;&lt;br /&gt;
     &lt;br /&gt;
     /**&lt;br /&gt;
      * @param r Representation for this Agent&lt;br /&gt;
      * @param x defines the x position of this Agent&lt;br /&gt;
      * @param y defines the y position of this Agent&lt;br /&gt;
      */&lt;br /&gt;
     public agent(IRepresentation r, int x, int y, boolean reachedExit) {&lt;br /&gt;
       representation = r;&lt;br /&gt;
       xpos = x;&lt;br /&gt;
       ypos = y;&lt;br /&gt;
       hasReachedExit = reachedExit;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class Exit {&lt;br /&gt;
     public int xpos;&lt;br /&gt;
     public int ypos;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
The main changes are that there are more than one agent and also more than on emergency exits. The agents are distributed over the field in a straight line from the upper left to the lower right corner of the field. The emergency exits are distributed by random with a seed. It also shows that the same connection of input and output should be able to start with different starting conditions and nevertheless to find the exit for all agents. This is done by adding a loop to getResult() which changes the starting seed of setupField().&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=890</id>
		<title>FREVO Tutorial - New Problem</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=890"/>
				<updated>2011-07-20T14:36:03Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains how to model and implement a new problem in FREVO. FREVO (see www.frevotool.tk) is an open-source framework developed in Java to help engineers and scientists in evolutionary design or optimization tasks. The major feature of FREVO is the componentwise decomposition and separation of the key building blocks for each optimization tasks. We identify these as the problem definition, solution representation and the optimization method. &lt;br /&gt;
&lt;br /&gt;
In this tutorial we will implement a simulation where agents try to find an Emergency Exit. Let's start:&lt;br /&gt;
&lt;br /&gt;
* Run ComponentCreator.java. (ComponentCreator.java can be found, as you see in the picture, in the package utils)&lt;br /&gt;
&lt;br /&gt;
[[Image:FindingComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
* A window opens. Here you have to select the type of the component you want to create (Problem, Method, Representation, Ranking). For a simulation the right choice is Problem. Then you have to enter a name and a short description.&lt;br /&gt;
&lt;br /&gt;
[[Image:ComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Create&amp;quot; and follow the instructions that are shown. A new folder, containing your *.java file, and an *.xml file will be generated generatet. (in this case &amp;quot;EmergencyExit.java&amp;quot; and &amp;quot;EmergencyExit.xml&amp;quot;)&lt;br /&gt;
* The generated *.java file looks like this:&lt;br /&gt;
  package emergencyexit;&lt;br /&gt;
  &lt;br /&gt;
  import interfaces.IProblem;&lt;br /&gt;
  import interfaces.IRepresentation;&lt;br /&gt;
  &lt;br /&gt;
  public class EmergencyExit2 extends IProblem {&lt;br /&gt;
  &lt;br /&gt;
  	@Override&lt;br /&gt;
  	public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
  		// TODO Auto-generated method stub&lt;br /&gt;
  		return 0;&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	@Override&lt;br /&gt;
  	public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
  		// TODO Auto-generated method stub&lt;br /&gt;
  &lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
**getResult() is called to simulate without visualization.&lt;br /&gt;
**replayWithVisualization() is (as the name says) called to replay the simulation with Visualization.&lt;br /&gt;
&lt;br /&gt;
*Implement your simulation. (it’s useful to extract it in an own function. So you can call it from getResult() and replayWithVisualization).&lt;br /&gt;
For this tutorial I started with a very simple simulation:&lt;br /&gt;
   int steps;&lt;br /&gt;
   int xpositionofEmergencyExit = 0;&lt;br /&gt;
   int ypositionofEmergencyExit = 0;&lt;br /&gt;
   int width;&lt;br /&gt;
   int height;&lt;br /&gt;
   int xpositionofAgent;&lt;br /&gt;
   int ypositionofAgent;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
 &lt;br /&gt;
 void calcSim(){&lt;br /&gt;
    &lt;br /&gt;
     xpositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;xpositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     ypositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;ypositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     xpositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;xpositionofAgent&amp;quot;).getValue());&lt;br /&gt;
     ypositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;ypositionofAgent&amp;quot;).getValue());&lt;br /&gt;
    &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
       input.add((float) (xpositionofEmergencyExit - xpositionofAgent));&lt;br /&gt;
       input.add((float) (ypositionofEmergencyExit - ypositionofAgent));&lt;br /&gt;
 &lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; output = c[0].getOutput(input);&lt;br /&gt;
 &lt;br /&gt;
       float xVelocity = output.get(0).floatValue()*2.0f-1.0f;&lt;br /&gt;
       float yVelocity = output.get(1).floatValue()*2.0f-1.0f;&lt;br /&gt;
 &lt;br /&gt;
       if /* */(xVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;lt; width - 1) xpositionofAgent += 1;&lt;br /&gt;
       else if (xVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;gt; 0 /*   */) xpositionofAgent -= 1;&lt;br /&gt;
       if /* */(yVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;lt; height - 1) ypositionofAgent += 1;&lt;br /&gt;
       else if (yVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;gt; 0 /*    */) ypositionofAgent -= 1;&lt;br /&gt;
     } &lt;br /&gt;
   }&lt;br /&gt;
	&lt;br /&gt;
The position of the Emergency Exit and the agent are read from the *.xml file which is accessed getProperties().get(name).getValue(). Where name represents the name of the value in the *.xml file.&lt;br /&gt;
The value of &amp;quot;steps&amp;quot;, &amp;quot;width&amp;quot; and &amp;quot;height&amp;quot; are written in the functions getResult() and replayWithVisualization().&lt;br /&gt;
The main function of FREVO is to find the best way how to connect the input and the output. So you just have to collect all the inputs and the representation (here it is c[0]) will return the output. It’s important that all the inputs and all the outputs are always in the same order. The output is always a float value between 0.0 and 1.0. You have to decide how to handle these outputs. In this simulation the output describes how the agent moves.&lt;br /&gt;
*Now the code of the simulation is finished but it still has to be called by getResult().&lt;br /&gt;
 public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
    &lt;br /&gt;
     calcSim();&lt;br /&gt;
    &lt;br /&gt;
     return -Math.sqrt(Math.pow((xpositionofEmergencyExit - xpositionofAgent), 2)&lt;br /&gt;
     /*            */+ Math.pow((ypositionofEmergencyExit - ypositionofAgent), 2));&lt;br /&gt;
   }&lt;br /&gt;
As we said before the values of “steps”, “width” and “height” have to be written in this function. They are read from the *.xml file.&lt;br /&gt;
The return value of this function says how good this representation was. It says if this value is high, the connection of input and output is good.&lt;br /&gt;
For the EmergencyExit simulation this value is the negative distance between the agent and the Emergency Exit. So if the agent reaches the Emergency Exit within the amount of steps, the distance will be 0 and so it says it is a good way of connecting input and output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*At the end you have to implement a visualization for your simulation:&lt;br /&gt;
&lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display display;&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     steps = 0;&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(440, 495, &amp;quot;SimplifiedEmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     whiteboard = new WhiteBoard(400, 400, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;-&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;+&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       } &lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         if /* */(x == xpositionofEmergencyExit &amp;amp;&amp;amp; y == ypositionofEmergencyExit) data[x][y] = 2;&lt;br /&gt;
         else if (x == xpositionofAgent /*    */&amp;amp;&amp;amp; y == ypositionofAgent) /*    */data[x][y] = 1;&lt;br /&gt;
         else /*                                                                */data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Therefore the class WhiteBoard can be used. It is an extension of JPanel which represents a two- or three-dimensional grid of data in form of colors or pictures in a grid. It only has to be initialized and added to a JFrame or an extension of JFrame. Here the class Display is used. It is an extension of JFrame with a new constructor and a few settings that have already been done. &lt;br /&gt;
The window of this visualization contains the WhiteBoard and two buttons, which are used to go through the simulation step by step.&lt;br /&gt;
The simulation always does as much steps as the value of “steps” says. The simulation with visualization always works with the same representation and the same starting conditions.&lt;br /&gt;
So it is possible to increase the value of “steps” and start a simulation from the beginning by clicking on plusbutton without having any differences in the agent’s behaviour. You will just see the next step of the simulation.&lt;br /&gt;
For displaying the result the position of the agent and the Emergency Exit have to be converted into a two-dimensional array. Also the color-scale of the WhiteBoard has to be set.&lt;br /&gt;
The conversion is done by displayResult(). The setting of the colorscale is done in replayWithVisualization by the function addColorToScale(int lowerLimit, Color c). All values within lowerLimit and the next lowerLimit or, if there is no next lowerLimit, the top, have the color c.&lt;br /&gt;
As soon as this has been done you have to set the data which should be shown by the WhiteBoard. The data is set with the function setData(int[][] data).&lt;br /&gt;
The call of repaint() will force the WhiteBoard to visualize the data which will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:SimulationWithVisualization.jpg]] &lt;br /&gt;
&lt;br /&gt;
The black square represents the agent and the green square the Emergency Exit.&lt;br /&gt;
&lt;br /&gt;
*A form of this simulation which has got a few more complexity is this:&lt;br /&gt;
&lt;br /&gt;
 import java.awt.Color;&lt;br /&gt;
 import java.awt.Dimension;&lt;br /&gt;
 import java.awt.event.ActionEvent;&lt;br /&gt;
 import java.awt.event.ActionListener;&lt;br /&gt;
 import java.util.Random;&lt;br /&gt;
 import java.util.Vector;&lt;br /&gt;
 &lt;br /&gt;
 import javax.swing.JButton;&lt;br /&gt;
 import javax.swing.JFrame;&lt;br /&gt;
 import javax.swing.JTextField;&lt;br /&gt;
 &lt;br /&gt;
 import GridVisualization.*;&lt;br /&gt;
 &lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
   &lt;br /&gt;
   int               steps;&lt;br /&gt;
   int               width;&lt;br /&gt;
   int               height;&lt;br /&gt;
   int               numberofAgents;&lt;br /&gt;
   int               numberofExits;&lt;br /&gt;
   int               seed;&lt;br /&gt;
   agent[]           agents;&lt;br /&gt;
   Exit[]            EmergencyExits;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
   JTextField        seedTextField;&lt;br /&gt;
   &lt;br /&gt;
   // this function is called to simulate without visualization. It is used to find the best Representation&lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (int s = seed; s &amp;lt; seed + 10; s++) {&lt;br /&gt;
       setupField(s);&lt;br /&gt;
       Fitness += calcSim();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / 10);&lt;br /&gt;
   } &lt;br /&gt;
  &lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display    display;&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(840, 695, &amp;quot;EmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     &lt;br /&gt;
     whiteboard = new WhiteBoard(600, 600, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     // you can decide whether to take images or colors to represent things on the whiteboard&lt;br /&gt;
     //whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addImageToScale(1, &amp;quot;Components\\Problems\\EmergencyExit\\agent.png&amp;quot;);&lt;br /&gt;
     //whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     whiteboard.addImageToScale(2, &amp;quot;Components\\Problems\\EmergencyExit\\EmergencyExit.png&amp;quot;);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;&amp;lt;--&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;--&amp;gt;&amp;quot;);&lt;br /&gt;
     seedTextField = new JTextField(&amp;quot;&amp;quot; + seed);&lt;br /&gt;
     seedTextField.setPreferredSize(new Dimension(50, 20));&lt;br /&gt;
     JButton startButton = new JButton(&amp;quot;Change seed&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     display.add(seedTextField);&lt;br /&gt;
     display.add(startButton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.2f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     startButton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps = 0;&lt;br /&gt;
         seed = Integer.parseInt(seedTextField.getText());&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     setupField(seed);&lt;br /&gt;
     double Fitness = calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     int agentsleft = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
     }&lt;br /&gt;
     String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
     display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Displays the result of the last Simulation&lt;br /&gt;
    */&lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       data[a.xpos][a.ypos] = 1;&lt;br /&gt;
     }&lt;br /&gt;
     for (Exit e : EmergencyExits) {&lt;br /&gt;
       data[e.xpos][e.ypos] = 2;&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   void setupField(int s) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     numberofAgents /**/= Integer.parseInt(getProperties().get(&amp;quot;NumberofAgents&amp;quot;).getValue());&lt;br /&gt;
     numberofExits /* */= Integer.parseInt(getProperties().get(&amp;quot;NumberofEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     &lt;br /&gt;
     numberofAgents /**/= Math.min(numberofAgents, Math.max(width, height));&lt;br /&gt;
     numberofExits /* */= Math.min(numberofExits, width * height);&lt;br /&gt;
     agents /*        */= new agent[numberofAgents];&lt;br /&gt;
     EmergencyExits /**/= new Exit[numberofExits];&lt;br /&gt;
     // it is important to reset the Representation. Otherwise there would sometimes be simulation mistakes because the Representation wouldn't start from the same seed&lt;br /&gt;
     c[0].reset();&lt;br /&gt;
     // create the agents and place them in a straight line from the upper left to the lower right corner&lt;br /&gt;
     &lt;br /&gt;
     for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
       agents[i] = new agent(c[0].clone(), (i + 1) * width / (agents.length + 1), (i + 1) * height / (agents.length + 1), false);&lt;br /&gt;
     }&lt;br /&gt;
     Random positionGenerator = new Random(s);&lt;br /&gt;
     for (int i = 0; i &amp;lt; EmergencyExits.length; i++) {&lt;br /&gt;
       EmergencyExits[i] = new Exit();&lt;br /&gt;
       boolean PositionExistsAlready = false;&lt;br /&gt;
       do {&lt;br /&gt;
         EmergencyExits[i].xpos = positionGenerator.nextInt(width);&lt;br /&gt;
         EmergencyExits[i].ypos = positionGenerator.nextInt(width);&lt;br /&gt;
         PositionExistsAlready = false;&lt;br /&gt;
         for (int j = 0; j &amp;lt; i; j++) {&lt;br /&gt;
           if (EmergencyExits[i].xpos == EmergencyExits[j].xpos &amp;amp;&amp;amp; EmergencyExits[i].ypos == EmergencyExits[j].ypos) PositionExistsAlready = true;&lt;br /&gt;
         }&lt;br /&gt;
       } while (PositionExistsAlready);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Calculates one Simulation whit a certain amount of steps, which has to be defined before calling this method&lt;br /&gt;
    * &lt;br /&gt;
    * @return Returns the negative Sum of the distances between the agents and the Emergency Exit&lt;br /&gt;
    */&lt;br /&gt;
   double calcSim() {&lt;br /&gt;
     &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
         agent a = agents[i];&lt;br /&gt;
         if (!a.hasReachedExit) {&lt;br /&gt;
           &lt;br /&gt;
           Exit nearestExit = EmergencyExits[0];&lt;br /&gt;
           double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
           for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
             double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
             if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
               minimumDistance = Distance;&lt;br /&gt;
               nearestExit = EmergencyExits[e];&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
          &lt;br /&gt;
           // input[0] .. horizontal distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[1] .. vertical distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[2] .. field north      of the agent is occupied&lt;br /&gt;
           // input[3] .. field north-east of the agent is occupied&lt;br /&gt;
           // input[4] .. field east       of the agent is occupied&lt;br /&gt;
           // input[5] .. field south-east of the agent is occupied&lt;br /&gt;
           // input[6] .. field south      of the agent is occupied&lt;br /&gt;
           // input[7] .. field south-west of the agent is occupied&lt;br /&gt;
           // input[8] .. field west       of the agent is occupied&lt;br /&gt;
           // input[9] .. field north-west of the agent is occupied&lt;br /&gt;
           &lt;br /&gt;
           // determine which fields around the agent are occupied by another agent&lt;br /&gt;
           boolean northoccupied /**/= false;&lt;br /&gt;
           boolean northeastoccupied = false;&lt;br /&gt;
           boolean eastoccupied /* */= false;&lt;br /&gt;
           boolean southeastoccupied = false;&lt;br /&gt;
           boolean southoccupied /**/= false;&lt;br /&gt;
           boolean southwestoccupied = false;&lt;br /&gt;
           boolean westoccupied /* */= false;&lt;br /&gt;
           boolean northwestoccupied = false;&lt;br /&gt;
           &lt;br /&gt;
           for (int j = 0; j &amp;lt; agents.length; j++) {&lt;br /&gt;
             agent ag = agents[j];&lt;br /&gt;
             if (!ag.hasReachedExit) { // If a agent has reached the Emergency Exit he cannot occupy a field&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northoccupied /**/= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northeastoccupied = true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) eastoccupied /* */= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southeastoccupied = true;&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southoccupied /**/= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southwestoccupied = true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) westoccupied /* */= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northwestoccupied = true;&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
           input.add((float) (nearestExit.xpos - a.xpos));&lt;br /&gt;
           input.add((float) (nearestExit.ypos - a.ypos));&lt;br /&gt;
           input.add(northoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(eastoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(westoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           &lt;br /&gt;
           // output[0] .. horizontal velocity of the agent&lt;br /&gt;
           // output[1] .. vertical velocity of the agent&lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; output = a.representation.getOutput(input);&lt;br /&gt;
           &lt;br /&gt;
           // the elements of output are float values between 0.0 and 1.0&lt;br /&gt;
           // for the simulation it is useful to format these values so that you can see what each value means&lt;br /&gt;
           float xVfloat = output.get(0).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           float yVfloat = output.get(1).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           &lt;br /&gt;
           int xVelocity = Math.round(xVfloat); // -1 .. move one field in negative horizontal direction&lt;br /&gt;
                                                //  0 .. do not move in any horizontal direction&lt;br /&gt;
                                                //  1 .. move one field in positive horizontal direction&lt;br /&gt;
           int yVelocity = Math.round(yVfloat); // -1 .. move one field in negative vertical direction&lt;br /&gt;
                                                //  0 .. do not move in any vertical direction&lt;br /&gt;
                                                //  1 .. move one field in positive vertical direction&lt;br /&gt;
           &lt;br /&gt;
           // move the agent (only if the place, that he wants to move is not occupied by another agent)&lt;br /&gt;
           if /*   */(xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !eastoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;lt; width - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !westoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;gt; 0/*    */) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           for (int n = 0; n &amp;lt; EmergencyExits.length &amp;amp;&amp;amp; !a.hasReachedExit; n++) {&lt;br /&gt;
             if (a.xpos == EmergencyExits[n].xpos &amp;amp;&amp;amp; a.ypos == EmergencyExits[n].ypos) a.hasReachedExit = true;&lt;br /&gt;
             else /*                                                                 */a.hasReachedExit = false;&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
       for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
         double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
         if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
           minimumDistance = Distance;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
       Fitness += -minimumDistance / Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / numberofAgents);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class agent {&lt;br /&gt;
     public IRepresentation representation;&lt;br /&gt;
     public int             xpos;&lt;br /&gt;
     public int             ypos;&lt;br /&gt;
     public boolean         hasReachedExit;&lt;br /&gt;
     &lt;br /&gt;
     /**&lt;br /&gt;
      * @param r Representation for this Agent&lt;br /&gt;
      * @param x defines the x position of this Agent&lt;br /&gt;
      * @param y defines the y position of this Agent&lt;br /&gt;
      */&lt;br /&gt;
     public agent(IRepresentation r, int x, int y, boolean reachedExit) {&lt;br /&gt;
       representation = r;&lt;br /&gt;
       xpos = x;&lt;br /&gt;
       ypos = y;&lt;br /&gt;
       hasReachedExit = reachedExit;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class Exit {&lt;br /&gt;
     public int xpos;&lt;br /&gt;
     public int ypos;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
The main changes are that there are more than one agent and also more than on Emergency Exits. The agents are distributed over the field in a straight line from the upper left to the lower right corner of the field. The Emergency Exits are distributed by random with a seed. It also shows that the same connection of input and output should be able to start with different starting conditions and nevertheless to find the exit for all agents. This is done by adding a loop to getResult() which changes the starting seed of setupField().&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=File:ComponentCreator.jpg&amp;diff=889</id>
		<title>File:ComponentCreator.jpg</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=File:ComponentCreator.jpg&amp;diff=889"/>
				<updated>2011-07-20T13:53:05Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: uploaded a new version of &amp;quot;Image:ComponentCreator.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Documentation&amp;diff=888</id>
		<title>FREVO Documentation</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Documentation&amp;diff=888"/>
				<updated>2011-07-20T13:39:30Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Tutorials==&lt;br /&gt;
&lt;br /&gt;
* [[Installing FREVO]]&lt;br /&gt;
* [[Using FREVO]]&lt;br /&gt;
* [[FREVO Tutorial - New Problem]]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Documentation&amp;diff=887</id>
		<title>FREVO Documentation</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Documentation&amp;diff=887"/>
				<updated>2011-07-20T13:38:29Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Tutorials==&lt;br /&gt;
&lt;br /&gt;
* [[FREVO Tutorial - new Simulation]]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=886</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=886"/>
				<updated>2011-07-20T13:37:40Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Self-Organizing Networked Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Aspects of self-organizing systems===&lt;br /&gt;
* [[Definition of Self-Organizing Systems]]&lt;br /&gt;
* [[Misconceptions]]&lt;br /&gt;
* [[Self-Organization being a Discipline on its own?]]&lt;br /&gt;
* [[Robustness]]&lt;br /&gt;
* [[Adaptation]]&lt;br /&gt;
* [[Designing Robust Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
=== Resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Researchers in self-organizing systems|Researchers]], [[Self-Organizing Systems Research Groups|Research Groups]]&lt;br /&gt;
* [[Self-Organizing Systems Conferences]]&lt;br /&gt;
* [[Self-Organizing Systems Literature Recommendations]]&lt;br /&gt;
* [[Programming and Modeling Tools]]&lt;br /&gt;
* [[Visualization Tools]]&lt;br /&gt;
* [[JProwler Simulator Tutorial]]&lt;br /&gt;
* [[FREVO Documentation]]&lt;br /&gt;
* [[Simulators,Models, and Games]] A Kamasutra of possible benchmark applications for your intelligent algorithms&lt;br /&gt;
&lt;br /&gt;
== Research Days @ Lakeside Labs==&lt;br /&gt;
* '''[[Lakeside Research Days'11]]'''&lt;br /&gt;
&lt;br /&gt;
* '''[[Lakeside Research Days'10]]'''&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Schedule Schedule]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Presentations Research Talks]&lt;br /&gt;
** [[Mindmap for engineering self-organizing systems]]&lt;br /&gt;
** Group Work: [[Challenges in Engineering Self-Organizing Systems]]&lt;br /&gt;
** Group Work: Design Patterns and Checklists&lt;br /&gt;
*** [[Design Patterns for engineering SOS]]&lt;br /&gt;
*** [[Checklist and Best Practice Examples for Designing Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Stigmergy]]&lt;br /&gt;
** Group Work: [[Role of Self-* properties in the Future Internet]]&lt;br /&gt;
** Group Work: [[Self-organizing synchronization]]&lt;br /&gt;
** Group Work: [[Self-Organization in Social Technical Systems]]&lt;br /&gt;
** Group Work: [[Emergence of Awareness and Intelligence]]&lt;br /&gt;
** Plans for joint work: [[Publications]], [[Projects]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'09]]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2709#Research_Talks Research Talks]&lt;br /&gt;
** [[Curriculum on Self-Organizing Networked Systems]]&lt;br /&gt;
** Group Work: [[Case Studies for Robust Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Modeling Techniques for Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Research Areas on Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'08]]&lt;br /&gt;
* [[Lakeside Research Days|Lakeside Research Days General Information]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to use the Wiki ==&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
=== Getting started ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Documentation&amp;diff=884</id>
		<title>FREVO Documentation</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Documentation&amp;diff=884"/>
				<updated>2011-07-20T13:37:19Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: FREVO Tutorial moved to FREVO Documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[FREVO Tutorial - new Simulation]]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=882</id>
		<title>FREVO Tutorial - New Problem</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=882"/>
				<updated>2011-07-20T13:32:44Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: FREVO Tutorial - new Simulation moved to FREVO Tutorial - New Problem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains how to model and implement a new problem in FREVO. FREVO (see www.frevotool.tk) is an open-source framework developed in Java to help engineers and scientists in evolutionary design or optimization tasks. The major feature of FREVO is the componentwise decomposition and separation of the key building blocks for each optimization tasks. We identify these as the problem definition, solution representation and the optimization method. &lt;br /&gt;
&lt;br /&gt;
In this tutorial we will implement a simulation where agents try to find an Emergency Exit. Let's start:&lt;br /&gt;
&lt;br /&gt;
* Run ComponentCreator.java. (ComponentCreator.java can be found, as you see in the picture, in the package utils)&lt;br /&gt;
&lt;br /&gt;
[[Image:FindingComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
* A window opens. Here you have to select the type of the component you want to create (Problem, Method, Representation, Ranking). For a simulation the right choice is Problem. Then you have to enter a name and a short description.&lt;br /&gt;
&lt;br /&gt;
[[Image:ComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Create&amp;quot; and follow the instructions that are shown. A new folder, containing your *.java file, and an *.xml file will be generated generatet. (in this case &amp;quot;EmergencyExit.java&amp;quot; and &amp;quot;EmergencyExit.xml&amp;quot;)&lt;br /&gt;
* The generated *.java file looks like this:&lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return 0;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
 &lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
**getResult() is called to simulate without visualization.&lt;br /&gt;
**replayWithVisualization() is (as the name says) called to replay the simulation with Visualization.&lt;br /&gt;
**getClassName() returns the name of your simulation (it’s the same as the class name. In this case &amp;quot;EmergencyExit&amp;quot;). &lt;br /&gt;
**getDescription() returns the description of the simulation.&lt;br /&gt;
**getName() returns the name that represents the simulation in the user interface of FREVO&lt;br /&gt;
*Complete the functions getClassName(), getDescription() and getName(). They should now look like this:&lt;br /&gt;
&lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     return &amp;quot;EmergencyExit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     return &amp;quot;A simulation where multiple Agents try to find the Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     return &amp;quot;Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
*Implement your simulation. (it’s useful to extract it in an own function. So you can call it from getResult() and replayWithVisualization).&lt;br /&gt;
For this tutorial I started with a very simple simulation:&lt;br /&gt;
   int steps;&lt;br /&gt;
   int xpositionofEmergencyExit = 0;&lt;br /&gt;
   int ypositionofEmergencyExit = 0;&lt;br /&gt;
   int width;&lt;br /&gt;
   int height;&lt;br /&gt;
   int xpositionofAgent;&lt;br /&gt;
   int ypositionofAgent;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
 &lt;br /&gt;
 void calcSim(){&lt;br /&gt;
    &lt;br /&gt;
     xpositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;xpositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     ypositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;ypositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     xpositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;xpositionofAgent&amp;quot;).getValue());&lt;br /&gt;
     ypositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;ypositionofAgent&amp;quot;).getValue());&lt;br /&gt;
    &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
       input.add((float) (xpositionofEmergencyExit - xpositionofAgent));&lt;br /&gt;
       input.add((float) (ypositionofEmergencyExit - ypositionofAgent));&lt;br /&gt;
 &lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; output = c[0].getOutput(input);&lt;br /&gt;
 &lt;br /&gt;
       float xVelocity = output.get(0).floatValue()*2.0f-1.0f;&lt;br /&gt;
       float yVelocity = output.get(1).floatValue()*2.0f-1.0f;&lt;br /&gt;
 &lt;br /&gt;
       if /* */(xVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;lt; width - 1) xpositionofAgent += 1;&lt;br /&gt;
       else if (xVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;gt; 0 /*   */) xpositionofAgent -= 1;&lt;br /&gt;
       if /* */(yVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;lt; height - 1) ypositionofAgent += 1;&lt;br /&gt;
       else if (yVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;gt; 0 /*    */) ypositionofAgent -= 1;&lt;br /&gt;
     } &lt;br /&gt;
   }&lt;br /&gt;
	&lt;br /&gt;
The position of the Emergency Exit and the agent are read from the *.xml file which is accessed getProperties().get(name).getValue(). Where name represents the name of the value in the *.xml file.&lt;br /&gt;
The value of &amp;quot;steps&amp;quot;, &amp;quot;width&amp;quot; and &amp;quot;height&amp;quot; are written in the functions getResult() and replayWithVisualization().&lt;br /&gt;
The main function of FREVO is to find the best way how to connect the input and the output. So you just have to collect all the inputs and the representation (here it is c[0]) will return the output. It’s important that all the inputs and all the outputs are always in the same order. The output is always a float value between 0.0 and 1.0. You have to decide how to handle these outputs. In this simulation the output describes how the agent moves.&lt;br /&gt;
*Now the code of the simulation is finished but it still has to be called by getResult().&lt;br /&gt;
 public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
    &lt;br /&gt;
     calcSim();&lt;br /&gt;
    &lt;br /&gt;
     return -Math.sqrt(Math.pow((xpositionofEmergencyExit - xpositionofAgent), 2)&lt;br /&gt;
     /*            */+ Math.pow((ypositionofEmergencyExit - ypositionofAgent), 2));&lt;br /&gt;
   }&lt;br /&gt;
As we said before the values of “steps”, “width” and “height” have to be written in this function. They are read from the *.xml file.&lt;br /&gt;
The return value of this function says how good this representation was. It says if this value is high, the connection of input and output is good.&lt;br /&gt;
For the EmergencyExit simulation this value is the negative distance between the agent and the Emergency Exit. So if the agent reaches the Emergency Exit within the amount of steps, the distance will be 0 and so it says it is a good way of connecting input and output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*At the end you have to implement a visualization for your simulation:&lt;br /&gt;
&lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display display;&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     steps = 0;&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(440, 495, &amp;quot;SimplifiedEmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     whiteboard = new WhiteBoard(400, 400, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;-&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;+&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       } &lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         if /* */(x == xpositionofEmergencyExit &amp;amp;&amp;amp; y == ypositionofEmergencyExit) data[x][y] = 2;&lt;br /&gt;
         else if (x == xpositionofAgent /*    */&amp;amp;&amp;amp; y == ypositionofAgent) /*    */data[x][y] = 1;&lt;br /&gt;
         else /*                                                                */data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Therefore the class WhiteBoard can be used. It is an extension of JPanel which represents a two- or three-dimensional grid of data in form of colors or pictures in a grid. It only has to be initialized and added to a JFrame or an extension of JFrame. Here the class Display is used. It is an extension of JFrame with a new constructor and a few settings that have already been done. &lt;br /&gt;
The window of this visualization contains the WhiteBoard and two buttons, which are used to go through the simulation step by step.&lt;br /&gt;
The simulation always does as much steps as the value of “steps” says. The simulation with visualization always works with the same representation and the same starting conditions.&lt;br /&gt;
So it is possible to increase the value of “steps” and start a simulation from the beginning by clicking on plusbutton without having any differences in the agent’s behaviour. You will just see the next step of the simulation.&lt;br /&gt;
For displaying the result the position of the agent and the Emergency Exit have to be converted into a two-dimensional array. Also the color-scale of the WhiteBoard has to be set.&lt;br /&gt;
The conversion is done by displayResult(). The setting of the colorscale is done in replayWithVisualization by the function addColorToScale(int lowerLimit, Color c). All values within lowerLimit and the next lowerLimit or, if there is no next lowerLimit, the top, have the color c.&lt;br /&gt;
As soon as this has been done you have to set the data which should be shown by the WhiteBoard. The data is set with the function setData(int[][] data).&lt;br /&gt;
The call of repaint() will force the WhiteBoard to visualize the data which will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:SimulationWithVisualization.jpg]] &lt;br /&gt;
&lt;br /&gt;
The black square represents the agent and the green square the Emergency Exit.&lt;br /&gt;
&lt;br /&gt;
*A form of this simulation which has got a few more complexity is this:&lt;br /&gt;
&lt;br /&gt;
 import java.awt.Color;&lt;br /&gt;
 import java.awt.Dimension;&lt;br /&gt;
 import java.awt.event.ActionEvent;&lt;br /&gt;
 import java.awt.event.ActionListener;&lt;br /&gt;
 import java.util.Random;&lt;br /&gt;
 import java.util.Vector;&lt;br /&gt;
 &lt;br /&gt;
 import javax.swing.JButton;&lt;br /&gt;
 import javax.swing.JFrame;&lt;br /&gt;
 import javax.swing.JTextField;&lt;br /&gt;
 &lt;br /&gt;
 import GridVisualization.*;&lt;br /&gt;
 &lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
   &lt;br /&gt;
   int               steps;&lt;br /&gt;
   int               width;&lt;br /&gt;
   int               height;&lt;br /&gt;
   int               numberofAgents;&lt;br /&gt;
   int               numberofExits;&lt;br /&gt;
   int               seed;&lt;br /&gt;
   agent[]           agents;&lt;br /&gt;
   Exit[]            EmergencyExits;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
   JTextField        seedTextField;&lt;br /&gt;
   &lt;br /&gt;
   // this function is called to simulate without visualization. It is used to find the best Representation&lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (int s = seed; s &amp;lt; seed + 10; s++) {&lt;br /&gt;
       setupField(s);&lt;br /&gt;
       Fitness += calcSim();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / 10);&lt;br /&gt;
   } &lt;br /&gt;
  &lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display    display;&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(840, 695, &amp;quot;EmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     &lt;br /&gt;
     whiteboard = new WhiteBoard(600, 600, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     // you can decide whether to take images or colors to represent things on the whiteboard&lt;br /&gt;
     //whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addImageToScale(1, &amp;quot;Components\\Problems\\EmergencyExit\\agent.png&amp;quot;);&lt;br /&gt;
     //whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     whiteboard.addImageToScale(2, &amp;quot;Components\\Problems\\EmergencyExit\\EmergencyExit.png&amp;quot;);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;&amp;lt;--&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;--&amp;gt;&amp;quot;);&lt;br /&gt;
     seedTextField = new JTextField(&amp;quot;&amp;quot; + seed);&lt;br /&gt;
     seedTextField.setPreferredSize(new Dimension(50, 20));&lt;br /&gt;
     JButton startButton = new JButton(&amp;quot;Change seed&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     display.add(seedTextField);&lt;br /&gt;
     display.add(startButton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.2f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     startButton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps = 0;&lt;br /&gt;
         seed = Integer.parseInt(seedTextField.getText());&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     setupField(seed);&lt;br /&gt;
     double Fitness = calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     int agentsleft = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
     }&lt;br /&gt;
     String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
     display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Displays the result of the last Simulation&lt;br /&gt;
    */&lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       data[a.xpos][a.ypos] = 1;&lt;br /&gt;
     }&lt;br /&gt;
     for (Exit e : EmergencyExits) {&lt;br /&gt;
       data[e.xpos][e.ypos] = 2;&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   void setupField(int s) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     numberofAgents /**/= Integer.parseInt(getProperties().get(&amp;quot;NumberofAgents&amp;quot;).getValue());&lt;br /&gt;
     numberofExits /* */= Integer.parseInt(getProperties().get(&amp;quot;NumberofEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     &lt;br /&gt;
     numberofAgents /**/= Math.min(numberofAgents, Math.max(width, height));&lt;br /&gt;
     numberofExits /* */= Math.min(numberofExits, width * height);&lt;br /&gt;
     agents /*        */= new agent[numberofAgents];&lt;br /&gt;
     EmergencyExits /**/= new Exit[numberofExits];&lt;br /&gt;
     // it is important to reset the Representation. Otherwise there would sometimes be simulation mistakes because the Representation wouldn't start from the same seed&lt;br /&gt;
     c[0].reset();&lt;br /&gt;
     // create the agents and place them in a straight line from the upper left to the lower right corner&lt;br /&gt;
     &lt;br /&gt;
     for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
       agents[i] = new agent(c[0].clone(), (i + 1) * width / (agents.length + 1), (i + 1) * height / (agents.length + 1), false);&lt;br /&gt;
     }&lt;br /&gt;
     Random positionGenerator = new Random(s);&lt;br /&gt;
     for (int i = 0; i &amp;lt; EmergencyExits.length; i++) {&lt;br /&gt;
       EmergencyExits[i] = new Exit();&lt;br /&gt;
       boolean PositionExistsAlready = false;&lt;br /&gt;
       do {&lt;br /&gt;
         EmergencyExits[i].xpos = positionGenerator.nextInt(width);&lt;br /&gt;
         EmergencyExits[i].ypos = positionGenerator.nextInt(width);&lt;br /&gt;
         PositionExistsAlready = false;&lt;br /&gt;
         for (int j = 0; j &amp;lt; i; j++) {&lt;br /&gt;
           if (EmergencyExits[i].xpos == EmergencyExits[j].xpos &amp;amp;&amp;amp; EmergencyExits[i].ypos == EmergencyExits[j].ypos) PositionExistsAlready = true;&lt;br /&gt;
         }&lt;br /&gt;
       } while (PositionExistsAlready);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Calculates one Simulation whit a certain amount of steps, which has to be defined before calling this method&lt;br /&gt;
    * &lt;br /&gt;
    * @return Returns the negative Sum of the distances between the agents and the Emergency Exit&lt;br /&gt;
    */&lt;br /&gt;
   double calcSim() {&lt;br /&gt;
     &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
         agent a = agents[i];&lt;br /&gt;
         if (!a.hasReachedExit) {&lt;br /&gt;
           &lt;br /&gt;
           Exit nearestExit = EmergencyExits[0];&lt;br /&gt;
           double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
           for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
             double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
             if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
               minimumDistance = Distance;&lt;br /&gt;
               nearestExit = EmergencyExits[e];&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
          &lt;br /&gt;
           // input[0] .. horizontal distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[1] .. vertical distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[2] .. field north      of the agent is occupied&lt;br /&gt;
           // input[3] .. field north-east of the agent is occupied&lt;br /&gt;
           // input[4] .. field east       of the agent is occupied&lt;br /&gt;
           // input[5] .. field south-east of the agent is occupied&lt;br /&gt;
           // input[6] .. field south      of the agent is occupied&lt;br /&gt;
           // input[7] .. field south-west of the agent is occupied&lt;br /&gt;
           // input[8] .. field west       of the agent is occupied&lt;br /&gt;
           // input[9] .. field north-west of the agent is occupied&lt;br /&gt;
           &lt;br /&gt;
           // determine which fields around the agent are occupied by another agent&lt;br /&gt;
           boolean northoccupied /**/= false;&lt;br /&gt;
           boolean northeastoccupied = false;&lt;br /&gt;
           boolean eastoccupied /* */= false;&lt;br /&gt;
           boolean southeastoccupied = false;&lt;br /&gt;
           boolean southoccupied /**/= false;&lt;br /&gt;
           boolean southwestoccupied = false;&lt;br /&gt;
           boolean westoccupied /* */= false;&lt;br /&gt;
           boolean northwestoccupied = false;&lt;br /&gt;
           &lt;br /&gt;
           for (int j = 0; j &amp;lt; agents.length; j++) {&lt;br /&gt;
             agent ag = agents[j];&lt;br /&gt;
             if (!ag.hasReachedExit) { // If a agent has reached the Emergency Exit he cannot occupy a field&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northoccupied /**/= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northeastoccupied = true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) eastoccupied /* */= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southeastoccupied = true;&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southoccupied /**/= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southwestoccupied = true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) westoccupied /* */= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northwestoccupied = true;&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
           input.add((float) (nearestExit.xpos - a.xpos));&lt;br /&gt;
           input.add((float) (nearestExit.ypos - a.ypos));&lt;br /&gt;
           input.add(northoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(eastoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(westoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           &lt;br /&gt;
           // output[0] .. horizontal velocity of the agent&lt;br /&gt;
           // output[1] .. vertical velocity of the agent&lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; output = a.representation.getOutput(input);&lt;br /&gt;
           &lt;br /&gt;
           // the elements of output are float values between 0.0 and 1.0&lt;br /&gt;
           // for the simulation it is useful to format these values so that you can see what each value means&lt;br /&gt;
           float xVfloat = output.get(0).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           float yVfloat = output.get(1).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           &lt;br /&gt;
           int xVelocity = Math.round(xVfloat); // -1 .. move one field in negative horizontal direction&lt;br /&gt;
                                                //  0 .. do not move in any horizontal direction&lt;br /&gt;
                                                //  1 .. move one field in positive horizontal direction&lt;br /&gt;
           int yVelocity = Math.round(yVfloat); // -1 .. move one field in negative vertical direction&lt;br /&gt;
                                                //  0 .. do not move in any vertical direction&lt;br /&gt;
                                                //  1 .. move one field in positive vertical direction&lt;br /&gt;
           &lt;br /&gt;
           // move the agent (only if the place, that he wants to move is not occupied by another agent)&lt;br /&gt;
           if /*   */(xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !eastoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;lt; width - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !westoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;gt; 0/*    */) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           for (int n = 0; n &amp;lt; EmergencyExits.length &amp;amp;&amp;amp; !a.hasReachedExit; n++) {&lt;br /&gt;
             if (a.xpos == EmergencyExits[n].xpos &amp;amp;&amp;amp; a.ypos == EmergencyExits[n].ypos) a.hasReachedExit = true;&lt;br /&gt;
             else /*                                                                 */a.hasReachedExit = false;&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
       for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
         double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
         if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
           minimumDistance = Distance;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
       Fitness += -minimumDistance / Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / numberofAgents);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     return &amp;quot;EmergencyExit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     return &amp;quot;A simulation where multiple Agents try to find the Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     return &amp;quot;Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class agent {&lt;br /&gt;
     public IRepresentation representation;&lt;br /&gt;
     public int             xpos;&lt;br /&gt;
     public int             ypos;&lt;br /&gt;
     public boolean         hasReachedExit;&lt;br /&gt;
     &lt;br /&gt;
     /**&lt;br /&gt;
      * @param r Representation for this Agent&lt;br /&gt;
      * @param x defines the x position of this Agent&lt;br /&gt;
      * @param y defines the y position of this Agent&lt;br /&gt;
      */&lt;br /&gt;
     public agent(IRepresentation r, int x, int y, boolean reachedExit) {&lt;br /&gt;
       representation = r;&lt;br /&gt;
       xpos = x;&lt;br /&gt;
       ypos = y;&lt;br /&gt;
       hasReachedExit = reachedExit;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class Exit {&lt;br /&gt;
     public int xpos;&lt;br /&gt;
     public int ypos;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
The main changes are that there are more than one agent and also more than on Emergency Exits. The agents are distributed over the field in a straight line from the upper left to the lower right corner of the field. The Emergency Exits are distributed by random with a seed. It also shows that the same connection of input and output should be able to start with different starting conditions and nevertheless to find the exit for all agents. This is done by adding a loop to getResult() which changes the starting seed of setupField().&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=881</id>
		<title>FREVO Tutorial - New Problem</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=881"/>
				<updated>2011-07-20T13:29:28Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains how to model and implement a new problem in FREVO. FREVO (see www.frevotool.tk) is an open-source framework developed in Java to help engineers and scientists in evolutionary design or optimization tasks. The major feature of FREVO is the componentwise decomposition and separation of the key building blocks for each optimization tasks. We identify these as the problem definition, solution representation and the optimization method. &lt;br /&gt;
&lt;br /&gt;
In this tutorial we will implement a simulation where agents try to find an Emergency Exit. Let's start:&lt;br /&gt;
&lt;br /&gt;
* Run ComponentCreator.java. (ComponentCreator.java can be found, as you see in the picture, in the package utils)&lt;br /&gt;
&lt;br /&gt;
[[Image:FindingComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
* A window opens. Here you have to select the type of the component you want to create (Problem, Method, Representation, Ranking). For a simulation the right choice is Problem. Then you have to enter a name and a short description.&lt;br /&gt;
&lt;br /&gt;
[[Image:ComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Create&amp;quot; and follow the instructions that are shown. A new folder, containing your *.java file, and an *.xml file will be generated generatet. (in this case &amp;quot;EmergencyExit.java&amp;quot; and &amp;quot;EmergencyExit.xml&amp;quot;)&lt;br /&gt;
* The generated *.java file looks like this:&lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return 0;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
 &lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
**getResult() is called to simulate without visualization.&lt;br /&gt;
**replayWithVisualization() is (as the name says) called to replay the simulation with Visualization.&lt;br /&gt;
**getClassName() returns the name of your simulation (it’s the same as the class name. In this case &amp;quot;EmergencyExit&amp;quot;). &lt;br /&gt;
**getDescription() returns the description of the simulation.&lt;br /&gt;
**getName() returns the name that represents the simulation in the user interface of FREVO&lt;br /&gt;
*Complete the functions getClassName(), getDescription() and getName(). They should now look like this:&lt;br /&gt;
&lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     return &amp;quot;EmergencyExit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     return &amp;quot;A simulation where multiple Agents try to find the Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     return &amp;quot;Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
*Implement your simulation. (it’s useful to extract it in an own function. So you can call it from getResult() and replayWithVisualization).&lt;br /&gt;
For this tutorial I started with a very simple simulation:&lt;br /&gt;
   int steps;&lt;br /&gt;
   int xpositionofEmergencyExit = 0;&lt;br /&gt;
   int ypositionofEmergencyExit = 0;&lt;br /&gt;
   int width;&lt;br /&gt;
   int height;&lt;br /&gt;
   int xpositionofAgent;&lt;br /&gt;
   int ypositionofAgent;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
 &lt;br /&gt;
 void calcSim(){&lt;br /&gt;
    &lt;br /&gt;
     xpositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;xpositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     ypositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;ypositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     xpositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;xpositionofAgent&amp;quot;).getValue());&lt;br /&gt;
     ypositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;ypositionofAgent&amp;quot;).getValue());&lt;br /&gt;
    &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
       input.add((float) (xpositionofEmergencyExit - xpositionofAgent));&lt;br /&gt;
       input.add((float) (ypositionofEmergencyExit - ypositionofAgent));&lt;br /&gt;
 &lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; output = c[0].getOutput(input);&lt;br /&gt;
 &lt;br /&gt;
       float xVelocity = output.get(0).floatValue()*2.0f-1.0f;&lt;br /&gt;
       float yVelocity = output.get(1).floatValue()*2.0f-1.0f;&lt;br /&gt;
 &lt;br /&gt;
       if /* */(xVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;lt; width - 1) xpositionofAgent += 1;&lt;br /&gt;
       else if (xVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;gt; 0 /*   */) xpositionofAgent -= 1;&lt;br /&gt;
       if /* */(yVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;lt; height - 1) ypositionofAgent += 1;&lt;br /&gt;
       else if (yVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;gt; 0 /*    */) ypositionofAgent -= 1;&lt;br /&gt;
     } &lt;br /&gt;
   }&lt;br /&gt;
	&lt;br /&gt;
The position of the Emergency Exit and the agent are read from the *.xml file which is accessed getProperties().get(name).getValue(). Where name represents the name of the value in the *.xml file.&lt;br /&gt;
The value of &amp;quot;steps&amp;quot;, &amp;quot;width&amp;quot; and &amp;quot;height&amp;quot; are written in the functions getResult() and replayWithVisualization().&lt;br /&gt;
The main function of FREVO is to find the best way how to connect the input and the output. So you just have to collect all the inputs and the representation (here it is c[0]) will return the output. It’s important that all the inputs and all the outputs are always in the same order. The output is always a float value between 0.0 and 1.0. You have to decide how to handle these outputs. In this simulation the output describes how the agent moves.&lt;br /&gt;
*Now the code of the simulation is finished but it still has to be called by getResult().&lt;br /&gt;
 public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
    &lt;br /&gt;
     calcSim();&lt;br /&gt;
    &lt;br /&gt;
     return -Math.sqrt(Math.pow((xpositionofEmergencyExit - xpositionofAgent), 2)&lt;br /&gt;
     /*            */+ Math.pow((ypositionofEmergencyExit - ypositionofAgent), 2));&lt;br /&gt;
   }&lt;br /&gt;
As we said before the values of “steps”, “width” and “height” have to be written in this function. They are read from the *.xml file.&lt;br /&gt;
The return value of this function says how good this representation was. It says if this value is high, the connection of input and output is good.&lt;br /&gt;
For the EmergencyExit simulation this value is the negative distance between the agent and the Emergency Exit. So if the agent reaches the Emergency Exit within the amount of steps, the distance will be 0 and so it says it is a good way of connecting input and output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*At the end you have to implement a visualization for your simulation:&lt;br /&gt;
&lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display display;&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     steps = 0;&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(440, 495, &amp;quot;SimplifiedEmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     whiteboard = new WhiteBoard(400, 400, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;-&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;+&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       } &lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         if /* */(x == xpositionofEmergencyExit &amp;amp;&amp;amp; y == ypositionofEmergencyExit) data[x][y] = 2;&lt;br /&gt;
         else if (x == xpositionofAgent /*    */&amp;amp;&amp;amp; y == ypositionofAgent) /*    */data[x][y] = 1;&lt;br /&gt;
         else /*                                                                */data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Therefore the class WhiteBoard can be used. It is an extension of JPanel which represents a two- or three-dimensional grid of data in form of colors or pictures in a grid. It only has to be initialized and added to a JFrame or an extension of JFrame. Here the class Display is used. It is an extension of JFrame with a new constructor and a few settings that have already been done. &lt;br /&gt;
The window of this visualization contains the WhiteBoard and two buttons, which are used to go through the simulation step by step.&lt;br /&gt;
The simulation always does as much steps as the value of “steps” says. The simulation with visualization always works with the same representation and the same starting conditions.&lt;br /&gt;
So it is possible to increase the value of “steps” and start a simulation from the beginning by clicking on plusbutton without having any differences in the agent’s behaviour. You will just see the next step of the simulation.&lt;br /&gt;
For displaying the result the position of the agent and the Emergency Exit have to be converted into a two-dimensional array. Also the color-scale of the WhiteBoard has to be set.&lt;br /&gt;
The conversion is done by displayResult(). The setting of the colorscale is done in replayWithVisualization by the function addColorToScale(int lowerLimit, Color c). All values within lowerLimit and the next lowerLimit or, if there is no next lowerLimit, the top, have the color c.&lt;br /&gt;
As soon as this has been done you have to set the data which should be shown by the WhiteBoard. The data is set with the function setData(int[][] data).&lt;br /&gt;
The call of repaint() will force the WhiteBoard to visualize the data which will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:SimulationWithVisualization.jpg]] &lt;br /&gt;
&lt;br /&gt;
The black square represents the agent and the green square the Emergency Exit.&lt;br /&gt;
&lt;br /&gt;
*A form of this simulation which has got a few more complexity is this:&lt;br /&gt;
&lt;br /&gt;
 import java.awt.Color;&lt;br /&gt;
 import java.awt.Dimension;&lt;br /&gt;
 import java.awt.event.ActionEvent;&lt;br /&gt;
 import java.awt.event.ActionListener;&lt;br /&gt;
 import java.util.Random;&lt;br /&gt;
 import java.util.Vector;&lt;br /&gt;
 &lt;br /&gt;
 import javax.swing.JButton;&lt;br /&gt;
 import javax.swing.JFrame;&lt;br /&gt;
 import javax.swing.JTextField;&lt;br /&gt;
 &lt;br /&gt;
 import GridVisualization.*;&lt;br /&gt;
 &lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
   &lt;br /&gt;
   int               steps;&lt;br /&gt;
   int               width;&lt;br /&gt;
   int               height;&lt;br /&gt;
   int               numberofAgents;&lt;br /&gt;
   int               numberofExits;&lt;br /&gt;
   int               seed;&lt;br /&gt;
   agent[]           agents;&lt;br /&gt;
   Exit[]            EmergencyExits;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
   JTextField        seedTextField;&lt;br /&gt;
   &lt;br /&gt;
   // this function is called to simulate without visualization. It is used to find the best Representation&lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (int s = seed; s &amp;lt; seed + 10; s++) {&lt;br /&gt;
       setupField(s);&lt;br /&gt;
       Fitness += calcSim();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / 10);&lt;br /&gt;
   } &lt;br /&gt;
  &lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display    display;&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(840, 695, &amp;quot;EmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     &lt;br /&gt;
     whiteboard = new WhiteBoard(600, 600, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     // you can decide whether to take images or colors to represent things on the whiteboard&lt;br /&gt;
     //whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addImageToScale(1, &amp;quot;Components\\Problems\\EmergencyExit\\agent.png&amp;quot;);&lt;br /&gt;
     //whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     whiteboard.addImageToScale(2, &amp;quot;Components\\Problems\\EmergencyExit\\EmergencyExit.png&amp;quot;);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;&amp;lt;--&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;--&amp;gt;&amp;quot;);&lt;br /&gt;
     seedTextField = new JTextField(&amp;quot;&amp;quot; + seed);&lt;br /&gt;
     seedTextField.setPreferredSize(new Dimension(50, 20));&lt;br /&gt;
     JButton startButton = new JButton(&amp;quot;Change seed&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     display.add(seedTextField);&lt;br /&gt;
     display.add(startButton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.2f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     startButton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps = 0;&lt;br /&gt;
         seed = Integer.parseInt(seedTextField.getText());&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     setupField(seed);&lt;br /&gt;
     double Fitness = calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     int agentsleft = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
     }&lt;br /&gt;
     String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
     display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Displays the result of the last Simulation&lt;br /&gt;
    */&lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       data[a.xpos][a.ypos] = 1;&lt;br /&gt;
     }&lt;br /&gt;
     for (Exit e : EmergencyExits) {&lt;br /&gt;
       data[e.xpos][e.ypos] = 2;&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   void setupField(int s) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     numberofAgents /**/= Integer.parseInt(getProperties().get(&amp;quot;NumberofAgents&amp;quot;).getValue());&lt;br /&gt;
     numberofExits /* */= Integer.parseInt(getProperties().get(&amp;quot;NumberofEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     &lt;br /&gt;
     numberofAgents /**/= Math.min(numberofAgents, Math.max(width, height));&lt;br /&gt;
     numberofExits /* */= Math.min(numberofExits, width * height);&lt;br /&gt;
     agents /*        */= new agent[numberofAgents];&lt;br /&gt;
     EmergencyExits /**/= new Exit[numberofExits];&lt;br /&gt;
     // it is important to reset the Representation. Otherwise there would sometimes be simulation mistakes because the Representation wouldn't start from the same seed&lt;br /&gt;
     c[0].reset();&lt;br /&gt;
     // create the agents and place them in a straight line from the upper left to the lower right corner&lt;br /&gt;
     &lt;br /&gt;
     for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
       agents[i] = new agent(c[0].clone(), (i + 1) * width / (agents.length + 1), (i + 1) * height / (agents.length + 1), false);&lt;br /&gt;
     }&lt;br /&gt;
     Random positionGenerator = new Random(s);&lt;br /&gt;
     for (int i = 0; i &amp;lt; EmergencyExits.length; i++) {&lt;br /&gt;
       EmergencyExits[i] = new Exit();&lt;br /&gt;
       boolean PositionExistsAlready = false;&lt;br /&gt;
       do {&lt;br /&gt;
         EmergencyExits[i].xpos = positionGenerator.nextInt(width);&lt;br /&gt;
         EmergencyExits[i].ypos = positionGenerator.nextInt(width);&lt;br /&gt;
         PositionExistsAlready = false;&lt;br /&gt;
         for (int j = 0; j &amp;lt; i; j++) {&lt;br /&gt;
           if (EmergencyExits[i].xpos == EmergencyExits[j].xpos &amp;amp;&amp;amp; EmergencyExits[i].ypos == EmergencyExits[j].ypos) PositionExistsAlready = true;&lt;br /&gt;
         }&lt;br /&gt;
       } while (PositionExistsAlready);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Calculates one Simulation whit a certain amount of steps, which has to be defined before calling this method&lt;br /&gt;
    * &lt;br /&gt;
    * @return Returns the negative Sum of the distances between the agents and the Emergency Exit&lt;br /&gt;
    */&lt;br /&gt;
   double calcSim() {&lt;br /&gt;
     &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
         agent a = agents[i];&lt;br /&gt;
         if (!a.hasReachedExit) {&lt;br /&gt;
           &lt;br /&gt;
           Exit nearestExit = EmergencyExits[0];&lt;br /&gt;
           double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
           for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
             double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
             if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
               minimumDistance = Distance;&lt;br /&gt;
               nearestExit = EmergencyExits[e];&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
          &lt;br /&gt;
           // input[0] .. horizontal distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[1] .. vertical distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[2] .. field north      of the agent is occupied&lt;br /&gt;
           // input[3] .. field north-east of the agent is occupied&lt;br /&gt;
           // input[4] .. field east       of the agent is occupied&lt;br /&gt;
           // input[5] .. field south-east of the agent is occupied&lt;br /&gt;
           // input[6] .. field south      of the agent is occupied&lt;br /&gt;
           // input[7] .. field south-west of the agent is occupied&lt;br /&gt;
           // input[8] .. field west       of the agent is occupied&lt;br /&gt;
           // input[9] .. field north-west of the agent is occupied&lt;br /&gt;
           &lt;br /&gt;
           // determine which fields around the agent are occupied by another agent&lt;br /&gt;
           boolean northoccupied /**/= false;&lt;br /&gt;
           boolean northeastoccupied = false;&lt;br /&gt;
           boolean eastoccupied /* */= false;&lt;br /&gt;
           boolean southeastoccupied = false;&lt;br /&gt;
           boolean southoccupied /**/= false;&lt;br /&gt;
           boolean southwestoccupied = false;&lt;br /&gt;
           boolean westoccupied /* */= false;&lt;br /&gt;
           boolean northwestoccupied = false;&lt;br /&gt;
           &lt;br /&gt;
           for (int j = 0; j &amp;lt; agents.length; j++) {&lt;br /&gt;
             agent ag = agents[j];&lt;br /&gt;
             if (!ag.hasReachedExit) { // If a agent has reached the Emergency Exit he cannot occupy a field&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northoccupied /**/= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northeastoccupied = true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) eastoccupied /* */= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southeastoccupied = true;&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southoccupied /**/= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southwestoccupied = true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) westoccupied /* */= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northwestoccupied = true;&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
           input.add((float) (nearestExit.xpos - a.xpos));&lt;br /&gt;
           input.add((float) (nearestExit.ypos - a.ypos));&lt;br /&gt;
           input.add(northoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(eastoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(westoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           &lt;br /&gt;
           // output[0] .. horizontal velocity of the agent&lt;br /&gt;
           // output[1] .. vertical velocity of the agent&lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; output = a.representation.getOutput(input);&lt;br /&gt;
           &lt;br /&gt;
           // the elements of output are float values between 0.0 and 1.0&lt;br /&gt;
           // for the simulation it is useful to format these values so that you can see what each value means&lt;br /&gt;
           float xVfloat = output.get(0).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           float yVfloat = output.get(1).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           &lt;br /&gt;
           int xVelocity = Math.round(xVfloat); // -1 .. move one field in negative horizontal direction&lt;br /&gt;
                                                //  0 .. do not move in any horizontal direction&lt;br /&gt;
                                                //  1 .. move one field in positive horizontal direction&lt;br /&gt;
           int yVelocity = Math.round(yVfloat); // -1 .. move one field in negative vertical direction&lt;br /&gt;
                                                //  0 .. do not move in any vertical direction&lt;br /&gt;
                                                //  1 .. move one field in positive vertical direction&lt;br /&gt;
           &lt;br /&gt;
           // move the agent (only if the place, that he wants to move is not occupied by another agent)&lt;br /&gt;
           if /*   */(xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !eastoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;lt; width - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !westoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;gt; 0/*    */) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           for (int n = 0; n &amp;lt; EmergencyExits.length &amp;amp;&amp;amp; !a.hasReachedExit; n++) {&lt;br /&gt;
             if (a.xpos == EmergencyExits[n].xpos &amp;amp;&amp;amp; a.ypos == EmergencyExits[n].ypos) a.hasReachedExit = true;&lt;br /&gt;
             else /*                                                                 */a.hasReachedExit = false;&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
       for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
         double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
         if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
           minimumDistance = Distance;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
       Fitness += -minimumDistance / Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / numberofAgents);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     return &amp;quot;EmergencyExit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     return &amp;quot;A simulation where multiple Agents try to find the Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     return &amp;quot;Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class agent {&lt;br /&gt;
     public IRepresentation representation;&lt;br /&gt;
     public int             xpos;&lt;br /&gt;
     public int             ypos;&lt;br /&gt;
     public boolean         hasReachedExit;&lt;br /&gt;
     &lt;br /&gt;
     /**&lt;br /&gt;
      * @param r Representation for this Agent&lt;br /&gt;
      * @param x defines the x position of this Agent&lt;br /&gt;
      * @param y defines the y position of this Agent&lt;br /&gt;
      */&lt;br /&gt;
     public agent(IRepresentation r, int x, int y, boolean reachedExit) {&lt;br /&gt;
       representation = r;&lt;br /&gt;
       xpos = x;&lt;br /&gt;
       ypos = y;&lt;br /&gt;
       hasReachedExit = reachedExit;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class Exit {&lt;br /&gt;
     public int xpos;&lt;br /&gt;
     public int ypos;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
The main changes are that there are more than one agent and also more than on Emergency Exits. The agents are distributed over the field in a straight line from the upper left to the lower right corner of the field. The Emergency Exits are distributed by random with a seed. It also shows that the same connection of input and output should be able to start with different starting conditions and nevertheless to find the exit for all agents. This is done by adding a loop to getResult() which changes the starting seed of setupField().&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=880</id>
		<title>FREVO Tutorial - New Problem</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=FREVO_Tutorial_-_New_Problem&amp;diff=880"/>
				<updated>2011-07-20T13:28:14Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial explains how to model and implement a new problem in FREVO. FREVO (see www.frevotool.tk) is an open-source framework developed in Java to help engineers and scientists in evolutionary design or optimization tasks. The major feature of FREVO is the componentwise decomposition and separation of the key building blocks for each optimization tasks. We identify these as the problem definition, solution representation and the optimization method. &lt;br /&gt;
&lt;br /&gt;
* The simulation that is implemented in this tutorial is a simulation where agents try to find an Emergency Exit.&lt;br /&gt;
* Run ComponentCreator.java. (ComponentCreator.java can be found, as you see in the picture, in the package utils)&lt;br /&gt;
&lt;br /&gt;
[[Image:FindingComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
* A window opens. Here you have to select the type of the component you want to create (Problem, Method, Representation, Ranking). For a simulation the right choice is Problem. Then you have to enter a name and a short description.&lt;br /&gt;
&lt;br /&gt;
[[Image:ComponentCreator.jpg]]&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Create&amp;quot; and follow the instructions that are shown. A new folder, containing your *.java file, and an *.xml file will be generated generatet. (in this case &amp;quot;EmergencyExit.java&amp;quot; and &amp;quot;EmergencyExit.xml&amp;quot;)&lt;br /&gt;
* The generated *.java file looks like this:&lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return 0;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
 &lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     // TODO Auto-generated method stub&lt;br /&gt;
     return null;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
**getResult() is called to simulate without visualization.&lt;br /&gt;
**replayWithVisualization() is (as the name says) called to replay the simulation with Visualization.&lt;br /&gt;
**getClassName() returns the name of your simulation (it’s the same as the class name. In this case &amp;quot;EmergencyExit&amp;quot;). &lt;br /&gt;
**getDescription() returns the description of the simulation.&lt;br /&gt;
**getName() returns the name that represents the simulation in the user interface of FREVO&lt;br /&gt;
*Complete the functions getClassName(), getDescription() and getName(). They should now look like this:&lt;br /&gt;
&lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     return &amp;quot;EmergencyExit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     return &amp;quot;A simulation where multiple Agents try to find the Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     return &amp;quot;Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
*Implement your simulation. (it’s useful to extract it in an own function. So you can call it from getResult() and replayWithVisualization).&lt;br /&gt;
For this tutorial I started with a very simple simulation:&lt;br /&gt;
   int steps;&lt;br /&gt;
   int xpositionofEmergencyExit = 0;&lt;br /&gt;
   int ypositionofEmergencyExit = 0;&lt;br /&gt;
   int width;&lt;br /&gt;
   int height;&lt;br /&gt;
   int xpositionofAgent;&lt;br /&gt;
   int ypositionofAgent;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
 &lt;br /&gt;
 void calcSim(){&lt;br /&gt;
    &lt;br /&gt;
     xpositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;xpositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     ypositionofEmergencyExit = Integer.parseInt(getProperties().get(&amp;quot;ypositionofEmergencyExit&amp;quot;).getValue());&lt;br /&gt;
     xpositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;xpositionofAgent&amp;quot;).getValue());&lt;br /&gt;
     ypositionofAgent = Integer.parseInt(getProperties().get(&amp;quot;ypositionofAgent&amp;quot;).getValue());&lt;br /&gt;
    &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
       input.add((float) (xpositionofEmergencyExit - xpositionofAgent));&lt;br /&gt;
       input.add((float) (ypositionofEmergencyExit - ypositionofAgent));&lt;br /&gt;
 &lt;br /&gt;
       Vector&amp;lt;Float&amp;gt; output = c[0].getOutput(input);&lt;br /&gt;
 &lt;br /&gt;
       float xVelocity = output.get(0).floatValue()*2.0f-1.0f;&lt;br /&gt;
       float yVelocity = output.get(1).floatValue()*2.0f-1.0f;&lt;br /&gt;
 &lt;br /&gt;
       if /* */(xVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;lt; width - 1) xpositionofAgent += 1;&lt;br /&gt;
       else if (xVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; xpositionofAgent &amp;gt; 0 /*   */) xpositionofAgent -= 1;&lt;br /&gt;
       if /* */(yVelocity &amp;gt;= 1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;lt; height - 1) ypositionofAgent += 1;&lt;br /&gt;
       else if (yVelocity &amp;lt;= -1.0 &amp;amp;&amp;amp; ypositionofAgent &amp;gt; 0 /*    */) ypositionofAgent -= 1;&lt;br /&gt;
     } &lt;br /&gt;
   }&lt;br /&gt;
	&lt;br /&gt;
The position of the Emergency Exit and the agent are read from the *.xml file which is accessed getProperties().get(name).getValue(). Where name represents the name of the value in the *.xml file.&lt;br /&gt;
The value of &amp;quot;steps&amp;quot;, &amp;quot;width&amp;quot; and &amp;quot;height&amp;quot; are written in the functions getResult() and replayWithVisualization().&lt;br /&gt;
The main function of FREVO is to find the best way how to connect the input and the output. So you just have to collect all the inputs and the representation (here it is c[0]) will return the output. It’s important that all the inputs and all the outputs are always in the same order. The output is always a float value between 0.0 and 1.0. You have to decide how to handle these outputs. In this simulation the output describes how the agent moves.&lt;br /&gt;
*Now the code of the simulation is finished but it still has to be called by getResult().&lt;br /&gt;
 public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
    &lt;br /&gt;
     calcSim();&lt;br /&gt;
    &lt;br /&gt;
     return -Math.sqrt(Math.pow((xpositionofEmergencyExit - xpositionofAgent), 2)&lt;br /&gt;
     /*            */+ Math.pow((ypositionofEmergencyExit - ypositionofAgent), 2));&lt;br /&gt;
   }&lt;br /&gt;
As we said before the values of “steps”, “width” and “height” have to be written in this function. They are read from the *.xml file.&lt;br /&gt;
The return value of this function says how good this representation was. It says if this value is high, the connection of input and output is good.&lt;br /&gt;
For the EmergencyExit simulation this value is the negative distance between the agent and the Emergency Exit. So if the agent reaches the Emergency Exit within the amount of steps, the distance will be 0 and so it says it is a good way of connecting input and output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*At the end you have to implement a visualization for your simulation:&lt;br /&gt;
&lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display display;&lt;br /&gt;
 &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     steps = 0;&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(440, 495, &amp;quot;SimplifiedEmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     whiteboard = new WhiteBoard(400, 400, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;-&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;+&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       } &lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
 &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     display.setTitle(&amp;quot;Simplified Emergency Exit    Step: &amp;quot; + steps);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         if /* */(x == xpositionofEmergencyExit &amp;amp;&amp;amp; y == ypositionofEmergencyExit) data[x][y] = 2;&lt;br /&gt;
         else if (x == xpositionofAgent /*    */&amp;amp;&amp;amp; y == ypositionofAgent) /*    */data[x][y] = 1;&lt;br /&gt;
         else /*                                                                */data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Therefore the class WhiteBoard can be used. It is an extension of JPanel which represents a two- or three-dimensional grid of data in form of colors or pictures in a grid. It only has to be initialized and added to a JFrame or an extension of JFrame. Here the class Display is used. It is an extension of JFrame with a new constructor and a few settings that have already been done. &lt;br /&gt;
The window of this visualization contains the WhiteBoard and two buttons, which are used to go through the simulation step by step.&lt;br /&gt;
The simulation always does as much steps as the value of “steps” says. The simulation with visualization always works with the same representation and the same starting conditions.&lt;br /&gt;
So it is possible to increase the value of “steps” and start a simulation from the beginning by clicking on plusbutton without having any differences in the agent’s behaviour. You will just see the next step of the simulation.&lt;br /&gt;
For displaying the result the position of the agent and the Emergency Exit have to be converted into a two-dimensional array. Also the color-scale of the WhiteBoard has to be set.&lt;br /&gt;
The conversion is done by displayResult(). The setting of the colorscale is done in replayWithVisualization by the function addColorToScale(int lowerLimit, Color c). All values within lowerLimit and the next lowerLimit or, if there is no next lowerLimit, the top, have the color c.&lt;br /&gt;
As soon as this has been done you have to set the data which should be shown by the WhiteBoard. The data is set with the function setData(int[][] data).&lt;br /&gt;
The call of repaint() will force the WhiteBoard to visualize the data which will look like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:SimulationWithVisualization.jpg]] &lt;br /&gt;
&lt;br /&gt;
The black square represents the agent and the green square the Emergency Exit.&lt;br /&gt;
&lt;br /&gt;
*A form of this simulation which has got a few more complexity is this:&lt;br /&gt;
&lt;br /&gt;
 import java.awt.Color;&lt;br /&gt;
 import java.awt.Dimension;&lt;br /&gt;
 import java.awt.event.ActionEvent;&lt;br /&gt;
 import java.awt.event.ActionListener;&lt;br /&gt;
 import java.util.Random;&lt;br /&gt;
 import java.util.Vector;&lt;br /&gt;
 &lt;br /&gt;
 import javax.swing.JButton;&lt;br /&gt;
 import javax.swing.JFrame;&lt;br /&gt;
 import javax.swing.JTextField;&lt;br /&gt;
 &lt;br /&gt;
 import GridVisualization.*;&lt;br /&gt;
 &lt;br /&gt;
 import interfaces.IProblem;&lt;br /&gt;
 import interfaces.IRepresentation;&lt;br /&gt;
 &lt;br /&gt;
 public class EmergencyExit extends IProblem {&lt;br /&gt;
   &lt;br /&gt;
   int               steps;&lt;br /&gt;
   int               width;&lt;br /&gt;
   int               height;&lt;br /&gt;
   int               numberofAgents;&lt;br /&gt;
   int               numberofExits;&lt;br /&gt;
   int               seed;&lt;br /&gt;
   agent[]           agents;&lt;br /&gt;
   Exit[]            EmergencyExits;&lt;br /&gt;
   IRepresentation[] c;&lt;br /&gt;
   JTextField        seedTextField;&lt;br /&gt;
   &lt;br /&gt;
   // this function is called to simulate without visualization. It is used to find the best Representation&lt;br /&gt;
   @Override&lt;br /&gt;
   public double getResult(IRepresentation[] candidates) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     steps = Integer.parseInt(getProperties().get(&amp;quot;steps&amp;quot;).getValue());&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (int s = seed; s &amp;lt; seed + 10; s++) {&lt;br /&gt;
       setupField(s);&lt;br /&gt;
       Fitness += calcSim();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / 10);&lt;br /&gt;
   } &lt;br /&gt;
  &lt;br /&gt;
   WhiteBoard whiteboard;&lt;br /&gt;
   Display    display;&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public void replayWithVisualization(IRepresentation[] candidates) {&lt;br /&gt;
     c = candidates;&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     width = Integer.parseInt(getProperties().get(&amp;quot;width&amp;quot;).getValue());&lt;br /&gt;
     height = Integer.parseInt(getProperties().get(&amp;quot;height&amp;quot;).getValue());&lt;br /&gt;
     seed = Integer.parseInt(getProperties().get(&amp;quot;seedforEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     display = new Display(840, 695, &amp;quot;EmergencyExit&amp;quot;);&lt;br /&gt;
     display.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&lt;br /&gt;
     &lt;br /&gt;
     whiteboard = new WhiteBoard(600, 600, width, height, 1);&lt;br /&gt;
     whiteboard.addColorToScale(0, Color.WHITE);&lt;br /&gt;
     // you can decide whether to take images or colors to represent things on the whiteboard&lt;br /&gt;
     //whiteboard.addColorToScale(1, Color.BLACK);&lt;br /&gt;
     whiteboard.addImageToScale(1, &amp;quot;Components\\Problems\\EmergencyExit\\agent.png&amp;quot;);&lt;br /&gt;
     //whiteboard.addColorToScale(2, Color.GREEN);&lt;br /&gt;
     whiteboard.addImageToScale(2, &amp;quot;Components\\Problems\\EmergencyExit\\EmergencyExit.png&amp;quot;);&lt;br /&gt;
     JButton minusbutton = new JButton(&amp;quot;&amp;lt;--&amp;quot;);&lt;br /&gt;
     JButton plusbutton = new JButton(&amp;quot;--&amp;gt;&amp;quot;);&lt;br /&gt;
     seedTextField = new JTextField(&amp;quot;&amp;quot; + seed);&lt;br /&gt;
     seedTextField.setPreferredSize(new Dimension(50, 20));&lt;br /&gt;
     JButton startButton = new JButton(&amp;quot;Change seed&amp;quot;);&lt;br /&gt;
     display.add(whiteboard);&lt;br /&gt;
     display.add(minusbutton);&lt;br /&gt;
     display.add(plusbutton);&lt;br /&gt;
     display.add(seedTextField);&lt;br /&gt;
     display.add(startButton);&lt;br /&gt;
     minusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         if (steps &amp;gt; 0) steps--;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.2f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     plusbutton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps++;&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     startButton.addActionListener(new ActionListener() {&lt;br /&gt;
       &lt;br /&gt;
       @Override&lt;br /&gt;
       public void actionPerformed(ActionEvent e) {&lt;br /&gt;
         steps = 0;&lt;br /&gt;
         seed = Integer.parseInt(seedTextField.getText());&lt;br /&gt;
         setupField(seed);&lt;br /&gt;
         double Fitness = calcSim();&lt;br /&gt;
         displayResult();&lt;br /&gt;
         int agentsleft = 0;&lt;br /&gt;
         for (agent a : agents) {&lt;br /&gt;
           if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
         }&lt;br /&gt;
         String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
         display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
       }&lt;br /&gt;
     });&lt;br /&gt;
     display.setVisible(true);&lt;br /&gt;
     setupField(seed);&lt;br /&gt;
     double Fitness = calcSim();&lt;br /&gt;
     displayResult();&lt;br /&gt;
     int agentsleft = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       if (!a.hasReachedExit) agentsleft++;&lt;br /&gt;
     }&lt;br /&gt;
     String FitnessString = String.format(&amp;quot;%.4f&amp;quot;, Fitness);&lt;br /&gt;
     display.setTitle(&amp;quot;Emergency Exit    Step: &amp;quot; + steps + &amp;quot;   Fitness: &amp;quot; + FitnessString + &amp;quot;  Number of Agents left: &amp;quot; + agentsleft);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Displays the result of the last Simulation&lt;br /&gt;
    */&lt;br /&gt;
   private void displayResult() {&lt;br /&gt;
     int[][] data = new int[width][height];&lt;br /&gt;
     for (int x = 0; x &amp;lt; width; x++) {&lt;br /&gt;
       for (int y = 0; y &amp;lt; height; y++) {&lt;br /&gt;
         data[x][y] = 0;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       data[a.xpos][a.ypos] = 1;&lt;br /&gt;
     }&lt;br /&gt;
     for (Exit e : EmergencyExits) {&lt;br /&gt;
       data[e.xpos][e.ypos] = 2;&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     whiteboard.setData(data);&lt;br /&gt;
     whiteboard.repaint();&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   void setupField(int s) {&lt;br /&gt;
     // read config from xml file&lt;br /&gt;
     numberofAgents /**/= Integer.parseInt(getProperties().get(&amp;quot;NumberofAgents&amp;quot;).getValue());&lt;br /&gt;
     numberofExits /* */= Integer.parseInt(getProperties().get(&amp;quot;NumberofEmergencyExits&amp;quot;).getValue());&lt;br /&gt;
     &lt;br /&gt;
     numberofAgents /**/= Math.min(numberofAgents, Math.max(width, height));&lt;br /&gt;
     numberofExits /* */= Math.min(numberofExits, width * height);&lt;br /&gt;
     agents /*        */= new agent[numberofAgents];&lt;br /&gt;
     EmergencyExits /**/= new Exit[numberofExits];&lt;br /&gt;
     // it is important to reset the Representation. Otherwise there would sometimes be simulation mistakes because the Representation wouldn't start from the same seed&lt;br /&gt;
     c[0].reset();&lt;br /&gt;
     // create the agents and place them in a straight line from the upper left to the lower right corner&lt;br /&gt;
     &lt;br /&gt;
     for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
       agents[i] = new agent(c[0].clone(), (i + 1) * width / (agents.length + 1), (i + 1) * height / (agents.length + 1), false);&lt;br /&gt;
     }&lt;br /&gt;
     Random positionGenerator = new Random(s);&lt;br /&gt;
     for (int i = 0; i &amp;lt; EmergencyExits.length; i++) {&lt;br /&gt;
       EmergencyExits[i] = new Exit();&lt;br /&gt;
       boolean PositionExistsAlready = false;&lt;br /&gt;
       do {&lt;br /&gt;
         EmergencyExits[i].xpos = positionGenerator.nextInt(width);&lt;br /&gt;
         EmergencyExits[i].ypos = positionGenerator.nextInt(width);&lt;br /&gt;
         PositionExistsAlready = false;&lt;br /&gt;
         for (int j = 0; j &amp;lt; i; j++) {&lt;br /&gt;
           if (EmergencyExits[i].xpos == EmergencyExits[j].xpos &amp;amp;&amp;amp; EmergencyExits[i].ypos == EmergencyExits[j].ypos) PositionExistsAlready = true;&lt;br /&gt;
         }&lt;br /&gt;
       } while (PositionExistsAlready);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
    * Calculates one Simulation whit a certain amount of steps, which has to be defined before calling this method&lt;br /&gt;
    * &lt;br /&gt;
    * @return Returns the negative Sum of the distances between the agents and the Emergency Exit&lt;br /&gt;
    */&lt;br /&gt;
   double calcSim() {&lt;br /&gt;
     &lt;br /&gt;
     for (int step = 0; step &amp;lt; steps; step++) {&lt;br /&gt;
       for (int i = 0; i &amp;lt; agents.length; i++) {&lt;br /&gt;
         agent a = agents[i];&lt;br /&gt;
         if (!a.hasReachedExit) {&lt;br /&gt;
           &lt;br /&gt;
           Exit nearestExit = EmergencyExits[0];&lt;br /&gt;
           double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
           for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
             double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
             if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
               minimumDistance = Distance;&lt;br /&gt;
               nearestExit = EmergencyExits[e];&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
          &lt;br /&gt;
           // input[0] .. horizontal distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[1] .. vertical distance between the agent and the nearest Emergency Exit&lt;br /&gt;
           // input[2] .. field north      of the agent is occupied&lt;br /&gt;
           // input[3] .. field north-east of the agent is occupied&lt;br /&gt;
           // input[4] .. field east       of the agent is occupied&lt;br /&gt;
           // input[5] .. field south-east of the agent is occupied&lt;br /&gt;
           // input[6] .. field south      of the agent is occupied&lt;br /&gt;
           // input[7] .. field south-west of the agent is occupied&lt;br /&gt;
           // input[8] .. field west       of the agent is occupied&lt;br /&gt;
           // input[9] .. field north-west of the agent is occupied&lt;br /&gt;
           &lt;br /&gt;
           // determine which fields around the agent are occupied by another agent&lt;br /&gt;
           boolean northoccupied /**/= false;&lt;br /&gt;
           boolean northeastoccupied = false;&lt;br /&gt;
           boolean eastoccupied /* */= false;&lt;br /&gt;
           boolean southeastoccupied = false;&lt;br /&gt;
           boolean southoccupied /**/= false;&lt;br /&gt;
           boolean southwestoccupied = false;&lt;br /&gt;
           boolean westoccupied /* */= false;&lt;br /&gt;
           boolean northwestoccupied = false;&lt;br /&gt;
           &lt;br /&gt;
           for (int j = 0; j &amp;lt; agents.length; j++) {&lt;br /&gt;
             agent ag = agents[j];&lt;br /&gt;
             if (!ag.hasReachedExit) { // If a agent has reached the Emergency Exit he cannot occupy a field&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northoccupied /**/= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northeastoccupied = true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) eastoccupied /* */= true;&lt;br /&gt;
               if (a.xpos + 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southeastoccupied = true;&lt;br /&gt;
               if (a.xpos /**/== ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southoccupied /**/= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos + 1 == ag.ypos) southwestoccupied = true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos /**/== ag.ypos) westoccupied /* */= true;&lt;br /&gt;
               if (a.xpos - 1 == ag.xpos &amp;amp;&amp;amp; a.ypos - 1 == ag.ypos) northwestoccupied = true;&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; input = new Vector&amp;lt;Float&amp;gt;();&lt;br /&gt;
           input.add((float) (nearestExit.xpos - a.xpos));&lt;br /&gt;
           input.add((float) (nearestExit.ypos - a.ypos));&lt;br /&gt;
           input.add(northoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(eastoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southeastoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southoccupied /**/? 1.0f : 0.0f);&lt;br /&gt;
           input.add(southwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           input.add(westoccupied /* */? 1.0f : 0.0f);&lt;br /&gt;
           input.add(northwestoccupied ? 1.0f : 0.0f);&lt;br /&gt;
           &lt;br /&gt;
           // output[0] .. horizontal velocity of the agent&lt;br /&gt;
           // output[1] .. vertical velocity of the agent&lt;br /&gt;
           Vector&amp;lt;Float&amp;gt; output = a.representation.getOutput(input);&lt;br /&gt;
           &lt;br /&gt;
           // the elements of output are float values between 0.0 and 1.0&lt;br /&gt;
           // for the simulation it is useful to format these values so that you can see what each value means&lt;br /&gt;
           float xVfloat = output.get(0).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           float yVfloat = output.get(1).floatValue() * 2.0f - 1.0f;&lt;br /&gt;
           &lt;br /&gt;
           int xVelocity = Math.round(xVfloat); // -1 .. move one field in negative horizontal direction&lt;br /&gt;
                                                //  0 .. do not move in any horizontal direction&lt;br /&gt;
                                                //  1 .. move one field in positive horizontal direction&lt;br /&gt;
           int yVelocity = Math.round(yVfloat); // -1 .. move one field in negative vertical direction&lt;br /&gt;
                                                //  0 .. do not move in any vertical direction&lt;br /&gt;
                                                //  1 .. move one field in positive vertical direction&lt;br /&gt;
           &lt;br /&gt;
           // move the agent (only if the place, that he wants to move is not occupied by another agent)&lt;br /&gt;
           if /*   */(xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !eastoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;lt; width - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == 1/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southeastoccupied &amp;amp;&amp;amp; a.xpos &amp;lt; width - 1 &amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == 0/* */&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southoccupied /**/&amp;amp;&amp;amp; /*                  */a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += 0;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 1/* */&amp;amp;&amp;amp; !southwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;lt; height - 1) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 1;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == 0/* */&amp;amp;&amp;amp; !westoccupied /* */&amp;amp;&amp;amp; a.xpos &amp;gt; 0/*    */) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += 0;&lt;br /&gt;
           } else if (xVelocity == -1/**/&amp;amp;&amp;amp; yVelocity == -1/**/&amp;amp;&amp;amp; !northwestoccupied &amp;amp;&amp;amp; a.xpos &amp;gt; 0 /*    */&amp;amp;&amp;amp; a.ypos &amp;gt; 0) {&lt;br /&gt;
             a.xpos += -1;&lt;br /&gt;
             a.ypos += -1;&lt;br /&gt;
           }&lt;br /&gt;
           &lt;br /&gt;
           for (int n = 0; n &amp;lt; EmergencyExits.length &amp;amp;&amp;amp; !a.hasReachedExit; n++) {&lt;br /&gt;
             if (a.xpos == EmergencyExits[n].xpos &amp;amp;&amp;amp; a.ypos == EmergencyExits[n].ypos) a.hasReachedExit = true;&lt;br /&gt;
             else /*                                                                 */a.hasReachedExit = false;&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     double Fitness = 0;&lt;br /&gt;
     for (agent a : agents) {&lt;br /&gt;
       double minimumDistance = Math.sqrt(Math.pow(EmergencyExits[0].xpos - a.xpos, 2) + Math.pow(EmergencyExits[0].ypos - a.ypos, 2));&lt;br /&gt;
       for (int e = 0; e &amp;lt; EmergencyExits.length; e++) {&lt;br /&gt;
         double Distance = Math.sqrt(Math.pow(EmergencyExits[e].xpos - a.xpos, 2) + Math.pow(EmergencyExits[e].ypos - a.ypos, 2));&lt;br /&gt;
         if (Distance &amp;lt; minimumDistance) {&lt;br /&gt;
           minimumDistance = Distance;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
       Fitness += -minimumDistance / Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     return (Fitness / numberofAgents);&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getClassName() {&lt;br /&gt;
     return &amp;quot;EmergencyExit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getDescription() {&lt;br /&gt;
     return &amp;quot;A simulation where multiple Agents try to find the Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   @Override&lt;br /&gt;
   public String getName() {&lt;br /&gt;
     return &amp;quot;Emergency Exit&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class agent {&lt;br /&gt;
     public IRepresentation representation;&lt;br /&gt;
     public int             xpos;&lt;br /&gt;
     public int             ypos;&lt;br /&gt;
     public boolean         hasReachedExit;&lt;br /&gt;
     &lt;br /&gt;
     /**&lt;br /&gt;
      * @param r Representation for this Agent&lt;br /&gt;
      * @param x defines the x position of this Agent&lt;br /&gt;
      * @param y defines the y position of this Agent&lt;br /&gt;
      */&lt;br /&gt;
     public agent(IRepresentation r, int x, int y, boolean reachedExit) {&lt;br /&gt;
       representation = r;&lt;br /&gt;
       xpos = x;&lt;br /&gt;
       ypos = y;&lt;br /&gt;
       hasReachedExit = reachedExit;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   public class Exit {&lt;br /&gt;
     public int xpos;&lt;br /&gt;
     public int ypos;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
The main changes are that there are more than one agent and also more than on Emergency Exits. The agents are distributed over the field in a straight line from the upper left to the lower right corner of the field. The Emergency Exits are distributed by random with a seed. It also shows that the same connection of input and output should be able to start with different starting conditions and nevertheless to find the exit for all agents. This is done by adding a loop to getResult() which changes the starting seed of setupField().&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=File:DeMeer_Modeling_of_AmI-basedsocio-technical_systems.pdf&amp;diff=869</id>
		<title>File:DeMeer Modeling of AmI-basedsocio-technical systems.pdf</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=File:DeMeer_Modeling_of_AmI-basedsocio-technical_systems.pdf&amp;diff=869"/>
				<updated>2011-07-14T20:15:05Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=868</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=868"/>
				<updated>2011-07-14T20:14:39Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
* [[Application Ideas for Self-organizing Systems]]&lt;br /&gt;
* [[Future Research Directions, PhD Topics]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** [[media:Nahrstedt_Mobile Networking Solutions for First Responders.pdf|Mobile Networking Solutions for First Responders]]&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf|Social Consensus as a Self-Organization Phenomenon]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
** [[media:LakesideLabs2011.pdf|From Chemical Reaction to Ecosystem of Services - The SAPERE Approach]]&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** [[media:Talk_FeBuIo_RD11.pdf|From Communication to Traffic Self-Organization in VANETs]]&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** [[media:SoIn_ICT_Hassas.pdf|Engineering Socially Intelligent ICT and Self-Organization: Some Contributions]]&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** [[Media:Antipheromones.pdf|Self-organization leads to supraoptimal performance in public transportation systems]]. Paper at [http://www.plosone.org/article/info:doi%2F10.1371%2Fjournal.pone.0021469]&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** [[media:deMeer_Modeling of AmI-basedsocio-technical systems.pdf|Modeling of AmI-based Socio-Technical Systems]] &lt;br /&gt;
** [[media:meer _holzer_tutorial-Modeling and Application of Self-organizing Systems.pdf|Tutorial Paper on Modeling and Application of Self-organizing Systems]]&lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=File:Nahrstedt_Mobile_Networking_Solutions_for_First_Responders.pdf&amp;diff=867</id>
		<title>File:Nahrstedt Mobile Networking Solutions for First Responders.pdf</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=File:Nahrstedt_Mobile_Networking_Solutions_for_First_Responders.pdf&amp;diff=867"/>
				<updated>2011-07-14T20:11:49Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=866</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=866"/>
				<updated>2011-07-14T20:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
* [[Application Ideas for Self-organizing Systems]]&lt;br /&gt;
* [[Future Research Directions, PhD Topics]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** [[media:Nahrstedt_Mobile Networking Solutions for First Responders.pdf|Mobile Networking Solutions for First Responders]]&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf|Social Consensus as a Self-Organization Phenomenon]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
** [[media:LakesideLabs2011.pdf|From Chemical Reaction to Ecosystem of Services - The SAPERE Approach]]&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** [[media:Talk_FeBuIo_RD11.pdf|From Communication to Traffic Self-Organization in VANETs]]&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** [[media:SoIn_ICT_Hassas.pdf|Engineering Socially Intelligent ICT and Self-Organization: Some Contributions]]&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** [[Media:Antipheromones.pdf|Self-organization leads to supraoptimal performance in public transportation systems]]. Paper at [http://www.plosone.org/article/info:doi%2F10.1371%2Fjournal.pone.0021469]&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
** [[media:meer _holzer_tutorial-Modeling and Application of Self-organizing Systems.pdf|Tutorial Paper on Modeling and Application of Self-organizing Systems]]&lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=858</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=858"/>
				<updated>2011-07-14T13:16:38Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
* [[Application Ideas for Self-organizing Systems]]&lt;br /&gt;
* [[Future Research Directions, PhD Topics]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf|Social Consensus as a Self-Organization Phenomenon]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
** [[media:LakesideLabs2011.pdf|From Chemical Reaction to Ecosystem of Services - The SAPERE Approach]]&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** [[media:Talk_FeBuIo_RD11.pdf|From Communication to Traffic Self-Organization in VANETs]]&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** [[media:SoIn_ICT_Hassas.pdf|Engineering Socially Intelligent ICT and Self-Organization: Some Contributions]]&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** [[Media:Antipheromones.pdf|Self-organization leads to supraoptimal performance in public transportation systems]]. Paper at [http://www.plosone.org/article/info:doi%2F10.1371%2Fjournal.pone.0021469]&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
** [[media:meer _holzer_tutorial-Modeling and Application of Self-organizing Systems.pdf|Tutorial Paper on Modeling and Application of Self-organizing Systems]]&lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=836</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=836"/>
				<updated>2011-07-14T08:31:52Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
* [[Application Ideas for Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
** [[media:LakesideLabs2011.pdf|From Chemical Reaction to Ecosystem of Services - The SAPERE Approach]]&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** [[media:Talk_FeBuIo_RD11.pdf|From Communication to Traffic Self-Organization in VANETs]]&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Engineering Socially Intelligent ICT �&amp;amp; �Self-Organization�: Some Contributions&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** [[Media:Antipheromones.pdf|Self-organization leads to supraoptimal performance in public transportation systems]]. Paper at [http://www.plosone.org/article/info:doi%2F10.1371%2Fjournal.pone.0021469]&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
** [[media:meer _holzer_tutorial-Modeling and Application of Self-organizing Systems.pdf|Tutorial Paper on Modeling and Application of Self-organizing Systems]]&lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=835</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=835"/>
				<updated>2011-07-14T08:30:12Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
* [[Application Ideas for Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
** [[media:LakesideLabs2011.pdf|From Chemical Reaction to Ecosystem of Services - The SAPERE Approach]]&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** [[media:Talk_FeBuIo_RD11.pdf|From Communication to Traffic Self-Organization in VANETs]]&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Engineering Socially Intelligent ICT �&amp;amp; �Self-Organization�: Some Contributions&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** [[Media:Antipheromones.pdf|Self-organization leads to supraoptimal performance in public transportation systems]]. Paper at [http://www.plosone.org/article/info:doi%2F10.1371%2Fjournal.pone.0021469]&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** [[media:meer _holzer_tutorial-Modeling and Application of Self-organizing Systems.pdf|Tutorial Paper on Modeling and Application of Self-organizing Systems]]&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=File:Meer_holzer_tutorial-Modeling_and_Application_of_Self-organizing_Systems.pdf&amp;diff=834</id>
		<title>File:Meer holzer tutorial-Modeling and Application of Self-organizing Systems.pdf</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=File:Meer_holzer_tutorial-Modeling_and_Application_of_Self-organizing_Systems.pdf&amp;diff=834"/>
				<updated>2011-07-14T08:29:48Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=833</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=833"/>
				<updated>2011-07-14T08:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
* [[Application Ideas for Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
** [[media:LakesideLabs2011.pdf|From Chemical Reaction to Ecosystem of Services - The SAPERE Approach]]&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** [[media:Talk_FeBuIo_RD11.pdf|From Communication to Traffic Self-Organization in VANETs]]&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Engineering Socially Intelligent ICT �&amp;amp; �Self-Organization�: Some Contributions&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** [[Media:Antipheromones.pdf|Self-organization leads to supraoptimal performance in public transportation systems]]. Paper at [http://www.plosone.org/article/info:doi%2F10.1371%2Fjournal.pone.0021469]&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
* [[media:meer _holzer_tutorial-Modeling and Application of Self-organizing Systems.pdf|Tutorial Paper on Modeling and Application of Self-organizing Systems]]&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=832</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=832"/>
				<updated>2011-07-14T08:19:14Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Groupwork results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
* [[Application Ideas for Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
** [[media:LakesideLabs2011.pdf|From Chemical Reaction to Ecosystem of Services - The SAPERE Approach]]&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** [[media:Talk_FeBuIo_RD11.pdf|From Communication to Traffic Self-Organization in VANETs]]&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Engineering Socially Intelligent ICT �&amp;amp; �Self-Organization�: Some Contributions&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** [[Media:Antipheromones.pdf|Self-organization leads to supraoptimal performance in public transportation systems]]. Paper at [http://www.plosone.org/article/info:doi%2F10.1371%2Fjournal.pone.0021469]&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=818</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=818"/>
				<updated>2011-07-13T12:20:07Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Groupwork results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
* [[How to talk to Industry]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** [[media:San Miguel_Social Consensus as a Self-Organization Phenomenon.pdf]]&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** From Communication to Traffic Self-Organization in VANETs&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=812</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=812"/>
				<updated>2011-07-11T14:21:34Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Gianluigi Ferrari, Nicola Iotti&lt;br /&gt;
** From Communication to Traffic Self-Organization in VANETs&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=File:Merz_SON_for_LTE_Networks.pdf&amp;diff=811</id>
		<title>File:Merz SON for LTE Networks.pdf</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=File:Merz_SON_for_LTE_Networks.pdf&amp;diff=811"/>
				<updated>2011-07-11T14:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=810</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=810"/>
				<updated>2011-07-11T14:19:40Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** [[media:Merz_SON for LTE Networks.pdf|Self-Organization in LTE Networks]]&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=805</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=805"/>
				<updated>2011-07-11T13:56:54Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=804</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=804"/>
				<updated>2011-07-11T13:56:26Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_ow to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=803</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=803"/>
				<updated>2011-07-11T13:17:27Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:elmenreich_How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=File:Elmenreich_How_to_put_self-organizing_systems_to_work.pdf&amp;diff=802</id>
		<title>File:Elmenreich How to put self-organizing systems to work.pdf</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=File:Elmenreich_How_to_put_self-organizing_systems_to_work.pdf&amp;diff=802"/>
				<updated>2011-07-11T13:17:04Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=801</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=801"/>
				<updated>2011-07-11T13:16:37Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** [[media:How to put self-organizing systems to work.pdf|How to put self-organizing systems to work?]]&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=800</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=800"/>
				<updated>2011-07-11T13:11:22Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** How to put self-organizing systems to work?&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=799</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=799"/>
				<updated>2011-07-11T13:10:41Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Industrial_Applications_of_Self-organizing_Systems&amp;diff=798</id>
		<title>Industrial Applications of Self-organizing Systems</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Industrial_Applications_of_Self-organizing_Systems&amp;diff=798"/>
				<updated>2011-07-11T12:56:49Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Task description==&lt;br /&gt;
&lt;br /&gt;
* Discuss the need for self-organizing systems in industrial applications&lt;br /&gt;
* Give examples of success stories/potentials&lt;br /&gt;
* What is missing to &amp;quot;make things work&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
&lt;br /&gt;
===Industrial View===&lt;br /&gt;
* Collaboration has to improve the Business Case&lt;br /&gt;
* Return on investment&lt;br /&gt;
** Someone has to pay for it&lt;br /&gt;
** Add value&lt;br /&gt;
* Who is in control up to in the end?&lt;br /&gt;
&lt;br /&gt;
===Basis for collaboration===&lt;br /&gt;
* Bring together industry and academia&lt;br /&gt;
** Two different languages&lt;br /&gt;
** Partnerships&lt;br /&gt;
* Early transfer to the industry&lt;br /&gt;
** NOTE: easier to justify than in the industry&lt;br /&gt;
* Present a benefit to the industry: way to make money&lt;br /&gt;
** New concepts difficult to accept; conservativeness&lt;br /&gt;
** Common set of working assumptions&lt;br /&gt;
** The power of a business plan&lt;br /&gt;
** Do not switch research agenda&lt;br /&gt;
&lt;br /&gt;
===What is missing?===&lt;br /&gt;
&lt;br /&gt;
* Research is there; sometimes too advanced&lt;br /&gt;
* Communication between indutrial and academic needs to be improved&lt;br /&gt;
** Research Days&lt;br /&gt;
* Open questions:&lt;br /&gt;
** Who is control up to in the end?&lt;br /&gt;
** Timeliness and external constraints (regulation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Success stories===&lt;br /&gt;
*LTE?!&lt;br /&gt;
*Power distribution&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Industrial_Applications_of_Self-organizing_Systems&amp;diff=797</id>
		<title>Industrial Applications of Self-organizing Systems</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Industrial_Applications_of_Self-organizing_Systems&amp;diff=797"/>
				<updated>2011-07-11T11:38:53Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: New page: ==Task description==  * Discuss the need for self-organizing systems in industrial applications * Give examples of success stories/potentials * What is missing to &amp;quot;make things work&amp;quot;?  ==Re...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Task description==&lt;br /&gt;
&lt;br /&gt;
* Discuss the need for self-organizing systems in industrial applications&lt;br /&gt;
* Give examples of success stories/potentials&lt;br /&gt;
* What is missing to &amp;quot;make things work&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=796</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=796"/>
				<updated>2011-07-11T11:36:53Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Groupwork results==&lt;br /&gt;
&lt;br /&gt;
* [[Industrial Applications of Self-organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=793</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=793"/>
				<updated>2011-07-06T12:04:48Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
** Usage of EvoDevo in Robotic Systems&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
** Multi-Agents for modeling Complex Systems&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=792</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=792"/>
				<updated>2011-07-04T20:07:23Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
** Social Consensus as a Self-Organization Phenomenon&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=791</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=791"/>
				<updated>2011-07-04T15:57:42Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;br /&gt;
&lt;br /&gt;
* Jürgen Rattenberger&lt;br /&gt;
** Project possibilities on Self-Organizing Systems&lt;br /&gt;
&lt;br /&gt;
* Maxi San Miguel&lt;br /&gt;
* Ronald Thenius&lt;br /&gt;
* Giovanna di Marzo&lt;br /&gt;
* Salima Hassas&lt;br /&gt;
&lt;br /&gt;
* Carlos Gershenson&lt;br /&gt;
** Self-organization leads to supraoptimal performance in public transportation systems&lt;br /&gt;
* Marc Timme&lt;br /&gt;
** Universal Computation by Simple Oscillator Networks&lt;br /&gt;
* Hermann de Meer and Richard Holzer&lt;br /&gt;
** Modeling of AmI-based Socio-Technical Systems &lt;br /&gt;
* Falko Dressler&lt;br /&gt;
** Self-Organization in Massively Distributed Systems – Keeping Oscillations or Forcing a Stable System?&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=790</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=790"/>
				<updated>2011-06-28T13:00:09Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Talks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;br /&gt;
* Klara Nahrstedt&lt;br /&gt;
** Mobile Networking Solutions for First Responders&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=789</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=789"/>
				<updated>2011-06-28T12:57:15Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;br /&gt;
* Peter Merz&lt;br /&gt;
** Self-Organization in LTE Networks&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=788</id>
		<title>Lakeside Research Days'11</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Lakeside_Research_Days%2711&amp;diff=788"/>
				<updated>2011-06-28T10:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic: &lt;br /&gt;
Technical Applications of Self-organization&lt;br /&gt;
&lt;br /&gt;
* Discuss benefits and weaknesses of SOS&lt;br /&gt;
* Analyze/classify existing applications&lt;br /&gt;
* Brainstorm on future application fields&lt;br /&gt;
* Elaborate two/three concrete applications and estimate effort/impact&lt;br /&gt;
* Elaborate a roadmap for research issues to be solved in order to make SOS applicable&lt;br /&gt;
&lt;br /&gt;
Data: July 11-15, 2011&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
==Talks==&lt;br /&gt;
&lt;br /&gt;
* Christian Bettstetter:&lt;br /&gt;
** Welcome to Lakeside Labs&lt;br /&gt;
* Wilfried Elmenreich:&lt;br /&gt;
** Putting self-organizing systems to work&lt;br /&gt;
* Hermann de Meer:&lt;br /&gt;
** titel folgt noch&lt;br /&gt;
* Andreas Mitschele-Thiel:&lt;br /&gt;
** Applying Self-organization to Mobile Communication Systems&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=787</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=787"/>
				<updated>2011-06-28T10:03:32Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Research Days @ Lakeside Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Self-Organizing Networked Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Aspects of self-organizing systems===&lt;br /&gt;
* [[Definition of Self-Organizing Systems]]&lt;br /&gt;
* [[Misconceptions]]&lt;br /&gt;
* [[Self-Organization being a Discipline on its own?]]&lt;br /&gt;
* [[Robustness]]&lt;br /&gt;
* [[Adaptation]]&lt;br /&gt;
* [[Designing Robust Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
=== Resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Researchers in self-organizing systems|Researchers]], [[Self-Organizing Systems Research Groups|Research Groups]]&lt;br /&gt;
* [[Self-Organizing Systems Conferences]]&lt;br /&gt;
* [[Self-Organizing Systems Literature Recommendations]]&lt;br /&gt;
* [[Programming and Modeling Tools]]&lt;br /&gt;
* [[Visualization Tools]]&lt;br /&gt;
* [[JProwler Simulator Tutorial]]&lt;br /&gt;
* [[FREVO Documentation]]&lt;br /&gt;
* [[Simulators,Models, and Games]] A Kamasutra of possible benchmark applications for your intelligent algorithms&lt;br /&gt;
&lt;br /&gt;
== Research Days @ Lakeside Labs==&lt;br /&gt;
* '''[[Lakeside Research Days'11]]'''&lt;br /&gt;
&lt;br /&gt;
* '''[[Lakeside Research Days'10]]'''&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Schedule Schedule]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Presentations Research Talks]&lt;br /&gt;
** [[Mindmap for engineering self-organizing systems]]&lt;br /&gt;
** Group Work: [[Challenges in Engineering Self-Organizing Systems]]&lt;br /&gt;
** Group Work: Design Patterns and Checklists&lt;br /&gt;
*** [[Design Patterns for engineering SOS]]&lt;br /&gt;
*** [[Checklist and Best Practice Examples for Designing Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Stigmergy]]&lt;br /&gt;
** Group Work: [[Role of Self-* properties in the Future Internet]]&lt;br /&gt;
** Group Work: [[Self-organizing synchronization]]&lt;br /&gt;
** Group Work: [[Self-Organization in Social Technical Systems]]&lt;br /&gt;
** Group Work: [[Emergence of Awareness and Intelligence]]&lt;br /&gt;
** Plans for joint work: [[Publications]], [[Projects]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'09]]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2709#Research_Talks Research Talks]&lt;br /&gt;
** [[Curriculum on Self-Organizing Networked Systems]]&lt;br /&gt;
** Group Work: [[Case Studies for Robust Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Modeling Techniques for Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Research Areas on Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'08]]&lt;br /&gt;
* [[Lakeside Research Days|Lakeside Research Days General Information]]&lt;br /&gt;
&lt;br /&gt;
== IWSOS TPC Chairing ==&lt;br /&gt;
* [[Schedule]]&lt;br /&gt;
* [[Call for Papers]]&lt;br /&gt;
* [[TPC Members]]&lt;br /&gt;
&lt;br /&gt;
== How to use the Wiki ==&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
=== Getting started ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=786</id>
		<title>Simulators,Models, and Games</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=786"/>
				<updated>2011-05-17T21:33:46Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://www.retroprogramming.com/2011/02/celebrating-30-years-of-color-robot.html Color Robot]: a simple Tank vs. Tank game with programmed robot tanks&lt;br /&gt;
* [http://www.retroprogramming.com/2011/01/corelife-artificial-life-simulator.html CoreLife: Artificial Life Simulator]&lt;br /&gt;
* [http://www.retroprogramming.com/2009/09/history-of-programming-games-1961-1989.html An overview on Programming Games]&lt;br /&gt;
* [http://www.retroprogramming.com/2009/05/corelife-programming-in-2-dimensions.html CoreLife]: a two-dimensional CoreWars&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=785</id>
		<title>Simulators,Models, and Games</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=785"/>
				<updated>2011-05-17T21:27:20Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://www.retroprogramming.com/2011/02/celebrating-30-years-of-color-robot.html Color Robot]: a simple Tank vs. Tank game with programmed robot tanks&lt;br /&gt;
* [http://www.retroprogramming.com/2011/01/corelife-artificial-life-simulator.html CoreLife: Artificial Life Simulator]&lt;br /&gt;
* [http://www.retroprogramming.com/2009/09/history-of-programming-games-1961-1989.html An overview on Programming Games]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=784</id>
		<title>Simulators,Models, and Games</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=784"/>
				<updated>2011-05-17T21:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://www.retroprogramming.com/2011/02/celebrating-30-years-of-color-robot.html Color Robot]: a simple Tank vs. Tank game with programmed robot tanks&lt;br /&gt;
* [http://www.retroprogramming.com/2011/01/corelife-artificial-life-simulator.html CoreLife: Artificial Life Simulator]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=783</id>
		<title>Simulators,Models, and Games</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Simulators,Models,_and_Games&amp;diff=783"/>
				<updated>2011-05-17T21:05:45Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: New page: * [http://www.retroprogramming.com/2011/02/celebrating-30-years-of-color-robot.html Color Robot]: a simple Tank vs. Tank game with programmed robot tanks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://www.retroprogramming.com/2011/02/celebrating-30-years-of-color-robot.html Color Robot]: a simple Tank vs. Tank game with programmed robot tanks&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=782</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=782"/>
				<updated>2011-05-17T21:04:26Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Self-Organizing Networked Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Aspects of self-organizing systems===&lt;br /&gt;
* [[Definition of Self-Organizing Systems]]&lt;br /&gt;
* [[Misconceptions]]&lt;br /&gt;
* [[Self-Organization being a Discipline on its own?]]&lt;br /&gt;
* [[Robustness]]&lt;br /&gt;
* [[Adaptation]]&lt;br /&gt;
* [[Designing Robust Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
=== Resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Researchers in self-organizing systems|Researchers]], [[Self-Organizing Systems Research Groups|Research Groups]]&lt;br /&gt;
* [[Self-Organizing Systems Conferences]]&lt;br /&gt;
* [[Self-Organizing Systems Literature Recommendations]]&lt;br /&gt;
* [[Programming and Modeling Tools]]&lt;br /&gt;
* [[Visualization Tools]]&lt;br /&gt;
* [[JProwler Simulator Tutorial]]&lt;br /&gt;
* [[FREVO Documentation]]&lt;br /&gt;
* [[Simulators,Models, and Games]] A Kamasutra of possible benchmark applications for your intelligent algorithms&lt;br /&gt;
&lt;br /&gt;
== Research Days @ Lakeside Labs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''[[Lakeside Research Days'10]]'''&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Schedule Schedule]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Presentations Research Talks]&lt;br /&gt;
** [[Mindmap for engineering self-organizing systems]]&lt;br /&gt;
** Group Work: [[Challenges in Engineering Self-Organizing Systems]]&lt;br /&gt;
** Group Work: Design Patterns and Checklists&lt;br /&gt;
*** [[Design Patterns for engineering SOS]]&lt;br /&gt;
*** [[Checklist and Best Practice Examples for Designing Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Stigmergy]]&lt;br /&gt;
** Group Work: [[Role of Self-* properties in the Future Internet]]&lt;br /&gt;
** Group Work: [[Self-organizing synchronization]]&lt;br /&gt;
** Group Work: [[Self-Organization in Social Technical Systems]]&lt;br /&gt;
** Group Work: [[Emergence of Awareness and Intelligence]]&lt;br /&gt;
** Plans for joint work: [[Publications]], [[Projects]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'09]]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2709#Research_Talks Research Talks]&lt;br /&gt;
** [[Curriculum on Self-Organizing Networked Systems]]&lt;br /&gt;
** Group Work: [[Case Studies for Robust Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Modeling Techniques for Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Research Areas on Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'08]]&lt;br /&gt;
* [[Lakeside Research Days|Lakeside Research Days General Information]]&lt;br /&gt;
&lt;br /&gt;
== IWSOS TPC Chairing ==&lt;br /&gt;
* [[Schedule]]&lt;br /&gt;
* [[Call for Papers]]&lt;br /&gt;
* [[TPC Members]]&lt;br /&gt;
&lt;br /&gt;
== How to use the Wiki ==&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
=== Getting started ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Programming_and_Modeling_Tools&amp;diff=781</id>
		<title>Programming and Modeling Tools</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Programming_and_Modeling_Tools&amp;diff=781"/>
				<updated>2011-05-17T20:36:30Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: /* Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [http://www.python.org/ Python 2.6.4]&lt;br /&gt;
* [http://www.scipy.org/ NumPy 1.4.0 and SciPy 0.7.1 (MATLAB-like numerical packages)]&lt;br /&gt;
* [http://sourceforge.net/projects/numpy/files/ NumPy download]&lt;br /&gt;
* [http://sourceforge.net/projects/scipy/files/ SciPy download]&lt;br /&gt;
* [http://matplotlib.sourceforge.net/ Matplotlib 0.99.1 (MATLAB-like visualization package)]&lt;br /&gt;
* [http://networkx.lanl.gov/ NetworkX 1.0rc1]&lt;br /&gt;
* [http://vlado.fmf.uni-lj.si/pub/networks/pajek/ Pajek - Program for large network analysis]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Guides:&lt;br /&gt;
* [http://wiki.python.org/moin/BeginnersGuide Beginner's Guide to Python]&lt;br /&gt;
* [http://www.python.org/doc/2.6.4/ Python 2.6.4 Documentation]&lt;br /&gt;
* [http://docs.python.org/library/index.html Python 2.6.4 Library Reference]&lt;br /&gt;
* [http://docs.scipy.org/doc/ NumPy and SciPy Documentation]&lt;br /&gt;
* [http://www.scipy.org/Tentative_NumPy_Tutorial NumPy Tutorial]&lt;br /&gt;
* [http://www.scipy.org/Numpy_Functions_by_Category NumPy Functions by Category]&lt;br /&gt;
* [http://www.scipy.org/SciPy_Tutorial SciPy Tutorial]&lt;br /&gt;
* [http://matplotlib.sourceforge.net/users/screenshots.html Matplotlib Screenshots and Sample Codes]&lt;br /&gt;
* [http://matplotlib.sourceforge.net/contents.html Matplotlib Documentation]&lt;br /&gt;
* [http://networkx.lanl.gov/tutorial/index.html NetworkX Tutorial]&lt;br /&gt;
* [http://networkx.lanl.gov/reference/index.html NetworkX Reference]&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [http://www.eclipse.org Eclipse IDE]&lt;br /&gt;
* [http://www.frevotool.tk/ Frevo - Framework for evolutionary design of complex systems]&lt;br /&gt;
&lt;br /&gt;
However, quick visualization in Java is a pain without appropriate tools.&lt;br /&gt;
There is a nice discussion on Java Scientific Packages similar to SciPy at&lt;br /&gt;
[http://stackoverflow.com/questions/482305/java-scientific-packages-similar-to-scipy]&lt;br /&gt;
&lt;br /&gt;
In summary, the proposed packages for Java which could be interesting&lt;br /&gt;
are:&lt;br /&gt;
* Apache Commons Math&lt;br /&gt;
* Java Numerics&lt;br /&gt;
* Colt&lt;br /&gt;
* Matlib&lt;br /&gt;
* Java Scientific Library&lt;br /&gt;
* JFreeChart&lt;br /&gt;
* JScience&lt;br /&gt;
* jHepWork&lt;br /&gt;
&lt;br /&gt;
See also our [[Data Visualization with Java|detailed report on data visualization in Java]].&lt;br /&gt;
&lt;br /&gt;
== HTML5 ==&lt;br /&gt;
&lt;br /&gt;
HTML5 is offering a full frame buffer, audio stack, and embedded video. It thus makes it possible to implement powerful browser-based applications that run independently on all operating systems and various different browsers like Chrome, Firefox, etc.&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [http://code.google.com/webtoolkit/ Google Web Toolkit (GWT)]: a development toolkit for building and optimizing complex browser-based applications&lt;br /&gt;
&lt;br /&gt;
== Graph and Network Analysis Tools ==&lt;br /&gt;
&lt;br /&gt;
===JGraphT===&lt;br /&gt;
&lt;br /&gt;
[http://jgrapht.sourceforge.net/ JGraphT] is a free Java graph library that provides mathematical graph-theory objects and algorithms. JGraphT supports various types of graphs including:&lt;br /&gt;
&lt;br /&gt;
* directed and undirected graphs.&lt;br /&gt;
* graphs with weighted / unweighted / labeled or any user-defined edges.&lt;br /&gt;
* various edge multiplicity options, including: simple-graphs, multigraphs, pseudographs.&lt;br /&gt;
* unmodifiable graphs - allow modules to provide &amp;quot;read-only&amp;quot; access to internal graphs.&lt;br /&gt;
* listenable graphs - allow external listeners to track modification events.&lt;br /&gt;
* subgraphs graphs that are auto-updating subgraph views on other graphs.&lt;br /&gt;
* all compositions of above graphs.&lt;br /&gt;
&lt;br /&gt;
Although powerful, JGraphT is designed to be simple and type-safe (via Java generics). For example, graph vertices can be of any objects. You can create graphs based on: Strings, URLs, XML documents, etc; you can even create graphs of graphs! This code example shows how.&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=780</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Main_Page&amp;diff=780"/>
				<updated>2011-03-21T09:31:25Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Self-Organizing Networked Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Aspects of self-organizing systems===&lt;br /&gt;
* [[Definition of Self-Organizing Systems]]&lt;br /&gt;
* [[Misconceptions]]&lt;br /&gt;
* [[Self-Organization being a Discipline on its own?]]&lt;br /&gt;
* [[Robustness]]&lt;br /&gt;
* [[Adaptation]]&lt;br /&gt;
* [[Designing Robust Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
=== Resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Researchers in self-organizing systems|Researchers]], [[Self-Organizing Systems Research Groups|Research Groups]]&lt;br /&gt;
* [[Self-Organizing Systems Conferences]]&lt;br /&gt;
* [[Self-Organizing Systems Literature Recommendations]]&lt;br /&gt;
* [[Programming and Modeling Tools]]&lt;br /&gt;
* [[Visualization Tools]]&lt;br /&gt;
* [[JProwler Simulator Tutorial]]&lt;br /&gt;
* [[FREVO Documentation]]&lt;br /&gt;
&lt;br /&gt;
== Research Days @ Lakeside Labs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''[[Lakeside Research Days'10]]'''&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Schedule Schedule]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2710#Presentations Research Talks]&lt;br /&gt;
** [[Mindmap for engineering self-organizing systems]]&lt;br /&gt;
** Group Work: [[Challenges in Engineering Self-Organizing Systems]]&lt;br /&gt;
** Group Work: Design Patterns and Checklists&lt;br /&gt;
*** [[Design Patterns for engineering SOS]]&lt;br /&gt;
*** [[Checklist and Best Practice Examples for Designing Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Stigmergy]]&lt;br /&gt;
** Group Work: [[Role of Self-* properties in the Future Internet]]&lt;br /&gt;
** Group Work: [[Self-organizing synchronization]]&lt;br /&gt;
** Group Work: [[Self-Organization in Social Technical Systems]]&lt;br /&gt;
** Group Work: [[Emergence of Awareness and Intelligence]]&lt;br /&gt;
** Plans for joint work: [[Publications]], [[Projects]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'09]]&lt;br /&gt;
** [http://mobile.uni-klu.ac.at/selforganized-wiki/index.php/Lakeside_Research_Days%2709#Research_Talks Research Talks]&lt;br /&gt;
** [[Curriculum on Self-Organizing Networked Systems]]&lt;br /&gt;
** Group Work: [[Case Studies for Robust Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Modeling Techniques for Self-Organizing Systems]]&lt;br /&gt;
** Group Work: [[Research Areas on Self-Organizing Systems]]&lt;br /&gt;
&lt;br /&gt;
* [[Lakeside Research Days'08]]&lt;br /&gt;
* [[Lakeside Research Days|Lakeside Research Days General Information]]&lt;br /&gt;
&lt;br /&gt;
== IWSOS TPC Chairing ==&lt;br /&gt;
* [[Schedule]]&lt;br /&gt;
* [[Call for Papers]]&lt;br /&gt;
* [[TPC Members]]&lt;br /&gt;
&lt;br /&gt;
== How to use the Wiki ==&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
=== Getting started ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	<entry>
		<id>https://mobile.aau.at/selforganized-wiki/index.php?title=Visualization_Tools&amp;diff=779</id>
		<title>Visualization Tools</title>
		<link rel="alternate" type="text/html" href="https://mobile.aau.at/selforganized-wiki/index.php?title=Visualization_Tools&amp;diff=779"/>
				<updated>2011-03-18T13:19:26Z</updated>
		
		<summary type="html">&lt;p&gt;Welmenre: New page: == Box plot ==  A box plot is a good way to depict results where measurements have been taken over another parameter, for example the fitness of several independent runs of an evolutionary...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Box plot ==&lt;br /&gt;
&lt;br /&gt;
A box plot is a good way to depict results where measurements have been taken over another parameter, for example the fitness of several independent runs of an evolutionary algorithm over the number of generations.&lt;br /&gt;
&lt;br /&gt;
=== Box plots with R ===&lt;br /&gt;
&lt;br /&gt;
The statistic software R can be installed quickly, e.g., on Debian/Ubuntu Linux by &amp;quot;apt-get install r-base&amp;quot;.&lt;br /&gt;
The data must be given in a tab-seperated file, where each column comprises the measurements for one box.&lt;br /&gt;
&lt;br /&gt;
 x &amp;lt;- read.table(&amp;quot;datafilename.tsv&amp;quot;)&lt;br /&gt;
 postscript(&amp;quot;outputfilename.ps&amp;quot;)&lt;br /&gt;
 boxplot(x)&lt;br /&gt;
 dev.off()&lt;br /&gt;
&lt;br /&gt;
The postscript command redirects the output to a postscript file. The last command flushes the output and closes the file.&lt;/div&gt;</summary>
		<author><name>Welmenre</name></author>	</entry>

	</feed>