2016-06-21 56 views
0

グリッド状のネットワーク上でduarouterによって生成されたルートを使用してSUMOでシミュレーションを実行すると、ルートが生成されているため、車両はグリッドの中央とジャンクションに集中し始めます最短経路アルゴリズム(dijkstra,astar,CHまたはCHWrapper)を使用して計算されます。最短経路アルゴリズムで作成されず、車両がそのように動作しないような無作為ルートを生成する方法は?SUMO - 最短経路アルゴリズムを使用せずに経路を生成する方法は?

答えて

1

これを防ぐ通常の方法は、dynamic assignmentを使用することです。これはSUMOのduaIterate.pyスクリプトを使用して、シミュレーションの以前の繰り返しでの移動時間に基づいてルート分布を計算します。あなたが(多分randomTrips.pyから)トリップファイルを持っているのであれば、ちょうどあなたが本当にランダムなルートをしたい場合は、randomTrips.pyへの中間点(オプション-i)を与えることを試みることができますが、それはまだ最短を与える

duaIterate.py -n net.xml -t trips.xml 

を呼び出しますそれらの間のパス。あるいは、ネットワークと接続を解析し、次のドライブに接続する各接続点にコインを投げる単純なスクリプトを書くこともできます。 Pythonでは次のようなものは何でしょう:

import random, sumolib 
net = sumolib.net.readNet('myNet.net.xml') 
route = [net.getEdge('startEdge')] 
while len(route) < finalLength: 
    route.append(random.choice(route[-1].getToNode().getOutgoing())) 

このコードは、接続またはエッジが多分あなたが使用車種によって使用できないことを無視しますが、私はあなたのアイデアを得る願っています。 sumolibの使用方法の詳細については、http://sumo.dlr.de/wiki/Tools/Sumolib

+0

を参照してください。答えを読む前に、私はコインのアプローチでランダムルートを作成しましたが、sumolibはありませんでした。今私はsumolibと同じことをしました、あなたの答えに感謝します。 –