Я создаю компьютерную игру, в которой есть управляемый компьютером автомобиль, который должен ехать по прямой (таким образом, эффективно решая эту задачу одномерно) и достигать цели, которая останавливается с нулевой скоростью. Этот автомобиль «думает» каждую секунду и решает, следует ли (и на сколько) ускоряться или замедляться.
Подводя итог, я хочу, чтобы автомобиль максимально ускорялся, а затем останавливался как можно быстрее.
Вот переменные, которые автомобиль должен учитывать:
- RemainingDistance
= Наше текущее оставшееся расстояние до пункта назначения в метрах.
- Velocity
= Наша текущая скорость в направлении пункта назначения в метрах / секунду.
- MaxVelocity
= Максимальная скорость, которую может развить автомобиль.
- Acceleration
= Изменение скорости в секунду. Автомобиль может менять свое ускорение каждую секунду на любое число в диапазоне [0, Ускорение].
- Deceleration
= Изменение скорости в секунду. Автомобиль может менять свое замедление каждую секунду на любое число в диапазоне [0, замедление].
Итак, чтобы быть как можно более понятным, вот математика, которая запускается каждую секунду для обновления симуляции автомобиля:
Acceleration
= некоторое количество между [Deceleration
, Acceleration
] по выбору компьютера
Velocity
= Velocity
+ Acceleration
RemainingDistance
= RemainingDistance
- Velocity
Итак, мой вопрос: Каждый раз, когда автомобиль «думает», какую формулу (ы) он должен использовать, чтобы определить идеальное значение Acceleration
, чтобы достичь пункта назначения (с конечной скоростью 0) как можно быстрее?
(В случае, если начальная скорость автомобиля слишком высока и она не может замедляться достаточно быстро, чтобы достигнуть скорости 0 к тому моменту, когда она достигает пункта назначения, она должна остановиться как можно ближе к месту назначения.)
Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.