使用 PHP 或 Python ,但我确信基本功能是不可知的。
我不确定正确的术语,数学理论或算法是什么,否则我肯定Google会在几分钟内为我解决这个问题。
我有一个类似于以下的数据集:
cost | qty | ppl | store
------------------------
30| 500| 10| 1
40| 600| 12| 2
35| 500| 14| 3
50| 700| 10| 1
30| 700| 12| 1
40| 250| 14| 2
我要做的是根据这些限定符找到“最佳”行:
基本上,我试图在“团购”的情况下找到最好的特定“交易”,其中需要最少数量的人才能获得最佳“价值”(数量 - 成本 - 成本)。
在我看来,由于数量的增加,最好的整体将是第5行。
如果有这个名称,以及关于这个主题的好文章(维基百科?),我很乐意自己完成。谢谢你的时间!
答案 0 :(得分:5)
计算qty / (cost * ppl)
并按该数字对列表进行排序。较高qty
及较低cost
和ppl
的此数字会更高。
你可能想要使用这样的东西(python):
def cmp(a, b):
return (a["qty"] / (a["cost"] * a["ppl"])) - (b["qty"] / (b["cost"] * b["ppl"]))
list = sorted(list, cmp)
解释:想一想qty
在cost * ppl
不变时变大的情况会发生什么。该比率将增加,因为a/x > b>x
如果a > b
。现在有了另外两个价值观,反之亦然;如果x/a > x/b
,那么a < b
,那么当cost
或ppl
增加时,这个比率实际上会降低 <(想想如果你拆分100美元会发生什么)对于两个人对三个人;如果你将它分成两个,每个将得到100/2 = 50 $。如果你把它分成三个,每个将得到100 / 3~ = 33 $,这更少)。 (对不起,如果我说得不够清楚;我累了)
答案 1 :(得分:1)
您正在查看linear programming,特别是simplex algorithm。
答案 2 :(得分:0)
你需要决定什么使它最优,定义一个取决于成本,数量,ppl的函数,并最大化/最小化它。然后它只是优化。
我假设成本是每件商品的成本,数量是商店中可用的数量,而ppl是团购的最小人数。然后最小化成本* ppl / qty相当于最小化花费的最小总金额在它开始之前,除以可以参加团购的人数。但你还是要考虑这是否有意义。你可能会说,如果成本增加一倍,但可用的数量也会增加一倍,因为这个团购比一个小团购还差。也许如果成本翻倍,数量必须增加4,或者必需的数量减少4,那么你可能需要像cost ^ 2 ppl / qty这样的函数。例如,一般的东西,如成本^ m ppl ^ n / qty ^ p应该工作;你只需根据你认为合适的权重调整m,n,p(所有正数)。