Menu

Success stories

Success stories

Over the course of the years, MicroGP has been used by several researchers and practitioners, in very different applications. Here is a small (and incomplete) list of case studies, either linked to publications or to industrial applications. If you used MicroGP for your problem, let us know and help us expand this list, by writing to ugp3@sourceforge.net

[2016] Simple framework for language-independent Genetic Improvement

Genetic Improvement is an evolutionary-based technique. Despite its relatively recent introduction, several successful applications have been already reported in the scientific literature: it has been demonstrated able to modify the code complex programs without modifying their intended behavior; to increase performance with regards to speed, energy consumption or memory use. Some results suggest that it could be also used to correct bugs, restoring the software's intended functionalities. Given the novelty of the technique, however, instances of Genetic Improvement so far rely upon ad-hoc, language-specific implementations. In this paper, we propose a general framework based on the software engineering's idea of mutation testing coupled with Genetic Programming, that can be easily adapted to different programming languages and objective. In a preliminary evaluation, the framework efficiently optimizes the code of the md5 hash function in C, Java, and Python. Link to the publication

[2015] Dynamically adapting reactive pull systems

Pull control systems are now widely used in many types of production systems. For those based on cards, determining their number is an important issue. When the system is submitted to changes in supply and demand, several researchers have demonstrated the benefits of changing this number dynamically. Defining when and how to do so is known as a difficult problem, especially when such modifications in customer demands are unpredictable and the system behavior is stochastic. This paper proposes a Simulation-based Genetic Programming approach to learn how to decide, i.e., to generate a decision logic that specifies under which circumstances it is worth modifying the number of cards. Link to the publication.

[2013-2014] Analyzing wireless sensor networks topologies

The analysis of worst-case behavior in wireless sensor networks is an extremely difficult task, due to the complex interactions that characterize the dynamics of these systems. In this research line, we present a new methodology for analyzing the performance of routing protocols used in such networks. The approach exploits a stochastic optimization technique, specifically an evolutionary algorithm, to generate a large, yet tractable, set of critical network topologies; such topologies are then used to infer general considerations on the behaviors under analysis. As a case study, we focused on the energy consumption of two well-known ad hoc routing protocols for sensor networks: the multi-hop link quality indicator and the collection tree protocol. Link to the publication.

[2013] Automated design of artificial wetlands

Wetlands are artificial ponds, designed to filter and purify running water through the contact with plant stems and roots. Wetland layouts are traditionally designed by experts through a laborious and time-consuming procedure: in principle, small patches of vegetation with purifying properties are tentatively placed, then the resulting water flow is verified by fluid dynamics simulators and when a satisfying outcome is reached, the wetland final layout is decided. This paper proposes to automate wetland design exploiting an evolutionary algorithm: a population of candidate solutions is cultivated by the evolutionary core, and their efficiency is evaluated using a state-of-the-art fluid-dynamics simulation framework. Experimental results show that the results obtained by the proposed approach are qualitatively comparable with those provided by experts, despite the complete absence of human intervention during the optimization process. Link to the publication.

[2008-2011] Automated detection of power-affecting software bugs

The complexity of cell phones is continually increasing, with regards to both hardware and software parts. As many complex devices, their components are usually designed and verified separately by specialized teams of engineers and programmers. However, even if each isolated part is working flawlessly, it often happens that bugs in one software application arise due to the interaction with other modules. Those software misbehaviors become particularly critical when they affect the residual battery life, causing power dissipation. An automatic approach to detect power-affecting software defects is proposed. Motorola experimented the approach on a mobile phone prototype during a partnership with Politecnico di Torino. Software errors unrevealed by all human-designed tests have been detected by the proposed framework, two out of three critical from the power consumption point of view, thus enabling Motorola to further improve its verification plans. Link to the publication.

[2004-] Generation of Assembly-language programs

Core War is a game where two or more programs, called "warriors", are executed in the same memory area by a timesharing processor. The final goal of each warrior is to crash the others by overwriting them with illegal instructions. In order to automatically devise strong warriors, MicroGP was extended with the ability to assimilate existing code and to detect clones; furthermore, a new selection mechanism for promoting diversity independent from fitness calculations was added. This activity led, in 2004, to the creation of "White Noise", the first non-human COREWARS champion, able to become King of the Hill (champion) in all four main international Tiny Hills. Link to the publication


Related

Wiki: Home