最佳学生座位安排的算法

2023-12-06

假设我需要将 n=30 名学生分为 2 到 6 人一组,然后我从每个学生那里收集以下偏好数据:

学生姓名: Tom

喜欢和以下人坐在一起:吉米·埃里克

不喜欢和以下人坐在一起:约翰、保罗、林戈、乔治

这意味着他们对整个班级中他们没有提到的任何其他学生都保持中立。

我如何才能最好地对许多不同/随机分组安排进行大量模拟,以便能够确定每个安排的分数,然后通过它我可以选择“最佳”分数/安排?

或者,是否有任何其他方法可以计算出满足所有提供的约束的解决方案?

我想要一种通用方法,可以每年在不同的班级规模上重复使用,但在每次模拟运行中,应用以下常量和变量:

常数:学生总数、学生偏好

变量:小组规模、学生分组、要测试的不同小组安排/迭代的数量

预先感谢您提供的任何帮助/建议/指示。


我相信你可以将其表述为一个明确的数学优化问题。

定义二元决策变量:

x(p,g) = 1 if person p is assigned to group g
         0 otherwise

I used:

enter image description here

我使用了包含 28 个人的数据集和您的偏好矩阵(包含 -1,+1,0 元素)。对于组,我使用了 4 组 6 人组和 1 组 4 人组。解决方案如下所示:

----     80 PARAMETER solution  using MIQP model

               group1      group2      group3      group4      group5

aimee               1
amber-la                                                1
amber-le                                                            1
andrina             1
catelyn-t                                   1
charlie                                                 1
charlotte                                   1
cory                            1
daniel                          1
ellie               1
ellis               1
eve                                         1
grace-c                                                 1
grace-g                                                 1
holly                                                   1
jack                            1
jade                                                                1
james                           1
kadie                                       1
kieran                                                              1
kristiana                                   1
lily                                                                1
luke                            1
naz                 1
nibah                                       1
niko                            1
wiki                1
zeina                                                   1
COUNT               6           6           6           6           4

Notes:

  • 该模型可以线性化,因此可以输入标准 MIP 求解器
  • 我直接将其作为 MIQP 模型求解(实际上求解器将模型重新表述为 MIP)。该模型在几秒钟内就解决了。
  • 也许我们需要添加额外的逻辑来确保一个人不会得到一项非常糟糕的任务。我们在这里只优化总和。这个总金额可能会让个人得到一笔糟糕的交易。在模型中考虑这一点是一个有趣的练习。有一些有趣的权衡。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最佳学生座位安排的算法 的相关文章

  • 为什么使用 no-op 来填补 paxos 事件之间的空白是合法的?

    我正在学习Paxos算法 http research microsoft com en us um people lamport pubs paxos simple pdf http research microsoft com en us
  • 读取4个点的坐标。他们做一个正方形吗?

    我计算点之间的距离 如果距离相等 则点构成一个正方形 否则不 仅当我按以下顺序读取坐标 A x y B x y C x y D x y 或相反时 我的代码才有效 但是如果我这样读 例如 A x y B x y D x y C x y 它将不
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • Python 将字符串组合成尽可能短的字符串?

    如果我有一个字符串列表 我想将它们组合成一个具有重叠字符的字符串 如果没有剩余的重叠字符串 请将其添加到末尾 这是一个过于简化的版本 input one two output twone 我正在寻找一种方法来对输入列表中的任意数量的字符串执
  • 如何以最小化每个分区总和的最大值的方式对整数数组进行分区?

    输入是正整数或空整数的数组 A 和另一个整数 K 我们应该将 A 划分为 K 个连续元素块 我所说的 划分 是指 A 的每个元素都属于某个块 并且 2 个不同的块不包含任何共同元素 我们将块的总和定义为该块的元素的总和 目标是在 K 个块中
  • Haar级联正例图像大小调整

    我正在迈出第一步 为自定义对象识别创建 haar 级联 我花了时间获取大量数据并编写了一些预处理脚本以将视频转换为帧 我的下一步是裁剪感兴趣的对象 以创建一些积极的训练示例 我有几个问题 我确实在网上寻找答案 我有点困惑 我读到我应该致力于
  • 模式识别算法

    过去我必须开发一个充当规则评估器的程序 你有一个先行词和一些后续词 动作 所以如果先行词评估为真 则执行的动作 当时我用的是修改版RETE算法 http en wikipedia org wiki Rete algorithm RETE 有
  • 找到一个恰好出现了 N/2 次的数字

    这是我的面试问题之一 给定一个包含 N 个元素的数组以及元素出现的位置正好 N 2次 其余 N 2 个元素是unique 您如何找到运行时间更好的元素 请记住 元素未排序 您可以假设 N 是偶数 例如 input array 10 2 3
  • 为每个英文单词生成唯一序列号的算法

    对于应用程序 我需要为每个英语单词生成唯一的序列号 最好的方法是什么 一个限制是序列号生成算法应该在普通台式计算机中非常有效 Thanks 你有所有可能的单词的列表吗 如果是 则从第一个字的 0 开始 每个字将序列号加 1 如果不是 那么保
  • 沿着长数据序列在固定大小的移动窗口中查找中值

    给定一个数据序列 可能有重复项 一个固定大小的移动 窗口 从数据开始处每次迭代时移动窗口 序列 使得 1 从窗口中删除最旧的数据元素并添加新数据 元素被推入窗口 2 求每次移动时窗口内数据的中位数 以下帖子没有帮助 有效地找到随机序列的中值
  • 在现代 x86-64 上计算 64 位整数的整数 Log10 的最快方法是什么?

    标题 我找到了大量 32 位示例 但没有找到完整的 64 位示例 使用这个帖子 https codegolf stackexchange com questions 47290 fastest way to compute order of
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • 地形/山地算法未按预期工作

    我想使用一个非常基本的原理创建一个上面有山的地形 如以下高度图所示 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0
  • 线性问题和非线性问题之间的区别?点积和核技巧的本质

    核技巧将非线性问题映射为线性问题 我的问题是 1 线性问题和非线性问题的主要区别是什么 这两类问题的差异背后的直觉是什么 核技巧如何帮助在非线性问题上使用线性分类器 2 为什么点积在这两种情况下如此重要 Thanks 当人们说到分类问题的线
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • 为什么对本地列表求和比用“GHC -O2”对教会编码列表求和慢?

    为了测试教会编码的列表如何针对用户定义的列表和本机列表执行 我准备了 3 个基准测试 用户定义的列表 data List a Cons a List a Nil deriving Show lenumTil n go n Nil where
  • 将 javascript 合并到一个文件中

    最近阅读了雅虎的网络优化技巧并使用 YSlow 我在我的一个网站上实现了他们的一些想法http www gwynfryncottages com http www gwynfryncottages com你可以在这里看到该文件http ww
  • 将两个大数作为字符串相除,而不使用java中的Bignumbers

    我需要在不使用 Biginteger 的情况下划分两个大整数 因为数字不能存储在原始类型中 因为我需要从给定的字符串中逐个字符地执行此操作 我已经创建了一个名为 BigNumber 的类 用这个类我可以 Add multiply 比较两个内
  • 是否可以证明序列是否是随机的?

    考虑以下输入 1 1 2 3 5 8 这不是随机的 2 4 8 16 32 这都不是 4 1 2 11 5 9 这个看起来像随机序列 我想问是否有这样的算法来证明输入是否是随机的 不 没有这样的证明 如果你有完全随机的数字 则每个长度为 n
  • 对产品列表进行分类的算法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个代表或多或少相同的产品的列表 例如 在下面的列表中 它们都是希捷硬盘 希捷硬盘 500Go 适用于笔记本电脑的希捷硬盘 120

随机推荐

  • 部分唤醒锁不起作用

    我的应用程序有activities和背景service必须运行24 7 我的应用程序必须通过以下方式与服务器通信Wi Fi发送和接收信息 Problem 每当服务器发送任何警报时 我的应用程序都应该接收并弹出该应用程序 无论它是在前台还是后
  • 在 ~/.bashrc 中设置的变量并在 shell 脚本中访问它们

    我在 bashrc 的最顶部有这个 before非交互式 shell 的返回 FOO BAR export FOO echo HELLO WORLD If not running interactively don t do anythin
  • List 上的 BinarySearch 似乎返回奇怪的结果

    我对 C 很陌生 我创建了一个 List 对象 然后对特定项目执行 BinarySearch 但搜索结果似乎很奇怪 这是代码 class Element public int x public Element int val x val c
  • 如何在 jQuery 悬停菜单中保持子菜单打开?

    我上周刚刚开始使用 jQuery 进行编码 需要一些帮助来弄清楚如何使菜单正常工作 我有 3 个选项卡 每个选项卡都有自己的菜单 当显示页面时 会自动显示菜单和子菜单 显示后 用户可以将鼠标悬停在选项卡上以查看其他子菜单 当他们停止悬停时
  • 为什么 Mule App xml 的架构验证对于 Java 组件绑定失败?

    我在我的 mule 应用程序中配置了以下组件绑定
  • 我看不到与信标相关的附近通知

    我的设备昨天更新了谷歌服务应用程序 我已经测试过谷歌附近的通知在 Android 上有两个信标 一个 iBeacon 和一个 Eddystone UID 这些信标处于活动状态 并且已在平台中正确注册 我看到它们已在 Android Beac
  • Hibernate 5 中 org.hibernate.Transactions.isActive() 的替换

    我正在从 hibernate 4 2 17 迁移到 5 0 7 到目前为止效果很好 但该方法似乎isActive已弃用 我只是不能再使用它了 这是我的代码 public void starteTransaktion try getMySes
  • 使用形状笛卡尔和 matplotlib 绘制断开连接的实体

    我需要绘制一个断开的圆圈列表 这些圆圈是我为其他目的而创建的 我试图完全按照中的示例进行操作http toblerity org shapely manual html cascading unions显示 参见code 但只有当圆圈重叠并
  • 是否可以在 Common Lisp 中定义递归类型?

    递归类型是一种具有基数和自身递归情况的类型 我希望它实现 类型化列表 即其conses仅允许相同元素类型或nil的列表 我尝试了以下定义 deftype list of a or null cons a list of a 然而 这表明由于
  • 在 Visual Basic 中连接控件,控制控件

    我正在使用 Visual Basic Visual Studio 2010 创建动态创建的控件 本质上 我正在做的是创建一个标签 一个文本框 一个标签 将充当秒表 和一个按钮 用于控制所述秒表 每组控件将按如下方式排列 并命名 LABEL
  • 带有圆角和阴影 Kivy 的图像

    How can I do something like this with Kivy 使用按钮的背景 正常 背景 向下 and border为了达成这个 让我们将您提供的两张图片命名为正常 png and down png 详细信息请参考下
  • Cordova 插件 - 添加第三方 sdk

    我正在尝试为以下 sdk 创建插件 https ktplayhelp zendesk com hc en us articles 221071888 Android 在设置项目配置点中 它告诉我们通过在 Android studio 中导入
  • 如何在使用 SQL Server 插入/更新之前验证数据?

    我有一个这样定义的表 CREATE TABLE dbo ObjectRelationClauses Id INT NOT NULL PRIMARY KEY IDENTITY RelationId INT NOT NULL OperatorT
  • 在 REST 应用程序中为当前登录用户设计 URI

    我的 REST API 中需要一个 URI 来检索当前登录的用户 通常我使用GET具有 ID 的资源 但客户端不知道用户的 ID 我找到了以下解决方案 按用户名 此解决方案使用用户名而不是用户的 ID Example Bitbucket R
  • Visual Studio 2010 SP1 中缺少 MVC3

    我安装了VS 2010 Ultimate 它没有 MVC3 我安装了 SP1 它应该也安装了更新以及 MVC3 对吗 但安装后 我在新项目窗口中仍然没有 MVC3 选项 这是怎么回事 MVC3 是可选下载 http www asp net
  • LinkedIn 网站分享始终显示 1 分钟阅读

    我正在尝试找出如何删除1 min read在我向 LinkedIn 分享内容时的描述中 1 分钟阅读示例 我在页面上有打开的图表标签 并验证它们不会在页面上的任何位置显示 1 分钟阅读时间 我也玩过 og type 尝试 文章 媒体 视频
  • ASP.NET Web API 身份验证

    我希望在使用时从客户端应用程序对用户进行身份验证ASP NET Web API 我观看了网站上的所有视频并阅读了这个论坛帖子 把 Authorize 属性正确返回一个401 Unauthorized地位 但是 我需要知道如何允许用户登录 A
  • 具有多态性的Python棉花糖树结构

    我有以下树结构代码 class Node def init self node id str self node id node id self children def add child self node Node if isinst
  • 编译具有动态模块支持的 Apache Web 服务器

    我刚刚在全新安装的 Ubuntu 10 04 2 上编译了 Apache 2 2 17 这是一个学习练习 旨在发现编译某些内容时实际发生的情况 而不仅仅是使用 apt get 因此避免使用 apt get 而有利于自己编译该内容 I ran
  • 最佳学生座位安排的算法

    假设我需要将 n 30 名学生分为 2 到 6 人一组 然后我从每个学生那里收集以下偏好数据 学生姓名 Tom 喜欢和以下人坐在一起 吉米 埃里克 不喜欢和以下人坐在一起 约翰 保罗 林戈 乔治 这意味着他们对整个班级中他们没有提到的任何其