Я нахожусь в процессе изучения алгоритмов имитации отжига и у меня есть несколько вопросов о том, как изменить пример алгоритма для решения проблемы ранца 0-1.
Я нашел этот отличный код на CP:
http://www.codeproject.com/KB/recipes/simulatedAnnealingTSP.aspx
Я почти уверен, что понимаю, как все это работает сейчас (за исключением всего условия Больцмана, насколько я понимаю, это черная магия, хотя я понимаю оизбегая местных оптимумов и, видимо, именно это и делает).Я хотел бы переделать это, чтобы решить проблему ранцев 0-1.По сути, я кладу один из 5000 объектов в 10 мешков, и мне нужно оптимизировать его для наименьшего неиспользуемого пространства.Фактическая «оценка», которую я назначаю решению, немного сложнее, но не связана с алгоритмом.
Это кажется достаточно простым.Это означает, что функция Anneal () будет в основном такой же.Я должен был бы реализовать функцию GetNextArrangement (), чтобы соответствовать моим потребностям.В задаче TSM он просто меняет два случайных узла вдоль пути (т. Е. Он вносит очень небольшие изменения в каждую итерацию).
Для моей задачи на первой итерации я выбрал бы 10 случайных объектов ипосмотрите на оставшееся место.Для следующей итерации я бы выбрал 10 новых случайных объектов?Или мне лучше всего поменять несколько объектов, например, половину или хотя бы один из них?Или, может быть, количество предметов, которые я поменяю, должно быть относительно температуры?Любое из них кажется мне выполнимым, мне просто интересно, есть ли у кого-нибудь совет по поводу лучшего подхода (хотя я могу возиться с улучшениями, когда у меня будет работать код).1015 * Mike