预测在我们的生活中普遍都存在,譬如天气预报、地震预警,抑或是简单的入场预测、销售额预测等等。古有诸葛亮观星测天文生死,现有天文台预警自然灾害,道理其实都是一样的——通过经验估算事件发生的概率。

在数学上,是不承认预测的。举个例子,圆周率。我们从来没听闻预测圆周率有几位,一般会称为无限不循环小数;也没听闻预测圆周率是多少,只会估算为3.141592654。但我们会利用各种数学知识,预测我们世界未知的事情。

我所在的项目中,其中一个重点功能就是预测快件的动向。可是这个功能微微蛋疼,因为可以称得上为监控。先来对比预测与监控这两个词语的区别。预测上边已经解释,而监控则是对发生了的事情进行监测控制,两者完全不一样。项目中经常采用精准操作时间,来代表一个事件的完成时间。例如,通过最后一票装车时间代表一辆车的发车时间,预测下一网点到达时间。单看没怎么问题,但请注意关键词“最后一票”。“最后一票”意味着我们需要监控哪一票是最后的,才能得知发车时间。这个值是精确的,而计划行驶时间也是精确的,那么所谓的预测,也是精确的。更恶心的事情是,你根本不会知道什么时候才会出现最后一票,这个实时监控消耗的性能就浪费了。

上面提到了数学知识。我一直在思考,我们要实现预测应该使用更多的数学知识。其中概率是一个很好的解决方案。针对上面的例子,我们大可以分析以往的行驶记录,统计出某个时间进行发车的概率,进行预测。这样可以把大量的实时监控性能改为过后分析统计,释放的资源更好地用于其他更重要的实时计算中去。