1. 学习了可求解问题、难求解问题和不可计算问题的概念:可求解问题 – 计算机在有限时间内能够求解的问题;难求解问题 – 计算机在有限时间内不能求解的问题;不可计算问题 – 计算机完全不能求解的问题。
2. 学习了P类问题,Np类问题和NPC类问题的概念,以及他们的包含关系,NPC类问题的求解方法:穷举法或遍历法。
3. 学习了遗传算法的生物学起源,包括各种基本概念:种群、个体、染色体、基因、基因型、表现型、个体适应度、选择、复制交配、杂交和突变,以及他们各自在遗传算法中的概念映射。
4. 学习了遗传算法求解过程模拟和遗传算法基本框架和设计要点(重点理解过程和设计思路,详情见PDF课件)
5. 学习了遗传算法为什么可以求解NPC类问题的基本思想:1. 随机搜索法;2:导向性随机搜索法;3. 导向性群(体)随机搜索法。学习了遗传算法的使用条件:1)对于NP问题,没有其他更好的算法可以使用;2)已知“解空间”,即可能解的表现型和基因型;3)关于可能解的“适应度”函数的计算方法,即有一个函数可以确定可能解是否接近精确解的程度或方向。
6. 学习了使用遗传算法求解应用问题的方法和思路:1)一维的集覆盖问题 – 会议室租用问题;航班机组成员选择问题;软件测试用例选择问题。2)二维集覆盖问题 – 课程表优化问题。注意一维问题中,每一行只需被选出的列覆盖即可,不需要确定行与列的唯一确定关系,而二维问题中,每一行都必须有确定的列与之对应。
7. 学习了遗传算法的设计要点:1)可能解的产生 – 可能解的形式怎样?怎样产生待判定的可能解?产生多少个待判定的可能解?进化的代数为多少?2)判断可能解是否是问题的解 – 适应度,选择标准和满意解的判断。最后具体学习了可能解、可行解、近似解、满意解和最优解的概念,以及它们的包含关系。
8. 学习了2)二维集覆盖问题 – 课程表优化问题的解形式(表现型)与编码(基因型),以及可能解如何进行交叉操作(体现可能解策略的多样性):1)两段交叉;2)等距离多段交叉;3)不等距离多段交叉;4)行交叉;5)列交叉;6)块交叉、点交叉。
9. 学习了策略性选择的随机性,以及策略选择需要折中:是需要更加广泛的解空间,增加获得最优解的概率,但时间增加,还是选择压缩搜索空间以换取更多的时间?
10 学习了变异操作(算法中要有,但不能过于频繁),以及它的目的:1)使遗传算法具有局部的随机搜索能力;2)使遗传算法可维持群体多样性。
11. 学习了终止运行的条件:1)进化次数限制;2)计算耗费的资源限制;3)已达到最优值;4)适应度已经达到饱和;5)人为干预;6)以上两种或多种组合。
12. 最后学习了算法的3个延伸思考题:1)遗传算法的收敛速度和解的质量关系 – 执行相同次数的迭代后,近似率高的算法更好;到达期望满意解,迭代次数越少越好;当不同算法应用多次后,求得满意解次数越多,该算法越好。2)各项参数对收敛速度和解质量的关系,特别是初始种群规模大小的影响;3)染色体编码中“遗传基因”的判断问题,以及怎样在后续迭代中保存该基因,而不被破坏的问题