【智能算法】混沌博弈算法(CGO)原理及实现

目录


1.背景

2021年,S Talatahari等人受到混沌理论启发,提出了爱情进化算法(Chaos Game Optimization, CGO)。

2.算法原理

2.1算法思想

CGO算法借鉴了混沌理论和混沌游戏的概念,在优化搜索中模拟了混沌过程。混沌理论强调动力系统对初始条件的极度敏感性,以及系统行为中存在的自相似和自组织特征。混沌游戏则是利用随机选择的初始点和多边形形状来创建分形的方法。

2.2算法过程

创建临时三角形的主要目的是在搜索空间中创建新的符合条件的种子,基于混沌博弈方法需要限制种子在搜索空间中的运动,为此利用一些随机生成的阶乘来控制:
S e e d i 1 = X i + α i × ( β i × G B − γ i × M G i ) , i = 1 , 2 , ... , n (1) Seed_i^1=X_i+\alpha_i\times\left(\beta_i\times GB-\gamma_i\times MG_i\right),\quad i=1,2,\ldots,n\tag{1} Seedi1=Xi+αi×(βi×GB−γi×MGi),i=1,2,...,n(1)

GB是最优适应度,MGi是一些选定的符合条件的种子的平均值。

第二个种子(GB)使用一个骰子,有三个蓝色面和三个红色面。根据掷骰子结果,GB将向Xi(蓝色面)或MGi(红色面)移动。移动过程类似于第一个种子,但使用了随机生成的阶乘来限制移动到Xi和MGi之间连接线上的点:
S e e d i 2 = G B + α i × ( β i × X i − γ i × M G i ) , i = 1 , 2 , ... , n (2) Seed_{i}^{2}=GB+\alpha_{i}\times(\beta_{i}\times X_{i}-\gamma_{i}\times MG_{i}),\quad i=1,2,\ldots,n\tag{2} Seedi2=GB+αi×(βi×Xi−γi×MGi),i=1,2,...,n(2)

MGi作为第三颗种子,一个骰子有蓝色和绿色的面,它被滚动,根据出现的颜色(蓝色或绿色),种子移动到Xi(蓝色面)或GB(绿面):
S e e d i 3 = M G i + α i × ( β i × X i − γ i × G B ) , i = 1 , 2 , ... , n (3) Seed_{i}^{3}=MG_{i}+\alpha_{i}\times(\beta_{i}\times X_{i}-\gamma_{i}\times GB),\quad i=1,2,\ldots,n\tag{3} Seedi3=MGi+αi×(βi×Xi−γi×GB),i=1,2,...,n(3)

为了实现在搜索空间中符合条件的种子的位置更新中的突变阶段,还利用另一过程生成第四种子:
S e e d i 4 = X i ( x i k = x i k + R ) , k = 1 , 2 , ... , d (4) Seed_i^4=X_i\big(x_i^k=x_i^k+R\big),\quad k=1,2,\\ldots,d\tag{4} Seedi4=Xi(xik=xik+R),k=1,2,...,d(4)

为了平衡CGO探索与开发,设置调整因子:
α i = { R a n d 2 × R a n d ( δ × R a n d ) + 1 ( ε × R a n d ) + ( ∼ ε ) (5) \alpha_i=\left\{\begin{matrix}Rand\\2\times Rand\\(\delta\times Rand)+1\\(\varepsilon\times Rand)+(\sim\varepsilon)\end{matrix}\right.\tag{5} αi=⎩ ⎨ ⎧Rand2×Rand(δ×Rand)+1(ε×Rand)+(∼ε)(5)

伪代码

3.结果展示

使用测试框架,测试CGO性能 一键run.m

CEC2017-F7


4.参考文献

1 Talatahari S, Azizi M. Chaos game optimization: a novel metaheuristic algorithmJ. Artificial Intelligence Review, 2021, 54(2): 917-1004.

相关推荐
lengxuenong30 分钟前
树状数组 · 信息学学习手册3-优化LIS
c++·学习·算法
动词ing1 小时前
【题目练习】外观数列
算法
余额瞒着我当琳1 小时前
C++11,发展历史浅谈,初始化列表和对象初始化,右值引用和移动语义
java·开发语言·c++·算法
suhan1 小时前
【数据结构】六、图:4.图的遍历(深度优先算法DFS、广度优先算法BFS)
数据结构·算法·排序算法
suhan1 小时前
【数据结构】六、图:3.十字链表、邻接多重表、边集数组
数据结构·算法·排序算法
Dola_Zou1 小时前
工商业储能系统核心策略
算法·自动化·软件工程
Tsuki_tl1 小时前
【优选算法:双指针】——复写零题解
java·c++·算法·leetcode·数组·双指针·复写零
Rain的Java大神之路1 小时前
面了上百人,我最爱问的LeetCode 1「两数之和」:能背代码的很多,能讲清“先查后存”的没几个
java·后端·算法
Ivanqhz2 小时前
超参数考量与设计
数据库·人工智能·深度学习·算法·机器学习
雪落漂泊2 小时前
C++算法 滑动窗口篇(上)
开发语言·c++·算法