三种启发式算法的示例代码:遗传算法、粒子群算法、退火算法
学习优化算法的思路(避免浪费无效时间)
遗传算法:高分验证的超参数,更有机会繁殖,即他们的参数组合会被借鉴和组合,从而发生变异,如参数随机改动,产生更加适应环境的下一代,用新产生的下一代取代原来的参数组合,不断变异,直到达到评估指标。
它的实现逻辑
1初始化种群:首先,随机生成一组初始解,这些解被称为个体,它们组成了种群。比如,要解决一个函数的最大值问题,每个个体可以是函数定义域内的一个随机值。
2 适应度评估:为每个个体定义一个适应度函数,用来衡量个体对环境的适应程度,即个体的优劣。在求函数最大值的问题中,适应度函数可以就是该函数本身,个体的适应度就是它代入函数后得到的函数值,函数值越大,适应度越高。
3选择操作:根据个体的适应度,从当前种群中选择一些个体作为父母,适应度高的个体有更大的概率被选中。例如,可以采用轮盘赌选择法,想象有一个轮盘,每个个体根据其适应度占总适应度的比例在轮盘上占据一定的区域,轮盘转动后,指针指向的个体就被选中。这样,适应度高的个体在轮盘上的区域大,被选中的概率也就大。
4交叉操作:将选择出的父母个体进行交叉,模拟生物界的基因交换。具体来说,就是随机选择两个父母个体,然后在它们的基因编码上选择一个或多个交叉点,将交叉点两侧的基因片段进行交换,从而产生新的子代个体。例如,有两个个体的基因编码分别为 “1011” 和 “0101”,选择在第 2 位和第 3 位之间进行交叉,交叉后就得到 “1001” 和 “0111” 两个新个体。
5变异操作:以一定的概率对个体的基因进行变异,模拟生物进化中的基因突变。例如,将个体基因编码中的某个位从 “0” 变为 “1”,或者从 “1” 变为 “0”。这可以增加种群的多样性,避免算法过早地陷入局部最优解。
6种群更新:用新产生的子代个体替换种群中的部分或全部老个体,形成新的种群。然后重复步骤 2 到步骤 6,不断迭代,直到满足预设的终止条件。
7终止条件:常见的终止条件有达到一定的迭代次数、找到满足一定精度要求的解或者种群的适应度不再有明显提高等。当终止条件满足时,算法停止运行,输出当前种群中适应度最高的个体作为最优解。 通过不断地选择、交叉和变异,遗传算法让种群逐渐向适应度更高的方向进化,最终找到问题的最优解或近似最优解。
粒子群算法:
想象有一群快递员在城市里送快递,地图上有很多地方可能是收件地址,但他们都不知道具体位置。每个快递员在骑行过程中,会记住自己到目前为止找到的离收件地址最近的地方(个人最佳经验);同时,所有快递员之间会互相分享信息,也都知道目前整个团队找到的离收件地址最近的地方(团队最佳经验)。 为了更快找到收件地址,每个快递员会根据自己的经验和团队的经验,调整自己骑行的方向和速度。比如,发现自己之前找到的地方不如团队找到的近,就会朝着团队找到的位置方向加速骑过去;如果自己找到的地方更近,就会继续探索附近区域。最终,这群快递员会逐渐聚集在收件地址附近 ,而这个收件地址就相当于粒子群算法要找的最优解。

实现逻辑
1初始化粒子群:在城市地图上,随机把快递员放到不同的位置,同时给他们设定不同的骑行速度(有的快有的慢)。每个快递员当前的位置,就相当于一个 “可能的收件地址”(问题的潜在解)。
2计算适应值:根据地图上每个快递员的位置,计算他们离真正收件地址的距离(用适应度函数计算 “好坏”,离得越近适应度越高)。
3更新个体最优和团体最优:每个快递员对比自己去过的所有地方,记住离收件地址最近的那个位置(个人最佳位置)。所有快递员一起对比,找出目前整个团队离收件地址最近的那个位置(团队最佳位置)。
4更新粒子速度和位置:快递员会根据个人最佳位置和团队最佳位置,调整自己的骑行方向和速度。如果团队的位置更好,就往团队最佳位置那边骑;如果自己的位置也不错,就围绕自己的好位置附近探索。
5判断终止条件:快递员们按照新的方向和速度骑到新的位置,然后再重复步骤 2 - 4,不断找离收件地址更近的地方。直到满足停止条件,比如规定的骑行时间到了,或者大家都聚集在某个小区域不再变化了,这时离收件地址最近的那个快递员的位置,就当作是找到的最优解。
适用场景
1、函数优化:可以用于求解各种复杂函数的最大值或最小值,比如在工程设计中,需要优化某个设计参数使得某个性能指标达到最优,就可以用粒子群算法来寻找最佳参数。
2、神经网络训练:在训练神经网络时,粒子群算法可以用来调整神经网络的权重和阈值,使得神经网络能够更好地对数据进行学习和分类。
3、组合优化问题:如旅行商问题(TSP),即寻找一条经过所有城市且每个城市只经过一次的最短路径,粒子群算法可以在众多可能的路径组合中找到较优的解。
174

被折叠的 条评论
为什么被折叠?



