Генетический алгоритм обычно запускается быстрее, если вы векторизуете функцию фитнеса. Это означает, что генетический алгоритм только вызывает функцию фитнеса однажды, но ожидает, что функция фитнеса вычислит пригодность для всех индивидуумов в текущем населении целиком. Векторизовать функцию фитнеса,
Запишите файл, который вычисляет функцию так, чтобы это приняло матрицу с произвольно многими строками, соответствуя индивидуумам в населении. Например, чтобы векторизовать функцию
запишите файл с помощью следующего кода:
z =x(:,1).^2 - 2*x(:,1).*x(:,2) + 6*x(:,1) + x(:,2).^2 - 6*x(:,2);
Двоеточие в первой записи x указывает на все строки x, так, чтобы x(:, 1) вектор. .^ и .* операторы выполняют поэлементные операции на векторах.
В командной строке, набор UseVectorized опция к true использование optimoptions.
В Оптимизировать задаче Live Editor гарантируйте, что установка Algorithm settings > Evaluate functions vectorized имеет галочку.

Примечание
Функция фитнеса и любая нелинейная ограничительная функция, должны принять, что произвольное число строк использует опцию Vectorize. ga иногда оценивает одну строку даже во время векторизованного вычисления.
Следующее сравнение, запуск в командной строке, показывает улучшение скорости с векторизацией.
options = optimoptions('ga','PopulationSize',2000); tic;ga(@rastriginsfcn,20,[],[],[],[],[],[],[],options);toc Optimization terminated: maximum number of generations exceeded. Elapsed time is 12.054973 seconds. options = optimoptions(options,'UseVectorized',true); tic; ga(@rastriginsfcn,20,[],[],[],[],[],[],[],options); toc
Optimization terminated: maximum number of generations exceeded. Elapsed time is 1.860655 seconds.
Если существуют нелинейные ограничения, целевая функция и нелинейные ограничения вся потребность, которая будет векторизована для алгоритма, чтобы вычислить векторизованным способом.
Векторизуйте Функции Цели и Ограничения, содержит пример того, как векторизовать обоих для решателя patternsearch. Синтаксис почти идентичен для ga. Единственная разница - это patternsearch может иметь его шаблоны, появляются или как строка или как вектор-столбцы; соответствующие векторы для ga векторы населения, которые всегда являются строками.