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