本页目录
全部文档
排座策略配置
排座策略是 SeatFlow 的核心功能。你可以通过配置不同的策略,让系统按照你的需求自动安排学生座位。
点击左侧导航栏的「策略配置」进入。

什么是排座策略?
排座策略就是一条条"规则"。系统会按优先级顺序逐一执行这些规则,每一条规则负责安排一部分学生的座位。优先级越高的策略越先执行,也就越优先选择座位。
每条策略都可以单独启用或禁用,也可以调整优先级顺序。
策略执行顺序(管道)
SeatFlow 采用 Fill-in-Order(按序填充)管道模型。系统按照优先级从高到低的顺序执行策略:
| 顺序 | 策略名称 | 优先级 | 类型 | 默认状态 |
|---|---|---|---|---|
| 第 1 | 固定座位 | 100 | 独立 | 已启用 |
| 第 2 | 前排轮换 | 50 | 独立 | 已禁用 |
| 第 3 | 随机填充 | 1 | 独立(宿主) | 已启用 |
| ├ 同桌分组 | 50(上下文) | 依赖 | 已启用 | |
| ├ 性别限制座位 | 45(上下文) | 依赖 | 已禁用 | |
| └ 同桌不重复 | 40(上下文) | 依赖 | 已禁用 | |
| 第 4 | 碎片整理 | 0 | 独立 | 已禁用 |
两种类型说明:
- 独立策略:由策略管道统一调度,按优先级顺序依次执行
- 依赖策略:在随机填充内部执行,不单独出现在管道顺序中。在右侧策略列表中以缩进形式显示在随机填充下方
优先级数值越大越先执行(100 最高,0 最低)。高优先级策略有"优先选择权"。
第一条:固定座位(FixedSeat)
优先级:100 | 默认状态:已启用
作用
将指定的学生强制安排到指定的座位。这是优先级最高的策略,固定好的座位不受其他任何策略影响。
适用场景
- 视力不好的学生需要坐前排固定位置
- 需要隔离的学生安排在角落
- 班干部或课代表固定在某位置便于收发作业
如何配置
- 在策略列表中选中「固定座位」
- 在「配置块」区域,每一行配置一个固定座位:
- 选择学生:从下拉列表中选择一名学生
- 选择座位:选择要固定的位置(行、列或环、角度)
- 点击「保存配置」

工作原理
- 执行时,会将选中的学生分配到指定座位
- 该座位会被标记为「已固定」,后续所有策略都会跳过这个座位
- 同一个学生不能出现在多行配置中,系统会自动限制
第二条:前排轮换(FrontRowRotation)
优先级:50 | 默认状态:已禁用
作用
将"需要前排"的学生优先安排到前排座位。已经坐过前排的学生,下次排座时会自动轮换,让其他人也有机会坐前排。
适用场景
- 需要定期轮换前排座位,公平分配
- 身高较矮或视力不好的学生需要坐前排
如何配置
在编辑区可以设置以下参数:
| 参数 | 说明 | 默认值 | 范围 |
|---|---|---|---|
| 前排需求加分 | 标记"需要前排"的学生的额外分数,越高越优先 | 1000 | 0 - 10000 |
| 历史权重 | 已经坐过前排的学生每次扣减的分数,越大越不易重复坐前排 | 10 | 0 - 100 |
| 前排行数 | 从第 1 排开始,多少行算作前排 | 1 | 1 - 10 |
| 参考历史快照个数 | 查看过去多少次排座记录来避免重复 | 10 | 1 - 30 |
工作原理
- 先检查哪些学生标记了「需要前排」
- 为每个学生计算一个分数 = (前排加分 × 需要标记) - (历史惩罚权重 × 最近坐前排的次数)
- 分数高的学生优先分配到前排座位
- 同一排内打乱顺序(Fisher-Yates 洗牌算法),避免总是同一个人坐同一个位置
如果勾选了「需要前排」的学生超过前排座位数,系统会发出警告,部分学生将无法分配到前排。
第三条:随机填充(RandomFill)
优先级:1 | 默认状态:已启用
作用
将剩余未分配的学生随机填充到空座位中。这是兜底策略,几乎所有排座方案都会用到它。
特点
- 本身不做特殊安排,就是随机填满
- 但它内部会执行 3 条依赖策略(同桌分组、性别限制座位、同桌不重复)
- 尽量先安排有特殊需求(如同桌分组)的学生,减少重试次数
工作原理
- 获取所有空座位
- 先从"有特殊需求"的学生开始安排
- 每安排一个学生,就依次执行 3 条依赖策略进行检查
- 如果某条依赖策略认为不合适,就重新选一个座位再试
- 尝试一定次数后如果仍不合适,会强制分配并给出警告
参数
随机填充本身没有参数,它的行为通过配置其内部的依赖策略来调整。
依赖策略一:同桌分组(DeskMate)
上下文优先级:50 | 默认状态:已启用
作用
将指定的学生分到同一张桌子上,让他们成为同桌。
适用场景
- 学习小组坐在一起方便讨论
- 需要协作完成课堂活动的学生坐同桌
- 优生带后进生,安排坐同桌
如何配置
- 在策略列表中展开「随机填充」,选中「同桌分组」
- 在「配置块」区域,每一行配置一组同桌:
- 每行的学生选择器数量由场地的每桌人数自动决定(双人桌显示 2 个选择器,三人桌显示 3 个)
- 从下拉列表中依次选择学生
- 点击「保存配置」

工作原理
- 当随机填充要安排某个学生时,检查该学生是否属于某个同桌组
- 如果是,就尝试把同组的学生连续安排在同一排的相邻座位
- 如果目标座位周围没有足够的相邻空位,会尝试腾挪(但不会动固定座位的学生)
- 如果实在不够位置,能安排几个算几个,并给出警告
同桌分组只会在同一排的相邻座位上进行,不会跨行安排。
注意点
- 同桌组的配置是全局的,对所有学生数据集和场地都有效(除非指定了具体的数据集或场地)
- 同一学生不能在多组中重复出现
依赖策略二:性别限制座位(GenderRestrictedSeat)
上下文优先级:45 | 默认状态:已禁用
作用
限制某些座位只能分配给特定性别的学生。
适用场景
- 需要男女分坐的考场或活动
- 固定男生列、女生列等
如何配置
- 在策略列表中展开「随机填充」,选中「性别限制座位」
- 在「配置块」区域,每一行配置一个限制:
- 选择座位:选择要限制的座位
- 选择性别:选择允许的性别(男或女)
- 点击「保存配置」

工作原理
- 当随机填充要安排学生到某座位时,检查该座位是否有性别限制
- 如果匹配:正常分配
- 如果不匹配:优先尝试将该学生安排到其他可用且匹配性别的限制座位(重定向,不算重试失败)
- 如果没有合适的重定向目标:请求重新选座(重试)
- 重试次数耗尽后:强制分配并给出警告
依赖策略三:同桌不重复(NoRepeatDeskMate)
上下文优先级:40 | 默认状态:已禁用
作用
防止曾经坐过同桌的学生再次相邻就座,促进班级内更多互动。
适用场景
- 希望学生每次排座都有不同的同桌
- 促进全班同学之间的交流
参数
| 参数 | 说明 | 默认值 | 范围 |
|---|---|---|---|
| 参考历史快照个数 | 查看过去多少次排座的记录来避免重复同桌 | 10 | 1 - 30 |
工作原理
- 从已保存的排座快照中,查找哪些学生曾经是同桌(相邻就座)
- 当随机填充要安排学生时,检查目标座位的相邻座位是否坐着过去的同桌
- 如果是重复同桌,请求重新选座(重试)
- 重试次数耗尽后,强制分配并给出警告
此策略不干预同桌分组策略的安排。也就是说,如果用户在同桌分组中明确指定了某组学生坐一起,同桌不重复策略不会拆散他们。
第四条:碎片整理(Defrag)
优先级:0 | 默认状态:已禁用
作用
在所有策略执行完毕后,将后排没有特殊需求的学生前移,填补前排的空位,让教室看起来更整齐紧凑。
适用场景
- 学生人数少于座位数时,防止前排空着、后排坐着人
- 希望学生尽量靠前坐
工作原理
- 扫描所有座位,找到空位
- 查看空位后方是否有已安排的学生
- 如果后方的学生没有特殊约束(不是固定座位、不在同桌分组中)
- 将该学生前移到空位
- 可以跨列移动(不受列限制)
注意事项
重要警告:碎片整理可能导致前序策略(如同桌分组、同桌不重复)的安排结果失效。例如,A 和 B 本来被同桌分组安排在一起,碎片整理可能会把他们拆开。如果不需要这个功能,保持默认禁用即可。
最佳实践
碎片整理的必要性取决于学生人数与座位数的匹配程度。如果:
- 座位数和学生数接近:基本不需要碎片整理
- 学生数明显少于座位数:可以考虑启用碎片整理,让座位更紧凑
配置操作说明
启用/禁用策略
- 在左侧策略列表中选中一条策略
- 在右侧详情面板中,勾选或取消勾选「已启用」选项
- 点击「保存当前配置」
调整优先级
- 选中一条策略
- 在详情面板中修改「优先级」数值
- 也可以使用策略列表中的「上移」和「下移」按钮快速调整
优先级冲突:如果两条策略设置了相同的优先级,保存时会收到冲突警告。系统会自动调整其中一条的优先级以解决冲突。
编辑参数
对于有参数的策略(前排轮换、同桌不重复),在详情面板中直接修改参数值,点击「保存当前配置」即可。
编辑配置块
对于有配置块的策略(固定座位、同桌分组、性别限制座位),在「配置块」区域:
- 选择适用的数据集(学生名单)和场地
- 如果只选数据集不选场地,配置对所有场地生效
- 如果只选场地不选数据集,配置对所有数据集生效
- 两者都选,仅对特定组合生效
- 添加或修改配置行
- 每行编辑完成后会自动保存
重置为默认值
点击「恢复默认」按钮,可将当前策略的所有配置重置为出厂设置。
批量保存
点击底部的「保存全部」按钮,一次性保存所有策略的修改。
离开页面
如果还有未保存的修改,离开时系统会询问是否保存。
策略执行示意图
开始执行
│
▼
固定座位(优先级 100)───── 锁定指定学生到指定座位
│
▼
前排轮换(优先级 50)────── 将需要前排的学生安排到前排
│
▼
随机填充(优先级 1)─────── 核心循环
│ ├─ 优先安排有同桌组的学生
│ ├─ 为每个拟分配执行依赖策略
│ │ ├─ 同桌分组(优先级 50)→ 是否需同桌?
│ │ ├─ 性别限制(优先级 45)→ 性别是否匹配?
│ │ └─ 同桌不重复(优先级 40)→ 是否曾同桌?
│ └─ 合适则分配,不合适则重试
│
▼
碎片整理(优先级 0)─────── 后排学生前移,填补空位(可选)
│
▼
输出最终座位表
下一步
策略配置完成后,前往座位安排页面生成排座结果。