项目 | 内容 |
---|---|
课程班级博客链接 | 2018级计算机科学与技术1班(师范) |
这个作业要求链接 | 作业要求 |
我的课程学习目标 | 1.体验软件项目开发中的两人合作,练习结对编程 2.掌握Github协作开发程序的操作方法; |
这个作业在哪些方面帮助我实现学习目标 | 1.了解了Github发布软件项目的操作方法; 2. 第二次制作PSP流程,对个人软件项目开发流程的特点和基础在掌握的基础上有了更深入的了解; 3.通过自己学习了遗传算法,通过实验任务对背包问题再次掌握,并学会使用相关算法解决背包问题; 4.切身体验结对编程的优缺点 |
结对方学号-姓名 | 20187101028-王亚涛 |
结对方本次博客作业链接 | 王亚涛 |
本项目Github的仓库链接地址 | 王方 |
一、实验目的和要求
二、实验内容和步骤
任务1:
第四章讲的是两人合作。具体讲的是两人合作间注意的事项、细节。有:代码的规范、代码风格的规范、代码设计规范、代码的复审和结对编程。我认为前面提到的四点:代码的规范、代码风格的规范、代码设计规范和代码的复审都是为最后的一个内容结对编程做准备的。结对编程非常注意个人的习惯细节等方面,自己写出来的代码不是只给自己看而把代码写的一团糟,还要能让队友或旁人看,要让他们有一种整洁的感觉。在两人合作的初期,代码的正确性也没这种习惯的重要性大。所以应该先遵循某种约定或规范培养良好的习惯,从而产生默契。
代码风格规范:
主要是文字上的规定。代码风格的原则是:简明、易读、无二义性,包括对于缩进、行宽、括号、分行、命名、下划线、注释、大小写以及断行与空白的{}行的处理;缩进限定为100字符;复杂的条件表达式中,用括号表示逻辑优先级;有清晰的断行和分行;命名应该遵循规则,简洁易懂。
代码设计规范:
牵扯到程序设计、模块之间的关系、设计模式等。比如针对函数,他的最重要的原则就是:只做一件事,并且要做好。可以使用goto实现单一的出口。还有错误处理方面的一些内容,比如断言的正确使用等规范。程序的绝大多数功能,都在程序中实现,函数的原则是只做好一件事;使用goto语句使得程序有单一的出口;错误处理的时间更甚于程序功能的实现;所有的参数都要验证其正确性,验证正确性使用断言;
代码复审:
代码复审的目的:
结对编程:
任务2:
任务3:
遗传算法仅使用由目标函数值变换来的适应度函数值就可确定进一步的搜索范围,无需目标函数的导数值等其他辅助信息。直接利用目标函数值或个体适应度值也可以将搜索范围集中到适应度较高部分的搜索空间中,从而提高搜索效率。
遗传算法从由很多个体组成的初始种群开始最优解的搜索过程,而不是从单个个体开始搜索。对初始群体进行的、选择、交叉、变异等运算,产生出新一代群体,其中包括了许多群体信息。这些信息可以避免搜索一些不必要的点,从而避免陷入局部最优,逐步逼近全局最优解。
综上,由于遗传算法的整体搜索策略和优化搜索方式在计算时不依赖于梯度信息或其他辅助知识,只需要求解影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架。它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于各种领域,包括:
函数优化
组合优化生产调度问题
自动控制
机器人学
图像处理
人工生命
遗传编程
机器学习
- (2)软件设计说明 - (3) 结对小伙伴
- (4)此次作业所制定PSP
PSP 各个阶段 | 自己预估的时间(分钟) | 实际的记录(分钟) |
---|---|---|
计划: | 60 | 60 |
开发 : | 11400 | 2800 |
(1)需求分析 | 100 | 150 |
(2)生成设计文档 | 60 | 50 |
(3)设计复审 | 0 | 0 |
(4)代码规范 | 30 | 60 |
(5)具体设计 | 720 | 600 |
(6)具体编码 | 500 | 720 |
(7)代码复审 | 50 | 60 |
(8)测试 | 60 | 90 |
报告: | 90 | 90 |
(1)测试报告 | 60 | 60 |
(2)计算工作量 | 30 | 30 |
总结并改进 | 30 | 60 |
- (7)我个人觉得两人合作能够带来1+1>2的效果。经过这次实验,我觉得结对项目的好处在于在项目实施过程中两个人会更容易发现对方代码的不足并及时指正,在合作时可以取长补短,互相借鉴,互相学习,发挥合作学习的优势,学习效率比起一个人要快的多,这种应该就是1+1>2的体会吧。