В качестве критерия для подбора водителя для пассажира я решил выбрать удаленность финальной точки пассажира от пути водителя.
Так как данное задание является учебным, то сейчас путь водителя представляется как простая прямая линия из начальной точки до конечной.
Поэтому нам достаточно посчитать расстояние от точки до прямой. В реальном приложении путь водителя будет представлен сложной кривой.
Однако идея решения сохраниться, изменится лишь формула рассчета расстояния. Также я ввел параметр epsilon
, отвечающий за то, насколько водитель готов отклониться от своего маршрута.
При значении 0, водитель не готов съезжать с маршрута; при положительных значениях водитель готов отъехать в сторону на epsilon
условных единиц пути.
Сейчас этот параметр общий для всех водителей, однако в будущем каждый сможет задать свое значение для себя - так мы сможем учесть пожелания водителей.
Соответственно сортировка водителей по убыванию данного критерия - сортировка водителей, подходящих для данного пассажира по их epsilon
, по возрастанию дистанции на которую надо отклониться от маршрута водителю, т.к. мы хотим минимизоровать такие отклонения.