• 结对作业——第二次作业


    本次作业deadline: 2017-10-09 22:00


    作业需求

    编码实现一个部门与学生的智能匹配的程序。
    提供输入包括:

    • 20个部门
      • 部门编号(唯一确定值),字符;
      • 各部门需要学生数的要求的上限,单个,数值,在[10,15]内;
      • 各部门的特点标签,多个(两个以上),字符;
      • 各部门的常规活动时间段,多个(两个以上),字符。
    • 300个学生
      • 学生编号(唯一确定值),字符;
      • 学生空闲时间段,多个(两个以上),字符;
      • 兴趣标签,多个(两个以上),字符(学生的兴趣标签一定是所有部门特点标签其中的一个
      • 每个学生有不多于5个的部门意愿(助教测试时测试数据中部门意愿可能会出现空缺,非空缺的部分一定是部门编号中的一个,并按照优先级从高到底的顺序排序)。

    实现一个智能自动分配算法,根据输入信息,输出部门和学生间的匹配信息(一个学生可以确认多个他所申请的部门,一个部门可以分配少于等于其要求的学生数的学生) 及 未被分配到学生的部门未被部门选中的学生


    要求

    • 1、构造输入数据的生成程序,实现可定制的输入数据(输入数据是指 input_data.txt)。在博客中举一个样例(贴出关键数据即可),并说明生成数据的所考虑因素
    • 2、需要为智能匹配算法确立几条分配或排序原则,比如 兴趣优先、或活动时间优先、或其他等等,请你们结对讨论确定。
    • 3、给出结果分析,分析自己的输出是否达到算法所达到的指标。关于相关指标条件,每个组感受应当不同,请把想法写在博客中。
    • 4、代码需要遵循一定的规范,在博客中描述结对团队遵循的代码规范,并截取部分关键代码佐证说明。
    • 5、本次结对项目实现使用程序语言不做具体限制,但需要能生成Windows平台的可执行文件。C/C++/C#编译后即可生成,其他语言可以使用打包工具把依赖打包上传,比如 exe4j。但注意,本次没有重测机会,请确保你项目的所有依赖文件都上传到了Github中。为确保没有问题,最好在无相应语言环境的机器上克隆项目并进行测试。
    • 6、代码提交在GitHub上,并给GitHub链接
    • 7、两个人发布独立博客,包含上述内容的描述,同时包含结对感受,以及两个人对彼此结对中的闪光点或建议的分享。项目的测试分数两人共享,博客的分数各自独立。博客可以有共享的架构设计图等,但不可雷同,否则视作抄袭
    • 8、助教将收集各组成员的程序,并基于一组特殊数据进行测试(该测试数据遵循下面的输入规范,该数据由助教根据真实场景讨论得出,作业评定时会给出,事先不对外公布)。测试结果基于全部同学的输出,助教将统计各组同学对于各个部门录取相关人员的频率,得出一组部门与成员的录取关系数据(该数据遵循下面的输出规范),并与各组同学的数据作对比,最终评判同学们的测试结果。

    测试须知

    测试机为Windows环境,所以提交到Github上的项目均需要建立一个名字为BIN的文件夹,里面必须含有可执行文件(以exe为后缀)与相关的依赖库,请注意以下两点:

    • 确保可执行文件的名字命名为 test.exe
    • 确保输出的文件 output_data.txt(文件名固定) 与可执行文件在同一目录下,并遵守下述输出格式的约定,生成文件时使用相对路径("./output_data.txt"即可,无需考虑太多)。
    • 测试时助教将提供与可执行文件同目录的输入文件 input_data.txt,其格式满足下述的输入输出格式约定。
      一个示例组织目录如下所示:
    / Project(工程名字自行指定即可,放代码即可)
         / 数据生成程序
         / 匹配程序
         / *评估程序(评估程序可有可无,其输入为input_data.txt和output_data.txt,程序用于评估该匹配算法的效果)
    / BIN
         / Lib.dll (exe运行需要的动态链接库文件,可以没有,或者其他依赖文件,也可以是一个文件夹存储,形式自定)
         / test.exe
         / output_data.txt (运行exe后生成的文件)
    

    下面是一个示例:https://github.com/peiqiaoWang/department_student

    助教在测试时,将以命令行运行可执行文件的方式进行批量测试。用例:

    test.exe 读取当前目录下的input_data.txt,输出对应的结果的output_data.txt


    博文规范

    1.给出结对成员的学号及姓名

    2.首页给出项目的Github链接。

    3.贴出你们生成的一组最“好”的数据(这里的数据特指 input_data.txt,数据给出对应链接即可),并详细说明"数据生成"程序的原理以及你们所考虑的因素。(15')

    4.详细说明你们数据建模及匹配程序的思路及实现方式。(30')

    5.你们在代码遵循了一定的规范,在博客中描述结对团队遵循的代码规范,并截取部分关键代码佐证说明。(5')

    6.结果评估。对于程序的匹配结果,你们是否满意?请对你们程序处理结果进行分析。(20')

    7.已经尝试过结对编码,你一定很多话要说。请发表结对感受,以及两个人对彼此结对中的闪光点或建议的分享。(10‘)


    注意事项

    1.请务必遵循测试标准,交之前一定要反复检查,如非测试程序导致测试失败的,一律不再重测!!!

    2.说明:仅就上述内容,实现一个单独的程序模块。不要和之前的原型整合到一个博客中。

    3.本次作业满分为100分,其中博客分80分,测试分20分,请按点答题。


    输入输出格式约定

    输入

    json格式

    {
        "students": [
            {
                "free_time": [
                    "Mon.16:00~18:00",
                    "Mon.12:00~14:00",
                    "Tues.10:00~12:00",
                    "Wed.18:00~20:00",
                    "Fri.20:00~22:00",
                    "Fri.12:00~14:00",
                    "Sat.8:00~10:00",
                    "Sat.18:00~20:00",
                    "Sat.14:00~16:00",
                    "Sun.16:00~18:00",
                    "Sun.14:00~16:00",
                    "Sun.20:00~22:00"
                ],
                "student_no": "031502001",
                "applications_department": [
                    "D007",
                    "D010",
                    "D012",
                    "D005",
                    "D013"
                ],
                "tags": [
                    "reading",
                    "programming"
                ]
            },
            ...
        ],
        "departments": [
            {
                "event_schedules": [
                    "Sun.8:00~9:00"
                ],
                "member_limit": 14,
                "department_no": "D001",
                "tags": [
                    "film",
                    "English",
                    "reading",
                    "music",
                    "dance",
                    "basketball",
                    "chess"
                ]
            },
            ...
        ]
    }
    

    输出

    json

    {
        "unlucky_student": [
            "031502001",
            "031502002",
            "031502003",
        ...
        ],
        "admitted": [
            {
                "member": [
                    "031502141"
                ],
                "department_no": "D001"
            },
        ...
        ],
        "unlucky_department": [
            "D004",
            "D005"
        ]
    }
    
  • 相关阅读:
    hdu2438 三分
    hdu3786 找出直系亲属 水题
    hdu3786 找出直系亲属 水题
    hdu4561 连续最大积
    hdu4561 连续最大积
    hdu4604 不错的子序列问题
    hdu4604 不错的子序列问题
    hdu4450 不错的贪心
    hdu1722 切蛋糕
    hdu3768 spfa+全排列
  • 原文地址:https://www.cnblogs.com/easteast/p/7604534.html
Copyright © 2020-2023  润新知