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背包问题和动态规划算法以及回溯算法,本次实验完成情况很差。

posted @ 2021-03-31 09:56  云暄夜堂  阅读(168)  评论(2编辑  收藏  举报