⛄一、遗传算法结合贪婪规则
贪婪算法属于启发式算法的一种,每次使用贪婪规则进行决策,其结果都是不可撤销的。贪婪算法没有很多可行解的同步选择,最终只能得到一个最优的可行解。使用贪婪算法进行遗传算法求解,其所获得的解精确度更高,更接近最优解。
1 结合贪婪算法的遗传算法求解流程
本问题求解的流程如下:
(1)通过基因编码将问题空间变成遗传空间。基因编码可以将若干个基因码按照一定的顺序进行排列,其排列顺序就是遗传编码结构。
(2)使用贪婪算法对初始编码进行修复。基本的遗传算法虽然可以通过对编码串进行操作,从当前的群体中选择出具有优良基因的染色体使其延续下去,但它们并不一定是最满足限制条件的可行解。为了避免产生无效染色体,本文使用贪婪算法对初始形成的编码进行修正来获得合适的最优解。
(3)选择适应度函数。由于将贪婪算法和遗传算法进行结合,弥补了遗传算法中产生无效染色体的情形,故不必使用罚函数法,而是确定适应度函数对个体的适应度进行计算,并进行进化和淘汰。
(4)轮盘赌选择。
对于基因的选择方法有很多。本文采用轮盘赌方法进行选择。为了避免适应度函数为负值并防止有效信息的丢失,使用公式 fi(i) = fit(i) - min( fit) + 1 对适应值进行处理,以获得合适的信息。
(5)使用交叉概率参数进行交叉。本文采用交叉概率pc =0.5,并选