Я пытаюсь смоделировать лифт, как всегда, я начал очень просто, принимая только один заказ за раз, затем добавил память к лифту в виде очередей, так что этажи перемещались в том порядке, в котором они были нажаты, что, очевидно, не лучший подход.
Поэтому в данный момент я использую очень простую и «близорукую» логику, которая заключается в том, что для текущего этажа найдите этаж, ближайший ко мне, и установите его в качестве моего следующего пункта назначения, и выполните цикл, пока в списке не останется больше этажей.
Но это не всегда работает, например, лифт был на 3-м этаже 5-ти этажного здания и получил заказы 4,5,2, самый короткий путь был бы 2-> 4-> 5, который стоит 4 этажа, но используя эту логику 4-> 5-> 2, который стоит 5, имеет одинаковую вероятность быть выбранным, в зависимости от кода.
Как мне найти кратчайший путь и сделать лифт более эффективным?