Задача коммивояжера методом Монте-Карло
|
|
Суббота, 27 Марта 2021 г. 18:30
+ в цитатник
Forever_smile: Помогите пожалуйста, написать программу на C++. Решить задачу коммивояжера методом Монте-Карло
Для решения задачи коммивояжера используются генераторы случайных чисел ЭВМ. Вместо ЭВМ используют урну с жетонами. Город "1" является начальным, и поэтому "закладывают в урну" жетоны с номерами 2 ... N. Вместо этого в ЭВМ можно рассматривать номера 1 ... (N-1). "Тщательно перемешав жетоны", вытаскивают их по одному и записывают номера жетонов, которые считаются за полученный маршрут. Для этого маршрута рассчитывают функцию цели и запоминают как маршрут, так и функцию цели.
После этого процедуру повторяют. Если функция цели не изменилась или имеет худшее значение, то результат не учитывают. Если функция цели имеет лучшее значение, то новые лучшие результаты запоминают, а старые вычеркивают.
С помощью ЭВМ эта процедура позволяет за короткий срок осмотреть большое количество маршрутов и выбрать среди них если не лучший, то хотя бы не плохой.
N 1 2 3 4 5
1 – 6 60 48 12
2 5 – 10 80 100
3 140 150 – 12 70
4 96 120 70 – 6
5 18 9 24 90 –
https://forum.sources.ru/index.php?showtopic=421287&view=findpost&p=3845738
Метки:
C/C++:
Общие вопросы
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-