Ich habe ein Diagramm, das ein Routennetzwerk darstellt - Wegpunkte sind Knoten und Routen sind Kanten. Das Problem ist, dass es Regionen zwischen den Wegpunkten geben kann, die zu bestimmten Zeiten nicht überquert werden können. Diese Regionen beeinflussen jedoch nicht notwendigerweise Eckpunkte, sondern nur Kanten.Astar mit zeitabhängigem Graph
Ich nutze Zeit als Kostenfunktion, also für jeden Eckpunkt (und damit Kante) kann ich die Ankunftszeit innerhalb der Besucher und/oder Heuristik bekommen. Da die Gewichtskarte jedoch lesbar ist, kann ich die Gewichtung einer Kante nicht ändern, um sie zu "zu lang" zu machen.
Auf der anderen Seite kann ich keine benutzerdefinierte Weightmap erstellen, da ich die Ankunftszeit nicht im Voraus weiß, da sie vom Pfad abhängt.
Was ich im Forum herausgefunden habe, ist, die Heuristik zu verwenden und sie im Falle eines "schlechten" Scheitelpunktes auf inf zu setzen. Aber was ich brauche, ist "schlechte" Kanten zu wählen.
Haben Sie eine Idee über den Zugriff auf die aktuell untersuchte Kante innerhalb der Heuristik (standardmäßig ist die einzige Eingabe der Vertexdeskriptor)?
Ich weiß, dass ich im execute_edge-Besucher Entscheidungen treffen könnte, aber was soll ich sagen, um zu wissen, dass diese Kante schlecht ist und nicht verwendet werden sollte? Vielleicht könnte ich eine externe boolesche "Bad Edge" -Eigenschaftskarte erstellen (für alle Scheitelpunkte) und wenn die aktuelle Kante "schlecht" ist, den Zielscheitel innerhalb des examine_edge-Besuchers auf true setzen? Auf diese "schlechte Kante" -Eigenschaftkarte könnte dann durch die Heuristik zugegriffen werden. Allerdings scheint mir dies nicht die beste Lösung zu sein.
Irgendeine andere Idee?
Vielen Dank im Voraus!