Our TORCS driving controller presented at EvoGAMES 2017

Last week, @jjmerelo presented at EvoGAMES 2017 (inside Evo* 2017) our work titled “Driving in TORCS using modular fuzzy controllers”.

This paper presents a novel car racing controller for TORCS (The Open Racing Car Simulator), which is based in the combination of two fuzzy subcontrollers, one for setting the speed, and one to control the steer angle. The obtained results are quite promissing, as the controller is quite competitive even against very tough TORCS teams.

The abstract of the paper is:

When driving a car it is essential to take into account all possible factors; even more so when, like in the TORCS simulated race game, the objective is not only to avoid collisions, but also to win the race within a limited budget. In this paper, we present the design of an autonomous driver for racing car in a simulated race. Unlike previous controllers, that only used fuzzy logic approaches for either acceleration or steering, the proposed driver uses simultaneously two fuzzy controllers for steering and computing the target speed of the car at every moment of the race. They use the track border sensors as inputs and besides, for enhanced safety, it has also taken into account the relative position of the other competitors. The proposed fuzzy driver is evaluated in practise and timed races giving good results across a wide variety of racing tracks, mainly those that have many turning points.

There was an interactive presentation at the conference, together with a poster:

The paper is available online from: https://link.springer.com/chapter/10.1007/978-3-319-55849-3_24

Enjoy (and cite) it! :D

 

Advertisements

Entropy is the best predictor of volunteer computing system performance

In volunteer computing systems the users get to decide when, and how much, their own computers are going to be working in a particular problem. We have been working for some time in using volunteer computing for evolutionary algorithms, and all our efforts have focused in having a scalable back end and also finding how the user behaves in order to understand the behavior. A priori, one would think that the more users, the better. However, the fact that these systems are asynchronous and have heterogeneous capabilities means that it might happen that new users do not really have any contribution to the overall effort.
In this paper presented at the EvoStar conference this week, we took a different approach to analyzing performance by using compression entropy, computed over the number of contributions per minute. The bigger compression, the more uniform contributions are; the lower the compression, that means that the contributions change all the time. After some preliminary reports published in FigShare we found that there is a clear trend in an increasing entropy making the algorithm end much faster. This contradicts our initial guess, and also opens new avenues for the design of volunteer evolutionary computing systems, and probably other systems whose performande depends on diversity such as evolutionary algorithms.
Check out the poster and also the presentation done at the conference. You will miss, however, the tulip origami we gave out to the visitors of the poster.
In our research group we support open science, that is why you can find everything, from data to processing scripts to the sources of this paper, in the GitHub repository

EvoloPy: An Open-Source Nature-Inspired Optimization Framework in Python

As an initiative to keep an implementation of the recent nature-inspired metaheuristics as well as the classical ones in a single open source framework, we introduce EvoloPy. EvoloPy is an open source and cross-platform Python  framework that implements a wide range of metaheuristic algorithms. The goal is to take the advantage of the rapidly growing scientific community of Python and provide a set of robust optimizers as free and open source software. We believe that implementing such algorithms in Python will increase their popularity and portability among researchers and non-specialists coming from different domains. The powerful libraries and packages available in Python (such as NumPy) will make it more feasible to apply metaheuristics for solving complex problems on a much higher scale.

Our poster of EvoloPy was accepted in the ECTA conference and we recently presented it in Porto. Have a look at the paper and poster source:

Paper source: https://github.com/7ossam81/EvoloPy
Poster source: https://github.com/7ossam81/EvoloPy-poster
List of available optimizers: https://github.com/7ossam81/EvoloPy/wiki/List-of-optimizers

Thank you Python and NumPy :)

Benchmarking evolutionary algorithms

People tend to think that there is a simple way of implementing evolutionary algorithms: whatever language they’re the most familiar with, or, by default, Java or C++. So after receiving several carps from reviewers who didn’t like our use of non-conventional languages like JavaScript of Perl, we decided to test a pile of languages performing simple evolutionary operations: mutation and crossover, and also a very common benchmark, OneMax.
Our poster was accepted in the ECTA conference and we recently presented it in Porto. Have a look at the paper and poster source https://github.com/geneura-papers/2016-ea-languages-PPSN/releases/tag/v1.0ECTA that uses Knitr, and check out the poster.

Evolutionary (and other) algorithms in the cloud

The cloud is where you run your applications, but it’s also how you will design your algorithms from now on. Evolutionary algorithms are specially suited for this, and that is why I have given tutorials on how to adapt evolutionary algorithms to the cloud in PPSN and lately, when one of the keynotes dropped, an updated and abridged version at ECTA 16.
In these tutorials I make an introduction to what is the cloud and what it means: basically, create applications as loosely connected, polyglot, multi-vendor sets of different programs. Which will spawn a slew of new algorithms, starting with the pool-based evolutionary algorithm we have working on for so long.

Master of Evolution! Using Genetic Algorithms to generate decks for the game HearthStone

This September we attended to the IEEE CIG 2017 Conference in Santorini, Greece, to present the paper “Evolutionary Deckbuilding in HearthStone”. This paper was written in collaboration with our colleagues Alberto Tonda and Giovanni Squillero.

The story of this paper started a (not so) long time ago while me and Alberto were discussing about how awesome HearthStone is. Suddenly, we thought about how easy it would be to create the constraints for the uGP framework, and that there were some open source simulators of the game. In a while, we already had the constraints, the simulator adapted to accept individuals from uGP, and some experiments running.

And we finished the paper after, of course.

You can download the paper draft from here (the electronic original version is not available yet).

And here is the presentation:

The abstract:

—One of the most notable features of collectible card games is deckbuilding, that is, defining a personalized deck before the real game. Deckbuilding is a challenge that involves a big and rugged search space, with different and unpredictable behaviour
after simple card changes and even hidden information. In this paper, we explore the possibility of automated deckbuilding: a genetic algorithm is applied to the task, with the evaluation delegated to a game simulator that tests every potential deck against a varied and representative range of human-made decks.
In these preliminary experiments, the approach has proven able to create quite effective decks, a promising result that proves that, even in this challenging environment, evolutionary algorithms can find good solutions.