gpt4 book ai didi

algorithm - 预测一个长过程的完成时间有哪些好的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:53 24 4
gpt4 key购买 nike

tl;dr:我想预测文件复制完成。考虑到开始时间和目前的进度,有什么好的方法?

首先,我意识到这根本不是一个简单的问题,预测 future 是很难做好的。对于上下文,我试图预测一个长文件副本的完成。

当前方法:

目前,我使用的是我自己想出的一个相当天真的公式:(ETC 代表预计​​完成时间)

ETC = currTime + elapsedTime * (totalSize - sizeDone) / sizeDone

这是基于这样的假设,即要复制的剩余文件将以迄今为止的平均复制速度进行复制,这可能是也可能不是现实的假设(此处处理磁带存档)。

  • PRO:ETC 会逐渐变化,并随着过程接近完成而变得越来越准确。
  • 缺点:它对意外事件 react 不佳,例如文件复制卡住或加速过快。

另一个想法:

我的下一个想法是记录最后 n 秒(或分钟,因为这些存档应该需要几个小时)的进度,然后做如下事情:

ETC = currTime + currAvg * (totalSize - sizeDone)

这在某种程度上与第一种方法相反:

  • PRO:如果速度变化很快,ETC 将快速更新以反射(reflect)当前的事态。
  • 缺点:如果速度不一致,ETC 可能会跳动很多。

最后

我想起了我在大学学习的控制工程科目,其目标本质上是尝试获得一个能够对突然变化做出快速 react 但又不不稳定和疯狂的系统。

话虽如此,我能想到的另一种选择是计算上述两者的平均值,也许还有某种权重:

  • 如果副本具有相当一致的长期平均速度,则对第一种方法赋予更多权重,即使它在局部跳来跳去也是如此。
  • 如果复制速度不可预测,并且可能会长时间加速/减速,或者长时间完全停止,请更多地考虑第二种方法。

我真正要求的是:

  • 关于我给出的两种方法的任何替代方法。
  • 您是否以及如何结合几种不同的方法来获得最终预测。

最佳答案

如果您觉得预测的准确性很重要,那么构建预测模型的方法如下:

  1. 收集一些真实世界的测量数据;
  2. 将它们分成三个不相交的集合:训练验证测试
  3. 想出一些预测模型(您已经有两个加上一个组合)并使用训练集来拟合它们;
  4. 检查模型在验证 集上的预测性能并选择表现最好的模型;
  5. 使用测试集评估所选模型的样本外预测误差。

我敢猜测 linear combination您当前的模型和“最后 n 秒的平均值”对于手头的问题表现得很好。可以使用 linear regression 拟合线性组合的最佳权重。 (R 中的一行)。

研究统计学习方法的极好资源是 The Elements of Statistical Learning由 Hastie、Tibshirani 和 Friedman 撰写。我怎么推荐这本书都不为过。

最后,您的第二个想法(最后 n 秒的平均值)尝试测量瞬时速度。一个更强大的技术可能是使用 Kalman filter ,其目的正是:

Its purpose is to use measurements observed over time, containing noise (random variations) and other inaccuracies, and produce values that tend to be closer to the true values of the measurements and their associated calculated values.

使用卡尔曼滤波器而不是固定的 n 秒滑动窗口的主要优点是它是自适应的:当测量值跳跃很多时,它会自动使用更长的平均窗口,而不是当它们'重新稳定。

关于algorithm - 预测一个长过程的完成时间有哪些好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com