Skip to content

Mo-to/TDP_with_Deadlines

Repository files navigation

🌊 Bio-Inspired Disaster Recovery

The following repository contains the codebase for the research:

Comparative Analysis of Bio-Inspired Algorithms for Disaster Recovery based on Historic Tsunami Data ... which was presented at the 55th Mini Conference at the University of Electro-Communications (UEC), Tokyo, Japan on Apr. 13th, 2026 by F. L. Nerlich.

📌 Citation

If you refer to this project or the special Cuckoo-Search approach, please use the following citations:

APA

Nerlich, F. L., & Yamamoto, K. (2026, April 13). Comparative Analysis of Bio-Inspired Algorithms for Disaster Recovery based on Historic Tsunami Data. 55th Mini Conference.

BibTeX

@conference{nerlich2026miniconf,
      author       = {Nerlich, Finn Leander and Yamamoto, Kayoko}
      title        = {Comparative Analysis of Bio-Inspired Algorithms for Disaster Recovery based on Historic Tsunami Data},
      booktitle    = {55th Mini Conference},
      year         = {2026},
      month        = apr,
      day          = {13},
      address      = {Tokyo, Japan},
      organization = {The University of Electro-Communications (UEC)}
}

📖 Overview

This codebase contains the implementation used for the comparative analysis of bio-inspired algorithms for the application to Traveling Deliveryman Problems with Deadlines (TDPDL), which are used to model historic tsunami arrivals in Kochi.

This repository contains an implementation of:

  • 🌱 A classic simple Genetic Algorithm (GA)
  • 🐜 Ant Colony Optimization (ACO)
  • 🐦 Traditional discrete Cuckoo-Search (DCS)
  • 🦅 A custom, more advanced discretized Cuckoo-Search (CDCS)

The CDCS uses a novel approach to discretize the Lévy-Flight using Mantegna's algorithm to map to discrete operators.

All of the algorithms use the Traveling Deliveryman Problem (TDP)-model under the hood to interface with the problem instance and unify methods and metrics for comparison. The tdp-class (tdp.py) itself creates a logfile *.binlog which writes pure binary for performance reasons. The logfile can be analyzed after execution for various analysis of the different algorithms. The tools are also given in this repo (see below or docs).


🚀 Quickstart

1. Create a virtual environment:

python -m venv venv

2. Activate the virtual environment:

  • Windows: venv\Scripts\activate
  • Linux/Mac: source venv/bin/activate

3. Install the requirements:

pip install -r requirements.txt

4. Run the benchmark:

python main.py

5. Analyze Results:

  • Quick Analysis: Check the *.png files generated in the results folder.
  • Advanced Analysis: Run report.py given the just produced output folder. The output of report.py will be located under <results_dir>/report.

🎥 Video Generation Support

If you want to use the video generation features, the ffmpeg executable must be placed in the project root. You can download it and find installation instructions here: Download FFmpeg.


📂 Structure of the Project

  • ⚙️ main.py: Used to run the algorithm benchmarks.
  • 🏗️ tdp.py: Metrics and problem modeling; needs a dataset in the datasets-folder generated by dataset.py.
  • 🗺️ dataset.py: Generation of custom datasets based on Bousaimap and OpenStreetMaps data (supported by the Tsunami and Map APIs in map_api.py and tsunami_api.py). Can also convert PotvinBengio-datasets to compatible problems.
  • 👁️ visualizer.py: Quick insight into *.binlog-files.
  • 📊 report.py: Advanced analysis as shown in the slides in the presentation_materials-folder.

AI-Dislaimer

This project was created with the responsible assistance from AI tools. All important core parts involved in the data creation process, not only but explicitly including tdp.py and the algorithms, were carefully developed and designed by hand. Given the main structure and code of those functions AI-tools were used for debugging functions to measure and improve performance and code-readability (which could cause AI-fingerprints in those functions as well). Given this, generative AI was mostly used for styling of matplot functions for the presentation attached in the presentation_material-folder and for efficiently documenting the project itself (see docs). All the content of this project, especially AI supported parts, were carefully reviewed and edited by the author (a human). If you find any remaining issues, like hallucinations or unclear or useless comments ramining from the AI-usage, please open a PR or inform the author to correct those issues. AI is a tool, not a creator.

"And as for wisdom, your pupils will have the reputation for it without the reality: They will receive a quantity of information without proper instruction."

~ Plato (quoting Socrates's parable of King Thamus in the Phaedrus)


🤝 Contributions

Given the limited time of the project, some parts can easily be optimized or written more clearly. Please feel free to open a Pull Request (PR) and I will mention your name in the credits. When opening a PR, please follow general contribution guidelines.


📬 Contact

Questions? Bug found? Something unclear? Please open an issue or create a Pull-Request (PR).

For other concerns, like raw datasets, collaborations, or similar, please contact me on LinkedIn.


🙏 Acknowledgements

  • The author was supported by the JASSO Scholarship during the research period.
  • This research was conducted with the help of Kayoko Yamamoto and the lab members. Thank you very much for your patience and kindness!
  • The research would not exist without the UEC Exchange Study Program (JUSST Program) of the University of Electro-Communications (UEC), Tokyo, Japan.

📜 License

This program is published under the GPL v3 License.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.


📚 Sources

Discrete Cuckoo Search

[1] G. K. Jati, H. M. Manurung, and Suyanto, “Discrete cuckoo search for traveling salesman problem,” in 2012 7th international conference on computing and convergence technology (ICCCT), 2012, pp. 993–997.

Continuous Cuckoo Search

[2] X.-S. Yang and S. Deb, “Cuckoo search via lévy flights,” in 2009 world congress on nature & biologically inspired computing (NaBIC), 2009, pp. 210–214. doi: 10.1109/NABIC.2009.5393690.

Ant Colony Optimization

[3] M. Dorigo, V. Maniezzo, and A. Colorni, “Ant System: Optimization by a colony of cooperating agents,” IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), vol. 26, pp. 29–41, Feb. 1996, doi: 10.1109/3477.484436.

Genetic Algorithm in Python

[4] Ramez Shendy, “Traveling Salesman Problem (TSP) using Genetic Algorithm (Python) | by Ramez Shendy.” Accessed: Jan. 24, 2026. [Online]. Available: Medium Article

About

Codebase for the "Comparative Analysis of Bio-Inspired Algorithms for Disaster Recovery based on Historic Tsunami Data"

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages