Posts

GP.Lab: Dark Silicon Update

Image
It's been a while since my last update. However, it appears GP.Lab is coming out of hibernation these days.. For now there's a new preview to share featuring a moderately modernized app with support for macOS' new(ish) Dark Mode as well as native support for Apple Silicon Macs . Naturally Intel Macs are still supported, as are macOS versions equal to or newer than macOS 11 ("Big Sur"). The latest preview also features a new Sorting module for (well..) sorting an array of 10 integer numbers in ascending order. There's more work to be done on this one so please treat it kindly as an early preview. The Collector module has been improved and bugs impeding the sensory input of our feeble robot were removed - resulting in quite some improvement in its ability to actually collect items and deliver them to the home base. See it in action here: https://youtu.be/0WSjwM38i2Q And one of these days I've got to actually describe all of the modules (tasks) included

GP.Lab: Public Preview

Image
As I mentioned earlier GP.Lab is freeware - assuming that term still makes sense in today's diverse landscape of monetizing software products.. Anyhow: A preview release of GP.Lab is now available for download here . A Mac running macOS 10.11 or newer is required. The current implementation has modest memory requirements but you'll want to run it on a machine with plenty cores to speed up the evaluation of programs in the population. Quick Guide When the app is launched the Project Selector is presented. Select the task you would like the machine learning system to tackle. A brief description is provided for each task and additional details can be found in earlier blog posts. Customize Run Parameters such as program and population size, selection mode and genetic operator probabilities in the next window. The tournament size and elitism parameters should be handled with extra care: both result in quick loss of diversity in the simulated gene pool when chosen too

The GP.Lab Genetic Programming Kernel (continued)

This second post on our custom Genetic Programming implementation covers selection and genetic operators implemented by the kernel. Selection Strategies The GP kernel implements a generational algorithm and currently supports the three most popular selection modes for choosing parents to produce offspring for the next generation: Tournament Selection , i.e. for a tournament size T randomly pick T programs from the parent population and return the winner of the tournament - the program with the best fitness. The selection method of choice in the GA community as it allows to fine-tune the selection pressure via the tournament size parameter to avoid premature loss of diversity (i.e. fittest programs dominating the population with their copies). Roulette Wheel , a flavor of Fitness Proportionate Selection where the chance of an individual to become a parent is proportional to its fitness, i.e. parents with the highest absolute fitness in the population have a higher chance o

The GP.Lab Genetic Programming Kernel

GP.Lab uses a proprietary Genetic Programming implementation written in C++ . The representation of individuals is accomplished in a rather 'verbal' way with dedicated program and node classes. Though systems like TinyGP demonstrate that it's perfectly feasible to implement tree-based GP systems with minimal amounts of code as well as minimal memory footprint at runtime using flattened (linear) representation for trees we prefer the OO approach: Common techniques for object-oriented code allow us to structure the kernel in a way that's easy to understand and to extend (e.g. to adapt to specific problems, add analytics/statistics, etc.). The GP kernel implements the basic mechanics of the Genetic Programming system, i.e. representation of individual programs, algorithms for initialization and selection as well as the genetic operators. At this point the three standard initialization mechanisms for new programs are supported: Grow ,  Full and  Ramped Half&am

About GP.Lab

Hi there and welcome to the GP.Lab blog. So what's "GP.Lab"? It's a Genetic Programming Workbench and a work in progress. Besides being a fun, non-profit software research project its main goal is to investigate machine learning ( Genetic Programming in particular) and its applications to automatically solve a range of problems. GP.Lab implements a modular architecture: Individual tasks or problems are essentially plug-ins to the core app containing everything related to the specific problem to be solved such as Specific operators  (Robot steering commands, access to data sources) A visualization appropriate for the task Additional logic required to evaluate programs (e.g. a simulation environment) The core app implements basic functionality such as the core GP kernel algorithm, methods for managing the GP population, as well as a bunch of statistical tools to provide insight into the simulated evolutionary process. Initial Set of Tasks At this p