我遇到了一个问题,我不确定线性编程是否可以解决。基本上有两组人员彼此列出他们的偏好并且随后将被匹配。我正在为此编写算法。 A组最多有4个B组的选择,反之亦然。
在制定解决方案时,我目前正在为每对组合分配成本。例如,如果来自A组的人1将来自B组的人3作为他/她的第一选择进行排名,反之亦然,那么成本是最小的(对1-3成本:0.01)。同样地,我会为其他货币对分配成本,设计一个目标函数,该目标函数寻求具有最小化总成本的配对。
但是,我不认为这是可行的,因为我不知道如何定义我的约束和整体目标函数。在线阅读和从教科书中阅读,我发现资源分配问题与我想要做的不同。
我可以就如何进行寻求建议吗?
答案 0 :(得分:0)
您的问题可以表述为“Assignment Problem。”作为规范案例,分配问题是将“作业”分配给“机器”。它们可以很容易地用于匹配两组。
这是配方: 两组人A和B
决策变量Xij
如果人i(集合A中的人)与集合B中的第j个人匹配,则Xij
为 1 ; 0 否则
参数:
让Cij
为将人i
与人j
目标函数:最小化(和i相加)(j上的和)Cij * Xij
<强>约束:强>
每个人我只配对一次
Sum over j Xij = 1 (for each i)
每个人j完全配对一次
Sum over i Xij = 1 (for each j)
Xij是二元变量
Xij = (0,1)
关于分配问题的巧妙之处在于,使用相当容易理解的'Hungarian Method.'可以找到最佳配对。您也可以使用您拥有的LP / IP解算器。
希望有所帮助。