matlab遗传算法求多元函数最小值,matlab遗传算法求函数最小值

该博客介绍了一个使用Matlab实现的遗传算法来寻找多元函数最小值的方法。通过设定种群大小、最大遗传代数、变量维数和二进制位数,算法创建初始种群并进行轮盘选择、单点交叉、变异等操作,同时实施最优个体保护策略,以在迭代过程中优化目标函数。博客展示了不同遗传代数后种群中个体分布的图表。

function obj=yichuan(lb,ub,px,pm)

%lb,ub为自变量的下界与上界,px为杂交概率,pm为变异概率

popsize=40; %设定种群大小为40

maxgen=500; %设定最大遗传代数为500代

dim=20; %定义变量的维数为20

bits=20; %设定变量的二进制位数为20

duan=20;

trace=zeros(maxgen,2); %遗传算法性能跟踪

chrom=crt(popsize,dim*bits); %创建初始种群

gen=0; %代计数器

x=bs(chrom,lb,ub,dim,bits);

obj=fun(x);

figure(1)

plot(obj,'-xr');grid;

title('初始种群中个体的分布图')

xlabel('个体');

ylabel('目标函数值');

Nesl=popsize; %轮盘选择个数,设定为与种群大小相等

gen=0; %遗传代数计数器,设定初始值为0

obj=fun(x);

fitv=fel(x);

%基于适应度的轮盘选择

chrom=exrws(chrom,fitv,Nesl);

while gen%单点交叉后得到大小为popsize子代新种群,与原来的父代种群合并为大小为2*popsize的新种群

newchrom=[chrom;exxov(chrom,px)];

%最优个体保护策略 (先提出种群中的最优个体,然后用轮盘选择出Nesl-1个个体

%构建成新的种群,再将最优个体插入新种群的第一行)

x=bs(newchrom,lb,ub,dim,bits);

fitv=fel(x);

[Y,I]=max(fitv);

newchrom=[newchrom(I,:);exrws(newchrom,fitv,Nesl-1)];

%变异概率为pm的基本位变异,假设有N个染色体发生了变异,将这N个染色体插入原来的种群中,得到大小为popsize+N的新种群

chrom=[newchrom;exmut(newchrom,pm)];

%最优个体保护策略 (先提出种群中的最优个体,然后用轮盘选择出Nesl-1个个体

%构建成新的种群,再将最优个体插入新种群的第一行)

x=bs(chrom,lb,ub,dim,bits);

fitv=fel(x);

[Y,I]=max(fitv);

chrom=[chrom(I,:);exrws(chrom,fitv,Nesl-1)];

%计算新种群的目标函数值

x=bs(chrom,lb,ub,dim,bits);

obj=fun(x);

fitv=fel(x);

if gen==20

figure(2)

plot(obj,'-xr');grid;

title('经过20次遗传迭代后种群中个体的分布图')

xlabel('个体');

ylabel('目标函数值');

end

if gen==100

figure(3)

plot(obj,'-xr');grid;

title('经过100次遗传迭代后种群中个体的分布图')

xlabel('个体');

ylabel('目标函数值');

end

if gen==250

figure(4)

plot(obj,'-xr');grid;

title('经过250次遗传迭代后种群中个体的分布图')

xlabel('个体');

ylabel('目标函数值');

end

gen=gen+1;

trace(gen,1)=min(obj);

trace(gen,2)=sum(obj)/length(obj);

aver=zeros(length(fitv),1);

aver(:,1)=sum(fitv)/length(fitv);

aver=(fitv-aver)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值