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





公众号

关注公众号,获取一手资讯

“ MATLAB 遗传算法 ” comments 0

评论/回复

电子邮件地址不会被公开。 必填项已用*标注