Генетический алгоритм и его возможно применение - страница 3

 
Igor Makanu:

подходит, в режиме генетической оптимизации по "Максимум пользовательского критерия" ГА тестера будет максимизировать результат полученный из double OnTester() - проверенно все работает, НО есть проблема в автоматизации "взбодрить ГА" когда он начинает сходиться вокруг найденного локального максимума и не хочет еще остальные варианты по входным параметрам перебирать, в общем в тонкой настройке приходится руками помогать ГА путем добавления условий в OnTester() или разбиением параметров оптимизации на несколько интервалов

Кстати как это реализовать? Тоже начал думать сделать так.

Реter Konow:
 В смысле, "умные" - оптимизированные и приспособленные к определенной среде? 

Ну да, Отбор всегда по какому то критерию происходит. Критерий кстати сам может меняться с поколениями, если надо.

 
Реter Konow:
 В смысле, "умные" - оптимизированные и приспособленные к определенной среде? 

Ок. Создаем закрытую среду, из комплекса взаимодействующих систем. Например: трех-генные особи "пожирают" (присоединяют к себе и растут) двух-генные, если те не могут от них "убежать" (допустим гены Х и У - координаты на плоскости). У трех-генной особи добавлен ген Z - третье измерение. У нее преимущество. Задача двух-генной сохраниться и не быть пойманной, а задача трех-генной - поймать двух-генную как можно быстрее и сьэкономить время и ресурсы. 

Цель:  генетически слабая особь должна просчитать генетически более сильную чтобы выжить.
Мы знаем, - трехгенная особь "видит" двугенную на плоскости, как птица видит мышь в поле, а двугенная все воспринимает в двух измерениях, и следовательно, не знает о приближении противника до последнего момента. Однако, в большой группе, двугенных особей много и каждая фиксирует события пожирания своих соплеменников - где и когда были схвачены. Таким образом, у двугенных могут формироватся обобщенные "представления", - опыт и знания полученные от всех поколений о том, какие естественные преграды в трехмерном пространстве есть у их врагов и как наилучше приспособиться для выживания.
 
Aleksey Mavrin:

Кстати как это реализовать? Тоже начал думать сделать так.

это обычная работа с тестером - задали сначала все параметры для оптимизации, потестировали до момента когда тестер начинает рисовать горизонтальные линии на каждом проходе - это признак, что ГА вокруг одного локального максимума сошелся, затем смотрите во вкладке оптимизация какие параметры ГА перестал изменять, и тогда следующие запуски оптимизации производите разбив вот эти параметры (которые ГА не изменяет) на других интервалах , хотя часто бывает достаточно перезапустить тестер удалив (сохранив) кеши оптимизации - ГА же инициализируется случайными значениями

 
Igor Makanu:

это обычная работа с тестером - задали сначала все параметры для оптимизации, потестировали до момента когда тестер начинает рисовать горизонтальные линии на каждом проходе - это признак, что ГА вокруг одного локального максимума сошелся, затем смотрите во вкладке оптимизация какие параметры ГА перестал изменять, и тогда следующие запуски оптимизации производите разбив вот эти параметры (которые ГА не изменяет) на других интервалах , хотя часто бывает достаточно перезапустить тестер удалив (сохранив) кеши оптимизации - ГА же инициализируется случайными значениями

Мне кажется ГА должен сходится к общему максимуму (не к локальному), если достаточно низкий шаг изменения пар-ров. Если шаг высоковат - то изменение интервала  не поможет ведь, максимум может проскочить между соседними значениями.

Тогда проще полный перебор с самым низким шагом, а потом уже ГА, отсеяв самые плохие диапазоны.

 
Aleksey Mavrin:

Тогда проще полный перебор с самым низким шагом, а потом уже ГА, отсеяв самые плохие диапазоны.

не проще, вот мой ЕА оптимизируется:


один проход одиночного тестирования этого ЕА за 1,5 года занимает 1,5-2 секунды, в оптимизаторе приблизительно те же скорости, можете прикинуть сколько займет полный перебор, а ГА в течении 20-50 минут у меня уже находит результаты которые меня удовлетворяют

 
Igor Makanu:

не проще, вот мой ЕА оптимизируется:


один проход одиночного тестирования этого ЕА за 1,5 года занимает 1,5-2 секунды, в оптимизаторе приблизительно те же скорости, можете прикинуть сколько займет полный перебор, а ГА в течении 20-50 минут у меня уже находит результаты которые меня удовлетворяют

Когда количество проходов отображается в научном виде, это разрядность генетики переполняется, и она работает совершенно неправильно (если вообще работает). Мне пришлось:

1. Уменьшить количество шагов. Чтобы шаг был не грубым и покрывался нужный диапазон, я сделал шаг нелинейным. Изменяю параметр 0.001-0.099, 0.01-0.99, 0.1-9.9, ... Т.е. шаг с точностью около 1%.

2. Уменьшить количество оптимизируемых переменных, и это главное.

2а. Разбить переменные на группы, которые (группы) почти независимы, и оптимизировать отдельно.

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

2в. Найти переменные, которые можно сделать константами ценой мизерного уменьшения прибыльности. Тоже нашлось.

3. Ну и диапазон переменных после многих оценок тоже сузить до нужного.

Пока я не пошел на такие жертвы, моя оптимизация не была эффективной. Всё это касается оптимизации при слишком большом количестве переменных. Это само о себе неправильно, но некоторые эксперты эволюционируют не к усложнению, а к упрощению.

 
Igor Makanu:

не проще, вот мой ЕА оптимизируется:


один проход одиночного тестирования этого ЕА за 1,5 года занимает 1,5-2 секунды, в оптимизаторе приблизительно те же скорости, можете прикинуть сколько займет полный перебор, а ГА в течении 20-50 минут у меня уже находит результаты которые меня удовлетворяют

Это вопрос сложности системы. Я в теме про ГУ обсуждал по моему это. Я для полного перебора беру шагов 3-5. У вас на скрине 18 параметров, это было бы (3-5)^18 = от 400М до  3,8 триллиона ,уже по божески, хотя и многовато, ну и главное пар-ров это много, полный перебор я делаю не по всем, а зафиксировав некоторые, и группами, которые потом уже вместе на  ГА определив-сузив ГУ . 

и полностью согласен с  более детальным изложением

Edgar Akhmadeev:

Когда количество проходов отображается в научном виде, это разрядность генетики переполняется, и она работает совершенно неправильно (если вообще работает). Мне пришлось:

1. Уменьшить количество шагов. Чтобы шаг был не грубым и покрывался нужный диапазон, я сделал шаг нелинейным. Изменяю параметр 0.001-0.099, 0.01-0.99, 0.1-9.9, ... Т.е. шаг с точностью около 1%.

2. Уменьшить количество оптимизируемых переменных, и это главное.

2а. Разбить переменные на группы, которые (группы) почти независимы, и оптимизировать отдельно.

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

2в. Найти переменные, которые можно сделать константами ценой мизерного уменьшения прибыльности. Тоже нашлось.

3. Ну и диапазон переменных после многих оценок тоже сузить до нужного.

Пока я не пошел на такие жертвы, моя оптимизация не была эффективной. Всё это касается оптимизации при слишком большом количестве переменных. Это само о себе неправильно, но некоторые эксперты эволюционируют не к усложнению, а к упрощению.

у каждого свои методы, в сути наверное все понимают.
 
Edgar Akhmadeev:

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


Что значит "работает совершенно неправильно"?

Как можно воспроизвести неправильность работы?

 
Edgar Akhmadeev:

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

у меня однозначно работает ГА, я пишу в файл настройки ЕА удачных проходов, имя файла создаю из MD5-хеша самих входных параметров оптимизации, т.е. при оптимизации вижу в папке Common появляются файлы

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

но однозначно ГА работает и не виснет - вижу по прибавляющимся файлам и уникальным именам

 
Slava:

Что значит "работает совершенно неправильно"?

Как можно воспроизвести неправильность работы?

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

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