結對作業——第二次作業


本次作業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"
    ]
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM