脚本宝典收集整理的这篇文章主要介绍了201971010125-李涛 实验二 个人项目—《构建之法和{0-1}背包问题》项目报告,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
课程班级博客 | |
作业要求 | |
我的课程学习目标 | (1)掌握软件项目个人开发流程。(2)掌握Github发布软件项目的操作方法。 |
作业对我实现目标的帮助 | (1)学习软件项目的开发过程,熟悉软件开发项目的流程 。(2)学会运用项目Github发布项目的操作过程,熟练使用学习辅助工具。 (3)构建之法的阅读加深对软件工程的学习。 |
项目Github的仓库链接地址 |
1、 构建之法第一章(概论)
2、 建之法第二章(个人技术和流程)
背包问题(Knapsack Problem,KP)是NP Complete问题,也是一个经典的组合优化问题,有着广泛而重要的应用背景。{0-1}背包问题({0-1 }Knapsack Problem,{0-1}KP)是最基本的KP问题形式,它的一般描述为:从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,如何选择才能使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大?{0-1}KP数据集是研究{0-1}背包问题时,用于评测和观察设计算法性能的标准数据集;动态规划算法、回溯算法是求解{0-1}背包问题的经典算法。查阅相关资料,设计一个采用贪心算法、动态规划算法、回溯算法求解{0-1}背包问题的程序,程序基本功能要求如下:1.可正确读入实验数据文件的有效{0-1}KP数据;2.能够绘制任意一组{0-1}KP数据以价值重量为横轴、价值为纵轴的数据散点图;3.能够对一组{0-1}KP数据按重量比进行非递增排序;4.用户能够自主选择贪心算法、动态规划算法、回溯算法求解指定{0-1} KP数据的最优解和求解时间(以秒为单位);5.任意一组{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件。
项目实施 1、需求分析
2、功能设计
3、设计实现4、测试运行
数据读入结果如下图:
散点图结果如下图:
排序结果结果如下图:
多算法选择如下图:
文件保存如下图:
5、主要代码
项目 | 规则 |
---|---|
缩进 | Tab键缩进 |
变量命名 | 字母,数字,下划线组成由字母,下划线开头 不能有二义性,有长度要求 |
每行最多字符数 | 每行最多字符120个字符,超过换行 |
函数最大行数 | |
函数,类命名 | 函数和类命名采用骆驼式命名法,每个单词首字母大写 |
常量 | 常量名全大写 |
空行规则 | 定义变量后面要空行每个函数定义结束后都要空格 |
注释规则 | 修改代码时注释变量声明时注释 |
操作符前后空格 | 操作符前后无空格出现控制语句时,括号中间空一格 |
# =========================保存为txt=======================
def saveTxt(fileName, num, maxWeight, maxValue, sunTime):
file = open('D:studypythonpythonProject实验二/查询结果.txt', 'a')
file.write('文件名:n' + fileName + 'n')
file.write('第几组数据:n' + str(num) + 'n')
file.write('背包容量:n' + str(maxWeight) + 'n')
file.write('求解的最大价值:n' + str(maxValue) + 'n')
file.write('运行时间:n' + str(sunTime) + 'sn')
file.write('解向量:n')
for item in endPath:
file.write(item + 'n')
file.close()
# =======================文件读取和处理函数=========================
def getData():
# -------打开指定文件,读入数据-------
fileName = str(input('请输入文件名'))
file = open(fileName, 'r')
line = file.readline()
while (line):
# 读入一行数据1
line = file.readline()
# 如果匹配到profit关键字,则读入下一行的价值信息
if line.__contains__("profit"):
# 去除结尾的换行符,逗号,原点,便于分割
line = file.readline().strip('n').strip('.').strip(',')
# 将该行数据存入列表
profitData.append(line)
# 如果匹配到weight关键字,则读入下一行的重量信息
elif line.__contains__("weight"):
# 去除结尾的换行符,逗号,原点,便于分割
line = file.readline().strip('n').strip('.').strip(',')
# 将该行数据存入列表
weightData.append(line)
6、项目总结
7、psp展示
PSP2.1 | 任务内容 | 计划共完成需要的时间(h) | 实际完成需要的时间(h) |
---|---|---|---|
Planning | 计划 | 0.5 | 0.5 |
Estimate | 估计这个任务需要多长时间, 并规划大致工作步骤 | 1 | 1 |
Development | 开发 | 20 | 28 |
Analysis | 需求分析(包括学习新技术) | 8 | 14 |
Design Spec | 生成设计文档 | 1 | 0.5 |
Design Review | 设计复审 | 1 | 1.5 |
Coding Standard | 代码规范 | 1 | 1 |
Design | 具体设计 | 0.5 | 0.5 |
Coding | 具体编码 | 6 | 12 |
Code Review | 代码复审 | 1 | 0.5 |
Test | 测试 | 2 | 3 |
Reporting | 报告 | 2 | 2 |
Test Report | 测试报告 | 1 | 0.5 |
Size Measurement | 计算工作量 | 0.5 | 0.2 |
Postmortem&Process Improment Plan | 事后总结,并提出改进计划 | 0.5 | 0.5 |
8、经验分享
以上是脚本宝典为你收集整理的201971010125-李涛 实验二 个人项目—《构建之法和{0-1}背包问题》项目报告全部内容,希望文章能够帮你解决201971010125-李涛 实验二 个人项目—《构建之法和{0-1}背包问题》项目报告所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。