结对项目第二次作业


结对成员:

031501102 叶文滔

031502409 杜宏庆


2.项目的Github链接:https://github.com/a270331257/Matching


部分数据展示:

学生数据

1226935-20171009225103902-1531898964.png

部门数据

1226935-20171009225131152-1542706798.png

数据生成原理:

数据生成过程主要由rand函数来完成,例如星期几、时间段、兴趣标签等。随后开始将这些零散的信息拼凑起来,组合成一个个学生实体和部门实体。举个例子,组合学生信息实体时,先随机决定空闲时间段数,再根据数目随机选择时间段,接下来是按序生成学生的学号,再随机生成学生的部门志愿,最后随机生成学生的兴趣标签等等。部门信息实体的组合同理,不再赘述。


匹配模式

1226935-20171009225204855-403990674.png

因为我们考虑到兴趣爱好和部门工作联系比较紧密,而且比较容易实现和维护。另外,我们觉得学生与部门的匹配重要的应该是学生的工作兴趣是否与部门相适应,这决定的学生在部门的工作热情与工作效率,所以我们经过讨论决定采用以兴趣标签为主的匹配模式。具体的实现方法是——遍历20个部门,每个部门遍历300个学生,若学生的志愿中包含该部门,那么检索学生的兴趣标签,当兴趣标签中有一项与部门相符,学生对该部门的flag值+1,遍历完成后,按flag值进行排序(其中还涉及到下标的跟踪),选取flag值最大的N(N为各部门纳新人数)名学生纳新,这样就完成了部门和学生的匹配。最后找出未招满的部门和未被录取的学生。


团队代码规范

(1)随机生成的各种信息、匹配算法用到的信息都用以下数组实现:
1226935-20171009230254449-2096666028.png

(2)程序每个部分的区域划分(注释方式)如下:
1226935-20171009230308871-990761126.png


6.结果评估
程序的匹配结果大部分达到了预期要求:
(1)部门和学生匹配成功的结果如下:
1226935-20171011213621684-1674985181.png

(2)落选的学生如下:
1226935-20171011213654105-738965093.png

(3)未招满的部门如下:(大部分情况下每个部门都能招满)
1226935-20171011213748465-628784513.png

程序的匹配结果总体来说是比较符合要求的,但是因为主要考虑兴趣标签,弱化了空闲时间段,因此程序的功能缺乏完备性。正在进一步的完善中。


个人总结

这次作业因为前期JSON生成数据不会做,一直卡在那边解决不了,导致假期荒废了几天。好在叶同学及时回来解决了这个问题,我队友不愧是大神,我不懂的问题在他那边基本都能得到解决。特别是他的生成数据算法给了我很大启发,算法的思想很值得我学习。尽管我们做的时间相比于其他结对小组不长,但我们通过这几天的不断摸索,交换代码意见,分工比较明确,所以过程也很顺利。我主要负责匹配算法这一块,我们觉得以兴趣标签来进行学生和部门之间的匹配比较合理,因为兴趣决定学生在部门的工作热情与工作效率,而时间比较灵活,可以调整。所以我利用学生兴趣和部门兴趣的“匹配度”为核心设计这个匹配算法,而且“匹配度”不会超过部门的限定纳新人数,这样算法比较容易实现和维护。但是目前对JSON的具体实现还没有完全得到解决,导致程序不够完善,和题目要求有些偏差,所以这几天会不断改进。

转载于:https://www.cnblogs.com/dhq409/p/7643139.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值