代码之家  ›  专栏  ›  技术社区  ›  anonymous coward

在“团购”中找到最好的“交易”,给出一张价值表

  •  3
  • anonymous coward  · 技术社区  · 14 年前

    使用 菲律宾比索 蟒蛇 ,但我相信基本功能是不可知的。

    我有一个类似于以下的数据集:

    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
    

    • 成本:越低越好。
    • 数量:越高越好。
    • 商店:在这种情况下并不重要,但以后会根据“商店”来找到“最好的”。

    本质上,我试图在“团购”这种情况下找到最好的“交易”,在这种情况下,获得最佳“价值”(数量与成本)所需的人数最少。

    如果有这个名字,和一个好的(维基百科?)关于这个问题的文章,我很乐意自己完成。谢谢你的时间!

    3 回复  |  直到 14 年前
        1
  •  5
  •   Gabi Purcaru BornCoder    14 年前

    计算 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)
    

    解释 :想想如果 数量 变得越来越大 cost * ppl 是不变的。比例会增加,因为 a/x > b>x 如果 a > b x/a > x/b ,然后 a < b 所以这个比率实际上 降低 成本 增加(想想如果你把100美元分给两个人而不是三个人会发生什么;如果你把它分给两个人,每个人会得到100/2=50美元。如果你把它分成三份,每个人将得到100/3~=33美元,这是更少的)。(如果我说得不够清楚,很抱歉;我累了)

        2
  •  1
  •   Katriel    14 年前

    你在看 linear programming 一般来说 simplex algorithm 特别地。

        3
  •  0
  •   dr jimbob    14 年前

    你需要决定什么使它最优化,定义一个依赖于成本、QTY、PPL和最大化/最小化它的函数。那就是优化。

    我假设成本是每件商品的成本,数量是商店中的可用数量,而ppl是团购可以加入的最低人数。那么,最小化成本*ppl/数量等于最小化投入前的最低总花费,除以如果可以参与团购的人数。但你还是得想想这有意义吗。你可能会说,如果成本翻倍,但数量也翻倍,这个团购比一个较小的。如果成本翻倍,数量可能会增加4,或者ppl的必要减少4。那么您可能需要一个像cost^2ppl/qty这样的函数。E、 一般来说,像cost^m ppl^n/qty^p这样的方法应该行得通;你只要根据你认为合适的权重调整m,n,p(所有的正数)。