Matlab智能算法chap1

遗传算法找最优解。

主要思想“物竞天择,适者生存”。

流程:初始化、适应度生成、适应度评估、选择、交叉、变异。

举例:

求最大值。

%f(x,y)= y.*x.*cos(2*pi.*x)+x.*sin(2.*pi.*y),x∈[-2,2],y∈[-1,1]
clc
clear 
% 画出函数图像
figure(1);
    %给出定义域
lbx = -2;ubx = 2;
lby = -1;uby = 1;
%多元函数使用ezmesh作图,ezmesh('函数',定义域,参数)
ezmesh('y.*x.*cos(2*pi.*x)+x.*sin(2.*pi.*y)',[lbx,ubx,lby,uby],50); 
hold on;
%定义遗传算法参数
NIND = 40;%种群大小,通常设为40.
MAXGEN = 500;%最大遗传代数,即循环500次
PRECI = 20;%个体长度设为20,这里是两个自变量,种群个数为2.
GGAP = 0.95;%代沟
px = 0.7;%交叉概率
pm = 0.01;%变异概率
trace = zeros(3,MAXGEN); %追踪记录
FieldD = [PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1];%这里7个参数,转化的格式
%第一个种群长度,因为有2个自变量,所以写两个,多个自变量类比
%第二个左边界值
%第三个右边界值
%编码方式,有0,1,1代表二进制,0为格雷编码,通常为二进制编码
%刻度,有0,1,0为算数刻度,1为对数刻度,通常为算数刻度
%第六个是否包含左边界
%第七个是否包含右边界
Chrom = crtbp(NIND,PRECI*2);%初始化种群
%优化
gen = 0;%计数器
XY = bs2rv(Chrom,FieldD);%转化为十进制,
X=XY(:,1);Y=XY(:,2);
ObjV=Y.*X.*cos(2*pi.*X)+X.*sin(2.*pi.*Y);
while gen

Matlab智能算法chap1_第1张图片

Matlab智能算法chap1_第2张图片

你可能感兴趣的:(matlab)