dormitory.management.commands.assign_dormitory module¶
- class dormitory.management.commands.assign_dormitory.Command(stdout=None, stderr=None, no_color=False, force_color=False)[源代码]¶
基类:
BaseCommand
- handle(*args, **options)[源代码]¶
The actual logic of the command. Subclasses must implement this method.
- help = 'Assign dormitory.'¶
- class dormitory.management.commands.assign_dormitory.Dormitory(id: int, remain: int, is_noisy: bool)[源代码]¶
基类:
object
- check_better()[源代码]¶
计算宿舍得分,应用于交换优化场景。 宿舍计分项包括: 存在来自同一省份的同学减分,并针对北京地区特别操作 专业是否平均分配:2文2理 > 4文/4理 > 文理1:3 性格分配是否合理:尽量一个寝室不要多于两个内向 是否愿意和留学生/交换生同宿舍 衡量能接受的最低空调温度接近程度,计算方差,特别计算能否接受整夜开空调的统一程度 衡量起床时间、睡眠时间的接近程度,计算方差 睡眠困扰同学尽量远离盥洗室和楼梯口(用 Dormitory.noisy 衡量) 宿舍环境(尽量保证一个宿舍整洁条理的有2人/随性就好的有2人) 对室友期待(一个寝室尽量不要全部专注学习/全面发展) 在手动分配前,尽量保证宿舍是4人或3人的
- dormitory.management.commands.assign_dormitory.assign_dorm() list[Dormitory] [源代码]¶
分配宿舍算法: 执行若干次(250000次)随机交换(选取任一宿舍,选取任一床位), 衡量交换前后两宿舍得分之和,使得总得分最大化
- dormitory.management.commands.assign_dormitory.out_as_excel(dorm_result: list[Dormitory])[源代码]¶
将结果导出为excel文件,存储在reference/dorm_assigned.xlsx下