改进策略:21种混沌映射方法-混沌初始化(附matlab代码)

  将混沌映射方法与优化算法相结合是一种常见的改进方式。本期不完全整理了21常见的混沌映射方法的matlab代码,并将他们运用在算法的初始化中。该策略适用于所有优化算法。具体有:

Chebyshev混沌映射
Circle 混沌映射
Gauss/mouse 混沌映射
Iterative 混沌映射
Logistic 混沌映射
Piecewise 混沌映射
Sine 混沌映射
Singer 混沌映射
Sinusoidal 混沌映射
Tent 混沌映射
Fuch 混沌映射
SPM 混沌映射
ICMIC 混沌映射
Tent-Logistic-Cosine 混沌映射
Sine-Tent-Cosine 混沌映射
Logistic-Sine-Cosine 混沌映射
Henon 混沌映射
Cubic 混沌映射
Logistic-Tent 混沌映射
Bernoulli 混沌映射
Kent 混沌映射

1. Chebyshev 混沌映射

图片

Chebyshev 混沌映射原理简单,是常用的混沌映射之一。a阶Chebyshev混沌映射表达式为:

图片

其中a通常取值为4。混沌轨道状态值范围为(-1,1)。

2. Circle 混沌映射

图片

Circle混沌映射有着随机性,均匀性和有序性等特点。Circle映射可表示为:

图片

其中,a,b为控制参数,常用的取值为0.5和0.2,mod为求余函数。混沌轨道状态值范围为(0,1)。

3. Gauss/mouse 混沌映射

图片

Gauss/mouse混沌映射是常用的混沌映射之一,其表达式为:

图片

混沌轨道状态值范围为(0,1)。

4. Iterative 混沌映射

图片

lterative 混沌映射的数学表达式为:

图片

a为控制参数,在(0,1)中取值,一般为0.7。混沌轨道状态值范围为(-1,1)。

5. Logistic 混沌映射

图片

Logistic混沌映射原理简单,具有较强的随机性和遍历性,是常用的混沌映射之一。混沌映射表达式为

图片

其中,a为控制参数,在(0,4]中取值,a越大混沌性越高,a=4时处于完全混沌状态。混沌轨道状态值范围为(0,1)。

6. Piecewise混沌映射

图片

Piecewise混沌映射具有很好的统计性能,是一个分段映射函数。混沌映射公式为:

图片

其中,P在 [0,0.5]内取值,为一个分段控制因子,用来划分该分段函数的4部分函数。一般d=0.3。混沌轨道状态值范围为(0,1)。

7. Sine 混沌映射

图片

Sine混沌映射的表达式为:

图片

其中a为控制参数,一般为4。混沌轨道状态值范围为(0,1)。

8. Singer 混沌映射

图片

Singer映射是混沌映射的典型代表,它的数学形式很简单。其表达式如下:

图片

其中a为控制参数。混沌轨道状态值范围为(0,1)。

9. Sinusoidal 混沌映射

图片

Sinusoidal混沌映射的数学表达式为:

图片

其中a为控制参数,通常为2.3。混沌轨道状态值范围为(0,1)。

10. Tent 混沌映射

图片

Tent映射又称为帐篷映射,其数学表达式为:

图片

当a=0.5的时候,系统呈现短周期状态。当系统初值与a相同,系统将演化成周期系统。因此,使用时需注意以上两种特殊情况。混沌轨道状态值范围为(0,1)。

11. Fuch混沌映射

图片

Fuch混沌映射使得优化结果不依赖于初始值,其表达式为:

图片

混沌轨道状态值范围为(-1,1)。

12. SPM混沌映射

图片

SPM 映射函数定义:

图片

其中,r为0~1之间的随机数。当η∈(0,1)且μ∈(0,1)时,该函数处于混沌状态。实验表明当η=0.4且μ=0.3时,SPM映射产生的序列具有更好的遍历性和随机性。其混沌轨道状态值范围为(0,1)。

13. ICMIC混沌映射

图片

ICMIC映射是一种映射折叠次数无线的混沌模型,相较于Logistic 映射和Tent映射,该映射具有遍历均匀和收敛较快等优点。ICMIC映射的数学表达式如下:

图片

其中,a为控制参数,取值在(0,+∞)。其混沌轨道状态值范围为(-1,1)。

14. Tent-Logistic-Cosine混沌映射

图片

组合运算可以有效地对两个种子映射的混沌动力学进行集合,余弦变换表现出非常复杂的非线性。因此,Tent-Logistic-Cosine产生的新的混沌映射具有复杂的行为:

图片

其混沌轨道状态值范围为(0,1)。

15. Sine-Tent-Cosine混沌映射

图片

Sine-Tent-Cosine混沌映射同样是组合混沌映射,表达式为:

图片

其混沌轨道状态值范围为(0,1)。

16. Logistic-Sine-Cosine混沌映射

图片

Logistic-Sine-Cosine混沌映射同样是组合混沌映射,表达式为:

图片

其混沌轨道状态值范围为(0,1)。

17. Henon混沌映射

图片

Henon混沌映射在2维空间产生,是一种典型的离散混沌映射,其动力学公式如下:

图片

其中,a和b 参数决定Henon映射的状态,较1维混沌映射更复杂。研究结果表明:当a=1.4,b=0.3时,函数进入混沌状态,生成的混沌序列具有很强的随机性。其混沌轨道状态值范围为(-1.5,1.5)。

18. Cubic混沌映射

图片

相比 Logistic混沌映射,Cubic混沌映射具较好的混沌遍历性,有寻优速度快﹑精度高的特点。表达式如下:

图片

取a=2.595的混沌参数,Cubic混沌映射在(0.1)之间具有较好的遍历性。

19. Logistic-Tent映射

图片

将经典一维Logistic系统、Tent混沌系统进行集成生成的Logistic-Tent复合混沌系统。该混沌系统融合了Logistic复杂的混沌动力学特性和Tent混沌系统更快的迭代速度、更多的自相关性和适用于大量序列的特点。它的数学公式定义如下:

图片

其混沌轨道状态值范围为(0,1)。

20. Bernoulli 混沌映射

图片

Bernoulli映射表达式为:

图片

其中,a为控制参数。其混沌轨道状态值范围为(0,1)。

21. Kent映射

图片

Kent映射是另一个具有代表性且形式简单的离散混沌系统,从数学上讲,Kent映射与Logistic 映射是同构的,因此Kent映射也可用于随机优化算法中生成随机新解的方法,而Kent映射具有比 Logistic映射更好的均匀遍历性。Kent映射系统方程可表为如下形式:

图片

控制参数a∈(0,1)。混沌轨道状态值范围为(0,1)。

结果展示:

首先,对上述21种混沌映射方法,进行分布上的遍历。可以清楚看到他们不同的特征。

其次,将他们运用到种群初始化中。以2024年的最新算法2024年优化算法-牛顿-拉夫逊优化算法Newton-Raphson-based optimizer(附Matlab代码)为例。在cec2005上对比21种混沌改进策略。

Matlab代码获取

关注微信公众号-优化算法侠,搜索即可

用于改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)

### 回答1: 混沌映射可以用来初始化种群,其中混沌映射是一种非线性动力学系统,具有高度的敏感性和随机性。通过混沌映射生成的随机数序列可以用于初始化种群的初始值,以增加种群的多样性和随机性。 在Python中,我们可以通过使用混沌映射函数生成随机数序列,并将其用于初始化种群。以下是一个使用混沌映射初始化种群的示例代码: ```python import numpy as np def chaotic_map(x, r): return r * x * (1 - x) def initialize_population(population_size, r): population = np.zeros(population_size) x = np.random.random() for i in range(population_size): x = chaotic_map(x, r) population[i] = x return population # 定义种群大小和混沌映射参数 population_size = 100 r = 3.9 # 初始化种群 population = initialize_population(population_size, r) # 打印初始化后的种群 print(population) ``` 在这个示例中,我们首先定义了一个混沌映射函数`chaotic_map`,该函数接受当前值x和混沌映射参数r,并返回下一个值。然后,我们定义了一个初始化种群的函数`initialize_population`,该函数接受种群大小和混沌映射参数r,并使用混沌映射生成随机数序列,并将其存储在一个数组中。最后,我们使用定义的参数调用`initialize_population`函数来初始化种群,并打印生成的种群。 通过使用混沌映射初始化种群,我们可以增加种群的多样性,并增加算法的随机性和搜索能力。 ### 回答2: 混沌映射是一种在动态系统中展现出无序、不可预测性质的数学映射。混沌映射可以通过一连串的迭代来生成具有不可预测性的数值序列。 在使用混沌映射初始化种群时,我们可以选择一种合适的混沌映射函数,并将其应用于生成初始种群的值。 以下是一个使用Python代码实现混沌映射初始化种群的例子: ```python import numpy as np def chaos_map(x0, r, n): x = [x0] for i in range(n): x.append(r * x[-1] * (1 - x[-1])) # 这里使用logistic混沌映射 return np.array(x[1:]) def initialize_population(size, x0, r): population = [] for i in range(size): individual = chaos_map(x0, r, 10) # 生成一个长度为10的种群个体 population.append(individual) return population # 示例代码运行 x0 = 0.1 # 初始值 r = 3.7 # 混沌映射参数 size = 5 # 种群大小 population = initialize_population(size, x0, r) print(population) ``` 在以上示例代码中,我们首先定义了一个混沌映射函数`chaos_map`,它根据初始值、混沌映射参数和生成数量返回一个生成混沌映射数列。 然后,我们定义了一个初始化种群的函数`initialize_population`,它根据种群大小、初始值和混沌映射参数返回一个由混沌映射生成的种群。 最后,我们通过调用`initialize_population`函数,传入初始值、混沌映射参数和种群大小的参数,来生成一个初始种群。 在示例代码中,我们生成了一个大小为5的初始种群。你可以通过调整初始值、混沌映射参数和种群大小来自定义生成初始种群。 ### 回答3: 混沌映射是一种非线性、高度敏感于初始条件的动态系统,广泛应用于伪随机数生成、密钥生成等领域。在种群初始化使用混沌映射可以使得种群的分布更加分散,增加了种群的多样性。 在Python中,我们可以使用NumPy库来实现混沌映射初始化种群。以下是一个使用Logistic映射的例子: ```python import numpy as np def chaotic_mapping(x, r, n): # Logistic映射函数 result = [] for i in range(n): x = r * x * (1 - x) result.append(x) return result def initialize_population(population_size, lower_bound, upper_bound): # 种群初始化函数 population = [] x0 = np.random.uniform(0, 1) # 随机选择初始值x0 r = np.random.uniform(lower_bound, upper_bound) # 随机选择参数r的值 chaotic_sequence = chaotic_mapping(x0, r, population_size) # 生成混沌序列 for i in range(population_size): individual = np.random.uniform(lower_bound, upper_bound) # 生成随机个体 individual = individual + chaotic_sequence[i] # 使用混沌序列进行扰动 population.append(individual) return population # 测试初始化种群 population_size = 10 lower_bound = 0 upper_bound = 1 population = initialize_population(population_size, lower_bound, upper_bound) print(population) ``` 在上述代码中,我们首先定义了一个`chaotic_mapping`函数来实现Logistic映射,在种群初始化函数`initialize_population`中,我们先生成一个混沌序列,然后对每个个体加上混沌序列的扰动,最后返回一个包含了扰动后个体的种群。可以根据自己的需求修改参数和混沌映射函数来适应不同的场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值