Генетические алгоритмы. Вопросы экспертам. - страница 4

 
-Aleksey-:

При чем здесь извращения? Я просто описал задачу. А описал для того, чтобы был более понятен вопрос, выше вам заданный, насколько такая схема устойчиво сходится к решению, если вам приходилось такое исследовать.
Представьте, пожалуйста, вышеописанную функцию в виде одной формулы в одну строку.
 
joo:
Представьте, пожалуйста, вышеописанную функцию в виде одной формулы в одну строку.

Это невозможно - кждая "формула" - это блок расчетов, куча классов и все такое. Если просто формула, то так:

y(x(k1, max(k2(d1, max(d2(f1, max(f2(e1, e2))))))))
 
-Aleksey-:
Это невозможно - кждая "формула" - это блок расчетов, куча классов и все такое.

Как это "невозможно"?

Что такое фитнесс-функция тогда по Вашему?

 
joo:

Как это "невозможно"?

Что такое фитнесс-функция тогда по Вашему?


Функция проверки на пригодность, выбора в новую популяцию элемента старой популяции или мутанта. В общем-то - в ДЭ только одна эта функция и есть :) Невозможно, т.к. неизвестно, что резултат поиска по максимумам(который нужен) равен результату поиска без этого условия сразу по всем переменным.
 

Извините, но я ничего не понимаю из того, что Вы говорите.


Возьмем, для примера двумерную функцию как можно попроще: f(x)=x^2. Это двумерная функция, так как каждому x соответствует свой f (пара значений, или другими словами 2D). Итого, нужно оптимизировать только лишь один аргумент функции x. Здесь выражение f(x)=x^2 и есть фитнесс-функция, х - оптимизируемый параметр, значение f(x) - значение фитнесс-функции.


Простая и наглядная задача.

Найти глобальный минимум функции f(x)=x^2 на промежутке аргументов [-5;5].


Будьте добры, найдите пожалуйста с помощью Вашего алгоритма решение этой задачи. И заодно объясните мне, где же спрятана ещё какая то скрытая ГА в простой формуле фитнесс-функции f(x)=x^2.

Для справки. Значение функции и есть степень приспособленности особи.

 

search_argument=0.006362792356330083

search_function_value=4.048512656977252e-005

FF запускалась 1000 раз. (популяция из 10 элементов, 100 этапов эволюции)

Это для вещественных чисел. Если взять аргумен целым - будет совсем точно. В этой функции ничего не спрятано. FF мы одинаково понимаем. Просто, я пытался обрисовать некую расчетную схему, когда в функции присутствуют не только математические операторы, но и логические (как max()).

 

ФФ может быть любой степени сложности и может, конечно же иметь в себе логические операторы.

Но ФФ никакого отношения не имеет к ГА. А говорите, что в ФФ есть какие то части ГА - в этом и кроется, на мой взгляд недопонимание другу друга. При чем здесь вложенные как матрешки ГА - это мне не понятно.

ЗЫ это очень плохой результат для такой простой задачи.

 

Функция Skin (x, y=-3.072485) Поиск максимума по сечению y=-3.072485.

Настройки те же.

search_argument=-2.823482064994041

search_function_value=13.92630264956815

Результат от запуска к запуску немного "плавает" (по ближайшим экстремумам, наверно).

На 900 000 запусков результат стабилизируется на главном максимуме с точностью до сотых.

А по вашей программе какие результаты для 1000 запусков ФФ, для этих двух функций?


И еще есть впрос по вашей статье. Честно говоря, застрял в самом начале. Не пойму первую табличку

Сначала вы пишете: "Геном называем одну переменную исследуемой функции". Потом вы пишете: "...где 0-й индекс — значение функции f(x)"

У меня никак не складывается, что такое справа от ноля - ген? Если да, то все-таки что это за цифра - переменная или значение, или что-то еще?

Что такое справа от единицы? Тоже ген? Откуда взялись эти цифры? Никак не могу понять... Вы могли бы пояснить табличку подробно по всем четырем ячейкам, пожалуйста.

 

Была очень грубая ошибка(нашел), результат вот такой для 1000 запусков:

1) Для минимума y=x^2:

search_argument=-1.485963890279853e-008;

search_function_value=2.208088683215634e-016;

2) Для максимума Skin (x, y=-3.072485) по сечению y=-3.072485:

search_argument=-3.315699072473901;

search_function_value=14.0807968148727,

Сбивается на соседний экстремум значительно реже.

При 5000 запусках уже стабилизируется на точности 1е-8.

 
-Aleksey-:

И еще есть впрос по вашей статье. Честно говоря, застрял в самом начале. Не пойму первую табличку

Сначала вы пишете: "Геном называем одну переменную исследуемой функции". Потом вы пишете: "...где 0-й индекс — значение функции f(x)"

У меня никак не складывается, что такое справа от ноля - ген? Если да, то все-таки что это за цифра - переменная или значение, или что-то еще?

Что такое справа от единицы? Тоже ген? Откуда взялись эти цифры? Никак не могу понять... Вы могли бы пояснить табличку подробно по всем четырем ячейкам, пожалуйста.

Вот выдержка из статьи:

Договоримся изображать хромосому в виде столбика. Тогда хромосома для функции f(x)=x^2, будет выглядеть так:


Рисунок 1. Хромосома для функции f(x)=x^2

где 0-й индекс — значение функции f(x), называют приспособленностью особи (функцию будем называть фитнес функцией - FF, а значение функции — VFF).

К генам удобно обращаться по их порядковым индексам начиная с 1. 0 - зарезервировано под VFF. В этой таблице значение гена 1.2 взято для примера, а так как в этом же примере FF представлена формулой f(x)=x^2, то f(x)=1.2^2=1.44.

Далее в статье:

Полная популяция особей при поиске минимума функции f(x)=x^2 может выглядеть, например, так:


Рисунок 2. Полная популяция особей

Популяция отсортирована по VFF. Здесь 0-й индекс хромосомы занимает особь с наименьшим VFF. Новые потомки полностью замещают только особей в колонии потомков, родительская колония остаётся неприкосновенной. Однако, колония родителей может не всегда быть полной, так как дубликаты особей уничтожаются, тогда новые потомки заполняют свободные места в колонии родителей, оставшиеся помещаются в колонию потомков.

Видно невооруженным взглядом, что в первой строке double-чисел находятся квадраты (VFF) чисел из второй строки (гены), что и соответствует нашей FF f(x)=x^2