Генетические алгоритмы. Вопросы экспертам. - страница 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