使用手册 - 寻路启发器功能

来自MDCS wiki
Yuhang讨论 | 贡献2023年12月21日 (四) 10:10的版本 (创建页面,内容为“== 1.寻路启发器作用 == 在实际现场业务中,我们往往需要对”哪种车可以走哪条路“进行限定,或者自定义寻路的规则,此时就需要用到寻路启发器。 == 2.如何定义一个启发器 == 可以参考以下代码<syntaxhighlight lang="c#" line="1"> public class BYDBcHeuristics : HeuristicsContainer { [HeuristicDef] public bool BYDCarShouldGo(SegmentPlan.SearchStat stat) { if (plan.usingCar.fields.Co…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

1.寻路启发器作用

在实际现场业务中,我们往往需要对”哪种车可以走哪条路“进行限定,或者自定义寻路的规则,此时就需要用到寻路启发器。

2.如何定义一个启发器

可以参考以下代码

public class BYDBcHeuristics : HeuristicsContainer
		{
			[HeuristicDef]
			public bool BYDCarShouldGo(SegmentPlan.SearchStat stat)
			{
				if (plan.usingCar.fields.ContainsKey("A"))
				{
					if (stat.previousTrack.fields.ContainsKey("noAllowA")) return false;
					return true;
				}
				if (plan.usingCar.fields.ContainsKey("BC"))
				{
					if (stat.previousTrack.fields.ContainsKey("noAllowBC")) return false;
					return true;
				}
				return true;
			}
		}

首先创建一个继承HeuristicsContainer的类,定义一个返回值为bool的方法。在方法中编写寻路逻辑,当return false时代表不可选择这条路。

如上代码表示,如果小车标记了A字段,那么不可以行走在标记了noAllowA的路上,如果小车标记了BC字段,则不可行走在标记了noAllowBC的路上。