Advertisement

实训总结报告

阅读量:

阶段1:项目启动

本阶段主要是为实训项目做基本的技术准备,学会使用Vi, JAVA, Ant 和 Junit, 以及熟悉GridWorld的使用,并完成指定的任务

本阶段虽然基本不用敲代码,但是对于刚上手来说还是有点不知所措,除了学过一点Vi和java,对于Ant、Junit、SonarQube可谓一窍不通,eclipse很久没用也很是生疏。好在虽然看起来很多很杂,但都只是学习点皮毛,掌握基本用法即可,而且本阶段的一些工具在后面很常用,比如Junit和Sonar,所以后期也算是对阶段1不断进行巩固,整个实训下来对Junit和Sonar的基本使用也从未闻其名到逐渐熟练,虽然Junit作为测试工具在这个阶段实用性甚微,但是为后面的实验,甚至是以后工作中的开发过程测试打下基础;Sonar是一个代码规范检查工具,通过这几个星期来Sonar的“折磨”,也规范了我书写代码的习惯,比如注释最好换行写、不要直接用数字代替常量、单语句的条件和循环块也要加大括号等等,这里不得不吐槽就是实训所给代码中都出现了很多不符合Sonar上述规范的代码,需要自行修改

阶段2:基本任务

开始进行Gridworld项目

本阶段正式进入到GridWorld项目的学习,虽然有了一定的代码量,但是难度不大,整个阶段分为了5个部分,逐个完成起来还是较为简单,且每次写代码前的文答,能帮助我们快速理解所给代码的变量和方法的用法,需要实现的代码也大都继承自所给代码,需要修改的地方不多。

本阶段重在考查实现代码功能的逻辑性,代码难度不大,没有很复杂的方法和算法,只要很好地理解了所给代码的使用方法以及题目要求,都能很快地给出对应实现

阶段3:扩展任务

GridWorld的扩展

本阶段是GridWorld的扩展,跟源项目关系不大,基本上不用原代码也可以完成对应工作,只是源项目提供了一个更好地可视化界面。

第一部分是图像处理,由于这学期选修了数字图像处理和计算机视觉,之前也做过相关作业,对bmp文件格式也较为熟悉,所以这阶段对我来说还是比较轻松

第二部分为迷宫,开始考察算法相关问题,基础为深度优先算法,之前学过算法导论,深搜广搜之类的图算法早已烂熟于心,所以难度也不是很大;进阶部分要求增加方向概率的估计,这个对我来说较为新鲜,查阅资料,了解了迷宫的方向性之后对这么做的原因也有了更深的理解,理解了用意之后代码的实现也就水到渠成,虽然难度不大,但是这种思想是我要学习的

第三部分为拼图,刚开始也是要求实现广搜,较为普通不再赘述,进阶部分要求采用启发式搜索,通过估价函数来实现A 算法,之前上算法导论老师也曾经提到这个算法,但是还从来没有自己亲手实现过,所以我对这一部分还是比较感兴趣的,研究了一下发现估价函数是A 算法的精髓,重点在于如何评估当前状态,拼图问题的评估较容易想到,就是查看当前拼图与其应该在的位置的距离,这次实现我用了曼哈顿距离和欧氏距离(查阅相关资料时还发现有切比雪夫距离等等),由于查看效果已经有了较大的改进,而加了切比雪夫距离后没有明显变化,所以仅采用上述两个距离作为估价函数。

中级实训总结

这次实训不像初级实训,一直都是在敲代码,中级实训给我的感觉是把重心放在了项目上,包括阶段1学习的对项目进行构建(Ant)、逻辑检测(Junit)、代码规范检查(Sonar)的工具,阶段2通过问答一步一步引导我们如何理解和构建一个项目的基本框架,框架弄好后想实现什么直接继承或者实现接口即可,这种开发模式会更加省时省力,结构也更为清晰明了。阶段3则是对算法提出了一些要求。

虽然这次实训代码量不算大,实现难度也不算高,但是从中学到了构建、实现、管理、测试一个项目、一个工程的基本思路、模式和工具,对于后面迷宫的方向性、A*算法的实现也让我对这些算法后面的巧妙构思有了更深刻的理解。总之,整个实训下来还是收获颇丰,不再埋头敲代码也给了我们更多的思考空间。老师说过,一个项目花在写代码上的时间可能不超过10%,在这次实验中也算有了次小小的体会,更理解了其中深意。

全部评论 (0)

还没有任何评论哟~