An unofficial implementation of Genetic Algorithms with Cluster Averaging Method for Solving Job-Shop Scheduling Problems by Python DEAP.
This is an unofficial implementation of the paper(in Japanese) and the book(in Japanese) written by Hiromi Hirano.
- deap
- line_profiler (if need)
- python3
> git clone [email protected]:shigeta-technoface/public-jsp-cam.git
> cd public-jsp-cam
> make build
> make run
> make login
> (login to container )
> python main.py
> exit
> git clone [email protected]:shigeta-technoface/public-jsp-cam.git
> cd public-jsp-cam
> pip install -r requirements.txt
> python main.py
The resulting three log files are in the logs directory.
name | description | default value | example |
---|---|---|---|
seed | The number of random seed. | 0 | --seed 0 |
population | The number of individuals in one population. | 100 | --population 100 |
loop | Loop count. | 1 | --loop 1 |
processes | The number of worker processes. | os.cpu_count() |
--processes 12 |
logdir | The directory name for log files. | logs | --logdir ./logs |
no_mp | Use single processing. | Use multi processing. | --no_mp |
no_cam | Use ordinal replacement. | Use CAM replacement. | --no_cam |
is_test | Small problem (MT6x6) and 100 generation for development. | MT10x10 and 3000 generation. | --is_test |
do_perf | Log the application performance. line_profiler is required. | - | --do_perf |
This program outputs three log files.
name | description | file name |
---|---|---|
root_log | main log | %Y%m%d%H%M%S%f_log.log |
report_log | A TSV file that records the best individual for each loop. | %Y%m%d%H%M%S%f_report.dat |
detail_log | A TSV file that records the best individual for each generation. | %Y%m%d%H%M%S%f_detail.dat |
The following histogram was created using two report_log files. The CAM report_log is from python main.py --loop 300
and the NoCAM report_log from python main.py --loop 300 --no_cam
.
The following line charts shows the percentiles of the best makespan for each generation. These were created by using detail_log file. The CAM detail_log is from python main.py --loop 300
and the NoCAM detail_log from python main.py --loop 300 --no_cam
.