Completely revised Titanic classification example

Titanic: Machine Learning from Disaster is a well known getting started prediction competition promoted by Kaggle.

The revised example is a step by step guide illustrating the basic elements of classification with genetic programming and the Vita library.


Slides from C++ Day (Pavia, Italy - 2018)

Slides from the C++Day 2018 (Pavia - Italy) talk are available here: Lessons Learned Developing Evolutionary Algorithms in C++.

The C++ Day is a fall event dedicated to C++ development where professionals, students and companies meet and share experience. The C++ Day has been co-organized with the University of Pavia, in particular with the Physics Department.


Nonogram puzzle

An example of a nonogram puzzle

Nonograms, also known as Japanese puzzles, are logic puzzles that are sold by many news paper vendors. The challenge is to fill a grid with black and white pixels in such a way that a given description for each row and column, indicating the lengths of consecutive segments of black pixels, is adhered to. Although the Nonograms in puzzle books can usually be solved by hand, the general problem of solving Nonograms is NP-hard.

Read more »


Solving a Tetris-puzzle with GAs

The puzzle in the picture comes from a Stackoverflow's question (https://stackoverflow.com/q/47858717/3235496)

The general challenge posed is to tile a given region with a given set of polyominoes.


GAs aren't the most appropriate tool for this kind of puzzle. GAs tend to produce good but sub-optimal solutions and this behaviour is acceptable only for some combinatorial optimization problems.

Anyway the last example proposed finds a solution almost always (often in a short time) and GAs prove themselves a general, viable path especially when previous knowledge isn't available.

Read more »


Hello World! Genetic Algorithms


Writing a GAs system from scratch is a great learning experience but for real tasks don't reinvent the wheel.

It's not just a matter of subtleties: issues in a fresh implementation can easily go unnoticed because GAs are fault-tolerant by their very nature… at the expense of performance.

Read more »


A genetic programming approach to Forex Expert Advisor generation

A genetic programming approach to Forex Expert Advisor generation

An example of how to use Genetic Programming to evolve a simple software agent, more specifically a MQL5 Expert Advisor (EA), operating on the Forex exchange market.

Read more »


Scheduling concurrent jobs for several machines

Scheduling concurrent jobs for several machines

A department needs to run certain programs daily. They have access to a fixed number of machines (homogeneous machines, so each job time is independent of machine used) and have good approximations for the run time of each program.

These times are only approximate and moreover we want a schedule that is robust (in the sense that a failure of some assumption such as program time will not do too much damage). Typically one might augment them by a modest percentage; we will simply assume that has already been done and take our set of job times as given.

Read more »