我目前正在研究处理事件调度的系统的模块。每个事件对象都有一个开始和结束时间戳以及一系列所需资源。每个资源的可用数量都是有限的,并且可以同时发生的事件数量有限制。最终,它类似于会议室预订类型系统,其中有数量有限的房间,投影仪,椅子等。
目前,我正在循环查看当前事件以计算资源利用率和并发事件计数,但是当这会运行到数千个事件时,这似乎是一种低效的方法。
有人可以提出更有效的方法吗?
答案 0 :(得分:1)
这是一个所谓的NP-complete问题。随着样本量的增长,找到一个......说“数学上最优”的解决方案会变得非常昂贵。您花在...上说“现实世界”解决方案的时间取决于您的要求。使用一些启发式方法可以找到不太理想的解决方案。
一种启发式方式:
您可以按某种指标对模块进行排序。然后按顺序将它们添加到池中。从最昂贵的模块开始。添加所有适合同一插槽的模块。之后,为剩余的模块打开一个新插槽。等等。