【问题标题】:Path finding - Merging different cost functions寻路 - 合并不同的成本函数
【发布时间】:2013-11-29 08:41:16
【问题描述】:

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

  1. 最短路径(公里)。我已将每 2 个点的成本函数定义为连接它们的道路的距离。
  2. 最快路径(每条道路都有限速)。我将每 2 个点之间的成本函数定义为 1/(SpeedLimit)。
  3. 最简单的路径(最小化转弯,如果道路改变方向超过 alpha 度,则定义为转弯)。我将状态定义为一个点和方向的元组,如果方向的变化大于 alpha,则将成本函数定义为 1,否则定义为 0。

然后用户提供 3 个介于 0 和 1 之间的实数来指定每个导航选项的重要性。

所以基本上成本函数应该是上述三个成本函数的总和,每个成本函数乘以提供的数字。我的问题是每个成本函数都有不同的单位,例如,第一个成本函数以公里为单位,第三个成本函数是布尔值(0 或 1)。 如何转换它们以使其有意义?

【问题讨论】:

  • 您可以将第三个成本函数视为转数。这种方式不再是布尔值。

标签: path-finding


【解决方案1】:

为从路径映射到实数的每个标准定义一个成本函数。

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

定义f1f2 应该相当简单。 f3 更加复杂和主观,但我怀疑它真的不应该是布尔值,除非有一些非常具体的原因需要它。也许路径复杂性的函数可能类似于行程中每个转弯的度数(弧度)的总和。对于这样的函数,肯定还有很多其他的选择会立即浮现在脑海中(例如描述路径所需的表示长度)。对于f3,您必须选择最适合您的目的。

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

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

a1, a2, a3 找到合理的值是最大的挑战。您可能需要使用一些统计方法来执行此操作。

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多