搜索
善于利用“已知”简单巧妙地解决“未知” 二维码
69
发表时间: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
文章分类:
我的文章
|