路径查找 - 合并不同的成本函数

时间:2013-11-29 08:41:17

标签: path-finding

在我的路径寻找学校项目中,用户有两个选项可以在两点之间导航:

  1. 最短路径(公里)。我已经将每2个点的成本函数定义为连接它们的道路的距离。
  2. 最快的路径(每条路都有速度限制)。我已经将每个2点之间的成本函数定义为1 /(SpeedLimit)。
  3. 最简单的路径(最小化转弯,如果道路改变方向超过α度,则定义转弯)。我已经将状态定义为点和方向的元组,并且如果方向的变化大于α则将成本函数定义为1,否则定义为0。
  4. 然后,用户提供0到1之间的3个实数,以指定每个导航选项的重要性。

    所以基本上,成本函数应该是上述三个成本函数的总和,每个成本函数乘以提供的数字。我的问题是每个成本函数具有不同的单位,例如,第一个成本函数以千米为单位,第三个成本函数是布尔值(0或1)。 我怎样才能将它们转换成有意义的呢?

1 个答案:

答案 0 :(得分:0)

为从路径映射到实数的每个条件定义成本函数。

  • f1(路径)=与路径距离相关的成本
  • f2(路径)=遍历路径所花费的时间的成本
  • f3(路径)=路线复杂性的成本

定义f1f2应该相当简单。 f3更加复杂和主观,但我怀疑它不应该是一个布尔值,除非有一些非常具体的理由说明为什么你需要它。也许路径复杂性的函数可能类似于行程中每个转弯的度数(弧度)的总和。对于立即想到的这样一个函数,当然还有很多其他选择(例如描述路径所需的表示长度)。对于f3,您必须选择最适合您目的的任何内容。

一旦定义了单独的成本函数,您可以通过对这3个函数进行线性组合来获得路径的总体成本:

成本(路径)= a1 * f1(路径)+ a2 * f2(路径)+ a3 * f3(路径)

a1, a2, a3找到明智的价值是挑战的主要原因。您可能需要使用一些统计方法来执行此操作。