教与学算法(TLBO)
TLBO,由Rao等人在2011年提出的,是一种基于群体的启发式优化算法,不需要任何算法特定参数。这种方法模拟了传统的课堂教学过程。整个优化过程包括教师阶段和学习者阶段。在教师阶段,每个学生都向最优秀的个体进行学习。在学习阶段,每个学生都以随机的方式向其他学生学习。
基于教学的优化(TLBO)是一种模拟课堂教学过程的基于群体的优化方法。TLBO分为两部分。第一部分是“教师阶段”,即向教师学习;第二部分是“学习者阶段”,即通过学习者之间的互动进行学习。在TLBO中,种群被视为一类学习者。每个学习者代表优化问题的一个可能的解决方案,分数代表适应度值。老师被认为是迄今为止得到的最好的解决办法。
在教学阶段,教师T是一个群体中具有最佳适应度值的解决方案。M是这个班级的平均成绩。学习者试图通过教师的教学来提高他们的平均成绩。对于第i个学习者Xi,候选解决方案newXi计算如下:
文章图片
rand是在[0,1]之间产生的随机数,TF是决定M值的教学因素。TF公式为:
文章图片
在学习阶段,每个学习者通过与从课堂中随机选择的学习者互动来提高自己的成绩。计算如下:
文章图片
【教与学算法(TLBO)】j是从种群中随机选取的,ri表示的是rand。f()指的是要优化的目标函数
伪代码如下:
文章图片
之后是matlab代码:
function [fitnessgbest,gbest]=TLBOmain
warning('off')
clear;
pn=10;
%种群大小
gn=20;
popmax=5.12;
popmin=-5.12;
for i=1:pn
pop(i,:)=5*rand(1,2);
fitness(i)=fun(pop(i,:));
%得到适应度值(把pop(i,:)代到目标函数中得到的结果)
fitnessgbest=min(fitness);
end %初始化
for j=1:gn
pop_m=sum(pop)/10;
[bestfitness,bestindex]=min(fitness);
pop_t=pop(bestindex,:);
%找到当前的老师
%教学阶段
for i=1:pn
pop_new(i,:)=pop(i,:)+rand*(pop_t-round(1+rand*(2-1)*pop_m));
pop_new(i,find(pop_new(1,:)>popmax))=popmax;
pop_new(i,find(pop_new(1,:)fun(pop(k,:));
pop_new(i,:)=pop(i,:)+rand*(pop(k,:)-pop(i,:));
end
end
pop_new(i,find(pop_new(i,:)>popmax))=popmax;
pop_new(i,find(pop_new(i,:)
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 慢慢的美丽
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 开学第一天(下)
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 第326天
- Shell-Bash变量与运算符
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 奔向你的城市