Использование генетического алгоритма для сходимости к глобальному минимуму функции 2 переменных

Я использую Visual Studio C ++ в качестве платформы, чтобы попытаться приблизиться к глобальному минимуму.

Давайте предположим, что функция является функцией черного ящика, где, если я введу (x, y), я получу z.

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

https://karczmarczuk.users.greyc.fr/TEACH/IAD/GenDoc/carrGenet.pdf

Я использовал алгоритм, упомянутый в приложении B. Для нахождения минимума функции с 2 переменными.

f (x, y) = z

Я сделал поиск значений сетки, чтобы получить график проблемы. Я приложил график.

f (x, y) = z

Здесь минимальное значение графика, как вы можете видеть из графика, только в один пункт из (0,6, 1,3).

Алгоритм сходится, если я использую дискретные значения (x, y), кратные 0,1. Например, 0.8,0.9,2.2,5.6 и т. Д. Но в противном случае он не сходится.

Можно ли как-то изменить график, чтобы он соответствовал алгоритму, или я могу изменить алгоритм, чтобы минимизировать функцию?

0

Решение

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

если вам удастся вывести человека на склон, GA сойдет к оптимальному. поэтому я бы посоветовал получить более плавный оптимум или попробовать больше случайных значений.

2

Другие решения

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

0

По вопросам рекламы [email protected]