2012年3月27日火曜日

改善:検索の経過を表示し、時間をかけて計算


前回、改善:分岐の順序を最適化での5路線の計算は、
  • 東山線、名城線、名港線、鶴舞線、桜通線 → 計算できず
  • 東山線、名城線、名港線、鶴舞線、上飯田線 → 2秒で計算
だった。

10分経っても終わらない場合は「計算できず」とすることにしてるけど、もしかしたらもう少し待てば計算できるのではないかと思い、検索中のルートを表示するようにしてみた。

10分経過した時点で思ったよりも計算が進んでいたため、そのまま計算を続行。

2,927秒(約49分)で終わった。

計算ルート数は4路線の97,514ルート(約10万)から698,771,279ルート(約7億)で7千倍以上に増えている。

5路線(東山線、名城線、名港線、鶴舞線、桜通線)
藤が丘 ~( 東山線 )~ 高畑
高畑 ~( 東山線 )~ 名古屋
名古屋 ~( 桜通線 )~ 中村区役所
中村区役所 ~( 桜通線 )~ 徳重
徳重 ~( 桜通線 )~ 新瑞橋
新瑞橋 ~( 名城線 )~ 金山
金山 ~( 名港線 )~ 名古屋港
名古屋港 ~( 名港線 )~ 金山
金山 ~( 名城線 )~ 八事
八事 ~( 鶴舞線 )~ 赤池
赤池 ~( 鶴舞線 )~ 上小田井

藤が丘-(東山線)-本山-(東山線)-今池-(東山線)-栄-(東山線)-伏見-(東山線)-
名古屋-(東山線)-高畑-(東山線)-名古屋-(桜通線)-中村区役所-(桜通線)-名古
屋-(桜通線)-丸の内-(桜通線)-久屋大通-(桜通線)-今池-(桜通線)-御器所-(桜
通線)-新瑞橋-(桜通線)-徳重-(桜通線)-新瑞橋-(名城線)-八事-(名城線)-本山
-(名城線)-平安通-(名城線)-久屋大通-(名城線)-栄-(名城線)-上前津-(名城線
)-金山-(名港線)-名古屋港-(名港線)-金山-(名城線)-新瑞橋-(名城線)-八事-(
鶴舞線)-赤池-(鶴舞線)-八事-(鶴舞線)-御器所-(鶴舞線)-上前津-(鶴舞線)-伏
見-(鶴舞線)-丸の内-(鶴舞線)-上小田井

所要時間: 328(分)

乗車時間: 228(分)
乗換回数: 5(回)×10(分)
折返回数: 5(回)×10(分)

intMakeRouteNum = 31370501
intRouteNumMax = 50

--
処理時間: 2927(秒)

intMakeRouteNum = 698771279
intRouteNumMax = 50

残りは上飯田線の1路線だけ。
上飯田線は平安通駅から1区間だけ(続きは名鉄小牧線)だけど、3分岐で分岐して戻るり(1分岐)、また3分岐になるので、5路線の場合の数倍の計算量になると思われる。

5路線で約49分なので、5倍で4時間ちょっと10倍だと8時間以上の計算時間か。
待てない時間じゃないけど、ここはもう少し改善を進めた方が良さそう。


つづく。

0 件のコメント:

コメントを投稿