I have applied a custom heuristic to my A* search. It is admissible, but it is not consistent (monotonic). As such, I am not guaranteed to find the shortest path.
I had assumed I could use a hybrid approach that calculates both the euclidian distance heuristic and my custom heuristic and choses the tightest consistent value of the two (where euclidian will always be consistent).
However, when I attempted this, I found instances where even the euclidian distance is not consistent in the presence of the parent node. That is, given edge uv
, custom-heuristic(u) - euclidian-distance(v) > edge(uv)
.
To solve this, I attempted to detect this & default to a heuristic value of h(u) - e(uv)
but that resulted in some truly terrible paths.
Is it possible to mix heuristic methods effectively and still have consistency? Under what circumstances will it work?