Genetic Programming Hyper-heuristics for solving multi-mode resource-constrained project scheduling problem
This repository contains the implementation of the paper "Learning Heuristics via Genetic Programming for Multi-Mode Resource-Constrained Project Scheduling" by Yuan Tian, Yi Mei, and Mengjie Zhang, presented at the 2024 IEEE Congress on Evolutionary Computation (CEC 2024).
Install the packages in requirements.txt:
pip install -r requirements.txtdiscrete-optimization package is already included in the project. You don't need to install it separately.
Before run any code, please include the project root directory to the PYTHONPATH. For example, in Linux or MacOS, you can run:
export PYTHONPATH=$(pwd):$PYTHONPATHThe main script is yuantian/gphh_solver.py.
You can run it with the following command:
python yuantian/gphh_solver.pyThe result file will be saved in the results folder.
You can run the script with different arguments:
-s: specify the schedule generation scheme. Options areserialandparallel. Default isserial.-d: speificy the decision type. Options areactivity_first,mode_firstandsimultaneous. Default isactivity_first.--default: use the parameters in the paper. If not set, the minimum working example parameters will be used.--dataset: specify the dataset to use. Options areMMLIB50,MMLIB100,MMLIBPLUS_50,MMLIB_PLUS_100. Default is a small set.--start_index: specify the start index of the instance to run. Default is0.`-n: specify the number of runs. Default is1.--seed: specify the random seed. Default is0.--log: if set, the detailed log will be saved in thelogsfolder.--dynamic: if set, the CPM related terminals will be updated every time the eligible set is updated. Otherwise, the static mode will be used.--split: Whether the training set is splited into servral subsets, so during the evolution process each generation will be evaluated on a different subset. Default isFalse.--multi_process: Whether to use multi-process to speed up the evaluation. 90% of logical CPUs will be used. You can change the number ingphh_solver.py. Default isFalse.
For example, to run the serial schedule generation scheme with activity-first decision type on the MMLIB50 dataset with default parameters, you can run:
python yuantian/gphh_solver.py -s serial -d activity_first --default --dataset MMLIB50@INPROCEEDINGS{10612172,
author={Tian, Yuan and Mei, Yi and Zhang, Mengjie},
booktitle={2024 IEEE Congress on Evolutionary Computation (CEC)},
title={Learning Heuristics via Genetic Programming for Multi-Mode Resource-Constrained Project Scheduling},
year={2024},
volume={},
number={},
pages={01-08},
keywords={Schedules;Sequential analysis;Operations research;Processor scheduling;Buildings;Project management;Genetic programming;Project Scheduling;Multiple Modes;Hyper-heuristics;Genetic Programming},
doi={10.1109/CEC60901.2024.10612172}}
This code is developed based on the following projects:
The benchmark dataset MMLIB is from Operations Research and Scheduling (OR&S) Research group at Ghent University, Belgium.