我有J项目,运行时间超过T周,每个项目使用S周的资源量(基于预定义的矩阵)。我必须将这些项目分配到集群中,集群容量已知。此外,每个项目都属于某一子群G。在
这似乎是一个0-1多背包问题,对吧?然而,也有一些不同之处。所有的项目都必须被精确地分配到一个集群,一旦被分配,它就不能从中移动。这通常会导致背包(簇)的过度包装,违反“背包不能超过容量”的限制,只会产生不可行的解决方案。因此,它对目标有影响。在
我的目标是,按照优先顺序:
1)尽量减少超过集群容量的资源请求总数。通俗地说,尽量减少集群容量被破坏的次数。在
2)资源请求最大限度地跨集群分布。在
3)同一组中的项目最大限度地分散在集群中。在
现在,对于我的问题:
我假设这是一个0-1多背包问题,对吗?我假设它是线性的,对吗?到目前为止,我在文献中找不到任何关于这个问题的确切变化的类似案例研究。在
我实现了一些初级代码,这些代码为项目到集群分配生成随机解决方案,并创建了一个Pareto-optimal front。下一步是实现一个简单的多目标优化算法。我甚至不知道如何开始,因为我在我的文学作品中没有遇到过类似的东西。我是Python的初学者,所以即使阅读PyGMO、DEAP甚至SciPy的库文档对我来说也太复杂了。有什么建议吗?在