编程语言
首页 > 编程语言> > 201971010242-王凯英 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告

201971010242-王凯英 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告

作者:互联网

项目 内容
课程班级博客链接 班级
这个作业要求链接 作业
我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。(2)掌握Github协作开发软件的操作方法。
这个作业在哪些方面帮助我实现学习目标 (1)通过本次实验,首次开展软件工程结对项目,熟悉了项目制作的基本流程。(2)再次练习使用GitHub发布软件项目
结对方学号-姓名 201971010242-王亚亚
结对方本次博客作业链接 链接
本项目Github的仓库链接地址 仓库

代码风格规范、代码设计规范、代码复审、结对编程概念; 代码规范: 代码设计规范,牵涉到程序设计、模块之间的关系、设计模式等方方面面的通用原则。代码设计规范: 代码设计规范不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式 等方方面面,这里又有不少内容与具体程序设计语言息息相关(如C、C++. Java、C#),但 是也有通用的原则,这里主要讨论通用的原则。

代码复审目的:

找出代码的错误

(1) 编码错误,比如一些碰巧骗过了编译器的错误;

(2) 不符合团队代码规范的地方。

结对编程:

在结对编程模式下,一对程序员肩并肩地、平等地、互补地进行开发工作。两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起写文档等。

答:代码符合需求和规格说明。

答:代码设计考虑周全。

答:代码可读性较好

答:代码容易维护。

答:代码的每一行都执行并检查过了。
设计规范部分:

答:设计遵从已知的设计模式或项目中常用的模式。

答:存在硬编码

答:代码实在win64上进行的编码,不太清楚在win32上能否运行,未进行测试。

答:基本上没有需要清除的代码。
代码规范部分:

答:修改的部分符合代码标准和风格。
具体代码部分:

答:对错误进行了处理,对于调用的外部函数,检查了返回值或处理了异常。

答:数据结构中没有用不到的元素。
效能:

答:代码中,特别是循环中没有明显可优化的部分。

答:代码没有足够的注释,注释很少,代码可读性不是很好。

答:代码是不需要更新或创建新的单元测试。

第五步:结对方项目仓库中的Fork、Clone、Push、Pull request、Merge pull request日志数据:

将结对方的项目复制过来,相当于一个分支;项目复制到自己的github中,于是本地就有了和结对方相同命名的仓库。

从自己的github上把fork过来的复制到本地,这样本地就有了结对方的项目。

在本地项目进行修改开发后,最后同步到我的github上的仓库中。

把自己github中的已经修改的内容申请同步到最初那个开发者的项目中并作出比较。由于在push阶段对结对方的代码未作出修改(个人觉得结对方代码无需修改),所以比较结果是两个项目并无差异。

采用两人结对编程方式,设计开发一款D{0-1}KP 实例数据集算法实验平台,使之具有以下功能:

(1)平台基础功能:实验二 任务3;

(2)D{0-1}KP 实例数据集需存储在数据库;

(3)平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;

(4)人机交互界面要求为GUI界面(WEB页面、APP页面都可);

(5)查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求(3);

(6)附加功能:除(1)-(5)外的任意有效平台功能实现。

一、需求分析

二、功能设计

三、设计实现
在实验过程中,此次实验要求的技术与我在此之前的掌握的技术有一定差距。所以我复习了大学三年级第一学期在《算法设计与分析》课程中学习到的动态规划算法与回溯算法求解0/1背包问题的内容,循序渐进,推进实验的进程。
1、动态规划算法

动态规划算法的核心思想是:
将大问题划分为小问题进行解决,从而一步一步获得最优解的处理算法。
动态规划算法与分治算法类似,其基本思想也是将代求问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
与分治算法不同的是,适合于动态规划求解的问题,经分解得到的子问题往往不是互相独立的,即下一个子阶段的求解过程是建立在上一个子阶段的解的基础上,进行进一步的求解。
2、回溯算法

回溯法解决问题一般分为三个步骤:

(1)针对所给问题,定义问题的解空间;

(2)确定易于搜索的解空间结构;

(3)以深度优先的方式搜索解空间。

3、遗传算法

遗传算法(Genetic Algorithms )是基于生物进化理论的原理发展起来的一种广为应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之间的信息交换,搜索不依赖于梯度信息。它是在70年代初期由美国密西根( Michigan )大学的霍兰( Holland )教授发展起来的。1975年霍兰教授发表了第一本比较系统论述遗传算法的专著《自然系统与人工系统中的适应性》(《 Adaptationin Natural and Artificial Systems 》)。遗传算法最初被研究的出发点不是为专门解决最优化问题而设计的,它与进化策略、进化规划共同构成了进化算法的主要框架,都是为当时人工智能的发展服务的。迄今为止,遗传算法是进化算法中最广为人知的算法。

遗传火算法的实施步骤如下(以目标函数求最小为例)。
第一步:初始化 t←0进化代数计数器;T是最大进化代数;随机生成M个个体作为初始群体P(t);
第二步:个体评价 计算P(t)中各个个体的适应度;
第三步:选择运算 将选择算子作用于群体;
第四步:交叉运算 将交叉算子作用于群体;
第五步:变异运算 将变异算子作用于群体,并通过以上运算得到下一代群体P(t + 1);
第六步:终止条件判断 t≦T:t← t+1 转到步骤2;t>T:终止 输出解。

4、关键代码展示

for(int i=1;i<row;i++) {
    		String Row=Integer.toString(i);
    		for(int j=1;j<4;j++) {
	    		String Weight=Integer.toString(weight[i][j]);
			    String Value=Integer.toString(value[i][j]);           	
				String addsql="INSERT INTO table_kp01(tempname,weight,value) VALUES(?,?,?)";
			    PreparedStatement pst=null;
				pst=conn.prepareStatement(addsql);//预编译SQL
		        pst.setString(1, Row);
				pst.setString(2, Weight);
				pst.setString(3, Value);
				pst.executeUpdate();//执行SQl语句	
		    }
		}
<%@page import="org.apache.log4j.Logger" %>
private static Logger log1=Logger.getLogger(RES);
private static Logger log2=Logger.getLogger(RUN_TIME);
log1.debug("最优解:"+res);
out.println("</br>");//换行标签
log2.debug("运行时间:"+run_time+"s");

5、结果展示

D{0-1}KP 实例数据集需存储在数据库

平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;

调用算法结果展示:

人机交互界面要求为GUI界面(WEB页面、APP页面都可);

结果展示:

实现结果:

6、PSP

PSP 任务内容 计划完成所需要的时间(min) 实际完成所需要的时间(min)
Planning 计划 45 50
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 50 55
Development 开发 700 800
Analysis 需求分析(包括学习新技术) 130 200
Design Spec 生成设计文档 30 35
Design Review 设计复审 (和同事审核设计文档) 15 13
Coding Standard 代码规范 14 18
Design 具体设计 260 300
Coding 具体编码 300 354
Code Review 代码复审 58 60
Test 测试 70 90
Reporting 报告 60 70
Summer 任务+总结 40 60

7、小结
两人进行合作要比一人进行容易得多。经过这次实验,我发现在真正的结对的情况下,确实会产生1+1>2的情况,因为另一方会从另外一个角度思考,发现对方代码的不足并及时指正。但也存在双方工作没办法平均分配,双方各有擅长的方面,所以在合作时更多的是取长补短,发会合作的优势。

标签:求解,代码,算法,KP,实验,201971010242,回溯,遗传算法
来源: https://www.cnblogs.com/201971010242wang/p/16043089.html