实验题目
一.模拟退火算法与遗传算法(单点与多点智能优化)
模拟退火算法:在TSPLIB(http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/,多个地址有备份;其他网站还可以找到有趣的art TSP和national TSP)中选一个大于100个城市数的TSP问题,
1. 采用多种邻域操作的局部搜索local search策略求解;
2. 在局部搜索策略的基础上,加入模拟退火simulated annealing策略,并比较两者的效果;
3. 要求求得的解不要超过最优值的10%,并能够提供可视化,观察路径的变化和交叉程度。
遗传算法:用遗传算法求解TSP问题(问题规模等和模拟退火求解TSP实验同),要求:
1.设计较好的交叉操作,并且引入多种局部搜索操作(可替换通常遗传算法的变异操作)
2.和之前的模拟退火算法(采用相同的局部搜索操作)进行比较
3.得出设计高效遗传算法的一些经验,并比较单点搜索和多点搜索的优缺点。
二.BP神经网络和卷积神经网络CNN
构造一个三层的BP神经网络和一个卷积神经网络,完成手写0-9数字的识别:
1. 设计网络的结构,比如层数,每层的神经元数,单个神经元的输入输出函数;
2. 根据数字识别的任务,设计网络的输入和输出;
3. 实现BP网络的错误反传算法,完成神经网络的训练和测试,最终识别率达到70%以上;
4. 数字识别训练集可以自己手工制作,也可以网上下载,要求具有可视化图形界面,能够输入输出。
5.进一步的,用卷积神经网络实现以上任务,对比深度学习与浅层模型。
三.图神经网络+强化学习(图深度强化学习解决优化问题)
复现以下论文的方法和结果:
Duan,L., Zhan,Y., Hu,H., Gong,Y., Wei,J., Zhang,X., Xu,Y.: Efficiently solving the practical vehicle routing problem: A novel joint learning approach. In: KDD. pp.3054–3063 (2020)
1.为了节省时间,训练用10个(或以上)的城市规模的算例。测试算例用20个(或者以上)规模。
2.显示出算法训练收敛过程,可视化最后的解。可能的情况下,对比OR-Tools的求解效果(后面详细描述)。
组队方案
二人一组,做三个题目。前两个是知识重现型题,第三个是综合题,鼓励组内合作讨论完成。
实验提交说明
1.最后所有实验文档提交截止时间:7月17日晚23:59:59前。
2. 实验结果通过FTP提交(附后)。要求使用压缩包,命名规则为:组长学号.zip。
3.里面的实验报告命名为:**算法实验报告。
4. 多人一组,列明分工。建立一个记事本文件,列明各成员的分工负责的工作,以及占总工作量的百分比,比如五个组员A,B,C,D,E的工作量百分比分别为:A25%,B10%,C20%,A20%,B25%。
5.文件夹中包括多个实验,每个实验一个文件夹,命名为相应算法,包含如下几部分:
..\ 放置实验报告(模板附后),说明文件(readme.txt)以及批处理文件(如有)等。
..\src\ 放置源代码;
..\bin\ 放置编译得到的文件;
..\tc\ 放置测试用例;
附FTP地址:
实验报告(提纲)
――――具体实验题目
姓名: 学号: 日期:
摘要:简要介绍要解决的问题,所使用的方法步骤,取得的结果或结论。
1.导言
要解决的问题描述,问题背景介绍;
拟使用的方法,方法的背景介绍;
2.实验过程
所用的具体的算法思想流程;
实现算法的程序主要流程,功能说明;
3.结果分析
交代实验环境,算法设计设计的参数说明;
结果(图或表格),比如在若干次运行后所得的最好解,最差解,平均值,标准差。
分析算法的性能,包括解的精度,算法的速度,或者与其他算法的对比分析。
算法的优缺点;本实验的不足之处,进一步改进的设想。
4.结论
简要结论或者体会。
主要参考文献(三五个即可)
实验评分说明
为了更好地规范课程实验,达到课程实验的目标,现公布课程实验的要求如下:
1. 所有实验成果必须原创。允许提交半成品、失败品但绝不允许提交复制品。
2. 实验程序对正确的输入有正确的输出。
3. 提交实验结果,完整齐全。
4. 源代码编写符合编码规范,可读性高。
5. 源代码逻辑清晰。
6. 程序具有鲁棒性。
7. 界面友好。
第1—3是基本要求,满分70分。
第4—7属于加分项目,每达到一个要求加10分,总分最高100分。
注意事项:
1. 需要提交的实验结果包括:实验报告,源代码,编译得到的文件,说明文档,测试用例等。
2. 请避免将源代码直接复制到实验报告中,在说明算法思想和流程方面源代码并不比流程图和伪代码优胜。
3. 提交的源代码不应夹杂任何IDE的项目文件,如VS的*.sln。如果使用JAVA则应当包含编译和运行用的批处理文件。
4. 说明文档内容为程序的运行说明,如输入输出等。
5. 需要提交至少两个测试用例,明确指出输入和期望的输出。
6. 小组完成的实验必须在源代码、实验报告中明确指出各人负责的部分,用于个人评分。
7. 实验结果通过电子邮件或者FTP提交(具体见实验提交说明)。要求使用压缩包,命名规则为:学号+姓名+个人实验编号,如000000001_张三_实验1,小组实验须注明组长姓名,如000000001_张三(小组)_实验1。目录组织如图1所示:
图1 目录组织
..\ 放置说明文件(readme.txt)以及批处理文件等。
..\src\ 放置源代码;
..\bin\ 放置编译得到的文件;
..\tc\ 放置测试用例;
..\doc\ 放置实验报告。
8. 源代码编写规范可参考SUN的编程规范http://java.sun.com/docs/codeconv/。
9. 界面友好并不等于要做图形界面,关键在于符合使用者的习惯,操作方便,表达清晰。
实验的评分分两部分:课堂演示和实验报告检查。课堂演示利用实验课进行,并完成绝大部分的评分工作,不参与课堂演示将直接影响实验成绩,请各位同学务必到场,抓紧时间。建议在完成课堂演示后再提交实验报告。
最后重申,不允许抄袭。只要能体现个人的实验工作,即使是半成品、失败品同样会得到分数,但抄袭将会被判零分并上报学校!