跳转到主内容

详解 7 条内置排座策略——固定座位、前排轮换、随机填充、同桌分组、性别限制、避免重复同桌、碎片整理

排座策略配置

排座策略是 SeatFlow 的核心功能。你可以通过配置不同的策略,让系统按照你的需求自动安排学生座位。

点击左侧导航栏的「策略配置」进入。

截图:策略配置页面 — 左侧策略列表,右侧当前策略的详细配置


什么是排座策略?

排座策略就是一条条"规则"。系统会按优先级顺序逐一执行这些规则,每一条规则负责安排一部分学生的座位。优先级越高的策略越先执行,也就越优先选择座位。

每条策略都可以单独启用或禁用,也可以调整优先级顺序。


策略执行顺序(管道)

SeatFlow 采用 Fill-in-Order(按序填充)管道模型。系统按照优先级从高到低的顺序执行策略:

顺序 策略名称 优先级 类型 默认状态
第 1 固定座位 100 独立 已启用
第 2 前排轮换 50 独立 已禁用
第 3 随机填充 1 独立(宿主) 已启用
├ 同桌分组 50(上下文) 依赖 已启用
├ 性别限制座位 45(上下文) 依赖 已禁用
└ 同桌不重复 40(上下文) 依赖 已禁用
第 4 碎片整理 0 独立 已禁用

两种类型说明

  • 独立策略:由策略管道统一调度,按优先级顺序依次执行
  • 依赖策略:在随机填充内部执行,不单独出现在管道顺序中。在右侧策略列表中以缩进形式显示在随机填充下方

优先级数值越大越先执行(100 最高,0 最低)。高优先级策略有"优先选择权"。


第一条:固定座位(FixedSeat)

优先级:100 | 默认状态:已启用

作用

将指定的学生强制安排到指定的座位。这是优先级最高的策略,固定好的座位不受其他任何策略影响。

适用场景

  • 视力不好的学生需要坐前排固定位置
  • 需要隔离的学生安排在角落
  • 班干部或课代表固定在某位置便于收发作业

如何配置

  1. 在策略列表中选中「固定座位」
  2. 在「配置块」区域,每一行配置一个固定座位:
  • 选择学生:从下拉列表中选择一名学生
  • 选择座位:选择要固定的位置(行、列或环、角度)
  1. 点击「保存配置」

截图:固定座位配置 — 学生选择器和座位选择器的配对行

工作原理

  • 执行时,会将选中的学生分配到指定座位
  • 该座位会被标记为「已固定」,后续所有策略都会跳过这个座位
  • 同一个学生不能出现在多行配置中,系统会自动限制

第二条:前排轮换(FrontRowRotation)

优先级:50 | 默认状态:已禁用

作用

将"需要前排"的学生优先安排到前排座位。已经坐过前排的学生,下次排座时会自动轮换,让其他人也有机会坐前排。

适用场景

  • 需要定期轮换前排座位,公平分配
  • 身高较矮或视力不好的学生需要坐前排

如何配置

在编辑区可以设置以下参数:

参数 说明 默认值 范围
前排需求加分 标记"需要前排"的学生的额外分数,越高越优先 1000 0 - 10000
历史权重 已经坐过前排的学生每次扣减的分数,越大越不易重复坐前排 10 0 - 100
前排行数 从第 1 排开始,多少行算作前排 1 1 - 10
参考历史快照个数 查看过去多少次排座记录来避免重复 10 1 - 30

工作原理

  • 先检查哪些学生标记了「需要前排」
  • 为每个学生计算一个分数 = (前排加分 × 需要标记) - (历史惩罚权重 × 最近坐前排的次数)
  • 分数高的学生优先分配到前排座位
  • 同一排内打乱顺序(Fisher-Yates 洗牌算法),避免总是同一个人坐同一个位置

如果勾选了「需要前排」的学生超过前排座位数,系统会发出警告,部分学生将无法分配到前排。


第三条:随机填充(RandomFill)

优先级:1 | 默认状态:已启用

作用

将剩余未分配的学生随机填充到空座位中。这是兜底策略,几乎所有排座方案都会用到它。

特点

  • 本身不做特殊安排,就是随机填满
  • 但它内部会执行 3 条依赖策略(同桌分组、性别限制座位、同桌不重复)
  • 尽量先安排有特殊需求(如同桌分组)的学生,减少重试次数

工作原理

  1. 获取所有空座位
  2. 先从"有特殊需求"的学生开始安排
  3. 每安排一个学生,就依次执行 3 条依赖策略进行检查
  4. 如果某条依赖策略认为不合适,就重新选一个座位再试
  5. 尝试一定次数后如果仍不合适,会强制分配并给出警告

参数

随机填充本身没有参数,它的行为通过配置其内部的依赖策略来调整。


依赖策略一:同桌分组(DeskMate)

上下文优先级:50 | 默认状态:已启用

作用

将指定的学生分到同一张桌子上,让他们成为同桌。

适用场景

  • 学习小组坐在一起方便讨论
  • 需要协作完成课堂活动的学生坐同桌
  • 优生带后进生,安排坐同桌

如何配置

  1. 在策略列表中展开「随机填充」,选中「同桌分组」
  2. 在「配置块」区域,每一行配置一组同桌:
  • 每行的学生选择器数量由场地的每桌人数自动决定(双人桌显示 2 个选择器,三人桌显示 3 个)
  • 从下拉列表中依次选择学生
  1. 点击「保存配置」

截图:同桌分组配置 — 每组显示多个学生选择器

工作原理

  • 当随机填充要安排某个学生时,检查该学生是否属于某个同桌组
  • 如果是,就尝试把同组的学生连续安排在同一排的相邻座位
  • 如果目标座位周围没有足够的相邻空位,会尝试腾挪(但不会动固定座位的学生)
  • 如果实在不够位置,能安排几个算几个,并给出警告

同桌分组只会在同一排的相邻座位上进行,不会跨行安排。

注意点

  • 同桌组的配置是全局的,对所有学生数据集和场地都有效(除非指定了具体的数据集或场地)
  • 同一学生不能在多组中重复出现

依赖策略二:性别限制座位(GenderRestrictedSeat)

上下文优先级:45 | 默认状态:已禁用

作用

限制某些座位只能分配给特定性别的学生。

适用场景

  • 需要男女分坐的考场或活动
  • 固定男生列、女生列等

如何配置

  1. 在策略列表中展开「随机填充」,选中「性别限制座位」
  2. 在「配置块」区域,每一行配置一个限制:
  • 选择座位:选择要限制的座位
  • 选择性别:选择允许的性别(男或女)
  1. 点击「保存配置」

截图:性别限制座位配置 — 座位选择器和性别选择器的配对行

工作原理

  • 当随机填充要安排学生到某座位时,检查该座位是否有性别限制
  • 如果匹配:正常分配
  • 如果不匹配:优先尝试将该学生安排到其他可用且匹配性别的限制座位(重定向,不算重试失败)
  • 如果没有合适的重定向目标:请求重新选座(重试)
  • 重试次数耗尽后:强制分配并给出警告

依赖策略三:同桌不重复(NoRepeatDeskMate)

上下文优先级:40 | 默认状态:已禁用

作用

防止曾经坐过同桌的学生再次相邻就座,促进班级内更多互动。

适用场景

  • 希望学生每次排座都有不同的同桌
  • 促进全班同学之间的交流

参数

参数 说明 默认值 范围
参考历史快照个数 查看过去多少次排座的记录来避免重复同桌 10 1 - 30

工作原理

  • 从已保存的排座快照中,查找哪些学生曾经是同桌(相邻就座)
  • 当随机填充要安排学生时,检查目标座位的相邻座位是否坐着过去的同桌
  • 如果是重复同桌,请求重新选座(重试)
  • 重试次数耗尽后,强制分配并给出警告

此策略不干预同桌分组策略的安排。也就是说,如果用户在同桌分组中明确指定了某组学生坐一起,同桌不重复策略不会拆散他们。


第四条:碎片整理(Defrag)

优先级:0 | 默认状态:已禁用

作用

在所有策略执行完毕后,将后排没有特殊需求的学生前移,填补前排的空位,让教室看起来更整齐紧凑。

适用场景

  • 学生人数少于座位数时,防止前排空着、后排坐着人
  • 希望学生尽量靠前坐

工作原理

  1. 扫描所有座位,找到空位
  2. 查看空位后方是否有已安排的学生
  3. 如果后方的学生没有特殊约束(不是固定座位、不在同桌分组中)
  4. 将该学生前移到空位
  5. 可以跨列移动(不受列限制)

注意事项

重要警告:碎片整理可能导致前序策略(如同桌分组、同桌不重复)的安排结果失效。例如,A 和 B 本来被同桌分组安排在一起,碎片整理可能会把他们拆开。如果不需要这个功能,保持默认禁用即可。

最佳实践

碎片整理的必要性取决于学生人数与座位数的匹配程度。如果:

  • 座位数和学生数接近:基本不需要碎片整理
  • 学生数明显少于座位数:可以考虑启用碎片整理,让座位更紧凑

配置操作说明

启用/禁用策略

  1. 在左侧策略列表中选中一条策略
  2. 在右侧详情面板中,勾选或取消勾选「已启用」选项
  3. 点击「保存当前配置」

调整优先级

  1. 选中一条策略
  2. 在详情面板中修改「优先级」数值
  3. 也可以使用策略列表中的「上移」和「下移」按钮快速调整

优先级冲突:如果两条策略设置了相同的优先级,保存时会收到冲突警告。系统会自动调整其中一条的优先级以解决冲突。

编辑参数

对于有参数的策略(前排轮换、同桌不重复),在详情面板中直接修改参数值,点击「保存当前配置」即可。

编辑配置块

对于有配置块的策略(固定座位、同桌分组、性别限制座位),在「配置块」区域:

  1. 选择适用的数据集(学生名单)和场地
  • 如果只选数据集不选场地,配置对所有场地生效
  • 如果只选场地不选数据集,配置对所有数据集生效
  • 两者都选,仅对特定组合生效
  1. 添加或修改配置行
  2. 每行编辑完成后会自动保存

重置为默认值

点击「恢复默认」按钮,可将当前策略的所有配置重置为出厂设置。

批量保存

点击底部的「保存全部」按钮,一次性保存所有策略的修改。

离开页面

如果还有未保存的修改,离开时系统会询问是否保存。


策略执行示意图

开始执行
 │
 ▼
固定座位(优先级 100)───── 锁定指定学生到指定座位
 │
 ▼
前排轮换(优先级 50)────── 将需要前排的学生安排到前排
 │
 ▼
随机填充(优先级 1)─────── 核心循环
 │ ├─ 优先安排有同桌组的学生
 │ ├─ 为每个拟分配执行依赖策略
 │ │ ├─ 同桌分组(优先级 50)→ 是否需同桌?
 │ │ ├─ 性别限制(优先级 45)→ 性别是否匹配?
 │ │ └─ 同桌不重复(优先级 40)→ 是否曾同桌?
 │ └─ 合适则分配,不合适则重试
 │
 ▼
碎片整理(优先级 0)─────── 后排学生前移,填补空位(可选)
 │
 ▼
输出最终座位表

下一步

策略配置完成后,前往座位安排页面生成排座结果。