Чтобы запустить генетический алгоритм с опциями по умолчанию, вызовите ga
с синтаксисом
[x,fval] = ga(@fitnessfun, nvars)
Входные параметры в ga
являются
@fitnessfun
- указатель на функцию в файл, который вычисляет функцию соответствия. Compute Objective Functions объясняет, как записать этот файл.
nvars
- Количество независимых переменных для функции соответствия.
Выходные аргументы:
x
- Конечная точка
fval
- Значение функции соответствия в x
Описание дополнительных входных и выходных аргументов смотрите на странице с описанием для ga
.
Можно запустить пример, описанный в Minimize Rastrigin's Function из командной строки, путем ввода
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
со значением поля, которое отличается от значения по умолчанию - for примера to set 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
Страница с описанием для получения дополнительной информации об этих аргументах.