在加油站使用Python:一个加油脚本

本文介绍了我如何使用Python找到一种经济有效的加油策略。
222 位读者喜欢这篇文章。
U.S. makes renewable energy software open source

Internet Archive Book Images。由Opensource.com修改。CC BY-SA 4.0

我最近开始驾驶一辆传统上使用高级汽油(93辛烷值)的汽车。不过,制造商表示,它只需要91辛烷值。问题是,在美国,你只能买到87、89或93辛烷值的汽油。在我居住的地方,汽油价格从一个等级跳到下一个等级,每加仑上涨30美分,因此高级汽油比普通汽油贵60美分。那么,为什么不尝试省点钱呢?

等到油表显示油箱半满,然后加入89辛烷值的汽油,这样你就得到了91辛烷值,这很容易。但是,接下来该怎么做就变得棘手了——半箱91辛烷值加上半箱93辛烷值最终会变成92辛烷值,然后你该怎么办?你可以继续计算,但它们会变得越来越复杂。这就是Python发挥作用的地方。

我想出一个简单的方案,我可以将油箱加到某个液位,加入93辛烷值的汽油,然后在相同或某个其他液位加入89辛烷值的汽油,主要目标是最终混合物永远不会低于91辛烷值。我需要做的是创建一个重复计算,该计算使用先前加油的辛烷值。我想应该有一些多项式方程可以解决这个问题,但在Python中,这听起来像一个循环。

#!/usr/bin/env python
# octane.py

o = 93.0
newgas = 93.0   # this represents the octane of the last fillup
i = 1
while i < 21:                   # 20 iterations (trips to the pump)
    if newgas == 89.0:          # if the last fillup was with 89 octane
                                # switch to 93
        newgas = 93.0
        o = newgas/2 + o/2      # fill when gauge is 1/2 full
    else:                       # if it wasn't 89 octane, switch to that
        newgas = 89.0
        o = newgas/2 + o/2      # fill when gauge says 1/2 full
    print str(i) + ': '+ str(o)
    i += 1

正如你所看到的,我将变量o(油箱中当前的辛烷值混合物)和变量newgas(我上次加入油箱的汽油)初始化为相同的93值。然后,循环将重复20次,用于20次加油,每次去加油站时在89辛烷值和93辛烷值之间切换。

1: 91.0 
2: 92.0 
3: 90.5 
4: 91.75 
5: 90.375 
6: 91.6875 
7: 90.34375 
8: 91.671875 
9: 90.3359375 
10: 91.66796875 
11: 90.333984375 
12: 91.6669921875 
13: 90.3334960938 
14: 91.6667480469 
15: 90.3333740234 
16: 91.6666870117 
17: 90.3333435059 
18: 91.6666717529 
19: 90.3333358765 
20: 91.6666679382

这表明我可能只需要10或15个循环就可以看到稳定。它还表明,很快,我就会低于我的91辛烷值目标。看到交替混合值的这种稳定也很有趣,事实证明,对于任何每次选择相同量的方案,这种情况都会发生。事实上,即使89辛烷值和93辛烷值的加油量不同,情况也是如此。

所以在这一点上,我开始尝试分数,推理我可能需要比89辛烷值加油量更大的93辛烷值加油量。我也不想经常去加油站。我最终得到的结果(在我看来相当不错)是等到油箱大约剩下 7⁄12 时加入 89 辛烷值,然后等到剩下 ¼ 时加入 93 辛烷值。

以下是循环中的变化

    if newgas == 89.0:            
                                  
        newgas = 93.0
        o = 3*newgas/4 + o/4      
    else:                         
        newgas = 89.0
        o = 5*newgas/12 + 7*o/12 

以下是从第十次加油开始的数字

10: 92.5122272978 
11: 91.0487992571 
12: 92.5121998143 
13: 91.048783225 
14: 92.5121958062 
15: 91.048780887

正如你所看到的,这使得最终辛烷值始终略高于 91。当然,我的油表没有标记为十二分之一,但 7⁄12 略小于 5⁄8,我可以处理。

另一种简单的解决方案可能是将油箱开到空,然后加满 93 辛烷值,然后下次只加半箱 89 辛烷值——也许这将是我的默认计划。就我个人而言,我不喜欢将油箱开到完全没油,因为这并不总是方便。另一方面,这在长途旅行中很容易奏效。有时我买汽油是因为价格突然下降。所以在最后,这个方案是我可以考虑的一系列选项之一。

对于Python用户来说,最重要的事情:不要在驾驶时编码!

标签
Greg Pittman
Greg 是肯塔基州路易斯维尔的一位退休神经科医生,他对计算机和编程有着长期的兴趣,从 20 世纪 60 年代的 Fortran IV 开始。当 Linux 和开源软件出现时,它激发了学习更多知识并最终做出贡献的承诺。他是 Scribus 团队的成员。

4 条评论

非常酷而且也很实用。感谢分享。

这里要小心。

当加油站进行混合或订购混合汽油时 - 辛烷值等级比您预期的要宽松一些。它可能在 93 或 89 的较低或较高范围内……它可能是四舍五入的 88.89。

其次,冬季混合汽油与夏季混合汽油相比,被粗暴地掺假,含有降低性能的化学成分。这是由于各种添加剂以防止凝胶等……

因此,你这个……巧妙的工具可能会使你的发动机爆震更加严重,因为带有冬季添加剂的 89 比夏季 89 更糟糕。
除非您有东西可以查看 PID/AFR 等……否则您很难知道……或者您没有像偷来的那样猛踩您的汽车,那么您可能真的不在乎 :)

// 对于强制喷射 - 你应该更加小心。

另一方面,应该多认真对待“爆震”的警告?它不会立即毁坏你的汽车。如果汽油公司出售 91 辛烷值的汽油呢?按照你的逻辑,那可能是也可能不是 91 辛烷值……有些人认为在只需要 87 辛烷值的汽车中加入 93 辛烷值是在“款待”他们的汽车。

回复 作者 Ron Brash (未验证)

这是一个后续报道,也许是一个警示声明。在某种程度上遵循这一点后,“检查发动机指示灯”亮了。这个 CEL 的问题在于它亮起的原因有很多,其中一个原因可能是汽油盖松了(而且这辆车似乎在汽油盖方面有问题)。观察了一段时间后,我加入了 3/4 箱 93 辛烷值的汽油,不久之后 CEL 就熄灭了。是由于汽油还是汽油盖?
我想到的一件事是,人们并不真正知道油箱中汽油的混合效果如何,因此最终结果不一定是均匀的混合物,至少在一段时间内是这样。

© . All rights reserved.