供应链管理必须追求简单朴素的解决方案
程晓华
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, 高德拉特博士语)”,但我们之所以把简单的事情搞复杂了,要么是因为真的不懂,要么就是“为了炫耀锄头而忘了种地(任正非先生的话)”
- 这里面,做锄头的,卖锄头的,买锄头的,用锄头的,可能都有问题。
作者程晓华(John
Cheng),全面库存管理(TIM)咨询独立顾问,《制造业库存控制技术与策略》课程创始人、讲师,《制造业库存控制技巧》、《首席物料官(网络)》、《决战库存》、《制造业全面库存管理》、《全面库存管理数学分析》著作者,邮箱:johnchengbj@126.com TIM订阅号:ITOOTD
发表于:
2022-02-07 14:59 阅读(74)
评论(0) 收藏 好文推荐
本博客所有内容,若无特殊声明,皆为博主原创作品,未经博主授权,任何人不得复制、转载、摘编等任何方式进行使用和传播。
作者该类其他博文:
网站相关博文: