MATLAB 遗传算法
函数:ga
利用遗传算法求函数的最小值。
语法
x = ga(fun,nvars)
x = ga(fun,nvars,A,b)
x = ga(fun,nvars,A,b,Aeq,beq)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)
x = ga(problem)
[x,fval] = ga(___)
[x,fval,exitflag,output] = ga(___)
[x,fval,exitflag,output,population,scores] = ga(___)
描述
表达式 | 描述 |
---|---|
x = ga(fun,nvars) | 求目标函数fun局部无约束最小值x。nvars是函数的维度(设计变量的数量)。 |
x = ga(fun,nvars,A,b) | 找出函数fun局部极小值x,服从线性不等式A*x≤b。ga计算矩阵乘积A*x。 |
x = ga(fun,nvars,A,b,Aeq,beq) | 求fun的局部最小值x,满足线性等式Aeq*x = beq和A*x≤b(如果不存在线性不等式,设置A=[]、b=[])。 |
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub) | 定义设计变量x的下界和上界,以便在lb≤x≤ub范围内找到解。(如果不存在线性等式,则设置Aeq=[]和beq=[])。 |
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) | 利用nonlcon对最小化进行约束。函数nonlcon接受x并返回向量C和Ceq,两者分别代表非线性不等式和等式。Ga对fun最小化以便C(x) ≤ 0 以及 Ceq(x) = 0(如果没有边界,则设置lb=[]和ub=[]). |
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) | 通过将默认优化参数替换为options中的值来最小化。(若无非线性约束,设置nonlcon=[])使用optimoptions创建options。 |
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon) | 或x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options) ,要求IntCon中列出的变量取整数值。 |
x = ga(problem) | 找出problem的最小值,其中problem是一个结构。 |
[x,fval] = ga(___) | 对于以前的任何输入参数,也返回fval,即适应度函数在x处的值。 |
[x,fval,exitflag,output] = ga(___) | 也返回exitflag(一个用于标识算法终止原因的整数)和输出(一个包含每一代的输出和关于算法性能的其他信息的结构)。 |
[x,fval,exitflag,output,population,scores] = ga(___) | 也返回矩阵population(其中的行是最终population)和向量scores(最终population的scores)。 |
实例
xi = linspace(-6,2,300);
yi = linspace(-4,4,300);
[X,Y] = meshgrid(xi,yi);
Z = ps_example([X(:),Y(:)]);
Z = reshape(Z,size(X));
surf(X,Y,Z,'MeshStyle','none')
colormap 'jet'
view(-26,43)
xlabel('x(1)')
ylabel('x(2)')
title('ps\_example(x)')

使用ga找到这个函数的最小值:
rng default % For reproducibility
x = ga(@ps_example,2)
% 结果
x = 1×2
-4.6793 -0.0860
评论已关闭,相关问题请到社区本站新建的社区讨论
对给您造成的不便表示抱歉!