bgl astar_searchのデフォルトのastar_visitor動作を変更しようとしています。ブーストグラフライブラリastar検索ユーザーを変更する
私は公共輸送を表すグラフを持っています - 停止は頂点であり、線はエッジです(頂点間に平行なエッジがあります)。アルゴリズムが使用しようとしている接続(エッジ)がその時間に利用可能かどうかを確認する必要があります(私たちは午前12時に夜間回線を使用できません)。
astar_visitorは私が意思決定を行うことができるexamine_edge関数を使用していますが、bgl astarにこのエッジが悪いことを知らせるためには何を呼び出すべきですか?
エッジを削除しないほうがいいです。グラフを一度ロードしてから、多くの時間を検索したいからです。
ありがとうございます。
はい、あなたは正しいですが、それは問題を解決していない(または私は解決策を理解していません)。エッジの重みを変更すると、astar_searchを実行した後に変更されます。前にも述べたように、同じ(元の)グラフを数回使用する必要があります。もちろん、私は変更に関する情報を保存することができますし、結局はそれらを "リセット"しますが、よりよい解決策があると思います。たぶん、ファンクタを使用すると、ある種の状態マシンがそのケースを解決します。 astar_visitorでは、次回無視するように設定し、そのオプションが設定されている場合はweight関数で+ endを返し、そのオプションをfalseに設定します。 – myky
@mykyヒューリスティッククラスの内部では、データ構造に不正な「エッジ」を設定できます。 astar_search()はすべてのエッジに対してヒューリスティックなオブジェクトを呼び出し、不良エッジのエッジが見つかった場合にルックアップする機会があります。 –
Eddy、ありがとうございました。私はヒューリスティックについて知っていましたが、未知の理由で私はホイールを再発明するのではなくヒューリスティックで+ infを返すことについて戦っていませんでした。 – myky