A heuristic algorithm for the immediate-request dial-a-ride problem with time windows and energy constraints