The real world is not as simple as a computer game. Sometimes you get caught out by circumstances and have no choice.
If Control are short-staffed it often ends up being down to the shed drivers to try and work out which units need fuel and get them matched to the morning departures. They have little information available to them so the Controller who comes in at 7am then has to sort out any wrinkles, set-swapping to make sure that units don't run short of fuel and get to depots in time for exams. They may also have to work around limitations in traction knowledge and route clearance. Unexpected events also occur, such as unit faults and service disruption. If the only unit free on Canton to continue the service is 150269/270 then that's better than a cancellation.
It is an IF statement in the allocation algorithm, not sure what computer games have to do with it. Is that a deflection?
For all of the other aspects there are presumably IF statements in the allocation to prevent unsuitable units going on particular diagrams. Whether that be because the unit has a number of miles left to exam, issues with fuel, whatever.
Saying it is a choice of Northern or cancel is also throwing the argument because the only diagrams starting in Canton are the Mk4. IF the argument is now that the Northern is getting sent to the west to then form a Manchester from there, there is plenty of time to arrange a swap.
But, the truth is that the Northern 150s appear as allocated on RealTimeTrains the night before and as such it is not last minute swaps that are creating the issue.
While i would not want to do anyone out of a job it is not hard to construct an allocation algorithm that can permute all of the options and select the best TfW 150s for the longer distance services and then there is no need to wait for 7am.