подходит, в режиме генетической оптимизации по "Максимум пользовательского критерия" ГА тестера будет максимизировать результат полученный из double OnTester() - проверенно все работает, НО есть проблема в автоматизации "взбодрить ГА" когда он начинает сходиться вокруг найденного локального максимума и не хочет еще остальные варианты по входным параметрам перебирать, в общем в тонкой настройке приходится руками помогать ГА путем добавления условий в OnTester() или разбиением параметров оптимизации на несколько интервалов
Кстати как это реализовать? Тоже начал думать сделать так.
Реter Konow: В смысле, "умные" - оптимизированные и приспособленные к определенной среде?
Ну да, Отбор всегда по какому то критерию происходит. Критерий кстати сам может меняться с поколениями, если надо.
Реter Konow: В смысле, "умные" - оптимизированные и приспособленные к определенной среде?
Ок. Создаем закрытую среду, из комплекса взаимодействующих систем. Например: трех-генные особи "пожирают" (присоединяют к себе и растут) двух-генные, если те не могут от них "убежать" (допустим гены Х и У - координаты на плоскости). У трех-генной особи добавлен ген Z - третье измерение. У нее преимущество. Задача двух-генной сохраниться и не быть пойманной, а задача трех-генной - поймать двух-генную как можно быстрее и сьэкономить время и ресурсы.
Цель: генетически слабая особь должна просчитать генетически более сильную чтобы выжить.
Мы знаем, - трехгенная особь "видит" двугенную на плоскости, как птица видит мышь в поле, а двугенная все воспринимает в двух измерениях, и следовательно, не знает о приближении противника до последнего момента. Однако, в большой группе, двугенных особей много и каждая фиксирует события пожирания своих соплеменников - где и когда были схвачены. Таким образом, у двугенных могут формироватся обобщенные "представления", - опыт и знания полученные от всех поколений о том, какие естественные преграды в трехмерном пространстве есть у их врагов и как наилучше приспособиться для выживания.
Кстати как это реализовать? Тоже начал думать сделать так.
это обычная работа с тестером - задали сначала все параметры для оптимизации, потестировали до момента когда тестер начинает рисовать горизонтальные линии на каждом проходе - это признак, что ГА вокруг одного локального максимума сошелся, затем смотрите во вкладке оптимизация какие параметры ГА перестал изменять, и тогда следующие запуски оптимизации производите разбив вот эти параметры (которые ГА не изменяет) на других интервалах , хотя часто бывает достаточно перезапустить тестер удалив (сохранив) кеши оптимизации - ГА же инициализируется случайными значениями
это обычная работа с тестером - задали сначала все параметры для оптимизации, потестировали до момента когда тестер начинает рисовать горизонтальные линии на каждом проходе - это признак, что ГА вокруг одного локального максимума сошелся, затем смотрите во вкладке оптимизация какие параметры ГА перестал изменять, и тогда следующие запуски оптимизации производите разбив вот эти параметры (которые ГА не изменяет) на других интервалах , хотя часто бывает достаточно перезапустить тестер удалив (сохранив) кеши оптимизации - ГА же инициализируется случайными значениями
Мне кажется ГА должен сходится к общему максимуму (не к локальному), если достаточно низкий шаг изменения пар-ров. Если шаг высоковат - то изменение интервала не поможет ведь, максимум может проскочить между соседними значениями.
Тогда проще полный перебор с самым низким шагом, а потом уже ГА, отсеяв самые плохие диапазоны.
Тогда проще полный перебор с самым низким шагом, а потом уже ГА, отсеяв самые плохие диапазоны.
не проще, вот мой ЕА оптимизируется:
один проход одиночного тестирования этого ЕА за 1,5 года занимает 1,5-2 секунды, в оптимизаторе приблизительно те же скорости, можете прикинуть сколько займет полный перебор, а ГА в течении 20-50 минут у меня уже находит результаты которые меня удовлетворяют
один проход одиночного тестирования этого ЕА за 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. Ну и диапазон переменных после многих оценок тоже сузить до нужного.
Пока я не пошел на такие жертвы, моя оптимизация не была эффективной. Всё это касается оптимизации при слишком большом количестве переменных. Это само о себе неправильно, но некоторые эксперты эволюционируют не к усложнению, а к упрощению.
один проход одиночного тестирования этого ЕА за 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. Ну и диапазон переменных после многих оценок тоже сузить до нужного.
Пока я не пошел на такие жертвы, моя оптимизация не была эффективной. Всё это касается оптимизации при слишком большом количестве переменных. Это само о себе неправильно, но некоторые эксперты эволюционируют не к усложнению, а к упрощению.
у каждого свои методы, в сути наверное все понимают.
Когда количество проходов отображается в научном виде, это разрядность генетики переполняется, и она работает совершенно неправильно (если вообще работает).
Когда количество проходов отображается в научном виде, это разрядность генетики переполняется, и она работает совершенно неправильно (если вообще работает).
у меня однозначно работает ГА, я пишу в файл настройки ЕА удачных проходов, имя файла создаю из MD5-хеша самих входных параметров оптимизации, т.е. при оптимизации вижу в папке Common появляются файлы
пока проблема одна - ГА может через некоторое время начать сходиться вокруг небольшой группы параметров оптимизации - по моему это нормально, все ГА так работают и это проблема их использования
но однозначно ГА работает и не виснет - вижу по прибавляющимся файлам и уникальным именам
Я давно писал об этом, когда использовал фреймы в эксперте. Уже не помню точно сути, кажется у меня стали приходить не все фреймы (причём лучших результатов). Я поищу старые сообщения и попытаюсь уточнить.
Но точно помню, было чётко воспроизводимо в моём эксперте - как только количество переборов превышало некое кол-во и оно отображалось в научном виде, генетика у меня ломалась. Важно, что не просто было большое к-во шагов у переменной, а и количество переменных было большим.
подходит, в режиме генетической оптимизации по "Максимум пользовательского критерия" ГА тестера будет максимизировать результат полученный из double OnTester() - проверенно все работает, НО есть проблема в автоматизации "взбодрить ГА" когда он начинает сходиться вокруг найденного локального максимума и не хочет еще остальные варианты по входным параметрам перебирать, в общем в тонкой настройке приходится руками помогать ГА путем добавления условий в OnTester() или разбиением параметров оптимизации на несколько интервалов
Кстати как это реализовать? Тоже начал думать сделать так.
В смысле, "умные" - оптимизированные и приспособленные к определенной среде?
Ну да, Отбор всегда по какому то критерию происходит. Критерий кстати сам может меняться с поколениями, если надо.
В смысле, "умные" - оптимизированные и приспособленные к определенной среде?
Кстати как это реализовать? Тоже начал думать сделать так.
это обычная работа с тестером - задали сначала все параметры для оптимизации, потестировали до момента когда тестер начинает рисовать горизонтальные линии на каждом проходе - это признак, что ГА вокруг одного локального максимума сошелся, затем смотрите во вкладке оптимизация какие параметры ГА перестал изменять, и тогда следующие запуски оптимизации производите разбив вот эти параметры (которые ГА не изменяет) на других интервалах , хотя часто бывает достаточно перезапустить тестер удалив (сохранив) кеши оптимизации - ГА же инициализируется случайными значениями
это обычная работа с тестером - задали сначала все параметры для оптимизации, потестировали до момента когда тестер начинает рисовать горизонтальные линии на каждом проходе - это признак, что ГА вокруг одного локального максимума сошелся, затем смотрите во вкладке оптимизация какие параметры ГА перестал изменять, и тогда следующие запуски оптимизации производите разбив вот эти параметры (которые ГА не изменяет) на других интервалах , хотя часто бывает достаточно перезапустить тестер удалив (сохранив) кеши оптимизации - ГА же инициализируется случайными значениями
Мне кажется ГА должен сходится к общему максимуму (не к локальному), если достаточно низкий шаг изменения пар-ров. Если шаг высоковат - то изменение интервала не поможет ведь, максимум может проскочить между соседними значениями.
Тогда проще полный перебор с самым низким шагом, а потом уже ГА, отсеяв самые плохие диапазоны.
Тогда проще полный перебор с самым низким шагом, а потом уже ГА, отсеяв самые плохие диапазоны.
не проще, вот мой ЕА оптимизируется:
один проход одиночного тестирования этого ЕА за 1,5 года занимает 1,5-2 секунды, в оптимизаторе приблизительно те же скорости, можете прикинуть сколько займет полный перебор, а ГА в течении 20-50 минут у меня уже находит результаты которые меня удовлетворяют
не проще, вот мой ЕА оптимизируется:
один проход одиночного тестирования этого ЕА за 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. Ну и диапазон переменных после многих оценок тоже сузить до нужного.
Пока я не пошел на такие жертвы, моя оптимизация не была эффективной. Всё это касается оптимизации при слишком большом количестве переменных. Это само о себе неправильно, но некоторые эксперты эволюционируют не к усложнению, а к упрощению.
не проще, вот мой ЕА оптимизируется:
один проход одиночного тестирования этого ЕА за 1,5 года занимает 1,5-2 секунды, в оптимизаторе приблизительно те же скорости, можете прикинуть сколько займет полный перебор, а ГА в течении 20-50 минут у меня уже находит результаты которые меня удовлетворяют
Это вопрос сложности системы. Я в теме про ГУ обсуждал по моему это. Я для полного перебора беру шагов 3-5. У вас на скрине 18 параметров, это было бы (3-5)^18 = от 400М до 3,8 триллиона ,уже по божески, хотя и многовато, ну и главное пар-ров это много, полный перебор я делаю не по всем, а зафиксировав некоторые, и группами, которые потом уже вместе на ГА определив-сузив ГУ .
и полностью согласен с более детальным изложением
Когда количество проходов отображается в научном виде, это разрядность генетики переполняется, и она работает совершенно неправильно (если вообще работает). Мне пришлось:
1. Уменьшить количество шагов. Чтобы шаг был не грубым и покрывался нужный диапазон, я сделал шаг нелинейным. Изменяю параметр 0.001-0.099, 0.01-0.99, 0.1-9.9, ... Т.е. шаг с точностью около 1%.
2. Уменьшить количество оптимизируемых переменных, и это главное.
2а. Разбить переменные на группы, которые (группы) почти независимы, и оптимизировать отдельно.
2б. Найти переменные, которые зависят от другой, и связать их. Я так убрал пару переменных, после очень долгой возни.
2в. Найти переменные, которые можно сделать константами ценой мизерного уменьшения прибыльности. Тоже нашлось.
3. Ну и диапазон переменных после многих оценок тоже сузить до нужного.
Пока я не пошел на такие жертвы, моя оптимизация не была эффективной. Всё это касается оптимизации при слишком большом количестве переменных. Это само о себе неправильно, но некоторые эксперты эволюционируют не к усложнению, а к упрощению.
Когда количество проходов отображается в научном виде, это разрядность генетики переполняется, и она работает совершенно неправильно (если вообще работает).
Что значит "работает совершенно неправильно"?
Как можно воспроизвести неправильность работы?
Когда количество проходов отображается в научном виде, это разрядность генетики переполняется, и она работает совершенно неправильно (если вообще работает).
у меня однозначно работает ГА, я пишу в файл настройки ЕА удачных проходов, имя файла создаю из MD5-хеша самих входных параметров оптимизации, т.е. при оптимизации вижу в папке Common появляются файлы
пока проблема одна - ГА может через некоторое время начать сходиться вокруг небольшой группы параметров оптимизации - по моему это нормально, все ГА так работают и это проблема их использования
но однозначно ГА работает и не виснет - вижу по прибавляющимся файлам и уникальным именам
Что значит "работает совершенно неправильно"?
Как можно воспроизвести неправильность работы?
Я давно писал об этом, когда использовал фреймы в эксперте. Уже не помню точно сути, кажется у меня стали приходить не все фреймы (причём лучших результатов). Я поищу старые сообщения и попытаюсь уточнить.
Но точно помню, было чётко воспроизводимо в моём эксперте - как только количество переборов превышало некое кол-во и оно отображалось в научном виде, генетика у меня ломалась. Важно, что не просто было большое к-во шагов у переменной, а и количество переменных было большим.