{"id":26010511,"url":"https://github.com/jdonszelmann/research-project","last_synced_at":"2026-02-05T09:39:34.515Z","repository":{"id":47523185,"uuid":"354498279","full_name":"jdonszelmann/research-project","owner":"jdonszelmann","description":"code corresponding to a research paper about M* (M star) and it's modification to solve multi agent pathfinding with matching problems (MMAPF)","archived":false,"fork":false,"pushed_at":"2022-11-19T12:20:03.000Z","size":44491,"stargazers_count":7,"open_issues_count":2,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-19T19:25:10.201Z","etag":null,"topics":["astar-algorithm","mapf","matching","multi-agent-pathfinding","pathfinding"],"latest_commit_sha":null,"homepage":"https://mapf.nl","language":"Roff","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdonszelmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-04T08:57:12.000Z","updated_at":"2024-03-20T14:45:29.000Z","dependencies_parsed_at":"2023-01-22T16:15:27.610Z","dependency_job_id":null,"html_url":"https://github.com/jdonszelmann/research-project","commit_stats":null,"previous_names":["jdonszelmann/research-project"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdonszelmann%2Fresearch-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdonszelmann%2Fresearch-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdonszelmann%2Fresearch-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdonszelmann%2Fresearch-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdonszelmann","download_url":"https://codeload.github.com/jdonszelmann/research-project/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242117657,"owners_count":20074436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astar-algorithm","mapf","matching","multi-agent-pathfinding","pathfinding"],"created_at":"2025-03-05T22:50:59.392Z","updated_at":"2026-02-05T09:39:29.475Z","avatar_url":"https://github.com/jdonszelmann.png","language":"Roff","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Matching in multi agent pathfinding \n\nBachelor end project - Jonathan Donszelmann (Q4 academic year 2020/2021)\n\n# Multi agent pathfinding\n\nmulti agent pathfinding (MAPF) is like pathfinding, but in a situation where the routes of \nmultiple agents need to be planned simultaneously. During this planning, no collisions may\noccur. To achieve this, a typical **A*** (a star) solver for MAPF will use a search space consisting\nof the positions of all agents' positions at the same time. Each expansion will consider\nevery combination of new positions of all agents. The search space is many dimensional.\nThis leads to an exponential growth in compute time given a growing number of agents. MAPF is **pspace-hard**. \n\n## M* (m star)\n\nM* is a more efficient algorithm than A* to solve MAPF. It uses subdimensional expansion (\nrefering to the many dimensional search space). M* assumes all agents are independent and tries\nto plan a route for each agent independently according to an individually optimal policy (created\nusing A*). Only when it detects that agents *do* collide, will it combine planning for only these\ncolliding agents and in a sense locally increase the dimensionality of the search space.\n\n# Paper\n\nThis repository is the source code used to gather results for a paper. This is my\nbachelors project for the TU Delft. The paper can be found [here](tex/rendered/Research%20Project%20CSE3000%20final.pdf)\nor in the TU Delft repositories [SOON]()\n\n# Online benchmarks\n\nCode in this repository is intended to integrate with the api provided by [mapf.nl](mapf.nl), \nalso created by me (note: there used to be a token in the sourcecode of this repository. \nPlease don't try to use this, it has been invalidated). This website also contains attempts\ncreated by the algorithm in this repository\n\n# Code\n\nThis repository contains the code for a simple A* implementation for MAPF, and multiple M* \nimplementations. The original implementation of M* can be found in the [mstar folder](python/mstar)\nbut is pretty unreadable. It is important to note that this version is a heavily adapted version of\n[James Ellis's repository](https://github.com/Jamesellis51015/Multi-Agent-Path-Finding-with-Reinforcement-Learning)\n\nThe version used for all benchmarks in the paper can be found in the [rewrite](python/mstar/rewrite)\nfolder and is a complete rewite of M* from the ground up. It supports recursive M* as well as operator\ndecomposition, and is highly configurable. It is also written *functionally*. A lot of the\nconfusing state which was previously held in a couple of god classes is now passed around in a much more\nintrospectable way.\n\n\n# Benchmarks\n\nAs previously mentioned, all benchmarks are run with the version of M* which can be found [here](python/mstar/rewrite).\nBenchmark code can be found in [the benchmarks folder](python/benchmarks). In this folder, python files\ncan be found which run entire benchmarks. Basically, there is one for each graph in the paper. Also all results\nof these benchmarks can be found here (including raw data), and the exact maps on which benchmarks\nwere run. This was done in an effort to make results as reproducible as possible.\n\n# License\n\nLicensed under either of [Apache License, Version 2.0](LICENSE_APACHE) or [MIT license](LICENSE_MIT) at your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this codebase, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdonszelmann%2Fresearch-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdonszelmann%2Fresearch-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdonszelmann%2Fresearch-project/lists"}