I wonder the author considered using Integer Linear Programming. For me it tends to be a go-to way to solve problems like this, but often have issues when the modelled problems become harder than I thought and processing times will be .. months?
The question is whether good solutions are found 1) as quickly as with the simulated annealing approach 2) as good as that approach 3) whether the formulation is maybe simpler.