问题

考虑一个商品补货问题:

  • 零售商以 pp 元/件的采购价 (purchase price) 从供应商处采购某种商品, 以 rr 元/件的零售价 (retail price) 售卖给消费者, 其中 r>pr>p.
  • 零售商将商品存放在仓库中, 为此需要承担 hh 元/(件·天) 的持有成本 (holding cost).
  • 考虑到运费、人力等因素, 每次从供应商处补货, 零售商都需承担 KK 元的固定成本 (fixed setup cost).
  • 消费者不接受延迟发货, 这意味着当库存量无法满足消费者的需求时, 零售商就要承担缺货损失 (shortage cost).
  • 消费者对商品的需求量是随机的, 但未来任意一段时间的需求量所服从的概率分布是已知的.
  • 零售商从供应商处订货的提前期 (lead time) [1]LL 天, 最小起订量为 moqmoq 件.
  • 零售商采用 (R, Q) 订货策略, 即当库存量下降到再订货点 (Reorder Point) RR 时, 就触发补货, 订货量 (Order Quantity) 为 QQ. 此外, 由于操作上的原因, 两次订货之间的时间间隔不能少于 τ\tau 天. 零售商希望尽可能维持 α\alpha 的服务水平 (service level) [2], 同时尽可能降低成本, 需要由算法来决策 RRQQ.
阅读全文 »

你是某 App 的运营人员,老板圈定了一批想要召回的用户,让你想办法触达。你文思泉涌,很快写出了一堆精彩的文案,想要通过短信发送给用户。老板说,年轻人不要那么豪横,咱们这次预算有限(只是这次吗?),不能全发短信,只能短信和 Push 搭配着来。所谓好钢要用在刀刃上,你好好考虑一下,哪些用户该发短信,哪些用户该发 Push。

等一下,先别着急拍规则,我是本厂的算命工程师,我有话要说!

阅读全文 »

Transmission 是一个简洁易用的开源 BT 客户端。在 1.4.x 及更早的版本中,Transmission 是支持配置代理的,之后的版本不知道出于什么原因移除了这一特性。而我又有配置代理的需求,所以在很长一段时间里,我不得不使用 μTorrent。macOS 升级到 Catalina 之后便不再支持 32 位程序了,垃圾 μTorrent 又不提供 64 位版本,我只好再想别的办法了。

最简单的解决方案是使用 Proxifier,这个强大的工具支持在 macOS 和 Windows 上实现分应用代理。虽然这个功能在 Android 上很常见,但在桌面端还是很稀罕的。Proxifier 唯一的缺点是有点贵,当然,这不是它的问题,而是我的。

阅读全文 »

背景

我们在《报童问题》《报童问题的简单解法》等文中介绍了一种通过考虑需求的不确定性来最大化销售利润的商品采购模型:首先预测需求所服从的概率分布,然后取能使得期望收益最大的分位数作为预估的需求,据此来决定采购量,对应的分位值定义为服务水平。

在实际应用中,一次采购需要满足未来一段时间的总需求,具体是多长时间取决于商品的提前期和目标库转等因素。理论上我们可以直接预测这段时间的总需求所服从的概率分布。但站在甲方的角度,一段时间的总需求?还概率分布?没概念啊!你不告诉我每天的情况,直接丢一个最终结果给我,我怎么知道你靠不靠谱呢?

阅读全文 »

根据 Google Python Style Guide,Python 中的参数名一般为 lower_with_under 风格。而根据 Google Java Style Guide, Java 中的参数名一般为 lowerCamelCase 风格。那么问题来了,假如你写了一个 Python 算法服务供 Java 后端调用,设计接口的时候参数名应该采用什么命名风格呢?我工作中就遇到过这个问题。使用 Python 风格吧,后端同学用起来不方便;使用 Java 风格吧,作为一个强迫症我又很难受。有没有两全其美的办法呢?

阅读全文 »

《销量预测中的误差指标分析》一文中,我们介绍了一些时间序列点预测中常用的指标。而通过在《为什么需要考虑销量的随机性?》《报童问题》《报童问题的简单解法》等文中的探讨,我们已经看到,将需求预测的方式从点预测改为概率分布预测,可以有效降低库存管理的风险,获得更大的期望收益。针对时间序列的概率分布预测,我们也已经介绍了 DeepARTransformer 等若干深度学习模型。那么,该如何评估概率分布预测的效果呢?在《概率预测的评估方法简介》一文中,我们已经介绍了一些通用的概率预测的评估指标。在本文中,我们再补充介绍几个适用于时间序列的概率预测评估指标。

阅读全文 »

前几天整理电脑的时候发现了本科上量子力学讨论班时做的一个 Slide,觉得挺有意思的。花了点时间整理成这篇博客。

一维谐振子

一个质量为 mm 的粒子,在一维势场 V(x)=12mω2x2V(x) = \dfrac12m\omega^2x^2 中运动。其哈密顿算符为

H^=p^22m+12mω2x^2\hat H = \frac{\hat p^2}{2m} + \frac12m\omega^2\hat x^2

其中 x^\hat x 为位置算符,p^=iddx\hat p = -i\hbar\dfrac{\mathrm d}{\mathrm dx} 为动量算符。我们需要求解该体系的定态 Schrödinger 方程:

H^ψ>=Eψ>\hat H\left|\psi\right> = E\left|\psi\right>

阅读全文 »

之前在介绍 DeepAR 等时间序列预测模型时,为了简单起见,我们使用了大家比较熟悉的正态分布作为示例。在实际应用中,需要根据数据本身的特点选择合适的分布。泊松分布、二项分布、以及负二项分布都可以用来刻画计数类数据。其中,泊松分布的 μ=σ2\mu=\sigma^2,二项分布的 μσ2\mu\geq\sigma^2,负二项分布的 μσ2\mu\leq\sigma^2。在我日常接触的业务场景中,μσ2\mu\leq\sigma^2 较为常见,为此免不了要跟负二项分布打交道。

虽然没什么必要,但是本着「有困难要上,没困难创造困难也要上」的精神,我们还是来推导一下负二项分布的相关公式。

阅读全文 »

ZZ 表示一个随机变量,其概率密度函数为 f(z)f(z),累积分布函数为 F(z)F(z)。定义函数

L(Z,Z^)=ρmax(ZZ^,0)+(1ρ)max(Z^Z,0)L(Z,\hat Z)=\rho\cdot\max(Z-\hat Z, 0)+(1-\rho)\cdot\max(\hat Z-Z, 0)

其中 Z^R\hat Z\in \mathbb Rρ(0,1)\rho\in(0,1)。求使得 L(Z,Z^)L(Z,\hat Z) 的期望最小的 Z^\hat Z 的取值。

L(Z,Z^)L(Z,\hat Z) 的期望为

E[L(Z,Z^)]=+L(z,Z^)f(z)dz=ρZ^+(zZ^)f(z)dz+(1ρ)Z^(Z^z)f(z)dz\begin{aligned} \mathbb{E}[L(Z,\hat Z)] &= \int_{-\infty}^{+\infty}L(z,\hat Z)f(z)\mathrm dz\\ &= \rho\int_{\hat Z}^{+\infty}(z-\hat Z)f(z)\mathrm dz + (1-\rho)\int_{-\infty}^{\hat Z}(\hat Z - z)f(z)\mathrm dz \end{aligned}

阅读全文 »