程晓华全面库存管理咨询, 订阅号 ITOOTD
搜索

供应链管理必须追求简单朴素的解决方案

 二维码 42
发表时间:2022-02-07 15:04

供应链管理必须追求简单朴素的解决方案

程晓华

2021-2-7

近期在看一本使用R语言做统计预测方面的书,公平地讲,此书写得还不错,尤其是对一些统计预测方面的知识点的解释,作者写得还是比较通俗易懂的,他也是企图在用自己的语言解释那些深奥的数学概念和原理,在这点上,我非常认同作者,这也是我在我的书《全面库存管理数学分析》里面企图要达到的目的。

但是,美中不足的是,除了一些明显的写作或编辑、排版错误,我个人认为,这本书最大的问题是,作者在写R代码方面一直在给我一种印象,那就是把简单的问题复杂化 - 这也可能是这些R语言高手、程序大师们的一种爱好或者叫通病?故意地把代码写得让我们这些菜鸟、普通老百姓看不懂?

我对书中如下所示的一段代码印象尤其深刻,所以有感而发:

#重构数据

ap_matrix<-t(mapply(function(i){ap[(12*(i-1)+1):(i*12)]},1:12))

这段代码用到的函数,如t( )、mapply( )、function(),单个理解都很简单,但是组合起来理解则是有点困难了,尤其是跟{ }里面的那些加减乘等运算结合在一起,我就直接搞不懂是怎么回事了!

我承认我在R语言方面的水平还是很菜鸟的,但是,遇到这种我读不懂代码的情况,则是极少见的。

于是,我老老实实地把大师(本书作者)的代码敲到R里面去,一运行,结果差点把我气个半死!

原来这段代码的目的就是把一个时间序列型(Time Series, ts)的数据(ap,原书稿是AirPassengers,我做了个简单的替换,否则看起来更难懂)转换成一个矩阵型(Matrix)的数据!大师竟然还堂而皇之地命名这段代码为“重构数据”!

好大的题目!

如果你把“重构数据”写成是“时间序列型数据转为矩阵型数据”,这样我不就明白你的意思了吗?

我还以为是多大的事儿呢!

不就是个数据转型吗?!这有什么难的?!

我用两行代码、两个标准函数操作,直接就完完整整地实现了这个目的,过程如下图中间的代码所示(上面的代码是大师写的那个):

我在想,我的这点R水平肯定跟这位大师没法比,因为从作者的背景和书的内容可以看出,此人在R语言及数据分析等方面应该是有着极深的修养和丰富的实战经验的,称其为大师、专家应该也不过分。也许正因为如此,他写的东西就顾不上考虑我们这些菜鸟的理解能力了吧?

我认为,大师的那段代码就是让很多人照着抄,大多数人都不一定能一遍就抄得对。

而我写的这两行代码呢?

apm<-as.matrix(ap)

ap_matrix<-matrix(apm,ncol=12, byrow=T)

ap_matrix

简单的不能再简单了!

稍微有点R常识的人都能看得懂,也非常容易“照抄照搬”,但看起来却是不够专业,至少是不够华丽– 大师一步搞定的事情,我分成了简单的两小步,似乎也并无不妥。

所以,在供应链管理的实践中,我认为,绝大多数的流程、事情本来都是很简单的,因为“任何事情都有其固有的简单性(Inherent Simplicity, 高德拉特博士语)”,但我们之所以把简单的事情搞复杂了,要么是因为真的不懂,要么就是“为了炫耀锄头而忘了种地(任正非先生的话)”- 这里面,做锄头的,卖锄头的,买锄头的,用锄头的,可能都有问题。

作者程晓华(JohnCheng),全面库存管理(TIM)咨询独立顾问,《制造业库存控制技术与策略》课程创始人、讲师,《制造业库存控制技巧》、《首席物料官(网络)》、《决战库存》、《制造业全面库存管理》、《全面库存管理数学分析》著作者,邮箱:johnchengbj@126.com   TIM订阅号:ITOOTD

ITOOTD.png