201871010136-赵艳强 实验二 个人项目-《0-1背包问题》项目报告
项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/2018CST |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/14552393.html |
我的课程学习目标 | (1)掌握软件项目个人开发流程;(2)掌握Github发布软件项目的操作方法。 |
这个作业在哪些方面帮助我实现学习目标 | (1)更加熟练git的相关操作;(2)巩固算法设计的思想;(3)进一步加深对可视化的认识。 |
任务1:
阅读教师博客“常用源代码管理工具与开发工具”内容要求,点评班级博客中已提交相关至少3份作业。
点评作业链接:
https://www.cnblogs.com/wing2438/p/14576036.html
https://www.cnblogs.com/zyja/p/14576098.html
https://www.cnblogs.com/muxingyuan/p/14599443.html
任务2:
总结详细阅读《构建之法》第1章、第2章,掌握PSP流程。
《构建之法》https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
第一章 :软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上。软件工程包括:软件需求分析,软件构建,软件设计,软件测试和软件维护。 软件是可以运行在计算机上及电子设备中的指令和数据的有序集合。软件以下特性:复杂性,不可见性,易变性,服从性,非连续性。软件工程,就是把软件中的Bug 消灭的过程。软件=程序+软工程。
第二章:作者对PSP(Personal Software Process)进行了介绍,并且根据中科大大四学生和工作三年的工程师的PSP表格进行对比,综合各类表格的比较,总结出了个人软件开发流程PSP的任务清单。
PSP展示
PSP2.1 | 任务内容 | 计划完成所需要的时间(min) | 实际完成所需要的时间(min) |
---|---|---|---|
Planning | 计划 | 30 | 27 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 30 | 27 |
Development | 开发 | 180 | 135 |
Analysis | 需求分析(包括学习新技术) | 120 | 120 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 (和同事审核设计文档) | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 15 |
Design | 具体设计 | 24 | 18 |
Coding | 具体编码 | 30 | 48 |
Code Review | 代码复审 | 60 | 50 |
Test | 测试(自我测试,修改代码,提交修改 | 60 | 15 |
Reporting | 报告 | 120 | 13 |
Test Report | 测试报告 | 40 | 40 |
Size Measurement | 计算工作量 | 40 | 30 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 40 | 60 |
Planning | 计划 | 30 | 27 |
Planning | 计划 | 30 | 27 |
Planning | 计划 | 30 | 27 |
Planning | 计划 | 30 | 27 |
任务3:
项目开发背景:背包问题(Knapsack Problem,KP)是NP Complete问题,也是一个经典的组合优化问题,有着广泛而重要的应用背景。{0-1}背包问题({0-1}Knapsack Problem,{0-1}KP)是最基本的KP问题形式,它的描述一般为:从若干具有价值体系与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,如何选择才能使装入物品的重量系数系数在不超过背包载重前提下价值系数之和达到最大。
1.需求分析:
在现实生活中,有一类问题需要设计得出最优解,我们通常使用态规划算法、回溯算法求解D{0-1}背包问题来解决这类问题。背包问题是NP Complete问题,它是一个组合优化问题,而D{0-1} KP 是经典{ 0-1}背包问题的一个拓展形式,用以对实际商业活动中折扣销售、捆绑销售等现象进行最优化求解,达到获利最大化。动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。在这次作业中,我们可以对于背包问题的求解有更近一步的掌握。
2.功能设计:
可正确读入实验数据文件的有效D{0-1}KP数据;
能够绘制任意一组D{0-1}KP数据以重量为横轴、价值为纵轴的数据散点图;
能够对一组D{0-1}KP数据按项集第三项的价值:重量比进行非递增排序;
用户能够自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间(以秒为单位);
任意一组D{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件。
任务4:
完成任务3的程序开发,将项目源码的完整工程文件提交到你注册Github账号的项目仓库中。