利用遗传算法(GA)与模拟退火算法(SA)求目标函数最小值

要求实现一个演化计算的算法,求测试函数的最小值。

要求:群体规模NP=100;最大迭代次数不超过3000代。或者,总的计算次数小于100*3000。算法需独立运行30次,并记录进化的过程。

一、遗传算法原理

        遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

        其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。

        遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。

算法原理

初始化种群

随机生成一定数量的初始解(个体),构成种群。

                                            P(0) = \{ \mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_{NP} \}

适应度评估:
                                         f(\mathbf{x}_i) = \text{objective\_function}(\mathbf{x}_i)

选择操作:

根据适应度值选择优秀的个体作为父代

                                                                p_i = \frac{f(\mathbf{x}_i)}{\sum_{j=1}^{NP} f(\mathbf{x}_j)}

交叉操作:

通过交叉操作生成新的子代,模拟自然界中的基因重组。常用的交叉方法有单点交叉、多点交叉、均匀交叉等。

                     \begin{cases} \text{offspring}[k, 0:\text{crossover\_point}] = \text{parent1}[0:\text{crossover\_point}] \\ \text{offspring}[k, \text{crossover\_point}:] = \text{parent2}[\text{crossover\_point}:] \end{cases}

变异操作:

对交叉生成的子代进行变异操作,模拟自然界中的基因突变。变异操作有助于维持种群的多样性,防止早熟收敛。

种群更新

用新生成的子代替换种群中的部分个体,形成新一代种群。

                                        P(t+1) = \{ \text{offspring} \} \cup \{ \text{elite\_individuals} \}

终止条件:

达到全局最优。

                        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gatinaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值