Я хочу рассчитать максимум функции CROSS-IN-TRAY, которая показана здесь:
Итак, я сделал эту функцию в Matlab:
function f = CrossInTray2(x)
%the CrossInTray2 objective function
%
f = 0.0001 *(( abs(sin(x(:,1)).* sin(x(:,2)).*exp(abs(100 - sqrt(x(:,1).^2 + x(:,2).^2)/3.14159 )) )+1 ).^0.1);
end
Я умножил всю формулу на (-1), поэтому функция инвертирована, поэтому, когда я буду искать минимум инвертированной формулы, она будет фактически максимумом исходной.
Затем, когда я перехожу к инструментам оптимизации и выбираю алгоритм GA и определяю нижнюю и верхнюю границы как -3 и 3, он показывает мне результат примерно после 60 итераций, который составляет около 0,13, а конечная точка что-то вроде [0, 9,34]. И как это возможно, что конечная точка не находится в диапазоне, определяемом границами? И каков фактический максимум этой функции?
Note: ga does not enforce bounds to be satisfied when the PopulationType option is 'bitString' or 'custom'.
mathworks.com/help/gads/ga.html - person Yvon   schedule 04.05.2016