(我也在math.stackexchange.com发布了这个问题,因为我不确定它应该属于哪个。)
我的系统包含以下输入:
规则:
要求:
鉴于上述输入和规则,我需要“尽快”执行一组工作项。由于我们无法知道工作项目在完成之前需要多长时间,我们不可能希望预先得到一个完美的解决方案(我想),所以“尽快”意味着没有明显做一些像使用一个代理一样愚蠢的事情逐个执行每个工作项目!
从历史上看,我有一个非常简单的循环算法,只是通过降低历史持续时间对工作项进行排序,以便更长时间运行最长的工作项,并且希望在周期结束时我能够使所有代理和服务器保持合理地满载短期工作项。这导致利用率图形具有非常好的“方形”形状,在周期结束时没有长尾工作项的长尾。
然而,这个历史算法要求我预先配置代理和服务器的数量,并将工作项预分配到“池”并将池分配给服务器,以及许多其他可怕的东西。我现在需要支持动态数量的代理和服务器,而无需重新配置。 (请注意,服务器的数量将在一个周期内得到修复 - 也就是说,数字只会在周期之间发生变化 - 但代理的数量可能会在周期的中间增加或减少。)
完成所有工作项目后,我们会记录每个工作项目进入下一个周期所需的时间,并从头开始重新开始!