项目 内容
课程班级博客链接 https://home.cnblogs.com/u/wanghuijuan815
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/14552393.html
我的课程学习目标 (1)掌握软件项目个人开发流程。
(2)掌握Github发布软件项目的操作方法。
这个作业在哪些方面帮助我实现学习目标 (1阅读了《构建之法》前两章的内容,掌握了PSP流程并自己对这次的个人项目也尝试做了PSP,对后面项目的开发和进行大有帮助。
(2)复习和掌握了0/1背包的问题解决方法,对动态规划算法和回溯法有进行了复习和巩固。
(3)第一次尝试使用Github,掌握Github发布软件项目的基本方法。
项目Github的仓库链接地址 https://github.com/wang815-hui/jfm

一、任务1:

阅读教师博客“常用源代码管理工具与开发工具”内容要求,点评班级博客中已提交相关至少3份作业。

三、任务3

项目实施过程

(1)需求分析

项目开发背景:

背包问题(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}背包问题的经典算法。查阅相关资料,设计一个采用动态规划算法、回溯算法求解D{0-1}背包问题的程序。

  • 对实际商业活动中折扣销售、捆绑销售等现象进行最优化求解,达到获利最大化。
  • 从给定的一组项集中选择满足要求装入背包的项,使得装入背包所有项的价值系数之和达到最大;
  • 能够自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间(以秒为单位);
  • 任意一组D{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件

(2)功能设计

1.可正确读入实验数据文件的有效D{0-1}KP数据;

2.能够绘制任意一组D{0-1}KP数据以重量为横轴、价值为纵轴的数据散点图;

3.能够对一组D{0-1}KP数据按项集第三项的价值:重量比进行非递增排序;

4.用户能够自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间(以秒为单位)

(3)设计实现

  • 可正确读入实验数据文件的有效D{0-1}KP数据,将有效数据然后将数据进行分组,分为两个大组,分别为重量和价值,再对两个组的数据进行分组,每个组有3个数据项其中第三个是前两项之和,第三个数字小于前两个数字之和(即满足每个项集有3项物品可供背包装入选择,其中第三项价值是前两项之和,第三项的重量小于其他两项之和)
  • 绘制数据散点图,将分好的数据绘制任意一组数据以重量为横轴、价值为纵轴的数据散点图。
  • 排序,能够对第一组数据的第三个数字:第二组数据的第三个数字比进行非递增排序。
  • 参考0/1背包问题选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间。

(3)测试运行

a.读取文件

  • 主要代码展示

  • 结果展示

(2)画出散点图

  • 主要代码展示

  • 结果展示

(7)展示PSP

任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
计划 40 60
· 估计这个任务需要多少时间,并规划大致工作步骤 8 6
开发 600 780
需求分析 (包括学习新技术) 120 150
· 生成设计文档 60 50
· 设计复审 (和同事审核设计文档) 40 60
代码规范 (为目前的开发制定合适的规范) 50 80
具体设计 60 100
具体编码 420 480
· 代码复审 90 80
· 测试(自我测试,修改代码,提交修改) 120 180
报告 120 150
· 测试报告 40 80
计算工作量 20 50
· 事后总结 ,并提出过程改进计划 30 40
  • 总结:这次的实验有难度,自己预估时间和实际消耗的时间差距比较大,在开发和编码上花了很长时间,但是有的内容没有实现,主要原因是自己的编程能力不够。

三、任务3

完成任务3的程序开发,将项目源码的完整工程文件提交到你注册Github账号的项目仓库中。

四、任务4

已完成个人项目报告博文作业

201871030126-王会娟 实验二 个人项目—《D{0-1} KP》项目报告的更多相关文章

  1. 王玉兰201771010128实验二 Java基本程序设计

    第一部分:理论知识学习部分:  (1)标识符:标识符由字母.下划线.美元符号和数字组成,且第一个符号不能为数字.Hello.$1234.程序名.www_123都是合法标识符.标识符可用作类名.变量名. ...

  2. 201871030114-蒋鑫 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接☛ 班级博客 这个作业要求链接☛ 作业要求 我的课程学习目标☛ 1. 体验软件项目开发中的两人合作,练习结对编程(Pair programming).2. 掌握Github ...

  3. 201871010110-李华 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 (1)理解并掌握代码风格及设计规范:(2)通过任务3进行协作开发,尝试进行代码复审,在进行同伴复审的过程中体会结对 ...

  4. 201871030115-康旭 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 18卓越班 这个作业要求链接 实验三结对编程要求 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming):(2)掌握Git ...

  5. 201871030140-朱婷婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验三 结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握GitHub协作开发程序的操作方法. 这个 ...

  6. 201871030136-颜静 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    ​ 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu- ...

  7. 201871030137-杨钦颖 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    201871030137-杨钦颖 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级连接 这个作业要求链接 作业连接 我的课程学习目 ...

  8. 20155219&20155224 《信息安全系统设计基础》实验二 固件程序设计

    实验二 固件程序设计-1-MDK 0. 注意不经老师允许不准烧写自己修改的代码 1. 两人(个别三人)一组 2. 参考云班课资源中"信息安全系统实验箱指导书.pdf "第一章,1. ...

  9. 201671010438王奕晗实验十四 团队项目评审&课程学习总结

    个人学习总结博客 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 作业学习目标 完成个人软件心得总结 一.结合本学期课程学习内容,对比<实验一 软件工 ...

随机推荐

  1. 如何正确的阅读 js 源码

    如何正确的阅读 js 源码 https://astexplorer.net/ AST Abstract Syntax Trees https://alligator.io/js/traversing- ...

  2. 快速读懂 HTTP/3 协议

    在 深入浅出:HTTP/2 一文中详细介绍了 HTTP/2 新的特性,比如头部压缩.二进制分帧.虚拟的"流"与多路复用,性能方面比 HTTP/1 有了很大的提升.与所有性能优化过程 ...

  3. 启动Turtlesim,输入roscore命令,报错

    Error: Traceback (most recent call last):   File "/opt/ros/indigo/lib/python2.7/dist-packages/r ...

  4. 解决margin-top无效问题

    当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素 ...

  5. docker启动ubuntu的桌面环境

    一.概述 由于最近一段时间在家办公,国内服务器在阿里云,国外站点在aws.家里的移动宽带比较差,无法访问aws. 所以尝试在阿里云启动docker,找到一个lxde桌面环境的ubuntu镜像. 二.启 ...

  6. Redis数据结构和对象三

    1.Redis 对象系统 Redis用到的所有主要数据结构,简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合.跳跃表. Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些 ...

  7. 【pytest官方文档】解读fixtures - 2. fixtures的调用方式

    既然fixtures是给执行测试做准备工作的,那么pytest如何知道哪些测试函数 或者 fixtures要用到哪一个fixtures呢? 说白了,就是fixtures的调用. 一.测试函数声明传参请 ...

  8. POJ-1751(kruskal算法)

    Highways POJ-1751 注意这里的样例答案也是对的,只是输出顺序改变,但是这也没关系,因为题目加了特殊判断. #include<iostream> #include<cs ...

  9. Mybatis系列全解(三):Mybatis简单CRUD使用介绍

    封面:洛小汐 作者:潘潘 在理解中执行,在执行中理解,学习技术也循此道. 前言 上一篇文章 <Mybatis系列全解(二):Mybatis简介与环境搭建> ,我们对 Mybatis 做了初 ...

  10. 简单的ssm练手联手项目

    简单的ssm练手联手项目 这是一个简单的ssm整合项目 实现了汽车的品牌,价格,车型的添加 ,修改,删除,所有数据从数据库中拿取 使用到了jsp+mysql+Mybatis+spring+spring ...