-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add bertsekas algo for assignment problem #600
base: main
Are you sure you want to change the base?
Conversation
CodSpeed Performance ReportMerging #600 will not alter performanceComparing Summary
Benchmarks breakdown
|
This comment was marked as outdated.
This comment was marked as outdated.
I added a benchmark, using criterion, to compare the Since the Bertsekas auction can give sub-optimal results (this is dependent on
This PR is definitely still a work in progress, but I thought I'd share these preliminary results with you so you can have a clearer picture. Note that the code is setup for parallelism already via the use of channels. Thus, these benchmark results contain a lot of unnecessary overhead for the bertseka's algorithm implementation, without the advantage of using multiple threads. In addition this is a very basic implementation of this algorithm. We can actually converge on the solution much quicker if we have a forward/reverse auction. Luckily, this current implementation can be easily extended to facilitate this. Lastly, please note this current implementation does not support asymmetric assignment problems. Thus, we always have to have Thank you!! |
The preliminary results are encouraging, this is interesting to read. |
Hi,
Apologies for the delay. I added a basic implementation with random cost matrices that compare to the hungarian algorithm. I'll add benchmarks, but I think I'll create a non-criterion based benchmark in order to account for possibly sub-optimal solutions. That is, we want to not only compare the speedup, but how close the total score is to what the hungarian algorithm provides.
I didn't have the time just yet to fix the lack of parallelism. However, the structure for concurrency is already there. That is why you'll see the use of
mspc::channel
. I also need to use theMatrix
struct that is used by the current hungarian algorithm implementation. Luckily, that should only improve performance given the 1D representation. I'll keep working on this. Please feel free to let me know what you think.Thank you!!
Fix #586