【智能算法学习】学校优化算法SBO
目录
算法原理
教师分配
教阶段
学阶段
流程图
主要代码
仿真结果
参考文献
SBO 算法[1](School Based Optimization Algorithm, SBO)是Farshchin等 于 2018 年提出的一种新型基于人类群体智能行为开发的元启发式算法。该算法受学校内多班级教学模式的启发,拓展了教与学优化算法中的单一课堂教学模式,提出多班级协作教学的优化模式。SBO 算法针对这一问题引入多班级协作框架,解决了终止准则中参数复杂性的问题,具有参数少、搜索能力强等优势。
算法原理
常见的元启发式算法通过随机生成一个潜在解的初始群体,然后在一个系统的优化过程中逐步提高群体的整体适应度,这种方式只允许群体内部协作。更复杂的方法是利用一系列独立的并行群体进行协作,从而扩展算法的探索能力并提高算法的整体效率。这种多种群协作的方法包含两个阶段,第一阶段采用独立的元启发式方法探索不同群体区域的搜索空间,第二阶段探索子区域内最有前途的解方案。
SBO具有一名教师的单课堂教学环境(TLBO)扩展到具有多个教室和多个教师的学校。在SBO算法中,独立教室同时探索搜索空间,每个教室使用TLBO;然后,在每次迭代结束时,集合一组教师(每个教室一名教师)。在下一次迭代之前,根据教师的适应值,使用轮盘赌机制将教师分配到教室。此外,每一个新分配给每个教室的老师都应该比现在的老师有更好的适应能力。
在 SBO 算法中,每个候选解表示各班级中的学生个体,解分量分别表示各个科目,一轮迭代表示一次教与学的过程。SBO算法的搜索过程包括教师分配、教阶段和学阶段,算法通过三个过程的联合作用,逐步实现班级水平的提高。
教师分配
首先比较各个班级内学生个体的适应度值,分别选出班级最优生,构成一支优秀教师团队;其次通过轮盘赌选择机制依次从这批教师中随机选择一名教师分配到各班级中,执行教学任务。后面每个班级中都进行教与学算法TLBO的更新。对于TLBO本栏目也有专门的详细介绍,可以翻看记录查找学习。
教阶段
学生尽量向教师水平靠拢。学习后的更新方程式表示如下:
其中其中, 分别表示教学前后学生 i 在科目 D 的水平,Δi 表示学生 i 通过课堂教学所汲取的知识,使用教师 与班级平均值 M 的差值表示,TF 为教学因子,用于描述学生从课堂教学中获取知识的程度,取值为 1 或 2。r是随机数(0,1)。这里使用的平均数不是传统的平均值的算法,而是使用学生个体的适应度值 Fi 来描述班级平均水平 M,这种方式的搜索效率较优。公式如下所示:
学阶段
学生 i 随机选择班级内另外一位学生 j 进行学习和交流,同时,综合自身已掌握的知识情况,进行学习更新,更新方程如式:
流程图
- 初始化随机创建Nc个班级
- 在每个班级中挑选出最优秀的一个学生粒子作为老师,将这些老师作为一个老师库T1-Tnc
- 使用轮盘赌的方法,将老师库中的老师顺序打乱,在重新分配到教室中
- 对每个教室使用TLBO算法训练学生粒子
- 判断条件,直到输出最优值
主要代码
function SBOglobal D
% Specity SBO parameters
Itmax=300; % Maximum number of iterations
NClass=5; % Number of classes in the school
PopSize=15; % Population size of each class
% Optimization problem parameters
D=Data10; % For truss function evaluate the functio to get the initial parameters
LB=D.LB; % Lowerbound
UB=D.UB; % Upperbound
FN='ST10'; % Name of analyzer function%% Randomely generate initial designs between LB and UB
Cycle=1;
for I=1:PopSizefor NC=1:NClassDesigns{NC}(I,:)=LB+rand(1,size(LB,2)).*(UB-LB); % Row vectorend
end% Analysis the designs
for NC=1:NClass[PObj{NC},Obj{NC}]=Analyser(Designs{NC},FN);Best{NC}=[];
end%% SBO loop
for Cycle=2:Itmaxfor NC=1:NClass% Identify best designs and keep them[Best{NC},Designs{NC},PObj{NC},Obj{NC},WMeanPos{NC}]=Specifier(PObj{NC},Obj{NC},Designs{NC},Best{NC});TeachersPObj(NC,1)=Best{NC}.GBest.PObj;TeachersDes(NC,:)=Best{NC}.GBest.Design;endfor NC=1:NClass% Select a teacherSelectedTeacher=TeacherSelector(Best,NC,TeachersPObj);% Apply Teaching[Designs{NC},PObj{NC},Obj{NC}]=Teaching(LB,UB,Designs{NC},PObj{NC},Obj{NC},TeachersDes(SelectedTeacher,:),WMeanPos{NC},FN);[Best{NC},Designs{NC},PObj{NC},Obj{NC},WMeanPos{NC}]=Specifier(PObj{NC},Obj{NC},Designs{NC},Best{NC});% Apply Learning[Designs{NC},PObj{NC},Obj{NC}]=Learning(LB,UB,Designs{NC},Obj{NC},PObj{NC},FN);[Best{NC},Designs{NC},PObj{NC},Obj{NC},WMeanPos{NC}]=Specifier(PObj{NC},Obj{NC},Designs{NC},Best{NC});end% Find best so far solution and MeanCumPObj=[];for NC=1:NClassClassBestPObj(NC,1)=Best{NC}.GBest.PObj;ClassMean(NC,1)=mean(PObj{NC});CumPObj=[CumPObj;PObj{NC}];end[~,b]=min(ClassBestPObj);OveralBestPObj=Best{b}.GBest.PObj;OveralBestObj=Best{b}.GBest.Obj;OveralBestDes=Best{b}.GBest.Design;% Plot time history of the best solution vs. iteration and print the% resultshold on;plot(Cycle,Best{b}.GBest.PObj,'b*');xlabel('Iteration');ylabel('Best solution value');pause(0.0001)fprintf('Cycle: %6d, Best (Penalized): %6.4f, Objective: %6.4f\n',Cycle,OveralBestPObj,OveralBestObj);
endSolution.PObj=OveralBestPObj;% Objective value for best non-penalized solution
Solution.Design=OveralBestDes;% Design for best non-penalized solution%% Save the results
save('SBO_Results.mat','Solution')
仿真结果
参考文献
[1]Farshchin M, Maniat M, Camp C V, et al. School based optimization algorithm for design of steel frames[J]. Engineering Structures, 2018, 171: 326-335.
【智能算法学习】学校优化算法SBO相关推荐
- Matlab程序代码,智能微电网PSO优化算法,多目标调度,粒子群算法,综合能源系统优化,机组最优组合,光伏出力预测
Matlab程序代码,智能微电网PSO优化算法,多目标调度,粒子群算法,综合能源系统优化,机组最优组合,光伏出力预测,神经网络简单应用,多目标优化,冷热电联供型综合能源系统优化调度模型,求解采用的是M ...
- 机器学习算法与传统优化算法与智能优化算法
传统优化算法一般是针对结构化的问题,有较为明确的问题和条件描述,如线性规划,二次规划,整数规划,混合规划,带约束和不带约束条件等,即有清晰的结构信息:而智能优化算法一般针对的是较为普适的问题描述,普遍 ...
- 智能优化算法:蚁狮优化算法-附代码
智能优化算法:蚁狮优化算法-附代码 文章目录 智能优化算法:蚁狮优化算法-附代码 1.算法原理 1.1 蚂蚁的随机游走 1.2蚁狮对蚂蚁随机游走的影响 1.3自适应机制 1.4 精英策略 2.算法步骤 ...
- 深度学习最常用的学习算法:Adam优化算法
上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习 快速带你晋级 阅读全文 > 正文共6267个字,30张图,预计阅读时间16分钟. 听说你了解深度学习最常用的学习 ...
- 智能优化算法:松鼠优化算法 - 附代码
智能优化算法:松鼠优化算法 文章目录 智能优化算法:松鼠优化算法 1.算法原理 1.1 种群初始化 1.2 适应度值评价 1.3 生成新位置 1.4 滑翔的空气动力学 1.5 季节变化条件 2.实验结 ...
- 学习黑盒优化算法CMA和RandomSearch,借助阿里达摩院MindOpt的RABBO榜单【系列2/4】
1 黑盒优化的概念 上一篇<新手一步步学习黑盒优化算法,借助达摩院MindOpt的RABBO榜单[系列1/4]>中给大家介绍了黑盒优化的概念.和怎么借助阿里达摩院的RABBO"动 ...
- 智能优化算法:热交换优化算法 - 附代码
智能优化算法:热交换优化算法 文章目录 智能优化算法:热交换优化算法 1.算法原理 2.实验结果 3.参考文献 4.Matlab代码 5.Python代码 摘要:热交换优化 (Thermal Exch ...
- 非线性参数的精英学习灰狼优化算法
文章目录 一.理论基础 1.灰狼优化算法 2.非线性参数的精英学习灰狼优化算法 (1)精英反向学习 (2)调整收敛因子aaa (3)改造位置更新公式 (4)算法步骤 二.仿真实验与分析 三.参考文献 ...
- 智能优化算法:蜣螂优化算法-附代码
智能优化算法:蜣螂优化算法 摘要:蜣螂优化算法( Dung beetle optimizer, DBO), 是由 Jiankai Xue 等于2022 年提出的一种群体智能优化算法.其灵感来源于蜣螂的 ...
- 【Matlab】智能优化算法_蜻蜓优化算法DA
[Matlab]智能优化算法_蜻蜓优化算法DA 1.背景介绍 2.灵感 3.公式推导 3.1 勘探和开发操作 4.算法流程图 5.文件结构 6.伪代码 7.详细代码及注释 7.1 DA.m 7.2 d ...
最新文章
- mysql去除select换行符_MySQL中去除字段中的回车符和换行符
- Spring——AOP
- 那年的12月,那些悟与思2018-12-23
- Samba nsswitch/pam_winbind.c文件输入验证漏洞
- C# 多线程,解决处理大数据时窗体(不能拖动等)假死现象
- 爬虫实战:过年你被催婚啦吗?爬取相亲网站,看看当下年轻小姐姐的择偶观。
- C++PrimerPlus学习——第十四章编程练习
- ubuntu16.04下安装wine及TIM
- List of Algorithms
- 新浪微博爬取笔记(4):数据清理
- C# 本地图片转Base64码和Base64码显示
- 理解什么是symbolic link in Python
- Image类--旋转和翻转图片
- AdGuard常规设置的介绍
- 软件开发生命周期有几个阶段?
- 腾讯企业邮箱java-收发邮件
- ABP (.Net Core) 使用MySQL数据库
- 一朝春尽红颜老,花落人亡两不知
- android高德地图点平滑移动,高德地图Marker平滑移动
- SAP MM内向交货单的凭证流