Skip to content

Hungarian Algorithm Optimizations#3602

Draft
Andrewyx wants to merge 2 commits intoUBC-Thunderbots:masterfrom
Andrewyx:Andrewyx/LAPJV
Draft

Hungarian Algorithm Optimizations#3602
Andrewyx wants to merge 2 commits intoUBC-Thunderbots:masterfrom
Andrewyx:Andrewyx/LAPJV

Conversation

@Andrewyx
Copy link
Contributor

Description

Currently, the Tactics are assigned to robots using the Hungarian Algorithm which optimizes the results of the cost function matrix which dictates the potential cost of each robot using each tactic. This algorithm is unfortunately very expensive, with asymptotic runtime of $O(n^4)$ and with some modifications $O(n^3)$. Hence, an alternative algorithm could provide more efficient execution.

The Jonker-Volgenant algorithm presents itself as an $O(n^3)$ linear assignment problem algorithm, which on average runs much faster than $O(n^3)$. This PR tries to apply this algorithm in replacement for the current Hungarian algorithm

Jonker, R., Volgenant, A. A shortest augmenting path algorithm for dense and sparse linear assignment problems. Computing 38, 325–340 (1987). https://doi.org/10.1007/BF02278710

Testing Done

Resolved Issues

Length Justification and Key Files to Review

Review Checklist

It is the reviewers responsibility to also make sure every item here has been covered

  • Function & Class comments: All function definitions (usually in the .h file) should have a javadoc style comment at the start of them. For examples, see the functions defined in thunderbots/software/geom. Similarly, all classes should have an associated Javadoc comment explaining the purpose of the class.
  • Remove all commented out code
  • Remove extra print statements: for example, those just used for testing
  • Resolve all TODO's: All TODO (or similar) statements should either be completed or associated with a github issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant