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

add(student: Freshman)[源代码]
check_better()[源代码]

计算宿舍得分,应用于交换优化场景。 宿舍计分项包括: 存在来自同一省份的同学减分,并针对北京地区特别操作 专业是否平均分配:2文2理 > 4文/4理 > 文理1:3 性格分配是否合理:尽量一个寝室不要多于两个内向 是否愿意和留学生/交换生同宿舍 衡量能接受的最低空调温度接近程度,计算方差,特别计算能否接受整夜开空调的统一程度 衡量起床时间、睡眠时间的接近程度,计算方差 睡眠困扰同学尽量远离盥洗室和楼梯口(用 Dormitory.noisy 衡量) 宿舍环境(尽量保证一个宿舍整洁条理的有2人/随性就好的有2人) 对室友期待(一个寝室尽量不要全部专注学习/全面发展) 在手动分配前,尽量保证宿舍是4人或3人的

check_must()[源代码]

一个宿舍必须满足的条件: 宿舍里的同学至少来自3个不同的省份 来自同一省份的2人不能来自同一所高中

class dormitory.management.commands.assign_dormitory.Freshman(data)[源代码]

基类:object

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下

dormitory.management.commands.assign_dormitory.read_dorm() tuple[list[Dormitory], list[Dormitory]][源代码]

返回两个Dormitory的list,分别代表男寝和女寝

dormitory.management.commands.assign_dormitory.read_info() list[Freshman][源代码]

返回一个Freshman的list