Как можно сделать Ant Colony Optimization для получения более последовательных результатов?

Я разработал программную реализацию Ant Colony Optimization для решения задачи коммивояжера, но из-за стохастической природы ACO каждое выполнение алгоритма ACO каждый раз выдает почти оптимальное решение. Есть ли способ сделать ACO более детерминированным? Я понимаю, что он никогда не будет на 100% детерминированным, но мне нужно, чтобы он мог запускаться несколько раз на одном и том же пространстве проблем и, по крайней мере, большую часть времени придумывать подобное решение. Я пытался настроить α, β, ρ и количество итераций, но сейчас я просто стреляю в темноте.

1 ответ

Решение

Как уже сказал Майкл в качестве комментария: используйте генератор с псевдослучайными числами (PRNG) и используйте его во всей вашей реализации.

В Java сделайте что-то вроде этого:

Random workingRandom = new Random(0L);
// Never use Math.random(), always use workingRandom.next*() instead

Есть пара других вещей, которые вам может потребоваться отключить (особенно в многопоточных реализациях), чтобы обеспечить 100% воспроизводимость, некоторые из которых я обсуждаю в разделе документации моей реализации 4.4.3.4. Воспроизводимый (например, замена HashMap от LinkedHashMap при необходимости).

Другие вопросы по тегам