ScenarioProcessor evaluates different scenarios for efficiency and chooses the most efficient one for further processing (the following interations). However, the way it's implemented is perhaps not optimal, because it is quite complicated and difficult to follow. An easier way of doing this would be to simply copy the results and evaluate a scenario on that copy, and then compare that to the baseline efficiency. Then use the best copy for the rest of the processing.
ScenarioProcessor evaluates different scenarios for efficiency and chooses the most efficient one for further processing (the following interations). However, the way it's implemented is perhaps not optimal, because it is quite complicated and difficult to follow. An easier way of doing this would be to simply copy the results and evaluate a scenario on that copy, and then compare that to the baseline efficiency. Then use the best copy for the rest of the processing.