哪种分配方法适合我的情况?

时间:2016-11-22 00:12:42

标签: c++ algorithm variable-assignment linear

我有一大组设备,每个设备都有两个特定的参数。在这个集合中,我想创建尽可能相似的设备对。这将由欧几里德规范来完成。但我不确定哪个分配问题分别适合我的情况。 就我而言,我正在寻找最大匹配,而不是完美或最大匹配。 所以两个方面很重要:

  • 创建的对数量尽可能高。
  • 这些设备本身的设备不超过一定的容差限制(这没有问题,正如我所说,已经通过定义一个圆圈来完成)。

起初我想使用https://www.topcoder.com/community/data-science/data-science-tutorials/assignment-problem-and-hungarian-algorithm/#!实现它但同时我不确定这是否解决了这个问题。 我坚持以下几点:匈牙利算法基于二分图,它们使用两个不相交的集合。但我只有一套。 所以我必须在这一组中创建作业(虽然算法将一组的元素分配给另一组的元素),但我不确定这是否可行。

我的问题是:这仍然有用吗?或者我应该使用哪种方法?

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式“自定义”匈牙利方法:

1-对行(资源)和列(任务)使用相同的集(设备集)。

2-使用“big M”以避免将设备分配给自身:将对角线元素设置为某个巨大的值

3-在成本矩阵的每个条目(i,j)处分配反映某种不相似度的成本

4-运行匈牙利方法

5-最后,在进行分配时,只选择实际上不超过容差限度的对(换句话说,删除成本较大的对或超出“”的成本)容差限制“。