201871010113-刘兴瑞 实验二 个人项目—《背包问题》项目报告
项目 | 内容 |
---|---|
课程班级博客链接 | 班级博客 |
这个作业要求链接 | 实验二 软件工程个人项目 |
我的课程学习目标 | 1. 熟悉Github操作方法 2.熟悉软件项目个人开发流程 3.理解动态规划和回溯算法 4.熟悉代码规范 |
这个作业在哪些方面帮助我实现学习目标 | 1.设置的项目让我查找资料学习相关算法 2.提供的资料让我了解编程更加规范 |
博客正文
任务一
作业点评链接
任务二
《构建之法》第一章:概述
- 该章内容主要解释了两部分内容:软件=程序+软件工程以及软件工程是什么。
《构建之法》第二章:
- 该章内容主要介绍了PSP
- PSP:
PSP2.1 | |
---|---|
Planning · Estimate Development · Analysis · Design Spec · Design Review · Coding Standard · Design · Coding · Code Review · Test Record Time Spent Test Report Size Measurement Postmortem Process Improvement Plan |
计划 · 明确需求和其他因素,估计以下的各个任务需要多少时间开发 · 分析需求 · 生成设计文档 · 设计复审 (和同事审核设计文档) · 代码规范 (为目前的开发制定合适的规范) · 具体设计 · 具体编码 · 代码复审 · 测试(包括自我测试,修改代码,提交修改) 记录时间花费 测试报告 计算工作量 事后总结 提出过程改进计划 |
- 它是一个自我改进的过程,它帮助控制、管理和改进自己的工作方式;是一个结构化的框架,包括了软件开发中使用的表格、准则和规程;提供了一个度量和分析框架,用来检验和管理你的个人工作;是一个已定义过程,用来帮助你改善自己的个人绩效
任务三
项目开发背景
背包问题(Knapsack Problem,KP)是NP Complete问题,也是一个经典的组合优化问题,有着广泛而重要的应用背景。
{0-1}背包问题({0-1 }Knapsack Problem,{0-1}KP)是最基本的KP问题形式,它的一般描述为:从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,如何选择才能使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大?
D{0-1} KP 是经典{ 0-1}背包问题的一个拓展形式,用以对实际商业活动中折扣销售、捆绑销售等现象进行最优化求解,达到获利最大化。
D{0-1}KP数据集由一组项集组成,每个项集有3项物品可供背包装入选择,其中第三项价值是前两项之和,第三项的重量小于其他两项之和,算法求解过程中,如果选择了某个项集,则需要确定选择项集的哪个物品,每个项集的三个项中至多有一个可以被选择装入背包,D{0-1} KP问题要求计算在不超过背包载重量 的条件下,从给定的一组项集中选择满足要求装入背包的项,使得装入背包所有项的价值系数之和达到最大;D{0-1}KP instances数据集是研究D{0-1}背包问题时,用于评测和观察设计算法性能的标准数据集;动态规划算法、回溯算法是求解D{0-1}背包问题的经典算法。
程序基本功能要求
1.可正确读入实验数据文件的有效D{0-1}KP数据;
2.能够绘制任意一组D{0-1}KP数据以重量为横轴、价值为纵轴的数据散点图;
3.能够对一组D{0-1}KP数据按项集第三项的价值:重量比进行非递增排序;
4.用户能够自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间(以秒为单位);
5.任意一组D{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件。
需求分析
- 从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,并使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大。简而言之就是在背包能够装下最多的情况下使得背包的价值最大。
基本思路
- 每种物品可以选择放或不放,需要使用回溯
功能设计
- 读入数据
- 数据可视化:绘制出以重量为横轴、价值为纵轴的数据散点图
- 排序
- 通过动态规划算法、回溯算法求解数据
- 存储数据:将数据的最优解、求解时间和解向量可保存为EXCEL文件
展示PSP如下表
PSP2.1 | 任务内容 | 划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 14 | 10 |
· · Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 10 |
development | 开发 | 800 | 880 |
· · Analysis | · 需求分析 (包括学习新技术) | 60 | 70 |
· · Design Spec | · 生成设计文档 | 25 | 20 |
· · Design Review | · 设计复审 (和同事审核设计文档) | 20 | 20 |
· · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 27 |
· · Design | 具体设计 | 20 | 12 |
· · Coding | · 具体编码 | 120 | 80 |
· · Code Review | · 代码复审 | ||
· · Test | · 测试(自我测试,修改代码,提交修改) | ||
Reporting | 报告 | ||
· · Test Report | · 测试报告 | ||
· · Size Measurement | · 计算工作量 | 5 | 5 |
· · Postmortem & Process Improvement Plan | · 事后总结 ,并提出过程改进计划 | 5 | 8 |
任务四
将项目源码的完整工程文件提交到你注册Github账号的项目仓库中
posted on 2021-03-31 11:32 201871010113-刘兴瑞 阅读(89) 评论(1) 编辑 收藏 举报