前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >遗传算法经典实例matlab_蚁群算法matlab实例

遗传算法经典实例matlab_蚁群算法matlab实例

作者头像
全栈程序员站长
发布2022-09-30 10:38:41
3600
发布2022-09-30 10:38:41
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

二进制编码为基础

代码语言:javascript
复制
%目标函数
function y = fobj(x)
if x <= 0
    y = sin(x);
elseif x <= 2
        y = x^2/2;
else 
    y = 3-x/2;
end
end
代码语言:javascript
复制
%主程序
%清楚窗口内容和变量
clear
clc   

pc = 0.8 ;%交叉率
pm = 0.05 ;%变异率

Iter_N =100; %迭代最大代数
popsize = 10; %种群规模,个体的集合

LB = -10;
UB = 10;  %左右边界
DELTA = 1e-2; 
x=LB:0.05:UB;

for i = 1:length(x)
    y(i)=fobj(x(i));  %目标函数
end
plot(x,y)
hold on;
代码语言:javascript
复制
1. 初始化种群
function pop = ini_pop(LB,UB,DELTA,popsize)
N = ceil(log2((UB-LB)/DELTA+1)); %
for i = 1:popsize
    pop(i,:)=randi(2,[1,N])-1; %
end
代码语言:javascript
复制
%2. fitness 计算适应性
function y = fitness(LB,UB,x)
popsize = size(x,1);
for i = 1:popsize
xtemp = x(i,:);
N = length(xtemp);
xdec = Bin2Dec(xtemp(1:N));
xx = LB+(UB-LB)/(2^N-1)*xdec;
y(i) = fobj(xx);
end
代码语言:javascript
复制
%主程序
pop=ini_pop(LB,UB,DELTA,popsize); %生成初始种群
fit_pop = fitness(LB,UB,pop) %计算适应度
[best_fit,ind]=max(fit_pop); %找到最大适应度个体
best_pop = pop(ind,:); %记录最佳个体
for k = 1:Iter_N
newpop = selection(pop,fit_pop); %轮盘赌选择新种群
newpop = crossover(newpop,pc); %交叉算子
newpop = mutation(newpop,pm); %变异算子
fit_pop = fitness(LB,UB,newpop);%计算适应度
[bf,ind] = max(fit_pop);
if bf<best_fit
R=randi(popsize);
newpop(R,:)=best_pop;
fit_pop(R)=best_fit;
else
best_pop=newpop(ind,:);
end
pop = newpop;
fstar(k)=best_fit;
N=length(best_pop);
xdec=Bin2Dec(best_pop(1:N));
xx=LB+(UB-LB)/(2^N-1)*xdec;
best_fit;
plot(xx,best_fit,'r*');
pause(0.1);
end

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194394.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月13日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二进制编码为基础
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档