将定价优化制定为 MILP

Formulating pricing optimization as MILP

我不确定是否有可能以线性方式表述以下问题,或者我是否应该尝试非线性优化它。

我希望找到产品的固定费用 F 和可变价格 p 的最佳组合。

我有给定数量的 n 客户,他们每个人都想购买数量 q_i,他们愿意为此支付总价 w_i

我的 objective 是最大化收入:max sum( F + q_i * p) 所有客户 i in n

我的决策变量当然是Fp,然后是n个二进制变量s_i,表示客户是否购买。

我在表述这个问题时遇到了困难,并且以一种允许客户不购买的方式进行限制 - 一些客户的支付意愿非常低。

显然存在约束 F + q_i * p <= w_i 但这仅适用于购买的客户。我想强加类似 s_i * (F + q_i * p) <= w_i 的东西,但这显然不是线性的。

我希望以上内容有意义,并在此先感谢您的帮助。

我再试一次。

我们可以将问题表述为:

 max sum(i,  s(i)*(F+p*q(i))) 
     s(i)*(F+p*q(i)) ≤ w(i)
     for variables s(i) ∈ {0,1}, p ≥ 0, F ≥ 0

这可以线性化为:

 max sum(i, y(i))
     y(i) ≤ F+p*q(i)
     y(i) ≤ s(i)*w(i)
     y(i) ≥ F+p*q(i) - (1-s(i))*M
     for variables s(i) ∈ {0,1}, p ≥ 0, F ≥ 0, y(i) ≥ 0
     with M a large enough constant

许多求解器允许指标约束。这将简化事情:

 max sum(i, y(i))
     s(i) = 1 ==> y(i) = F+p*q(i)
     y(i) ≤ s(i)*w(i)  
     for variables s(i) ∈ {0,1}, p ≥ 0, F ≥ 0, y(i) ≥ 0      

或使用两个指标约束::

 max sum(i, y(i))
     s(i) = 1 ==> y(i) = F+p*q(i)
     s(i) = 0 ==> y(i) = 0
     for variables s(i) ∈ {0,1}, p ≥ 0, F ≥ 0, y(i) ∈ [0,w(i)]