我有一个表示城市的图。我知道感兴趣的地方(节点,具有重要性值)的位置,我住的酒店的位置,节点之间的连接方式,它们之间的遍历时间以及纬度和经度。在时间和距离之间转换没有问题。
目标是游览城市,最大限度地提高每天的重要性,但将一天的旅行限制为10小时。一天从酒店开始,结束。我有一个工作的A*算法,选择最低价值,但还没有启发式,我想这使它成为BB。考虑到这一点:
- 由于我可以访问Lat/Long,我的第一次尝试启发式,只涉及时间,将是节点与酒店之间直线距离。这是一种可接受的启发式吗?它给我最短的距离和时间,所以它不会高估。
现在假设节点的重要性在1-4之间。为了将其纳入考虑范围,一个想法可能是g(neighbor) = g(current) + (edge_cost / Importance^2)。假设这是有效的(如果不是,为什么?):
- 现在启发式值将以不同的单位出现。解决这个问题的方法是简单地给酒店赋予重要性=1吗?如果值相同,它是否仍然是可接受的?编辑:我认为这最终会给我带来问题,因为比例的差异。 - 我仍然必须限制总时间。每个节点应该跟踪花费的总时间,以便与限制进行比较,再加上g()和h()值,因为单位不同吗?
最后:
- 由于我必须在同一个节点开始和结束,所以我想到的是探索一个节点,如果我找到酒店并且还有时间去探索邻居而不是返回,但是如果我还有时间扩展到另一个节点,但时间用完了并且我不能从那里到达酒店,我假设我必须回溯到父节点。 - 我忍不住看到与背包问题的相似之处。即使我必须使用A*,我能从中得到什么教训吗? - 在这种情况下,我的启发式必须一致吗?如果是,为什么?
顺便说一下,这里的目的是首先进行路径规划,其次是优化。
目标是游览城市,最大限度地提高每天的重要性,但将一天的旅行限制为10小时。一天从酒店开始,结束。我有一个工作的A*算法,选择最低价值,但还没有启发式,我想这使它成为BB。考虑到这一点:
- 由于我可以访问Lat/Long,我的第一次尝试启发式,只涉及时间,将是节点与酒店之间直线距离。这是一种可接受的启发式吗?它给我最短的距离和时间,所以它不会高估。
现在假设节点的重要性在1-4之间。为了将其纳入考虑范围,一个想法可能是g(neighbor) = g(current) + (edge_cost / Importance^2)。假设这是有效的(如果不是,为什么?):
- 现在启发式值将以不同的单位出现。解决这个问题的方法是简单地给酒店赋予重要性=1吗?如果值相同,它是否仍然是可接受的?编辑:我认为这最终会给我带来问题,因为比例的差异。 - 我仍然必须限制总时间。每个节点应该跟踪花费的总时间,以便与限制进行比较,再加上g()和h()值,因为单位不同吗?
最后:
- 由于我必须在同一个节点开始和结束,所以我想到的是探索一个节点,如果我找到酒店并且还有时间去探索邻居而不是返回,但是如果我还有时间扩展到另一个节点,但时间用完了并且我不能从那里到达酒店,我假设我必须回溯到父节点。 - 我忍不住看到与背包问题的相似之处。即使我必须使用A*,我能从中得到什么教训吗? - 在这种情况下,我的启发式必须一致吗?如果是,为什么?
顺便说一下,这里的目的是首先进行路径规划,其次是优化。