One of the parts of the pre-compute that takes the most time is finding the potential assignments.
It might be faster to just traverse from the demand points to candidate hubs within range.
OR
Have a way to reduced the candidate over demand loop.
rewrite "make_assi_graph"