结对成员:
031501102 叶文滔
031502409 杜宏庆
2.项目的Github链接:https://github.com/a270331257/Matching
部分数据展示:
学生数据
部门数据
数据生成原理:
数据生成的流程首先是建立各种需要的数据的随机库,比如星期几、时间段、兴趣标签的库等,然后从各个随机库中随机选取内容进行组装,组成一个完成的学生或部门实体。组装过程采用朴素的流水线方式进行。首先组装学生,先随机决定空闲时间段数,再根据数目随机选择时间段,接下来是按序生成学生的学号,再随机生成学生的部门志愿,最后随机生成学生的兴趣标签等等。生成完学生再生成部门,步骤雷同。
匹配模式
我们采用的是以兴趣标签为主的匹配模式,先说一下我们为何选择这个模式。我们觉得学生与部门的匹配重要的应该是学生的工作兴趣是否与部门相适应,这决定的学生在部门的工作热情与工作效率,在现实生活中,时间往往不是固定死的,空闲时段大部分都可调整。并且大多数情况下的部门工作都可以由学生选择*时间段来完成,只要在规定时间以前。因此我们觉得弱化时间段的因素,主要以兴趣标签来进行双方的匹配。
具体的实现方法是,从部门端开始对学生进行遍历,若学生的志愿中包含该部门,那么检索学生的兴趣标签,若兴趣标签中有一项与部门相符,学生对该部门的flag值+1,遍历完成后,按flag值进行排序,选取前N(N为部门纳新人数)名学生纳新。
团队代码规范
我们的协作代码规范主要有两个方面,一是在注释上解释接口位置以及对应的数据内容,见下:
第二是用注释进行区域划分,见下:
6.结果评估
程序的匹配结果大部分达到了预期要求:
(1)部门和学生匹配成功的结果如下:
(2)落选的学生如下:
(3)未招满的部门如下:(大部分情况下每个部门都能招满)
程序的匹配结果总体来说是比较符合要求的,但是因为主要考虑兴趣标签,弱化了空闲时间段,因此程序的功能缺乏完备性。正在进一步的完善中。
个人总结
这次作业因为前期JSON生成数据不会做,一直卡在那边解决不了,导致假期荒废了几天。好在叶同学及时回来解决了这个问题,我队友不愧是大神,我不懂的问题在他那边基本都能得到解决。特别是他的生成数据算法给了我很大启发,算法的思想很值得我学习。尽管我们做的时间相比于其他结对小组不长,但我们通过这几天的不断摸索,交换代码意见,分工比较明确,所以过程也很顺利。我主要负责匹配算法这一块,我们觉得以兴趣标签来进行学生和部门之间的匹配比较合理,因为兴趣决定学生在部门的工作热情与工作效率,而时间比较灵活,可以调整。所以我利用学生兴趣和部门兴趣的“匹配度”为核心设计这个匹配算法,而且“匹配度”不会超过部门的限定纳新人数,这样算法比较容易实现和维护。但是目前对JSON的具体实现还没有完全得到解决,导致程序不够完善,和题目要求有些偏差,所以这几天会不断改进。