优化算法应用:从实验室论文到业务落地的那些坑
别拿论文里的基准测试当饭吃
现在不管是顶会论文还是开源项目,拿出的效果全是在标准测试集上跑出来的好看数字。很多新手一看,哟,准确率这么高,速度这么快,直接搬去用,十有八九要翻车。
就说我这个朋友的项目,他用的公共库存数据集,一共才几百个SKU,全是整理干净的平滑数据,没有异常订单,没有经销商临时改量,更没有大促过后的残留异常值。他自己的业务呢?一万两千多个SKU,光是快消品临期这一条约束,论文里提都没提。跑出来的补货计划,要么热门货补少了断货,要么滞销货补多了烂在仓库里。
电商多SKU库存优化算法测试集落地结果对比图
说实话,我见过至少十几个创业团队,栽在这个坑里。拿着论文里的好看结果拿融资,一上线就露馅。优化算法的最优解,永远是对应给定约束和给定数据的最优解。换了场景,换了数据,原来的最优解可能还不如人工拍脑袋出来的结果。
上个月刷顶会,看到一篇新论文吹自己的优化算法比传统粒子群快30%,精度高五个点。点进去一看,测试集全是学术界用了三十年的标准算例,连实际业务里最常见的动态约束都没加。这种结果,也就只能用来发论文,真拿出来用?全是水。
懂约束比找全局最优更重要
很多学理论的算法工程师,开口就是全局最优,闭口就是收敛速度。可落到实际应用里,我掏一句干货给你:找到满足所有硬约束的可行解,比找到不满足约束的全局最优重要一万倍。
你算出来的配送路线总距离比现在短10%,但要求司机一天开16小时,违反劳动法,这个解能用吗?不能,直接扔。你给工厂排出来的生产计划,总工时少了五个小时,但要求一台机器同时加工两个订单,这个解能用吗?也不能,废品。
之前接触过一个做汽车零部件工厂排程的团队,原来用模拟退火算法,天天出一堆不可行的解,调度员每天还要花两三个小时改。后来他们改了逻辑:先把所有硬约束拉出来,提前筛掉不可行域,再在剩下的可行域里找局部最优。就这么改了一步,出错率直接降了92%,调度员都给他们送奶茶。
工厂排程优化算法可行域约束划分示意图
不过话说回来,大部分业务根本不需要什么全局最优。你只要比原来人工做的好10%,能帮公司省几十万几百万,老板就偷着乐了,谁管你是不是找到了全局最优?
去年面试一个应届生,上来就说自己熟练掌握十几种前沿优化算法,各个基准测试的排名都靠前。我问他,要是你的优化问题,业务约束每天都变,你怎么处理?他说我每天重新调参跑一遍就行了啊。你看,这就是没落地过的通病。优化算法应用,约束才是灵魂。业务变,约束变,你只要留好约束接口,不用换核心算法,就能一直用。纠结什么全局最优,纯属想多了。
小算法比大模型更适合大部分落地场景
小算法比大模型更适合大部分落地场景
这两年大模型火了,什么都要往上凑,优化算法也不例外。我真是服了这帮为了凑技术热点瞎折腾的团队。放着好好的传统优化算法不用,非要换大模型重做,成本涨几十倍,效果还掉了,图什么啊?
之前看一个头部外卖平台的技术分享,他们做骑手实时路径优化,原来用的是改进Dijkstra加邻域搜索,请求延迟能稳定控制在100毫秒以内,每月算力成本才几十万。后来有人提出来要用大模型做端到端优化,拉了一个团队试了三个月,最低延迟也要八百多毫秒,高峰时段直接卡崩,配送准确率还掉了六个点,最后老老实实改回原来的方案。
为什么会这样?大部分优化问题,都是目标明确、约束清晰的结构化问题。传统优化算法解决这种问题,几十年积累下来的经验,不要太稳。成本低,速度快,效果还好,你非要用大模型,那不是提着大炮打蚊子,炮太重你扛不动,打还打不准吗?
当然,我不是说大模型完全没用。那种目标模糊、约束也模糊的优化问题,比如品牌的季度营销预算分配,既要拿转化,也要做品牌曝光,还要留预算应对突发的舆情事件,多个目标没法量化加权,这种时候,用大模型来做约束的量化梳理,再结合传统优化算法找解,效果确实比原来好。但大部分常规的优化场景,真没必要凑这个热闹。
前阵子我那个做库存的朋友改完算法,把原来全SKU全局搜索改成了先按动销分群再分层搜索,去掉了论文里花里胡哨没用的变异操作,加了临期库存和异常订单的硬约束,现在补货准确率稳定在86%以上,每个月能少亏十几万。
做优化算法应用,哪来那么多高大上的黑科技。能落地,能解决问题,能帮业务赚钱省钱,就是最好的算法。对吧?