Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于狼群算法中探狼游走的更新公式 #2

Open
cptbtptp1992 opened this issue Mar 29, 2023 · 4 comments
Open

关于狼群算法中探狼游走的更新公式 #2

cptbtptp1992 opened this issue Mar 29, 2023 · 4 comments

Comments

@cptbtptp1992
Copy link

同学,你好,有点小疑问,看来你matlab中代码关于探狼游走的更新公式: XJ_every_h = wolf_position(detective_wolf_index(j),:) + sin(2pi(1:h)'/h) .* step_a; 假设是在二维空间,个体狼坐标 [x, y], 更新公式后XJ = [x, y] + [0.1, 0.3, 0.4]’(假设这是sin后求出的值) = [x+0.1 y+0.1; x + 0.3 y + 0.3; x+0.4 y+0.4] ,那这个是不是意味着个体狼始终在一个与y =x平行的直线上来回运动搜索?并没有实现h个方向的搜索,不知道我有没有表达清楚,希望得到你的回复。

@doFighter
Copy link
Owner

doFighter commented Mar 29, 2023 via email

@doFighter
Copy link
Owner

针对您反馈的问题,我再次拿到原论文细细研读,我个人分析,这是作者表达的问题,根据公式以及相应的描述,我想作者应该是想表达贪狼分别从各个方向前进sin(2pi p/h)stpe_a^d的步长的长度,原论文将p表示为不同方向,但实质我认为应该描述为贪狼在dim个方向上分别进行h个不同步长的游走。
你首先需要理解我上面的这段话,下面我进一步举例:如step_a是一个(1,dim)大小的数组,其中dim就是问题的求解维度,然后通过sin(2pi p/h)求解出贪狼在dim个方向上游走h个不同步长的结果,然后选取最好的结果。
下面举一个实例:
假设贪狼位置为:worf = [x1, x2, ..., xdim]
step_a = [s1, s2, ..., sdim]
sin(2pi(1:h)'/h)=[p1, p2, ..., ph].T,这个公式其实是计算步长系数,有h个步长系数
sin(2pi(1:h)'/h) .* step_a = [
[p1s1, p1s2, ..., p1sdim]
[p2
s1, p2s2, ..., p2sdim]
'''
[phs1, phs2, ..., phsdim]
]
然后再执行
worf + sin(2pi(1:h)'/h) .
step_a = [
[x1+p1s1, x2+p1s2, ..., xdim+p1sdim]
[x1+p2
s1, x2+p2s2, ..., xdim+p2sdim]
'''
[x1+phs1, x2+phs2, ..., xdim+ph*sdim]
]
只有这样,才能匹配公式,也才更加有意义。
综上,通过对公式的理解,我认为是作者文字描述有出入,当然这只是我的个人理解,仅供参考。

@doFighter
Copy link
Owner

同学,你好,有点小疑问,看来你matlab中代码关于探狼游走的更新公式: XJ_every_h = wolf_position(detective_wolf_index(j),:) + sin(2_pi_(1:h)'/h) .* step_a; 假设是在二维空间,个体狼坐标 [x, y], 更新公式后XJ = [x, y] + [0.1, 0.3, 0.4]’(假设这是sin后求出的值) = [x+0.1 y+0.1; x + 0.3 y + 0.3; x+0.4 y+0.4] ,那这个是不是意味着个体狼始终在一个与y =x平行的直线上来回运动搜索?并没有实现h个方向的搜索,不知道我有没有表达清楚,希望得到你的回复。

针对您反馈的问题,我再次拿到原论文细细研读,我个人分析,这是作者表达的问题,根据公式以及相应的描述,我想作者应该是想表达贪狼分别从各个方向前进sin(2pi p/h)stpe_a^d的步长的长度,原论文将p表示为不同方向,但实质我认为应该描述为贪狼在dim个方向上分别进行h个不同步长的游走。
你首先需要理解我上面的这段话,下面我进一步举例:如step_a是一个(1,dim)大小的数组,其中dim就是问题的求解维度,然后通过sin(2pi p/h)求解出贪狼在dim个方向上游走h个不同步长的结果,然后选取最好的结果。
下面举一个实例:
假设贪狼位置为:worf = [x1, x2, ..., xdim]
step_a = [s1, s2, ..., sdim]
sin(2pi(1:h)'/h)=[p1, p2, ..., ph].T,这个公式其实是计算步长系数,有h个步长系数
sin(2pi(1:h)'/h) .* step_a = [
[p1s1, p1s2, ..., p1sdim]
[p2s1, p2s2, ..., p2sdim]
'''
[phs1, phs2, ..., phsdim]
]
然后再执行
worf + sin(2pi(1:h)'/h) . step_a = [
[x1+p1s1, x2+p1s2, ..., xdim+p1sdim]
[x1+p2s1, x2+p2s2, ..., xdim+p2sdim]
'''
[x1+phs1, x2+phs2, ..., xdim+ph*sdim]
]
只有这样,才能匹配公式,也才更加有意义。
综上,通过对公式的理解,我认为是作者文字描述有出入,当然这只是我的个人理解,仅供参考。 @cptbtptp1992

@cptbtptp1992
Copy link
Author

我也同意你的理解,所以我就觉得作者的原公式根本无法实现h个方向的搜索,关键是我还看到有些作者的论文提出了对h个方向的改进,(例如基于自适应和变游走方向的改进狼群算法,郭立婷),搞的我有点懵。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants