/vanLon17-GPEM-code

Code for 'Optimizing agents with genetic programming - An evaluation of hyper-heuristics in dynamic real-time logistics'. Rinde R.S. van Lon, Juergen Branke, and Tom Holvoet. Genetic Programming and Evolvable Machines (2017).

Primary LanguageJavaApache License 2.0Apache-2.0

Optimizing agents with genetic programming - An evaluation of hyper-heuristics in dynamic real-time logistics

This repository contains the code that was used to perform the experiments described in:

Optimizing agents with genetic programming - An evaluation of hyper-heuristics in dynamic real-time logistics. Rinde R.S. van Lon, Juergen Branke, and Tom Holvoet. Genetic Programming and Evolvable Machines (2017).

This repository is archived on Zenodo: DOI

The datasets and results belonging to this paper can be found at this location: DOI

Overview

Since the paper is part of a long term research effort, the code used for the experiments is distributed over several open source repositories. The code in the current repository is the glue that instantiates and binds the code from the other repositories to create a cohesive experiment setup.

In this repository

This repository contains several scripts that can be used to execute each experiment conducted for this paper. Maven and Java 7 (or higher) are required. Beware that some of the scripts below require extensive computational resources, see the paper for more details.

Purpose of script Prerequisites Command
Generate train dataset. Generates all 90.000 train scenarios in files/dataset10k/, this took about 36 minutes on a 24 core machine (fully utilizing all cores). The Java code can be found here. The train dataset is part of the dataset and results archive, downloadable from the link above. The dataset requires about 4.9 GB of disk space. ./generate-train-dataset.sh
Generate parameter files for evolution and tuning experiments. The files are written to files/config/experiments/ and files/config/tuning-experiments/. ./generate-params.sh
Perform evolution experiment. By default it starts a distributed experiment using the JPPF framework. For this to work, a JPPF server (version 4.1.3) needs to be running at localhost. If you want to run the experiment locally, you can change the parameter eval.distributed in files/config/gpem17common.params to false and generate new parameter files. Requires train dataset in files/dataset10k/. Requires parameter files in files/config/experiments/. ./train-main.sh
Perform evaluation experiment. The test dataset in files/vanLonHolvoet15/, can be downloaded from DOI. ./evaluate-main.sh
Time measuring experiment. The test dataset in files/vanLonHolvoet15/, can be downloaded from DOI. ./time-measure-exp.sh
Visualize heuristics, creates .png files for each heuristic in files/epxeriment-overview.csv and writes them to files/heuristics/. Python (the script was developed using version 2.7.13rc1), dot part of Graphviz (version 2.38.0) ./visualize-heuristics.sh
Tuning experiment. Requires train dataset in files/dataset10k/. Requires parameter files in files/config/tuning-experiments/. ./train-tuning.sh

Java dependencies

All Java dependencies are imported via Maven but can also be downloaded manually. The following dependencies are especially relevant:

Library Description Version DOI
RinSim Real-time logistics simulator. 4.3.0 DOI
RinLog Collection of algorithms, including DynCNET multi-agent system and OptaPlanner for dynamic PDPTW problems. 3.2.0 DOI
PDPTW Dataset Generator Generator of dynamic PDPTW datasets. 1.1.0 DOI
RinECJ Wrapper for ECJ that simplifies configuration of genetic programming. 0.3.0 DOI
evo4mas Provides support for evolved hyper-heuristics that work with RinLog abstractions. 0.3.0 DOI

License

All files in this repository are licensed under the Apache 2.0 license.