Чтобы запустить генетический алгоритм с опциями по умолчанию, вызовите ga с синтаксисом
[x,fval] = ga(@fitnessfun, nvars)
Входные аргументы для ga являются
@fitnessfun - дескриптор функции для файла, который вычисляет функцию пригодности. В разделе Вычислить целевые функции (Compute Objective Functions) объясняется, как записать этот файл.
nvars - Количество независимых переменных для фитнес-функции.
Выходные аргументы:
x - Финальная точка
fval - Значение функции фитнеса при x
Описание дополнительных входных и выходных аргументов см. на справочной странице для ga.
Можно выполнить пример, описанный в разделе Минимизация функции Rastrigin, из командной строки, введя
rng(1,'twister') % for reproducibility [x,fval] = ga(@rastriginsfcn,2)
Это возвращает
Optimization terminated:
average change in the fitness value less than options.FunctionTolerance.
x =
-1.0421 -1.0018
fval =
2.4385Можно указать любую из опций, доступных для ga путем прохождения options в качестве входного аргумента для ga с использованием синтаксиса
[x,fval] = ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options)
Этот синтаксис не задает линейного равенства, линейного неравенства или нелинейных ограничений.
Вы создаете options использование функции optimoptions.
options = optimoptions(@ga);
Это возвращает options со значениями по умолчанию для полей. ga использует эти значения по умолчанию, если параметры не передаются в качестве входного аргумента.
Значение каждого параметра хранится в поле options, такие как options.PopulationSize. Любое из этих значений можно просмотреть путем ввода options за которым следует точка и имя поля. Например, чтобы отобразить размер популяции для генетического алгоритма, введите
options.PopulationSize ans = '50 when numberOfVariables <= 5, else 200'
Создать options со значением поля, отличным от значения по умолчанию - например, для установки PopulationSize кому 100 вместо значения по умолчанию 50 - введите
options = optimoptions('ga','PopulationSize',100);Это создает options со всеми значениями, установленными по умолчанию, за исключением PopulationSize, для которого установлено значение 100.
Если теперь ввести,
ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options)
ga запускает генетический алгоритм с размером популяции 100.
Если впоследствии вы решите изменить другое поле в options, например, настройка PlotFcn кому @gaplotbestf, который отображает лучшее значение фитнес-функции в каждом поколении, вызов optimoptions с синтаксисом
options = optimoptions(options,'PlotFcn',@plotbestf);
Это сохраняет текущие значения всех полей options за исключением PlotFcn, который изменен на @plotbestf. Обратите внимание, что если опустить входной аргумент options, optimoptions сброс PopulationSize до значения по умолчанию.
Также можно задать оба параметра PopulationSize и PlotFcn с помощью одной команды
options = optimoptions('ga','PopulationSize',100,'PlotFcn',@plotbestf);Для получения дополнительной информации о производительности генетического алгоритма можно позвонить по телефону ga с синтаксисом
[x,fval,exitflag,output,population,scores] = ga(@fitnessfcn, nvars)
Кроме того, x и fval, эта функция возвращает следующие дополнительные выходные аргументы:
exitflag - Целое значение, соответствующее причине прекращения работы алгоритма
output - Структура, содержащая информацию о работе алгоритма на каждом поколении
population - Конечное население
scores - Итоговые баллы
См. раздел ga для получения дополнительной информации об этих аргументах.