Я использую Visual Studio C ++ в качестве платформы, чтобы попытаться приблизиться к глобальному минимуму.
Давайте предположим, что функция является функцией черного ящика, где, если я введу (x, y), я получу z.
А также, что используемый алгоритм является генетическим алгоритмом реальной стоимости, где я не конвертирую выборки в двоичные коды, а вместо этого в плавающие точки.
https://karczmarczuk.users.greyc.fr/TEACH/IAD/GenDoc/carrGenet.pdf
Я использовал алгоритм, упомянутый в приложении B. Для нахождения минимума функции с 2 переменными.
f (x, y) = z
Я сделал поиск значений сетки, чтобы получить график проблемы. Я приложил график.
Здесь минимальное значение графика, как вы можете видеть из графика, только в один пункт из (0,6, 1,3).
Алгоритм сходится, если я использую дискретные значения (x, y), кратные 0,1. Например, 0.8,0.9,2.2,5.6 и т. Д. Но в противном случае он не сходится.
Можно ли как-то изменить график, чтобы он соответствовал алгоритму, или я могу изменить алгоритм, чтобы минимизировать функцию?
Ваш глобальный оптимум здесь очень острый. вам нужно много удачи, чтобы попасть в нее (т. е. много случайных личностей, у которых практически нет шансов найти это).
если вам удастся вывести человека на склон, GA сойдет к оптимальному. поэтому я бы посоветовал получить более плавный оптимум или попробовать больше случайных значений.
Я не уверен, если вы рассматриваете генератор случайных чисел как часть черного ящика, так есть ли структура вашей входной функции, которую вы могли бы представить в случайной инициализации или в том, как происходят случайные мутации?