Архитектурный дизайн для маршрутизации автобусов со временем - PullRequest
0 голосов
/ 29 сентября 2018

Это подтверждение того, что мой дизайн достаточно хорош, или получить лучшие идеи, чтобы решить проблему маршрутизации шины со временем.Вот мое решение с основными шагами, приведенными ниже:

  1. Иметь одну таблицу ребер, которая представляет все ребра (источник и цель представляют вершины (автобусные остановки):

    postgres=# select id, source, target, cost from busedges;
     id | source | target | cost
    ----+--------+--------+------
      1 |      1 |      2 |    1
      2 |      2 |      3 |    1
      3 |      3 |      4 |    1
      4 |      4 |      5 |    1
      5 |      1 |      7 |    1
      6 |      7 |      8 |    1
      7 |      1 |      6 |    1
      8 |      6 |      8 |    1
      9 |      9 |     10 |    1
     10 |     10 |     11 |    1
     11 |     11 |     12 |    1
     12 |     12 |     13 |    1
     13 |      9 |     15 |    1
     14 |     15 |     16 |    1
     15 |      9 |     14 |    1
     16 |     14 |     16 |    1
    
  2. Иметь таблицу, которая представляет детали шины, такие как время, время, ребро и т. Д.

    ПРИМЕЧАНИЕ. Я использовал целочисленный формат для столбцов «из» и «в» для ускоренияв результате я могу сделать целочисленный запрос, но я могу заменить его на любой лучший формат, если он доступен.

    postgres=# select id, "busedgeId", "busId", "from", "to" from busedgetimes;
     id | busedgeId | busId | from  |  to
    ----+-----------+-------+-------+-------
     18 |         1 |     1 | 33000 | 33300
     19 |         2 |     1 | 33300 | 33600
     20 |         3 |     2 | 33900 | 34200
     21 |         4 |     2 | 34200 | 34800
     22 |         1 |     3 | 36000 | 36300
     23 |         2 |     3 | 36600 | 37200
     24 |         3 |     4 | 38400 | 38700
     25 |         4 |     4 | 38700 | 39540
    
  3. Используйте алгоритм dijkstra, чтобы найти ближайший путь.

  4. Получить предстоящие шины из таблицы busedgetimes в самом раннем первом порядке для ближайшего пути, обнаруженного алгоритмом dijkstra. => Однако это приводит к немного сложному запросу.

Могу ли я сделать какие-либо улучшения в этом направлении, или есть ли лучшие проекты?

Ссылки на документы, статьи, связанные с этим, были бы действительно полезны.

1 Ответ

0 голосов
/ 29 сентября 2018

Это абсолютно нормальный и обычный способ сделать это.См. Также,

...