- 一、灵感来源
- 二、算法的初始化
- 三、CBOA的数学模型
- Phase1:厨师导师组的更新(from X S 1 XS_{1} XS1to X S N C XS_{N_{C}} XSNC)
- 策略一
- 策略二
- Phase2:烹饪学生组的更新(from X S N C + 1 XS_{N_{C+1}} XSNC+1to X S N XS_{N} XSN)
- 策略一
- 策略二
- 策略三
- 四、流程图
- 五、复杂度
- 六、测试
参考文献:Trojovská E, Dehghani M. A New Human-Based Metahurestic Optimization Method Based on Mimicking Cooking Training[J]. 2022.
注:仅记录学习,如有侵权,联系删除。 一、灵感来源
烹饪学员和年轻厨师参加培训课程,以提高他们的烹饪技能,成为一名厨师。这个概念类似于元启发式算法的基础,即初始化一些候选方案,然后通过迭代过程进行改进,以确定最佳候选方案作为算法最终的问题解决方案。因此,在烹饪学校中,将一个烹饪学员转变成厨师的过程是CBOA(Chef-Based Optimization Algorithm)的灵感来源。
假设在一所烹饪学校里有一定数量的厨师导师。每个厨师导师负责教授一个班级,每个学生可以选择参加其中的哪个班级。厨师导师向学生传授烹饪技能和技巧。然而,厨师导师也会向学校最好的导师学习,努力提升自己的技能。学生努力学习和模仿导师的技能。此外,学生还努力通过联系提高他们所学的技能。在课程结束时,学生在他们所接受的培训下成为熟练的厨师。
X代表CBOA种群矩阵,
X
i
=
(
x
i
,
1
,
x
i
,
2
,
.
.
.
,
x
i
,
m
)
X_{i}=(x_{i,1},x_{i,2},...,x_{i,m})
Xi=(xi,1,xi,2,...,xi,m)是CBOA的第i个成员(候选解)。
F代表适应度函数值。
X
=
[
X
1
⋮
X
i
⋮
X
N
]
N
×
m
=
[
x
1
,
1
⋯
x
1
,
j
⋯
x
1
,
m
⋮
⋱
⋮
⋮
x
i
,
1
⋯
x
i
,
j
⋯
x
i
,
m
⋮
⋮
⋱
⋮
x
N
,
1
⋯
x
N
,
j
⋯
x
N
,
m
]
N
×
m
X=left[begin{array}{c} X_{1} \ vdots \ X_{i} \ vdots \ X_{N} end{array}right]_{N times m}=left[begin{array}{ccccc} x_{1,1} & cdots & x_{1, j} & cdots & x_{1, m} \ vdots & ddots & vdots & & vdots \ x_{i, 1} & cdots & x_{i, j} & cdots & x_{i, m} \ vdots & & vdots & ddots & vdots \ x_{N, 1} & cdots & x_{N, j} & cdots & x_{N, m} end{array}right]_{N times m}
X=⎣⎢⎢⎢⎢⎢⎢⎡X1⋮Xi⋮XN⎦⎥⎥⎥⎥⎥⎥⎤N×m=⎣⎢⎢⎢⎢⎢⎢⎡x1,1⋮xi,1⋮xN,1⋯⋱⋯⋯x1,j⋮xi,j⋮xN,j⋯⋯⋱⋯x1,m⋮xi,m⋮xN,m⎦⎥⎥⎥⎥⎥⎥⎤N×m
x
i
,
j
=
l
b
j
+
rand
⋅
(
u
b
j
−
l
b
j
)
,
i
=
1
,
2
,
…
,
N
,
j
=
1
,
2
,
…
,
m
x_{i, j}=lb_{j}+text { rand } cdotleft(ub_{j}-lb_{j}right), i=1,2, ldots, N, j=1,2, ldots, m
xi,j=lbj+ rand ⋅(ubj−lbj),i=1,2,…,N,j=1,2,…,m
F
=
[
F
1
⋮
F
i
⋮
F
N
]
N
×
1
=
[
F
(
X
1
)
⋮
F
(
X
i
)
⋮
F
(
X
N
)
]
N
×
1
F=left[begin{array}{c} F_{1} \ vdots \ F_{i} \ vdots \ F_{N} end{array}right]_{N times 1}=left[begin{array}{c} Fleft(X_{1}right) \ vdots \ Fleft(X_{i}right) \ vdots \ Fleft(X_{N}right) end{array}right]_{N times 1}
F=⎣⎢⎢⎢⎢⎢⎢⎡F1⋮Fi⋮FN⎦⎥⎥⎥⎥⎥⎥⎤N×1=⎣⎢⎢⎢⎢⎢⎢⎡F(X1)⋮F(Xi)⋮F(XN)⎦⎥⎥⎥⎥⎥⎥⎤N×1
式中: x i , j x_{i, j} xi,j代表第i个成员的第j个变量的值;N是种群大小;m是维度;rand代表[0,1]之间的随机数; l b j lb_{ j} lbj代表下限; u b j ub_{ j} ubj代表上限。
三、CBOA的数学模型 算法初始化后,CBOA的步骤逐渐应用于候选解决方案,以改善他们。CBOA成员分为两组,一组为厨师导师,另一组为烹饪学生。每一组的更新过程是不同的,选择一些目标函数值较好的CBOA成员作为厨师导师。
Nc是厨师导师的数量,N-Nc是学生的数量。
Phase1:厨师导师组的更新(from X S 1 XS_{1} XS1to X S N C XS_{N_{C}} XSNC)在一所烹饪学校里,假设有几个厨师导师负责向学生传授烹饪技能。厨师导师遵循两种策略来提高他们的烹饪技能。
策略一 在第一种策略中,他们模仿最好的厨师导师,并试图学习厨师老师的技术。这个策略展示了全局搜索和CBOA的探索能力。
根据这一策略,首先计算出每个厨师导师的新位置。
注:C/S1 C就是chef,S1就是第一阶段
式中:BC是最佳厨师导师(在矩阵XS中表示为XS1),
B
C
j
BC_{j}
BCj是最佳厨师导师的第j维,r是[0,1]之间的随机数,I是从集合{1,2}中随机选择的一个数字。如果这个新位置能提高目标函数的值,那么CBOA就接受,其位置将更新,反之不变化。
在第二种策略中,每个厨师导师都试图根据他的个人活动和练习来提高自己的烹饪技能,事实上,这个策略代表了局部搜索和CBOA的开发能力。如果每个问题变量都被认为是一种烹饪技能,那么厨师导师就试图提高所有这些技能,以达到更好的目标函数值。根据这个概念,在搜索空间中的每个厨师导师周围,使用下列方程生成一个随机位置,如果这些位置提高了目标函数的值,那么他就可以接受更新,反之不变化。
t就是当前迭代次数
注:让每个位置产生波动,然后再去计算适应度值,根据大小再考虑是否替换
烹饪学生去烹饪学校的目的是获得烹饪技巧并成为一名厨师,在CBOA的设计中,我们假设烹饪学生遵循三种策略来学习烹饪技能。
策略一 在第一种策略中,每个烹饪学生随机选择一个厨师教的班级,然后由这个厨师导师教他烹饪技能。并试图学习厨师老师的技术。这个策略展示了全局搜索和CBOA的探索能力。
注:
C
I
K
i
,
j
CI_{K_{i},j}
CIKi,j是学生选择的导师,
K
i
K_{i}
Ki是随机选择的,在导师里面随机选择一个就好,S/S1理解为student phase1 学生第一阶段
在第二种策略中,每个烹饪学生再次随机选择一个导师,然后在选择一个他的位置,都是随机的,然后再去更新。。这个策略增强了全局搜索和CBOA的探索能力。
注:把每个位置认为是一种技能,我不能只逮着一个导师去学习,但是我也不能忘本,在第一阶段已经跟着士导师学习了很多,在第二阶段的时候,我只是再次随机选择一个导师的一个位置去替换(我觉得这个影响可能不是很大,这个阶段是否可以放弃呢,大家可以自行测试。)
在第三种策略中,每个学生都试图根据他的个人活动和练习来提高自己的烹饪技能,这个策略展示了局部搜索和CBOA的开发能力。
注:q是一个随机位置randomly selected from the set{1,2,…,m}
雷达排序图(最小值)F1-F12,待修改,算法没换成CBOA,用的还是其他算法的。
测试条件独立运行30次,最大迭代次数为500,求了平均值、最优值、中位数、标准差。画雷达图时只画了最小值,后续有需要再完善。
独立运行和单独测试的源码参考
雷达图(蜘蛛图)参考
CBOA源码
无聊的QQ群



