• 结对第二次作业


    结对第二次作业

    成员

    • 媛 528
    • 佳莹 516

    github

    设计说明

    内部实现设计
    类图

    匹配算法
    1.思路分析
    我们将社团录取社员的影响因素列举出来,分别是:绩点、志愿数(填报志愿越多得分越低)、Tag匹配度、时间匹配度共四个影响因素。
    因为四个因素的对于录取的影响强度不同,我们准备为个因素分配不同的权重值用来计算学生的最后得分。参考了这篇文章,我们最终选定第三种对偶比较法来分配权重,结果为:绩点:0.18 志愿数:0.25 Tag匹配度:0.32 时间匹配度:0.25.
    每个社团加权计算出报名学生的得分后,依据得分高低录取学生,得到最终的录取列表。
    2.流程图

    评价算法
    算法是按照比较公平的方式决定录用那些学生,对于社团来说,有助于招收到更适合自己的成员,但对于学生来说,会有一大部分人最终无法成功加入社团且测试结果表明,学生总数越多,最后无社团人数占比越大,这是一个很大的不足的地方。

    关键代码
    按照定好的公式算出得分并放入列表
    void calculate(Students stu)
    {
    int i = 0;
    for (vector::iterator it_s = stu.aspi.begin(); it_s != stu.aspi.end(); ++it_s)
    {
    double sum = 0;
    int k;
    k = get_department(*it_s);

    	sum += stu.gpa * 0.18;   
    	sum += point_num_aspi(stu) * 0.25;	
    
    	sum += point_num_tag(stu ,depart[k]) * 0.32;	
    	
    	sum += stu_dep_time(stu ,depart[k]) * (-3) * 0.25;		
    	
    	depart[k].csm_list.push_back(sum);
    	depart[k].ID_list.push_back(stu.stuID);
    	depart[k].num_mem += 1;
    }		
    

    }

    运行结果

    s200-d20-in.json

    S200-d20-out.json

  • 相关阅读:
    thinkphp5ajax分頁&&搜索後分頁
    yii框架多文件上傳
    Redis:Linux安装与使用
    JSP使用Struts2标签库报错
    Dubbo:3
    Dubbo:1
    Dubbo:2
    zookeeper:master选举
    zookeeper:分布式锁简单实现(JavaApi)
    zookeeper:Curator操作节点
  • 原文地址:https://www.cnblogs.com/su-yuan/p/7673876.html
Copyright © 2020-2023  润新知