Open skyien opened 3 years ago
Yeah, it looks like I have to redesign a bit this method to make the library more usable from code. At the moment, I'm focusing mostly on usage from CLI interface, so there might be some inconsistency for different scenarios.
@reinterpretcat, как Вы думаете имеет ли смысл идея, если реализовать критерий завершения по условию, что, например, в N последних генерациях не изменяются косты и количество неназначенных задач? Просто я смотрю, что в основном лучшее решение находится буквально 100-й генерации, а дальше никаких изменений.
Вообще, конечно, подобное условие уже есть - cost variation на основе коэффициэнта вариации. Но по умолчанию оно будет работать немного неожиданно, т.к. оно включается для последней фазы поиска, когда алгоритм находится в режиме активного исследования локального оптимума (exploitation), который занимает последние 10 процентов времени исполнения. Мне кажется, что если разрешить его использование в режиме параллельного поиска новых локальных оптимумов (exploration), cost variation может остановить алгоритм слишком рано в некоторых случаях.
Самое простое решение сейчас - это использовать cost variation с search-mode=deep, который включает алгоритм поиска на основе механизма элитизма в режиме exploitation, вместо алгоритма диверсификации по умолчанию (rosomaxa). Недостаток - снизится возможность алгоритма находить другие локальные оптимумы.
См. документацию здесь: https://reinterpretcat.github.io/vrp/getting-started/solver.html#search-mode https://reinterpretcat.github.io/vrp/getting-started/solver.html#cost-variation
Илья, благодарю за ответ! Видимо я невнимательно изучил документацию. Попробую этот вариант. И заодно хотелось бы Вас поблагодарить за Ваш проект!
Спасибо за отзыв!
Этот момент недостаточно описан еще в документации, так как проект еще по-прежнему в своеобразном экспериментальном состоянии. Необходимо будет время, чтобы упорядочить и описать реализованные идеи.
In vrp-core/src/solver/builder.rs:
but below in:
pub fn build(self) -> Result<Solver, String>
termination configuration overrides by this line: