Как отмечалось в некоторых комментариях, ваш вопрос действительно включает в себя большой набор фоновых знаний и тем, которые вряд ли могут быть красноречиво освещены в stackoverflow. Тем не менее, мы можем здесь попытаться предложить подходы к решению вашей проблемы.
Прежде всего: что делает ваша ГА? Я вижу набор двоичных значений; кто они такие? Я вижу их как либо:
- плохо: последовательность «повернуть направо» и «повернуть налево» инструкции. Почему это плохо? Потому что вы в основном делаете случайную и грубую попытку решить вашу проблему.Вы не разрабатываете генотип: вы уточняете случайные догадки.
- лучше: каждый ген (местоположение в геноме) представляет собой функцию, которая будет выражена в фенотипе. Не должно быть сопоставления 1-к-1 между геномом и фенотипом!
Позвольте привести пример: в нашем мозгу есть 10^13ш-нейроны. Но у нас есть только около 10^9 генов (да, это не точная величина, голая со мной на секунду). Что это говорит нам? Что наш генотип не кодирует каждые нейронов. Наш геном кодирует белки, которые затем пойдут и сделают компоненты нашего тела.
Следовательно, эволюция воздействует на генотип непосредственно путем выбора особенностей фенотипа. Если бы у меня было 6 пальцев на каждой руке, и если бы это сделало меня лучшим программистом, заставив меня иметь больше детей, потому что я более успешный в жизни, ну, мой генотип затем будет выбран по эволюции, потому что он содержит возможность , чтобы придать мне более подходящее тело (да, там есть каламбур, учитывая среднее соотношение количества выходок к воспроизводству большинства людей).
Теперь подумайте о своей ГА: что вы пытаетесь достичь? Вы уверены, что развивающиеся правила помогут? Другими словами - как бы вы выступить в лабиринте? Какая самая успешная вещь, которая может вам помочь: иметь другое тело или иметь память о правильном пути, чтобы выйти? Возможно, вам захочется пересмотреть свой генотип и исправить ошибки способ запоминания. Может быть, кодировать в генотипе, сколько данных можно хранить, и как быстро ваши агенты могут получить доступ к нему, а затем измерить фитнес в том, как быстро они выходят из лабиринта. Другим (более слабым) подходом может быть кодирование правил, которые ваш агент использует, чтобы решить, куда идти. Сообщение о возврате - это кодирование функций, которые, после выражения, могут быть выбраны по фитнесу.
Теперь, к проблеме нейронной сети. Следует помнить, что NN - это фильтры. Они получают вход. выполнять операции над ним и возвращать вывод. Что это за результат? Возможно, вам просто нужно различать истинное/ложное условие; например, как только вы подаете карту лабиринта в NN, он может сказать вам, можете ли вы выйти из лабиринта или нет. Как бы вы это сделали? Вам нужно будет закодировать данные правильно.
Это ключевой момент в отношении NN: ваши входные данные должны быть закодированы правильно. Обычно люди нормализуют его, возможно, масштабируют, возможно, вы можете применить к нему сигма-функцию, чтобы избежать слишком больших или слишком больших значений; это детали, которые касаются ошибок и производительности. Теперь вам нужно понять, что такое NN, и для чего вы не можете его использовать.
К вашей проблеме сейчас. Вы упомянули вы хотите использовать NNS, а также: как насчет,
- с использованием нейронной сети для руководства агента, и
- с использованием генетического алгоритма эволюционировать нейронные параметры сети?
перефразировать так:
- давайте предположим, что у вас есть робот: ваш NN контролирует левое и правое колесо, и в качестве входных данных он принимает расстояние от следующей стены и сколько он путешествовал (это всего лишь пример)
- Вы начинаете с генерации случайного генотипа
- превращают генотип в фенотип: первый ген является сетевой чувствительностью; второй ген кодирует коэффициент обучения; третий ген .. так далее, и так далее
- теперь у вас есть нейронная сеть, запустить моделирование
- посмотреть, как он выполняет
- генерируют второй случайный генотип, эволюционировать второй NN
- посмотреть, как это второе индивидуальные выполняет
- получить лучший индивидуальный, то либо мутировать его генотип или Recombinate его с неудачником
- повтор
есть отличное считывание по этому вопросу здесь: Inman Harvey Microbial GA.
Надеюсь, я сделал вам некоторое представление о таких проблемах. NNs и GA не являются серебряной пулей для решения всех проблем. В некоторых они могут делать очень много, в других - это просто неправильный инструмент. Это (до сих пор!) До нас, чтобы получить лучшее, и для этого мы должны хорошо их понимать.
Удачи в нем! Это здорово знать такие вещи, делает повседневную жизнь немного более интересным :)
Это очень сложный вопрос. Сами вещи, о которых вы говорите, обычно рассматриваются в полном семестре курса колледжа в ИИ. Я не уверен, что они могут быть правильно рассмотрены в ответе на Stackoverflow, но я, конечно, буду заинтересован, чтобы люди пытались. Я никогда не обволакивал некоторые из этих алгоритмов. –
На стороне примечания, если вы готовы потратить немного денег на действительно хороший учебник по этому вопросу, я могу предложить: http://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597/ref = sr_1_1? Ie = UTF8 & s = books & qid = 1268837913 & sr = 1-1 –
Я несколько раз взглянул на эту книгу и, хотя она дает достойный теоретический фон предмета, понимание того, как оно может быть реализовано, убивает меня , Если бы кто-то мог просто написать основное решение, которое будет работать с учетом предоставленной мной информации, даже если оно находится в псевдокоде, я был бы достаточно счастлив, чтобы попытаться реализовать его и дать приемлемый ответ. – AlexT