选项和输出
使用默认选项运行 ga
要使用默认选项运行遗传算法,请使用以下语法调用 ga
[x,fval] = ga(@fitnessfun, nvars)
ga 的输入参量是
@fitnessfun- 计算适应度函数的文件的函数句柄。计算目标函数 解释如何编写此文件。nvars- 适应度函数的独立变量的数量。
输出参量为
x- 最终点fval-x处的适应度函数值
有关其他输入和输出参量的描述,请参阅 ga 的参考页。
您可以通过输入以下命令从命令行运行 最小化拉斯特里金函数 中描述的示例
rng(1,'twister') % For reproducibility % Define Rastrigin's function rastriginsfcn = @(pop)10.0 * size(pop,2) + sum(pop .^2 - 10.0*cos(2*pi.*pop),2); [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在命令行设置选项
您可以使用以下语法将 options 作为输入参量传递给 ga,从而指定 ga 可用的任何选项
[x,fval] = ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options)
该语法不指定任何线性等式、线性不等式或非线性约束。
您使用函数 optimoptions 创建 options。
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 参考页。