python预测抵达时间eta_算法-智能进度条ETA计算

首先,它有助于生成移动均线。 这对最近事件的加权更大。

为此,请保留一堆样本(循环缓冲区或列表),每个样本都有一对进度和时间。 保留最近的N秒样本。 然后生成样本的加权平均值:

totalProgress += (curSample.progress - prevSample.progress) * scaleFactor

totalTime += (curSample.time - prevSample.time) * scaleFactor

其中scaleFactor从0 ... 1线性地变为过去的时间的反函数(因此,对新近采样的权重更大)。 您当然可以使用此权重。

最后,您可以获得平均变化率:

averageProgressRate = (totalProgress / totalTime);

您可以通过将剩余进度除以该数字来计算出预计到达时间。

但是,尽管这为您提供了一个很好的趋势数字,但您还有另一个问题-抖动。 如果由于自然变化而导致您的进度有所波动(嘈杂),例如 也许您正在使用它来估计文件下载-您会注意到噪音很容易导致您的ETA跳动,尤其是在将来很长一段时间(几分钟或更长时间)的情况下。

为避免抖动对您的ETA造成太大影响,您希望此平均更改率速率对更新进行缓慢响应。 解决此问题的一种方法是保持averageProgressRate的缓存值不变,而不是立即将其更新为您刚刚计算出的趋势数,而是将其模拟为具有质量的重物,然后将模拟“力”缓慢施加 将其移向趋势数。 对于质量,它具有一点惯性,并且不太可能受到抖动的影响。

这是一个粗略的示例:

// desiredAverageProgressRate is com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值