网站运营包括哪些内容,wordpress自带相册,网页设计ai,做网站的费用计入什么科目前言
为了省略艰深难懂的遗传算法数学理论和降低程序开发的难度,MATLAB软件已经将遗传算法命令进行了封装#xff0c;做成专门的遗传算法工具箱(GA Toolbox),方 便用户调用
1.ga函数
ga函数是对目标函数进行遗传计算,其格式如下#xff1a;
[x, fval, exitflag, output, …前言
为了省略艰深难懂的遗传算法数学理论和降低程序开发的难度,MATLAB软件已经将遗传算法命令进行了封装做成专门的遗传算法工具箱(GA Toolbox),方 便用户调用
1.ga函数
ga函数是对目标函数进行遗传计算,其格式如下
[x, fval, exitflag, output, population, scores] ga(fitnessfen, nvars, ...options)其中,fitnessfun为适应度句柄函数; nvars 为目标函数自变量的个数; options 为算法的属性设置,该属性是通过函数gaoptimset赋予的;x为经过遗传进化以后自变量最佳染色体返回值;fval为最佳染色体的适应度;exitflag为算法停止的原因;output为输出的算法结构;population为最终得到种群适应度的列向量;scores为最终得到的种群。
例1 已知不等式 使用ga函数求x1,x2的值。
clear all;
clc;
A[1 1;-1 2;2 1];
b [2;2; 3];
lb zeros(2,1);
[x,fval,exitflag] ga(lincontest6,2,A, b,[],[],lb)2.gaoptimset函数
gaoptimset函数是设置遗传算法的参数和句柄函数,如表介绍常用的11种属性。
属性名 默认值实现功能PopInitRange [0;1]初始种群生成空间PopulationSize 20种群规模CrossoverFraction 0.8交配概率MigrationFraction 0.2变异概率Generations 100超过进化代数时算法停止TimeLimit Inf超过运算时间限制时算法停止FitnessLimit Inf最佳个体等于或小于适应度阈值时算法停止StallGenLimit 50超过连续代数不进化则算法停止StallTimeLimit 20超过连续时间不进化则算法停止InitialPopulation [ ]初始化种群PlotFens [ ]绘图函数
其使用格式如下:
options gaoptimset(param1,value1, param2, value2, ...)由于遗传算法本质上是一种启发式的随机运算,算法程序经常重复运行多次才能得到理想结果。鉴于此,可以将前一次运行得到的最后种群作为下一次运行的初始种群如此操作会得到更好的结果:
[x, fval, reason, output, final_pop] ga(fitnessfcn, nvars);最后一个输出变量final_pop返回的就是本次运行得到的最后种群。再将final_pop作为ga函数的初始种群,语法格式如下:
options gaoptimset( InitialPopulation, finnal_ pop) ;
[x, fval, reason, output, finnal_pop2] ga(fitnessfcn, nvars, options) ;遗传算法和直接搜索工具箱中的ga函数是求解目标函数的最小值,所以求目标函数最小值的问题,可直接令目标函数为适应度函数。编写适应度函数,语法格式如下:
function f fitnessfen(x) %x为自变量向量
ff(x);如果有约束条件(包括自变量的取值范围),对于求解函数的最小值问题可以使用如下语法格式:
function f fitnessfcn(x)
if( x -1|x3)
%表示有约束x-1和x-3,其他约束条件类推f inf;
elsef f(x);
end如果有约束条件(包括自变量的取值范围),对于求解函数的最大值问题可以使用如下语法格式:
function f fitnessfcn(x)
if(x-1|x3)f inf;
elsef -f(x);
%这里 f-f(x)而不是ff(x)
end若目标函数作为适应度函数,则最终得到的目标函数值为 -fval 而不是fval。
3.gaoptimget函数
该函数用于得到遗传算法参数结构中的参数具体值。其调用格式如下:
val gaoptimget( options, name )其中,options为结构体变量;name为需要得到的参数名称,返回值为val。
例2 利用遗传算法求解函数
f(x,y) (cos(x2 y2)-0.1)/(10.3(x2y2)2)3的最大值。
解首先创建遗传算法 的适应度函数。
function y ga43(x)y (cos(x(1)^2 x(2)^3)-0.1)/(10.3* (x(1)^2 x(2)^2)^2) 3;
end然后利用遗传算法寻找函数最大值,在MATLAB命令行窗口输人代码如下:
[x, fval, exitflag, output, population, scores] ga(ga43,2)结果