Отслеживание пригодности в генетическом алгоритме - PullRequest
0 голосов
/ 06 декабря 2009

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

Итак, у меня есть основы этого; как настроить атрибуты игры и как получить пригодность решения, я не могу понять, как сохранить пригодность, чтобы я знал, когда пробовал комбинацию раньше.

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

Ответы [ 3 ]

1 голос
/ 09 декабря 2009

В GA вы не хотите переоценивать решение, если тест на пригодность занимает много времени. Используйте хэш-таблицу для хранения результатов фитнеса и сделайте хэш-ключ хромосомой. Используйте «Орковский маневр»; сначала проверьте кеш, если он там, извлеките его и продолжите, иначе вычислите его и поместите в хеш на следующий раз.

1 голос
/ 21 апреля 2011

Если вы хотите получить полный пример GA, вы можете получить бесплатную версию Matlab GA Toolbox с открытым исходным кодом от команды эволюционных вычислений в Университете Шеффилда в Великобритании, доступную здесь:

http://www.sheffield.ac.uk/acse/research/ecrg/gat.html

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

1 голос
/ 06 декабря 2009

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

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

Теперь, если вы хотите зарегистрировать / отследить историю «решения», вам многие захотят узнать, когда она появится последней, но я предполагаю, что в вашей «игре» есть какая-то случайная природа, поэтому вы хотели бы, чтобы объект повторял запуски.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...