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

本文介绍了一种Python算法,用于预测抵达时间(ETA)。通过计算加权平均值来平滑进度变化,使用模拟物理过程的方法来减少噪声引起的抖动,以提高ETA的准确性。该算法适用于进度跟踪和预测,如文件下载等场景。
摘要由CSDN通过智能技术生成

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

为此,请保留一堆样本(循环缓冲区或列表),每个样本都有一对进度和时间。 保留最近的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值