Поиск пути - объединение различных функций стоимости
В моем школьном проекте по поиску пути пользователю дается 3 варианта навигации между двумя точками:
- Кратчайший путь (Километры). Я определил функцию стоимости для каждых 2 пунктов, чтобы быть расстоянием дороги, которая соединяет их.
- Самый быстрый путь (каждая дорога имеет ограничение скорости). Я определил функцию стоимости между каждыми 2 точками, чтобы быть 1/(SpeedLimit).
- Простейший путь (минимизирует повороты, поворот определяется, если дорога меняет направление более чем на альфа-градус). Я определил состояние как кортеж точки и направления и определил функцию стоимости как 1, если изменение направления больше, чем альфа, и 0 в противном случае.
Затем пользователь вводит 3 действительных числа от 0 до 1, чтобы указать важность каждого параметра навигации.
Таким образом, в основном функция стоимости должна быть суммой трех функций стоимости, описанных выше, каждая из которых умножается на предоставленное число. Моя проблема состоит в том, что каждая функция стоимости состоит из разных единиц, например, первая функция стоимости - в километрах, а третья функция стоимости - логическая (0 или 1). Как я могу преобразовать их так, чтобы это имело смысл?
1 ответ
Определите функцию стоимости для каждого критерия, который отображается от пути к реальному числу.
- f1 (путь) = стоимость, связанная с расстоянием пути
- f2(путь) = стоимость времени, затраченного на прохождение пути
- f3(путь) = стоимость сложности маршрута
определяющий f1
а также f2
должно быть довольно простым. f3
является более сложным и субъективным, но я подозреваю, что это действительно не должно быть логическим значением, если нет какой-то очень конкретной причины, почему вам это нужно. Возможно, функция сложности пути может быть чем-то вроде суммы количества градусов (радиан) в каждом повороте, предпринятом в поездке. Есть, конечно, немало других вариантов такой функции, которые сразу приходят на ум (например, длина представления, необходимого для описания пути). За f3
вам нужно будет выбрать то, что подходит вам лучше всего.
Определив отдельные функции затрат, вы можете получить общую стоимость пути, взяв линейную комбинацию этих трех функций:
стоимость (путь) = a1*f1(путь) + a2*f2(путь) + a3*f3(путь)
Нахождение разумных значений для a1, a2, a3
это большая часть проблемы. Есть несколько статистических методов, которые вы можете использовать для этого.