我有一个数据库驱动的 vb.net 程序,记录一台设备每天运行的小时数。这是一个累加器数字,在设备的使用寿命期间总是增加,例如汽车里程表。
设备有固定的保养周期,如3000小时换油。
输入今天的小时数(里程表)读数后,我需要计算它与过去或未来最近的服务间隔有多接近。因此,如果每 10 小时进行一次服务并且设备每天运行一个小时,则每天的结果将是:
小时(里程表) | 结果 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 4 |
7 | 3 |
8 | 2 |
9 | 1 |
10 | 0 |
11 | 1 |
12 | 2 |
13 | 3 |
14 | 4 |
15 | 5 |
16 | 4 |
17 | 3 |
18 | 2 |
19 | 1 |
20 | 0 |
21 | 1 |
22 | 2 |
23 | 3 |
24 | 4 |
25 | 5 |
对于给定的读数和服务间隔,是否有可以产生这些结果的公式?
我想 modulo division 可能以某种方式参与,因为
(Hours MOD Interval) = 0
确定服务间隔。
页面,重复任务的简单算法讨论了一个有点类似的问题并使用公式
score = max(0, (1 + interval_since_last - minimum) / (1 + maximum - minimum))
.
类似于this Stack Exchange,我将结果序列输入OEIS并得到这个但我不明白如何从该页面推导出方程式。