保留访问有限许可的算法

标签 algorithm

我们遇到的情况是(GUI 测试工具 silktest)许可证较少,用户较多。

我正在尝试构建一个系统,在该系统中,将通过预订来访问许可证。

要执行自动化套件,用户必须创建预订,这将依次用完一个许可证。同时其他许可证将免费。

简单的 FIFO 队列不会解决它,因为单个用户一次只能执行一个套件。

是否有任何标准算法可以帮助有效地分发许可证。

最佳答案

定义一个纪元。统计数据发生在一个时代。 (比如两个小时)。

定义一个刻度。每次滴答都接受/解决许可请求。 (比如 30 秒)

记录每个许可证的持有时间和持有者。

为每个用户分配一个权重,他们使用许可证的次数越多,权重就会降低,但仅限于设定的时间。

每笔报价:

  1. 召集想要许可证的人。
  2. 记录许可证的发布并收集每个用户统计的许可证结帐时间。
  3. 对于每个可用的许可证:
  4. 在请求权重最高和等待时间最长的用户之间进行选择。如果不止一个用户符合这两个条件,则随机。
  5. 安排减少获胜用户的权重,时间等于他们之前持有许可证的平均时间加上他们保留此许可证的时间。

每个纪元:

  1. 调整统计数据,以免它们超限

希望这会根据用户使用许可证的差异自动调整许可证 checkout 。那些想要长时间或频繁或偶尔使用它的人仍然应该获得许可证,随着时间的推移有望达到平衡。

阿瑟

关于保留访问有限许可的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143157/

相关文章:

javascript - 使用 JavaScript 的 Bliffoscope 数据分析解决方案

算法时间复杂度 : i/=2 in loops

c# - 生成排列的此 LINQ 代码的说明

c++ - 没有重复的背包 : Maximum Amount of Gold

ruby - 通常是 Fizzy ruby

algorithm - Paxos是如何处理丢包和新节点加入的?

c# - 在c#上创建一个空心矩形

algorithm - 给定 4 个数组,找到和为零的四元组的数量

javascript - 将 JavaScript 对象转换为数组以插入关系数据库

algorithm - 给定游戏的获胜者