求大佬们推荐个算法,解决业务问题(最优商品购买组合问题) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
oktango
V2EX    程序员

求大佬们推荐个算法,解决业务问题(最优商品购买组合问题)

  •  
  •   oktango 2022-07-26 18:16:00 +08:00 2260 次点击
    这是一个创建于 1201 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬们,请教个算法问题哈:

    背景是这样的: 1 、有一堆的待购买的商品 ,需要从商家处进行采购,从商家进行采购,需要运费和商品价格。运费的计算规则和商品的总重量以及运距有关系。 2 、有好几家商店,每家店的位置不同,可售卖的商品不一样,同一商品的价格也不一样。

    除了暴力枚举外,有没有什么算法,可以求出一个最优解,花最少的钱(运费+商品价格),把东西买回来呀。

    11 条回复    2022-07-27 17:49:37 +08:00
    learningman
        1
    learningman  
       2022-07-26 18:16:23 +08:00 via Android
    背包问题
    cyrbuzz
        2
    cyrbuzz  
       2022-07-26 18:27:21 +08:00
    遗传算法?
    paradoxie
        3
    paradoxie  
       2022-07-26 19:22:48 +08:00
    就是背包吧
    bsg1992
        4
    bsg1992  
       2022-07-26 20:12:55 +08:00
    动态规划
    sillydaddy
        5
    sillydaddy  
       2022-07-26 20:39:14 +08:00
    我觉得一个关键的点是:运费计算规则是什么样的,运费与总重量有什么关系。

    先看一个简单的情形:对于同一家商店,运费与商品的重量成正比。
    比如商店 A ,1000kg 商品,运费是 1000 。那么商店 A 出售的每件商品,费用=商品价格+商品重量*1 元 /kg 。也就是说每件商品的含运费价格是可以计算出来的。比如一个小吃,进价 10 元,重量 1kg ,那么含运费价格=10+1=11 元。

    单一商品在每个商店的含运费价格都可以计算出来,那么,对于这个商品,比较含运费价格,从最低的商店进货就行,数量不够就继续从第二低的商店进,直到数量足够。

    既然单一商品可以这样做,那么所有的商品都可以这样做。所需要的只是把所有商品的含运费价格计算出来。

    但实际生活中,运费跟重量并不是简单的线性关系(比如运输费与重量是分段的线性关系,图形上看是多段折线)。对于非线性的,我暂时还没想到有啥合适的算法,动态规划和背包算法应该是不合适的。
    yehoshua
        6
    yehoshua  
       2022-07-26 20:42:46 +08:00 via Android
    没有特殊运费规则情况下,枚举就比较好。每种商品单独计算从不同商家购买的价格,包括运费。选择价格最低的供应商。程序复杂度也不高。
    bsg1992
        7
    bsg1992  
       2022-07-26 20:49:55 +08:00
    @bsg1992
    仅从现有描述的条件下来看。
    只需要把 商品价格 运费 距离 重量 商家 提前计算好 缓存起来 直接查询就可了
    bybyte
        8
    bybyte  
       2022-07-27 01:24:19 +08:00 via Android
    参考背包九讲
    dayeye2006199
        9
    dayeye2006199  
       2022-07-27 15:57:02 +08:00 via Android
    这个要看运费的计算是不是线性的。
    如果是线性的,就是比较简单的背包问题求解。

    如果不是线性的,就比较复杂,可以考虑启发式算法
    wingor2015
        10
    wingor2015  
       2022-07-27 16:22:25 +08:00
    想不到啥好办法,估计只能试试启发式算法了
    Aganzo
        11
    Aganzo  
       2022-07-27 17:49:37 +08:00
    这种业务问题怕是没那么容易去简化,例如阶梯式进价及运费:
    1, A 商品 10 件起售,单价 1 元。满 100 件,单价 0.5 元(需采购 60 件)。订单满 1000 元,整体 98 折或送 B 商品 10 件。
    2 ,满 10KG 商品,闪送运费 10 元 /公里,满 100KG ,金杯运费 50 元 /公里,满 10T ,货车上门 100 元 /公里。不满一车按一车计算。
    建议直接上 Gurobi 等求解器硬撸最优解
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2729 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 13:34 PVG 21:34 LAX 05:34 JFK 08:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86