logger.debug("find_best_next_schedulable_unit: units to score between '%s' and '%s': %s",lower_bound_start_time,upper_bound_stop_time,','.join([str(su.id)forsuinsorted(units_to_score,key=lambdax:x.id)])or'None')
#ToDo: TMSS-1745 Add unschedulable reasons
# implementation hint: subtract units_to_score from scheduling_units giving you the not_to_be_scheduled_units list
# then ask for each unit in this list if it can be run after lower_bound_start_time
# if not, call each evaluate_x_contraints method. If contraint not met, then you know which constraint is not met and why.
# return the correct reason as given in the ticket for each un-met constraint type.
# from the filtered down list of units, compute the (weighted) scores, and return the best scoring one.