TSP/ TSPTW с разными семенами

Я хотел бы спросить, можно ли запустить ГА с другим начальным числом, чтобы сгенерировать исходное решение и сделать анализ? Однако в начале применения ГА вы должны создать ряд решений для популяции. Например, вы запускаете генетический алгоритм, используя начальное число «12345», чтобы сгенерировать начальное решение, а затем вы заполняете список случайных решений из этого начального решения и продолжаете применять шаги ГА для решения проблемы.

Затем вы запускаете генетику с другим начальным числом, например «5678», чтобы сгенерировать начальное решение, а затем вы заполняете список случайных решений из этого начального решения и продолжаете применять шаги ГА для решения проблемы.

Это означает, что заполненный список при первом запуске может содержать исходное решение, созданное при втором запуске.

Мой вопрос: можно ли каким-либо образом использовать GA с другим начальным числом для сравнения и анализа? Если нет, то как я могу сравнить и провести анализ, должен ли я использовать только другой файл экземпляра для проблемы?


person Yasmin    schedule 20.05.2013    source источник
comment
что вы подразумеваете под разными семенами? менять его во время работы алгоритма бесполезно, вы задаете его один раз. и неважно, ГА это или что-то в этом роде.   -  person sashkello    schedule 20.05.2013
comment
Я хотел бы использовать другое семя с исходным решением   -  person Yasmin    schedule 20.05.2013
comment
Зачем тебе это? Какова цель?   -  person sashkello    schedule 20.05.2013
comment
Потому что я уже тестировал другие алгоритмы решения ЗК с разными начальными значениями и хотел бы провести сравнение. Поэтому я спрашиваю, применимо ли это в GA, как я могу это сделать? Это вообще неприменимо в эволюционных алгоритмах?   -  person Yasmin    schedule 20.05.2013
comment
Извините, но я не понимаю. Семя используется для генерации серии случайных чисел. Нет никакого отношения к тому, для какого алгоритма вы его используете.   -  person sashkello    schedule 20.05.2013
comment
Я отредактировал вопрос с примером   -  person Yasmin    schedule 20.05.2013
comment
давайте продолжим это обсуждение в чате   -  person Yasmin    schedule 20.05.2013
comment
Я вообще не понимаю вопроса, но, может быть, это поможет - просто установите генератор случайных чисел на определенное семя в начале каждого прогона. Таким образом, последовательности сгенерированных случайных чисел различны, поэтому начальные решения с высокой вероятностью будут разными при каждом запуске, а мутация и скрещивание, где есть случайность, также будут разными. Таким образом, вы, скорее всего, получите еще один локальный минимум, если их несколько. Что ж, вам не нужно явно задавать начальное число, так как после генерации нескольких чисел для заполнения начальной совокупности начальное число будет другим.   -  person Bernhard Barker    schedule 20.05.2013
comment
Также, вероятно, перекрестная проверка лучше подходит для этого вопроса: stats.stackexchange.com   -  person sashkello    schedule 20.05.2013
comment
Сравнение и анализ чего? Сгенерированные решения? Как это связано со случайными числами? А что такое файл экземпляра?   -  person Bernhard Barker    schedule 20.05.2013
comment
файл экземпляра для проблемы TSPTW iridia.ulb.ac.be/~manuel/tsptw-instances , я внедрил табу, VND и итеративное улучшение, и я использовал разные начальные значения и сравнил все остальные вместе с лучшим решением, чтобы узнать, какой алгоритм лучше другого, но в случае GA я не смогу сравните его, если он имеет разные случайные генерируемые значения, даже если я начал с исходного решения для выкупа, используя определенное семя   -  person Yasmin    schedule 20.05.2013
comment
@Dukeling: Если я запущу алгоритм GA несколько раз с одним и тем же начальным значением для начального решения, результат будет совершенно другим.   -  person Yasmin    schedule 20.05.2013
comment
Итак, вы запускаете GA для определенного экземпляра? Это то, что вы имеете в виду под семенем, как в одном из тех, что вы выбрали? Если это так, в основном игнорируйте мой первый комментарий. Кроме того, я до сих пор не уверен, почему вы не можете сравнить это. В конце запуска GA у вас есть «лучшее» решение, просто сравните его с чем угодно.   -  person Bernhard Barker    schedule 20.05.2013


Ответы (1)


Чтобы сначала сравнить стохастические алгоритмы, вы обычно запускаете их несколько раз с разными случайными начальными значениями. Результат, который вы затем получите, является случайной величиной. Затем вы можете оценить, является ли один алгоритм лучше другого, выполнив проверку статистической гипотезы (ANOVA или Крускала-Уоллиса для множественных сравнений, t-критерий или U-критерий Манна-Уитни для попарных сравнений) на полученных выборках. Если полученное значение p в этих тестах ниже желаемого порога (обычно 0,05, но для более строгих доказательств вы должны установить это значение ниже, например, 0,01), вы отвергнете гипотезу H0 о том, что эти результаты равны, например. относительно их средств. Таким образом, вы предполагаете, что результаты неравны, и, кроме того, алгоритм с лучшей средней производительностью является лучшим алгоритмом для выбора (если вас интересует средняя производительность - «лучше» обычно имеет много измерений).

Что меня удивило в ваших комментариях:

Если я запускаю алгоритм GA несколько раз с одним и тем же начальным значением для исходного решения, результат будет совершенно другим.

Я думаю, что вы допустили некоторую ошибку в своем коде. Вам нужно использовать один и тот же случайный объект во всех случайных решениях, принятых внутри вашего алгоритма, чтобы получить точно такой же результат. Где-то в вашем коде вы, вероятно, используете new Random() вместо того, который вы получили изначально с данным начальным числом. Другая причина может заключаться в том, что вы используете параллельную обработку частей, рисующих случайные числа. Вы никогда не можете гарантировать, что ваши потоки всегда выполняются в одном и том же порядке, поэтому один раз поток 1 получает первое случайное число, а поток 2 — второе, в другой раз поток 2 выполняется первым и получает первое число.

person Andreas    schedule 20.05.2013
comment
Большое спасибо, я понял, я написал это утверждение, потому что я ни разу не использовал случайное начальное число в своей программе, но теперь я использую его один раз, и это работает, я очень ценю вашу помощь. - person Yasmin; 21.05.2013