VB.NET - Генетический Алготит - Рюкзак Проблема - PullRequest
0 голосов
/ 06 июля 2010

Я работал над проблемой ранца, используя генетические алгоритмы.Но я столкнулся с несколькими трудностями ...

Сначала пользователь генерирует набор данных, который сохраняется в текстовом документе.Оттуда я читаю данные в программу.

У меня все хорошо получается, когда я получаю программу для расчета показателей пригодности, выбираю родителей, рожаю детей, а затем мутирую детей.Но это почему-то работает только тогда, когда у меня мало населения.Моя программа будет постоянно развиваться, когда у меня небольшая популяция, но очень непоследовательна, когда у меня большая популяция.

Например: Когда у меня популяция около 10-200, генетический алгоритм работает безупречно.Но когда я доберусь до более высоких групп населения (около 300+), я нажму «запустить», и ничего не произойдет.Затем я перезапускаю программу и использую тот же точный набор данных, и программа успешно выполняется.

Я не уверен, какая часть моего кода вызывает проблему, поэтому, если вам нужен фрагмент кода примера, пожалуйста, сообщите мне, какойчасть кода, которую вы хотите (выбор родителей, загрузка набора данных и т. д.).

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Полагаю, для этого может быть три причины.

1) ошибка в вашем коде

Это должно быть относительно просто устранить. Попробуйте написать несколько тестов, которые проверяют правильность работы определенных частей вашей программы (например, выбор родителей и т. Д.). Попробуйте протестировать их на некоторых небольших примерах, которые вы можете сами найти на листе бумаги.

2) проблема нехватки памяти - упоминается btreat

3) какая-то алгоритмическая причуда

С этим будет сложнее бороться. Я просто догадываюсь, поэтому могу ошибаться, но я видел алгоритмы, которые резко меняют свое поведение, когда размер проблемы превышает некоторый порог. Маловероятно, но не невозможно. Здесь вы можете увидеть, что если медленно увеличивать численность населения, вы можете увидеть внезапное изменение во времени бега.

1 голос
/ 06 июля 2010

Возможно, память программы ограничена более высокими популяциями?

...