<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki2.lessokaji.com/index.php?action=history&amp;feed=atom&amp;title=%E6%B5%81%E5%9C%BA%E8%A7%84%E5%88%92</id>
	<title>流场规划 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki2.lessokaji.com/index.php?action=history&amp;feed=atom&amp;title=%E6%B5%81%E5%9C%BA%E8%A7%84%E5%88%92"/>
	<link rel="alternate" type="text/html" href="https://wiki2.lessokaji.com/index.php?title=%E6%B5%81%E5%9C%BA%E8%A7%84%E5%88%92&amp;action=history"/>
	<updated>2026-05-16T16:07:32Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki2.lessokaji.com/index.php?title=%E6%B5%81%E5%9C%BA%E8%A7%84%E5%88%92&amp;diff=1030&amp;oldid=prev</id>
		<title>Artheru：​Initial bilingual draft (auto-published)</title>
		<link rel="alternate" type="text/html" href="https://wiki2.lessokaji.com/index.php?title=%E6%B5%81%E5%9C%BA%E8%A7%84%E5%88%92&amp;diff=1030&amp;oldid=prev"/>
		<updated>2026-05-16T11:43:11Z</updated>

		<summary type="html">&lt;p&gt;Initial bilingual draft (auto-published)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 概述 / Overview ==&lt;br /&gt;
流场规划（Flow-field planning）是 [[Special:MyLanguage/DPS调度算法详解|DPS]] 之外的另一种调度内核选项。它把仓库 / 工厂的地面预计算为一个 ''矢量场''（每格指向&amp;quot;应该走的方向&amp;quot;），车辆按场行驶。流场对 ''车辆数极多 / 任务动态高''的场景有显著优势 —— 不需要为每辆车单独跑 A*。&lt;br /&gt;
&lt;br /&gt;
Flow-field planning is an alternative scheduling-kernel option to [[Special:MyLanguage/DPS调度算法详解|DPS]]. The warehouse / factory floor is pre-computed as a '''vector field''' (each cell points the way to go); vehicles simply follow the field. Flow-field is advantageous for ''very large fleets / very dynamic tasks'' — no per-car A* required.&lt;br /&gt;
&lt;br /&gt;
== 适用场景 / When to use ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 项 / Item !! DPS !! 流场 / Flow-field&lt;br /&gt;
|-&lt;br /&gt;
| 车队规模 / Fleet size || ≤ ~30 || 30 – 数千 / 30 – thousands&lt;br /&gt;
|-&lt;br /&gt;
| 任务动态性 / Task dynamics || 中等 || 极高（每秒大量任务）&lt;br /&gt;
|-&lt;br /&gt;
| 死锁保证 / Deadlock-free || 是 / Yes (algorithmic) || 经验性，需调（empirical）&lt;br /&gt;
|-&lt;br /&gt;
| 通道宽度 / Lane width || 单车通过即可 || ≥ 2 车并行&lt;br /&gt;
|-&lt;br /&gt;
| 离线计算 / Offline cost || 低 / Low || 高（重映射地图需要重算流场）&lt;br /&gt;
|-&lt;br /&gt;
| 路径最优性 / Path optimality || 全局最优 || 接近最优（流场近似）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
典型用例：电商物流仓（一日万级任务、数百 KIVA 车）；不适合：单线性产线（车数 &amp;lt; 10）、复杂场景多车型混跑（建议 DPS）。&lt;br /&gt;
&lt;br /&gt;
Typical use: e-commerce sortation warehouses (tens of thousands of tasks/day, hundreds of KIVAs). Not for: small linear production lines (DPS is simpler), heavily mixed-vehicle complex layouts.&lt;br /&gt;
&lt;br /&gt;
== 算法原理 / Algorithm overview ==&lt;br /&gt;
=== 离线 / Offline ===&lt;br /&gt;
# 把地面离散为格点（典型 100 × 100 mm）。&lt;br /&gt;
# 对每个 ''目标站点''  T，求解到 T 的距离场（Dijkstra / 平面波传播）。&lt;br /&gt;
# 每个格的 ''流向''= 距离场负梯度方向。&lt;br /&gt;
# 多种 ''场层''可叠加：单车流场、紧急通道流场、双向回路流场。&lt;br /&gt;
&lt;br /&gt;
=== 在线 / Online ===&lt;br /&gt;
# 车收到任务（目标站点 T）→ 选 ''T 对应的流场层''。&lt;br /&gt;
# 车每个 tick 查当前位置所在格的 ''流向 + 速度上限''，作为局部目标。&lt;br /&gt;
# 实时局部避让在 Clumsy [[Special:MyLanguage/绕障行走|绕障行走]] 中处理。&lt;br /&gt;
# 当场内多车密集时，启用 ''拥挤检测'': 车队主动减速或绕到旁路流场层。&lt;br /&gt;
&lt;br /&gt;
=== 死锁与无死锁 / Deadlock &amp;amp; no-deadlock ===&lt;br /&gt;
流场本身 ''不能算法上保证''无死锁。MDCS 通过两个补丁来规避：&lt;br /&gt;
* '''拥挤检测 + 调速''': 一个区域车辆密度超过阈值后，进入流量限制。&lt;br /&gt;
* '''DPS 兜底''': 在 ''关键路口 / 工位口''仍用 DPS 锁，保证局部无死锁。&lt;br /&gt;
&lt;br /&gt;
The flow field itself does '''not''' algorithmically prevent deadlock. MDCS uses two patches:&lt;br /&gt;
* Density-triggered congestion detection + rate limiting.&lt;br /&gt;
* DPS fallback on critical intersections and station mouths.&lt;br /&gt;
&lt;br /&gt;
== 数据结构 / Data structures ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class FlowFieldLayer&lt;br /&gt;
{&lt;br /&gt;
    public int   Id;&lt;br /&gt;
    public int   TargetSiteId;&lt;br /&gt;
    public byte[,] FlowDir;       // 每格存方向编码 0..7（8 个邻居方向） / 8-way direction encoding&lt;br /&gt;
    public ushort[,] SpeedCap;    // mm/s&lt;br /&gt;
    public float[,] Distance;     // 距离场（用于优先级 / 比较）&lt;br /&gt;
    public bool[,] Reserved;      // 为应急通道保留？&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
存储格式：二进制紧凑布局（每格 ≤ 8 字节）；100 m × 100 m 工地约 80 MB / 流场。&lt;br /&gt;
Storage: binary-packed (≤ 8 bytes / cell); ~80 MB / flow-field for a 100 × 100 m site.&lt;br /&gt;
&lt;br /&gt;
== 在 MDCS 中启用 / Enabling in MDCS ==&lt;br /&gt;
* SimpleComposer 配置 → 调度内核 → 切换为&amp;quot;流场&amp;quot;。&lt;br /&gt;
* 必须先用 [[Special:MyLanguage/开发手册 - SimpleComposer界面开发 - CAD工具|CAD 工具]]为每个目标站点跑离线流场生成。&lt;br /&gt;
* 启用后 DPS 仍在路口 / 工位口生效；车体行驶段交给流场。&lt;br /&gt;
&lt;br /&gt;
== 与 DPS 的混合 / Hybrid with DPS ==&lt;br /&gt;
推荐配置（大规模仓储）：&lt;br /&gt;
* '''行驶段''' = 流场（粗粒度引导）&lt;br /&gt;
* '''路口段''' = DPS（保证无死锁）&lt;br /&gt;
* '''工位口''' = DPS + 可达性状态（确保进出顺序）&lt;br /&gt;
&lt;br /&gt;
Recommended hybrid (large warehouses):&lt;br /&gt;
* '''Traverse segments''' = flow-field (coarse guidance).&lt;br /&gt;
* '''Intersections''' = DPS (algorithmic deadlock-free).&lt;br /&gt;
* '''Station mouths''' = DPS + reachability state (ordering).&lt;br /&gt;
&lt;br /&gt;
== 限制 / Caveats ==&lt;br /&gt;
* 地图变化（增删站点 / 路径）要 ''重新生成所有流场''；典型 5–30 分钟离线。&lt;br /&gt;
* 流场对 ''朝向''是无知的 —— 阿克曼车辆需用流场 + ''曲率惩罚''搜索局部可行路径。&lt;br /&gt;
* 多车型流场：每种车型一套（包络不同）。&lt;br /&gt;
&lt;br /&gt;
* Map changes force a full off-line regeneration of every flow-field (5–30 min).&lt;br /&gt;
* Flow-fields are heading-agnostic — Ackermann vehicles need a local pass with curvature penalties.&lt;br /&gt;
* Per vehicle-type: one flow-field set each (different envelopes).&lt;br /&gt;
&lt;br /&gt;
== 相关页面 / See also ==&lt;br /&gt;
* [[Special:MyLanguage/DPS调度算法详解|DPS调度算法详解]]&lt;br /&gt;
* [[Special:MyLanguage/调度内核运行原理|调度内核运行原理]]&lt;br /&gt;
* [[Special:MyLanguage/基于网络流的业务规划器|基于网络流的业务规划器]]&lt;br /&gt;
* [[Special:MyLanguage/使用手册 - 寻路启发器功能|寻路启发器功能]]&lt;br /&gt;
* [[Special:MyLanguage/Simple软件架构|Simple软件架构]]&lt;br /&gt;
&lt;br /&gt;
[[Category:技术报告]]&lt;/div&gt;</summary>
		<author><name>Artheru</name></author>
	</entry>
</feed>