201871020225-牟星源 实验二 个人项目—《D{0-1}背包问题》项目报告
| 项目 | 内容 |
| ---- | ---- | ---- |
| 课程班级博客 |班级博客|
| 这个作业要求链接 |作业要求 |
| 我的课程学习目标 | 1.了解软件工程过程中个人项目的开发流程
2. 再次仔细阅读了构建之法的第一二章内容,理解PSP的重要性
3.提高个人编码能力 |
|这个作业在哪些方面帮助我实现学习目标| 1.通过本次作业的具体流程,使得我了解到了软件工程中个人开发流程
2.填写PSP表格
3.进行相关算法学习 |
|项目Github的仓库链接地址| https://github.com/702457250/-/tree/D{0-1}背包问题 |
博客正文
- 任务1:阅读教师博客“常用源代码管理工具与开发工具”内容要求,点评班级博客中已提交相关至少3份作业。(已完成)
- 任务2:详细阅读《构建之法》第1章、第2章,掌握PSP流程(已完成)
- 完成情况
通过阅读我了解到PSP流程(个人软件开发流程),知道了PSP的思想及重要性,下面表格为本次个人项目中的PSP项目规划表格。
- 完成情况
PSP 各个阶段 | 自己预估的时间(小时) | 实际的记录(小时) |
---|---|---|
计划: 明确需求和其他因素,估计以下的各个任务需要多少时间 | 2 | 2 |
开发 (包括下面 8 项子任务) | 30 | --- |
· 需求分析 (包括学习新技术、新工具的时间) | 2 | 3 |
· 生成设计文档 (整体框架的设计,各模块的接口,用时序图,快速原型等方法) | 2 | 3 |
· 设计复审 (和同事审核设计文档,或者自己复审) | 1 | 1 |
· 代码规范 (为目前的开发制定或选择合适的规范) | 1 | 0.5 |
· 具体设计(用伪代码,流程图等方法来设计具体模块) | 3 | 3 |
· 具体编码 | 15 | --- |
· 代码复审 | 4 | --- |
· 测试(自我测试,修改代码,提交修改) | 2 | --- |
报告 | 6 | 3 |
测试报告(发现了多少bug,修复了多少) | 2 | --- |
计算工作量 (多少行代码,多少次签入,多少测试用例,其他工作量) | 1 | --- |
事后总结, 并提出改进计划 (包括写文档、博客的时间) | 3 | 3 |
总共花费的时间 (小时) | 38 | ---- |
-
任务3:作为任务3的项目实施过程文字资料,请完整包含下面7个部分:(部分完成)
-
需求分析。
1.数据集文件进行数据读取;
2.对某一组数据进行可视化,以散点图的方式呈现给用户;
3.将数据按照一定顺序进行排序;
4.通过回溯算法和动态规划算法进行程序实现,将结果存入文件。 -
功能设计。
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文件。 -
设计实现。
-
代码片段。
def menu(): print("1.绘制散点图") print("2.数据排序") print("3.算法实现") print("4.结束") job = input("请选择操作:") if job == '1': user_dict = creating_dictionary() elif job == '2': updating_dictionary(user_dict) elif job == '3': sorting_dictionary(user_dict) else job == '4': break
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' ##设置中文显示 plt.rcParams['axes.unicode_minus'] = False x = weight y = profit plt.figure(figsize=(8,7)) plt.scatter(x,y,c = 'b', marker='D')##绘制散点图 plt.xlabel('weight') plt.ylabel('profit') plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45) print(range(0,70,4)) print(values[range(0,70,4),1]) plt.title('重量价值散点图')##添加图表标题 plt.show()
-
-
任务4:本次项目提交Github(部分完成)
-
项目总结
由于个人的编程水平有限,没有按计划完成项目,只是学习了PSP相关知识,进行了部分程序编写,理解了0-1背包问题和动态规划算法以及回溯算法,本次实验完成情况很差。