reinterpretcat / vrp

A Vehicle Routing Problem solver
https://reinterpretcat.github.io/vrp/
Apache License 2.0
331 stars 68 forks source link

Разброс в результатах #79

Open skyien opened 2 years ago

skyien commented 2 years ago

При одинаковых исходных данных получаю релузьтат с разбросом в ~10% по километражу/временик. Количество задач 40-50. Решение находится примерно на 1500-2000 генераций, далее без изменений. Увеличение времени и кол-ва генераций не помогает. Т.е. получается, что сущесвует лучшее решение, но продолжительность работы алгоритма никак на это не влияет. Испоьзую vrp-cli 1.18.1, дефолтные настройки. Подкажите, пожалуйста, возможно есть какие-то доп. настройки, для решения этой проблемы? Заранее благодарен!

reinterpretcat commented 2 years ago

Стабильность поиска - это одна из концептуальных проблем в текущем алгоритме, который основан на недетерменизме (как, в прочем, и большинство методов решения оптимизационных задач для проблем реального мира). В версии 1.18.x я достаточно много чего переделал (как я надеюсь, улучшил), что улучшило поиск на определенных задач (например, с большим количеством unassignable и длинными турами), но возможна и деградация. Планирую улучшить это в дальнейшем (за основу можно взять классические бенчмарки для CVRP).

Что можно попробовать сейчас? На ум пришло попробовать увеличить количество начальных решений, например, init-size=8

skyien commented 2 years ago

Илья, благодраю за помощь! Попробовал на одном наборе данных, с init-size чаше стало выдавать одинаковый результат. Остановился на init-size=1000.

reinterpretcat commented 2 years ago

Немного неожиданное число: 1000 начальных решений это немного многовато и нерационально, т.к. большинство из них будет одинаковыми (зависит от количества разных методов для создания решений "с нуля" - их немного). С другой стороны, оно показывает куда мне "копать": по-ходу, надо убедиться, что начальные решения "живут" в популяции решений дольше текущего (сейчас это немного не так).