Friday, February 27, 2015

SEAHORSE: A Middleware for Search and Delivery of Information Units based on an Artificial Hormone System Algorithm

SEAHORSE structure
With the rise of networked smart devices and the so called Internet of Things, services require more scalability and robustness to handle the complexity of the underlying ecosystem. In some situations (e.g., disaster areas, large-area sports events, battle fields, etc.), a traditional network infrastructure does not exist, or is expensive to set up. In this context content is also consumed in a more dynamic way than in traditional environments. By looking at principles found in nature we can see that it is possible to handle complexity and dynamics by relying exclusively on simple, local decisions (bio-inspired self-organizing systems). As an example, ants are exploring the surrounding area to find food, and if found they go back to their home base leaving pheromones to guide other ants.
We introduce SEAHORSE, a middleware showing by example how an existing self-organizing algorithm can be generalized. SEAHORSE is a first step for bringing self-organizing algorithms towards real-world applications.
By specifying interfaces to the application the middleware transparently handles the distribution of content. We show two use cases from different technical fields and performed a parameter analysis to reduce the configuration effort.

A. Sobe, W. Elmenreich, T. Skalicky, and L. Böszörmenyi. SEAHORSE: Generalizing an artificial hormone system algorithm to a middleware for search and delivery of information units. Elsevier Journal of Computer Networks, 2015.

Wednesday, February 18, 2015

Advent Programming Contest 2014 Awarding

At the awarding ceremony
In December 2014, the Advent Programming Contest (APC) was held for the third time. The joint event between the Faculty of Technical Sciences and the IEEE Student Branch Klagenfurt enjoys increasing popularity every year. This time there were 345 enthusiastic participants who accepted the challenge and tryed to solve a daily programming task from December 1st to December 24th. I hope everybody who participated enjoyed the problems, even though nobody was able to solve all the tasks. While every problem was solved at least once, the maximum number of solved tasks by any participant was 23 out of 24 – given the hardness of several of the problems this is an excellent result.
The winners of the three categories of "student", "university staff" and "other" were announced at a formal ceremony organized by the IEEE Student Branch Klagenfurt. The best student adventcoder was Philip Gasteiger, student of computer science at Alpen-Adria-Universität Klagenfurt.
The best pupil adventcoder, Simon Dörrer, came from HTL Mössingerstraße Klagenfurt. Ben Wright, a recent graduate of the University of Tennessee, Martin, now working as a software engineer won the third category “other” and attended the ceremony via webcast.

Friday, February 13, 2015

FREVO 1.2 release

FREVO 1.2 - new version of the Framework for Evolutionary DesignWe proudly announce the new release 1.2 of FREVO (FRamework for EVOlutionary design). FREVO helps to reduce the time to implement, set up and run an evolutionary algorithm to evolve an agent's behavior as a solution to a particular control problem. FREVO supports decomposing the task into problem definition, solution representation and the optimization method. The componentwise separation allows to experiment with different combinations of algorithms and neural networks for different tasks.

The following components were added to FREVO:

  • HEMS  a simulation for modeling trading behavior of loads and local energy generators.
  • SinglePong  a simulation of the one player pong game where several paddles can cooperate in order to achieve better performance.
  • Pong  a simulation of the pong game where two teams can play against each other.

Quick start:
  • download the newest version at 
  • unpack the ZIP file
  • unless you have it already on your system, install Java 
  • execute the createscrips.jar ("java -jar createscrips.jar") 
  • you can now run FREVO using the script named launch_Frevo 
...or have a look at the following video explaining the basic steps to get started with FREVO:
For more information see the following sources:

Thursday, February 5, 2015

Simulating Swarm Behavior with Scratch

My young audience
Today I was giving a lecture to kids at age 8 to 12 at our University. The lecture was part of an initiative called “Kinderuni” (Children’s University) which aims at increasing awareness of our academic business already at young age.
In my lecture I approached the general topic of computer software by the example of the programming language Scratch. Scratch is a graphical programming language designed by the Lifelong Kindergarten Group at the MIT media lab. The language aims to be simple, colorful and fun in order to enable and motivate children at a young age to create programs with their own ideas.
I explained how Scratch works and together the kids and I coded a simple computer game in 25 minutes, which was definitely a challenge to do this in this short time. Another challenge was to create the connection between making a simple game with scratch and doing research at a university. However, this might be easier than you think. While Scratch is in general a programming language for kids, it can be actually useful to explore and demonstrate multi-agent behavior with comparably little effort. Especially with the introduction of cloned objects in Scratch 2.0, the implementation of swarm behavior with a variable number of interacting agents became easy.
Some projects from swarm behavior studio

The Scratch Studio Swarm Behavior gathers online simulations and games related to swarm behavior, multi-agent systems, clone interactions, self-organizing systems, and artificial life. The simulations show how Scratch can be used to demonstrate swarm behavior and how such a simulation can be implemented. Scratch is of course of low value regarding functionalty and performance - so you might have to drop the idea of having kindergarten kids coding the simulations for your next journal paper ;-).

Sunday, February 1, 2015

Comparison of Metaheuristic Algorithms for Evolving a Neural Controller for an Autonomous Robot

Robots are a good way to test things. Hope our robot overlords of the future will not take this to personal…

The task
We used a simulation of a robot that is searching for a light source as a testbed to compare how well a solution can be created by evolving an artificial neural network (ANN). While ANNs are often programmed using example input-output pairs which are learned by a backpropagation algorithm (supervised learning), in our case we left the how up to the system and only required the what – the robot should be able to find the light source by operating its wheels and using its sensors – that is called learning with belated rewards or reinforcement learning. We compared different evolutionary algorithms (EA), namely simple EA, two dimensional cellular EA, and random search, according to their performance in evolving a successful algorithm for the light-searching robot. In our experiments we studied the effects of EA parameters on performance, such as population size and number of generation. The simulations have been done using the open-source tool Framework for Evolutionary Design (FREVO).

The results explain how the choice of the neural network (three-layered or fully-connected) may inf
Possible implementation in hardware
luence the quality of a final solution. The results indicate that cEA and simple EA are the most applicable for evolving a neural controller. A fully-connected ANN outperforms three-layered ANN in all conducted experiments. Based on our findings, we recommend to use cEA and fully-connected ANN for problems that require short evaluation phase. For a large number of generations and population size the efficiency of both algorithms are approximately the same. In the experiments we measured an influence of population size and number of generations on performance of metaheuristic algorithms. The dependencies on these parameters are negligible. This information is important for the conduction of experiments. To accelerate a simulation, the population size should be the same as the number of cores on the server, where these experiments will be performed.