今週、この lib を発見し、最初のプロジェクトが機能し、単純なフライト予約をモデル化しました。
エッジとしてフライト クラスを作成しました 頂点として空港クラスを作成しました
各フライトの所要時間を設定し、ダイスクトラ アルゴリズムの関連付けに成功しました (DijkstraShortestPath)
class Airport {
String name;
}
class Flight {
String flight;
int duration;
}
g = new DirectedSparseMultigraph<Airport, Flight>();
Flight AXXX = new Flight("A57",3);
Flight AYYY = new Flight("A53",1);
ORY = new Airport("ORY");
LYS = new Airport("LYS");
g.addEdge(AXXX, ORY, LYS);
g.addEdge(AYYY, LYS, ORY);
Transformer<Flight, Integer> wtTransformer = new Transformer<Flight, Integer>() {
@Override
public Integer transform(Flight link) {
return link.duration;
}
};
DijkstraShortestPath<Airport, Flight> alg = new DijkstraShortestPath(g, wtTransformer);
Number dist = alg.getDistance(ORY, LYS);
この単純なケースはうまく機能しますが、今回は次のように期間を計算します。 2013 年 1 月 13 日 20 時
この場合、飛行時間と飛行の間を計算したいと思います。あるフライトから別のフライトへの最短経路を取得するには、フライト時間だけでなく、フライト間の待ち時間にも注意する必要があります。しかし、DiskstraShortestPath は Transformer as: Transformer のみを許可するため、以前のフライトへの参照を取得して合計期間 (待機 + フライト) を計算することはできません。
だから私の質問は次のとおりです。私の場合の最善の方法は何ですか? 新しいアルゴリズムを作成 (DijsktraShortestPath を継承…) 新しい GraphType を作成 (DirectedSparseMultigraph を継承…)
答えてくれてありがとう ;) !