在我找到学校项目的路径中,用户有两个选项可以在两点之间导航:
-
最短路径(公里) . 我已经将每个2点的成本函数定义为连接它们的道路的距离 .
-
最快的路径(每条路都有速度限制) . 我已经将每个2点之间的成本函数定义为1 /(SpeedLimit) .
-
最简单的路径(最小化转弯,如果道路改变方向超过α度,则定义转弯) . 我已经将状态定义为点和方向的元组,并且如果方向的变化大于α则将成本函数定义为1,否则定义为0 .
然后,用户提供0和1之间的3个实数,以指定每个导航选项的重要性 .
因此,成本函数基本上应该是上述三个成本函数的总和,每个函数乘以提供的数字 . 我的问题是每个成本函数具有不同的单位,例如,第一个成本函数以千米为单位,第三个成本函数是布尔值(0或1) . 我怎样才能将它们转换成有意义的?
1 回答
为从路径映射到实数的每个条件定义成本函数 .
f1(路径)=与路径距离相关的成本
f2(路径)=遍历路径所花费的时间的成本
f3(路径)=路线复杂性的成本
定义
f1
和f2
应该相当简单 .f3
更复杂和主观,但我怀疑它真的不应该是你需要它的一些非常具体的原因 . 也许路径复杂性的函数可能类似于行程中每个转弯的度数(弧度)的总和 . 对于这样的函数,肯定有很多其他选择可以立即浮现在脑海中(例如描述路径所需的表示长度) . 对于f3
,你必须选择最适合你的目的 .一旦定义了各个成本函数,您就可以通过对这三个函数进行线性组合来获得路径的总体成本:
cost(path)= a1 * f1(path)a2 * f2(path)a3 * f3(path)
为
a1, a2, a3
找到明智的 Value 是挑战的主要原因 . 您可能需要使用一些统计方法来执行此操作 .