主机中任务的分配/分配

时间:2014-06-24 09:00:53

标签: python variable-assignment hungarian-algorithm

我有一套主机和一组任务 每个主机都有cpu,mem和task capacity,每个任务都有cpu,mem要求 每个主机属于延迟类,可以与具有特定延迟值的其他主机通信 每个任务可能需要与等于或小于某个值的等待时间的另一个任务进行通信 我的问题输入示例如下图所示。Task and host graphs. 其中任务t1需要以等于或小于3,3和5的等待时间与任务t2,t3和t4通信,并且主机h1属于等待时间等级3并且与等待时间为2,5和5的h2,h3和h4通信。分别为3 我正在考虑使用匈牙利/ munkres算法解决这个问题,但我如何正确设置成本函数? 是否有更好的分配算法来解决这个问题? 感谢。

2 个答案:

答案 0 :(得分:1)

Munkres有一个Python包:http://software.clapper.org/munkres/。您可以参考他们的实施:https://github.com/bmc/munkres/blob/master/munkres.py

答案 1 :(得分:1)

正如你应该知道的,这个问题是QAP(二次分配问题)的一个例子,这是NP完全的,这意味着用几句话来说:没有最好的算法来解决它,至少在多项式时间。更多详情here

虽然有几种方法可以解决,但是我已经尝试了一些简单的AI方法,如遗传算法(GA)和ACO,效果很好。我建议你GA。