惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
U
Unit 42
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
腾讯CDC
I
InfoQ
GbyAI
GbyAI
博客园_首页

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
供应链产品经理必读:运输管理系统TMS路径规划设计实现
老杨产品进化论 · 2025-04-18 · via 人人都是产品经理

深入解析供应链产品经理在运输管理系统(TMS)路径规划中的关键挑战与解决方案,本文将指导你如何结合业务规则、算法和数据,打造一套切实可行的路径规划策略,并提供源码以供参考。

今天这篇文章,我想解决一个供应链产品经理在运输管理系统(TMS)路径规划上的核心痛点:如何从业务调研到算法实现,完成一套可落地的路径规划方案?

起因:最近在帮地区龙头超市优化食百大仓的便利店配送体系时,发现他们的部分场景运输成本居高不下——同一街道配送3家店和5家店的运费几乎相同,但实际运营效率却天差地别。更头疼的是,业务方提的需求往往是“能不能让系统自动算最优路线”,但到底什么算“最优”?是成本最低?时效最快?还是车辆装载率最高?

结论:TMS的路径规划绝不是简单调用高德API画条线,而是业务规则+算法+数据的三重结合。

本文将围绕以下核心脉络展开:

  • 业务场景穿透:为什么便利店计费的“趟次加点”规则会影响算法设计?
  • 数据建模:如何从零构建主数据表(含Python模拟数据代码)?
  • 算法选择:遗传算法、禁忌搜索、OR-Tools怎么选?
  • 汇报逻辑:如何向领导证明你的方案能省下30%运费?(附可视化代码)

一、业务场景穿透:从“趟次加点”到算法约束

为什么业务规则决定算法设计?

物美的配送有一个关键规则:

“趟次加点”:同一街道配送≤3家店算一趟(固定运费),每多1家店额外加50元。

这意味着:

算法目标不仅是缩短距离,还要尽量让同一街道的配送门店数接近3的倍数(如3家、6家)。

约束条件包括:车辆载重(板数)、门店收货时间窗口、车型匹配(如四环外可用全天时段)。

业务方案≠产品方案:

业务方可能说“系统自动排线就行”,但产品经理要拆解出量化指标:

  • 成本维度:单趟运费、加点费用、空驶率;
  • 效率维度:车辆装载率、门店等待时间。
  • 主数据建模:6张表决定路径规划上限

路径规划依赖高质量的主数据,以下是核心表结构(附Python生成代码):

(1)街道办管辖信息表

import pandas as pdimport random

# 模拟北京/河北街道办数据

streets = [“朝阳区望京街道”, “海淀区中关村街道”, “东城区东华门街道”, “通州区梨园街道”, “燕郊镇迎宾路街道”]data = {

“街道办名称”: streets,

“管辖范围”: [(39.9 + random.random()*0.1, 116.4 + random.random()*0.2) for _ in streets]

# 模拟经纬度范围

}df_street = pd.DataFrame(data)

(2)门店信息表

(关键字段)stores = []for i in range(60):

store_code = f”ST{random.randint(1000,9999)}”

street = random.choice(streets)

lat, lon = 39.9 + random.random()*0.5, 116.3 + random.random()*0.6

# 模拟经纬度

stores.append({

“门店编码”: store_code,

“门店地址”: f”北京市{street.split(‘区’)[0]}区{street}路{random.randint(1,100)}号”,

“门店经纬度”: (lat, lon),

“限定车型”: random.choice([“T4.2”, “T5.6”, “T7.6”]),

“收货时段”: “4:00-7:00” if “朝阳” in street else “全天”

})df_stores = pd.DataFrame(stores)

二、算法实战:如何用Python实现最优路径规划?

1. 算法选型:为什么用OR-Tools?

遗传算法:适合复杂约束,但调参难;

禁忌搜索:局部优化强,但全局性弱;

OR-Tools:Google开源,支持时间窗、载重等约束,最适合业务规则明确的场景。

2. 核心代码逻辑

from ortools.constraint_solver import routing_enums_pb2from ortools.constraint_solver import pywrapcp

# 1. 定义距离矩阵(计算门店间驾车距离)def create_distance_matrix(locations):

# 调用高德API或OSRM计算实际距离

return distance_matrix

# 2. 设置OR-Tools求解器

def optimize_routes(data):

manager = pywrapcp.RoutingIndexManager(len(data[‘distance_matrix’]), data[‘num_vehicles’], data[‘depot’])

routing = pywrapcp.RoutingModel(manager)

# 添加距离约束

def distance_callback(from_index, to_index):

return data[‘distance_matrix’][manager.IndexToNode(from_index)][manager.IndexToNode(to_index)]

transit_callback_index = routing.RegisterTransitCallback(distance_callback)

routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index)

# 添加载重约束(板数)

def demand_callback(from_index):

return data[‘demands’][manager.IndexToNode(from_index)]

routing.AddDimensionWithVehicleCapacity(

demand_callback_index, 0, data[‘vehicle_capacities’], True, ‘Capacity’)

# 设置搜索参数

search_parameters = pywrapcp.DefaultRoutingSearchParameters()

search_parameters.first_solution_strategy = routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC

# 3. 求解并输出    solution = routing.SolveWithParameters(search_parameters)

return solution

四、汇报呈现:用数据说服领导的3个技巧

4.1 具象案例对比

旧方案:燕郊线日均里程182km,运费¥2100

新方案:通过街道拼单,里程降至145km(↓20%),运费¥1750

4.2 量化改进价值指标

优化前优化后降幅日均总里程680km540km20.60%趟次加点费用¥950¥60036.80%门店投诉率12%3%75%

4.3 风险预判

技术风险:高德API日均调用量超限?→ 本地缓存路径矩阵。

业务风险:司机拒接新路线?→ 上线前用“影子模式”对比新旧方案。

总结:TMS路径规划的“三重思维”

  1. 业务穿透力:识别“趟次加点”等隐性规则,比算法本身更重要。
  2. 数据驱动力:用主数据表构建最小可行业务单元(如街道办多边形)。
  3. 战略对齐力:将路径优化与公司“降本30%”目标挂钩,而非单纯技术升级。

本文由人人都是产品经理作者【老杨产品进化论】,微信公众号:【老杨产品进化论】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。