选择集合元素以实现平均价格的算法
Algorithm to pick elements of collection to achieve average price
我需要解决以下问题:
我有一系列附有价格的商品,我需要选择给定的数量以达到给定的加权平均价格。
例如。
我可以将相同价格的数量分组以更好地理解:
price qty
.00 60
.04 80
[=10=].99 55
.10 130
现在我需要从每个箱子中选择我需要多少元素才能以平均价格达到 100 个元素 = 1.035
你知道不用暴力组合的求近似解的算法吗? - 我也是时间紧迫。
它看起来有点像背包算法,虽然我不确定我必须使用的约束。
谢谢
这是一个整数线性规划问题。
将其表示为线性规划问题意味着变量 a
、b
、c
、d
和 a+b+c+d=100
以及 a*1+b*1.04+c*0.99+d*1.10=1.035*100
和 0<=a<=60
、0<=b<=80
、0<=c<=55
和 0<=d<=130
.
你没有明说,但应该是整数解(即买的数量必须是整数),所以是整数线性规划问题,而不是线性规划问题。虽然 ILP 问题通常是 NP-hard 问题,但您可以在网上找到可以轻松解决这个小问题的求解器和算法。例如,尝试 GLPK。
另请注意,蛮力在这里很有效; a,b,c,d
只有 176851 种组合可供尝试。
我需要解决以下问题:
我有一系列附有价格的商品,我需要选择给定的数量以达到给定的加权平均价格。
例如。
我可以将相同价格的数量分组以更好地理解:
price qty
.00 60
.04 80
[=10=].99 55
.10 130
现在我需要从每个箱子中选择我需要多少元素才能以平均价格达到 100 个元素 = 1.035
你知道不用暴力组合的求近似解的算法吗? - 我也是时间紧迫。
它看起来有点像背包算法,虽然我不确定我必须使用的约束。
谢谢
这是一个整数线性规划问题。
将其表示为线性规划问题意味着变量 a
、b
、c
、d
和 a+b+c+d=100
以及 a*1+b*1.04+c*0.99+d*1.10=1.035*100
和 0<=a<=60
、0<=b<=80
、0<=c<=55
和 0<=d<=130
.
你没有明说,但应该是整数解(即买的数量必须是整数),所以是整数线性规划问题,而不是线性规划问题。虽然 ILP 问题通常是 NP-hard 问题,但您可以在网上找到可以轻松解决这个小问题的求解器和算法。例如,尝试 GLPK。
另请注意,蛮力在这里很有效; a,b,c,d
只有 176851 种组合可供尝试。