2016-06-21 2 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 

전화를하지만 여전히 짧은 줄 것이다 그들 사이의 경로. 또는 네트워크와 연결을 구문 분석하고 다음 번에 드라이브 할 각 교차점에 동전을 던지는 간단한 스크립트를 작성할 수도 있습니다. 파이썬에서 다음과 같이 뭔가 할 것 :

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과 똑같이 했어, 네 대답에 고마워. –