问题: 我有n个不同的元素。每个元素都有m个类别 可以分配。每个元素可以分配给一个或多个类别。然后可以针对每个元素或组单独地评估这些分配的性能。可以为每个元素或元素组计算性能分数。
问题: 你会推荐什么样的优化算法来有效地解决(最大化单个元素得分的总和)这个问题,这个问题有很大的n和m值(其中n> m,n和m大约是10 ^ 5)?作为一个附带问题,这个特定问题会导致什么样的组合优化问题减少?
使用遗传算法似乎有点过时了。制作一群染色体,每个染色体都可以为所有元素分配20000组...或者是吗?我不知道在这么大的染色体上使用什么样的突变,选择和交叉算子。
答案 0 :(得分:0)
n
和m
的较大值会限制您的选择。如果您将其建模为n*m
布尔决策变量,那么按10^10
变量的顺序...那么将单个实例加载到RAM内存中可能会很大。如果将其建模为类型为M的20*n
变量,则将变量的连接数限制为任意数(在本例中为20),并且需要添加一个硬约束,对于相同的n,没有2个变量应具有相同的M值,但它可以加载到RAM存储器中。
假设你的约束(性能得分)不是微不足道的:我所见的唯一优化算法是Local Search变量(禁忌搜索,延迟接受) ,...),例如在Roadef2012比赛中。