第二次结对作业——学生与部门的匹配


结对成员:

031501102 叶文滔

031502409 杜宏庆


Github地址:

https://github.com/a270331257/Matching


部分数据展示:

学生数据

1227195-20171009201105402-183136262.png

部门数据

1227195-20171009201113652-104473838.png

数据生成原理:

数据生成的流程首先是建立各种需要的数据的随机库,比如星期几、时间段、兴趣标签的库等,然后从各个随机库中随机选取内容进行组装,组成一个完成的学生或部门实体。组装过程采用朴素的流水线方式进行。首先组装学生,先随机决定空闲时间段数,再根据数目随机选择时间段,接下来是按序生成学生的学号,再随机生成学生的部门志愿,最后随机生成学生的兴趣标签等等。生成完学生再生成部门,步骤雷同。


匹配模式

1227195-20171009200215355-726602817.png
我们采用的是以兴趣标签为主的匹配模式,先说一下我们为何选择这个模式。我们觉得学生与部门的匹配重要的应该是学生的工作兴趣是否与部门相适应,这决定的学生在部门的工作热情与工作效率,在现实生活中,时间往往不是固定死的,空闲时段大部分都可调整。并且大多数情况下的部门工作都可以由学生选择自由时间段来完成,只要在规定时间以前。因此我们觉得弱化时间段的因素,主要以兴趣标签来进行双方的匹配。
具体的实现方法是,从部门端开始对学生进行遍历,若学生的志愿中包含该部门,那么检索学生的兴趣标签,若兴趣标签中有一项与部门相符,学生对该部门的tag值+1,遍历完成后,按tag值进行排序,选取前N(N为部门纳新人数)名学生纳新。


团队代码规范

我们的协作代码规范主要有两个方面,一是在注释上解释接口位置以及对应的数据内容,见下:
1227195-20171009202038184-1914586191.png
第二是用注释进行区域划分,见下:
1227195-20171009202110777-1040024715.png


匹配结果

unlucky_students

1227195-20171010011346168-490688893.png

admit

1227195-20171010011414840-1066218592.png

unlucky_departments

1227195-20171010011436652-923648806.png
我个人对我们的结果并不满意,匹配的算法还存在一些BUG,出于时间关系来不及做更周全的修改,之后仍需要进一步改进。


个人总结

这次很惭愧因为我的原因耽误的许多我们讨论的时间,因为国庆已经很早就与家人定了外出计划,所以期间我只能尽量找空闲时间进行代码写作,也因此我们的进度比较缓慢,大约到昨天回到福州才开始全身心投入工作,在此要先向我的队友道个歉。尽管我们做的时间相较于其他结对小组不长,但这中间我们结对面对面进行讨论,交换代码意见,然后分工完成任务的过程还是比较顺利的,杜同学关于匹配的思路给了我许多启发,我们也就JSON这个我们都不懂的数据交换格式做了许多探讨、共同查找资料,学习到了很多又是前所未有的知识,我觉得几天的辛苦也相当值得。但是很遗憾我们目前还是对于JSON的具体C++上实现有许多困难得不到解决,因此在实际程序上的输入输出或许与题目要求有偏差或错误,所以接下来我也会花更多时间与他去学习一下这个全新的知识,争取将来能熟练的运用到编程中。


转载于:https://www.cnblogs.com/iwayney/p/7641809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值