0

今週、この 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 を継承…)

答えてくれてありがとう ;) !

4

1 に答える 1

0

総移動時間を最小化しようとしている場合、これは実際には最短経路の問題ではなく、別の種類の離散最適化問題です。JUNG は、離散最適化問題の一般的なソルバーを提供していません。

飛行時間のみ (つまり、空中で過ごした時間) を最小化しようとしている場合でも、各ステップでグラフ (より正確には、出力エッジ) をフィルター処理できる必要があります。つまり、ローカル トポロジは時間の関数です。

于 2013-03-05T21:50:02.583 に答える