Solid
Solid copied to clipboard
Simulated annealing: bug in run method
Description of the bug
The run() method of the SimulatedAnnealing class has a bug when the annealing method does not find a better state than the initial one.
When does it happens
The bug happens when the annealing algorithm fails to find a better state than the initial one. This can happen when the maximum number of steps is low or when the initial guess is already very good.
What is the current behaviour
The tuple returned by the run() method is (None, cost_of_initial_state).
How to fix
Add the line
self.best_state = deepcopy(self.current_state)