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

善于利用“已知”简单巧妙地解决“未知”

 二维码 46
发表时间:2022-02-13 08:57

善于利用“已知”简单巧妙地解决“未知”

程晓华

2021-2-13

年前年后,闲来无事,我一直在拿着R(语言)练手,也算是玩游戏了。

前两天刚有感而发,写了一篇文章叫“供应链管理必须追求简单朴素的解决方案”,这两天又有些新的体会与大家分享– 体会来源于用R语言计算某产品周需求(xi)的环比增长率。

这个环比计算(r= x2 /x1)在Excel里面很容易实现,无非就是后面的单元格除以前面那个,然后复制到所有要计算的单元格即可。但要在R语言里面实现这个过程,则必须编程,这是我最早的想法和做法,似乎也不费事,我很快地就写了如下一段代码:

r<-vector(“numeric”,11)#设定一个环比接收向量(容器)

n<-nrow(xi)   #计数

for(i in1:(n-1)){   # 使用 for 循环计算

r[i]<- xi [i+1,1]/hw[i,1] # 逐个计算并将结果存储到设定向量

}

一运行,结果很成功,我还有点沾沾自喜。

但转念一想,这个解决方案是不是还是太复杂了点?不就是计算个环比吗?这咋又是设向量,又是计数、循环,又是取值、存储啥的?

感谢百度!

我在人大经济论坛的一个R与统计学的网站上找到了答案 – 人家就写了如下一个函数嵌套就搞定了!

exp(diff(log(xi)))

我一打眼儿没看懂,仔细一琢磨才明白,这是个高人呢!

这个解决方案巧妙地利用了我们在高中就掌握的“已知”,即指数函数与对数函数的转化:

我们要求的是R=x2 /x1,两边同时取自然对数即可得到 log(R) = log(x2) - log(x1) = diff( ),然后求反函数得到R,所以,这里的log(xi) 就是在R里对所有需求变量xi取自然对数(R用log表示ln);diff( ) 则是差分,说白了就是用x2 - x1,x3 - x2 ……,exp()则是求自然数 e 的多少次方,即求上述对数函数的反函数。

这个方案跟我那个所谓的方案一对比,高下立判!

我那是用蛮力,只是在模仿Excel的操作,一个一个地去计数,然后一个对一个地去除,然后再一个一个地存储起来,跟建筑小工搬砖似的,毫无技术含量可言;而人家用的则是巧劲儿– 巧妙地化归了问题,解决问题于无形之处。

对此,我感想有二:

第一,没有最简单的,只有更简单的,凡事都有可能找到比较简单的解决方案;

第二,他山之石可以攻玉,不要再重新发明一个轮子(Reinvent a wheel) 。

在供应链管理问题上,尤其如此。

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

ITOOTD-NEW.png