Алгоритмы для решения прикладной задачи маршрутизации транспорта

Древоподобные структуры транспортных коммуникаций. Частный случай, когда граф представлен в виде дерева. Слияние смежных маршрутов и добавления вершин выше по дереву. "Параллельная" обработка маршрутов. Общая сумма дистанций всех транспортных средств.

Рубрика Транспорт
Вид дипломная работа
Язык русский
Дата добавления 28.08.2018
Размер файла 120,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

cur_route = get_route_by_id(Veh_routes, route_id_to_work_with)

if debug: print("-")

res, cur_route = step(cur_route, Veh_routes, the_Tree)

Veh_routes.remove(get_route_by_id(Veh_routes, cur_route.id))

Veh_routes.append(cur_route)

if debug: print("*")

if debug: output_all_routes(Veh_routes, the_Tree)

total_dist = count_total_dist_of_all_routes(Veh_routes)

impossible_total_dist = doubled_total_sum_by_arcs_weight(the_Tree.arcs)

total_dist_coef = total_dist / impossible_total_dist

if debug: print("**[main_iter]->finish")

return total_dist_coef

def revalidate_served_ids(Veh_routes, the_Tree):

for route in Veh_routes:

for n_id in route.nodes_to_take:

the_Tree.served_nodes_id.add(n_id)

def make_veh_route_to_every_not_served(not_served_ids, the_tree, routes):

global debug

if the_tree.matr == None:

make_graph(the_tree)

new_routes = {}

def get_highest_existing_id(routes):

highest_id = 0

f_f = True

for r in routes:

if f_f:

highest_id = r.id

f_f = False

continue

if r.id > highest_id:

highest_id = r.id

return highest_id + 1

id = get_highest_existing_id(routes)

for node in the_tree.nodes:

if not node.id in not_served_ids:

continue

node_id = node.id

the_tree.served_nodes_id.add(node_id)

if debug: print("node id: ", node_id)

if node_id == 1:

continue

way = go_for_BFS(the_tree, 1, node_id)

if debug: print("way: ", way)

new_routes[id] = way

id += 1

if debug: print("routes:", new_routes)

new_Veh_routes = []

for r_id in new_routes:

if debug: print("route id: ", r_id, " route: ", new_routes[r_id][0])

route_to_add = Veh_route(r_id, new_routes[r_id][0])

route_to_add.take_node(route_to_add.way[-1])

the_tree.served_nodes_id.add(route_to_add.way[-1]) # ?

new_Veh_routes.append(route_to_add)

for r in new_Veh_routes:

if debug: print("_____________")

r.sort_way(the_tree.nodes)

if debug: print("r id:", r.id, "way", r.way)

r.valuate_route(the_tree)

if debug:

print("distance: ", r.distance)

print("goods: ", r.goods)

def valuate_new_routes(new_routes, old_routes):

def get_routes_failed_to_add_current_node(cur_node_id, routes):

result = set()

for r in routes:

if cur_node_id in r.failed_to_add_vertexes_id:

result.add(r.id)

return result

for n_r in new_routes:

for ntt_id in n_r.nodes_to_take:

n_r.failed_to_merge_routs_id = get_routes_failed_to_add_current_node(ntt_id, old_routes)

valuate_new_routes(new_Veh_routes, routes)

return new_Veh_routes

def list_minus_list(list1, list2):

result_list = copy.deepcopy(list1)

for l in list1:

if l in list2:

result_list.remove(l)

return result_list

def main_base(amount_of_nodes, Cap):

global debug

debug = False

if debug: print("## [make_tree]->start")

the_Tree = make_tree(amount_of_nodes, Cap)

if debug: print("## [make_tree]->finish")

if debug: print("## [make_way_to_every_leaf_from_root]->start")

routes = make_way_to_every_leaf_from_root(the_Tree)

if debug: print("routes: ", routes)

if debug: print("## [make_way_to_every_leaf_from_root]->finish")

if debug: print("## [valuate_after_route_to_leafs]->start")

Veh_routes = valuate_after_route_to_leafs(routes, the_Tree)

if debug: print("## [valuate_after_route_to_leafs]->finish")

the_Tree.served_nodes_id.add(1)

if debug: print("## [step]->start")

dist_coef = main_iter(Veh_routes, the_Tree)

if debug: print("## [step]->finish")

return dist_coef

def main_main():

def min_max_avarage(one, two, type):

if type not in ["min", "max", "avarage"]:

print("Fail")

exit(0)

if type == "max":

return one if one > two else two

if type == "min":

return one if one < two else two

return (one + two) # /2 delim by 2 in the end

step = 10

multiple = 1

amount_of_nodes = step * multiple

data_collecting = {

"time": {},

"dist": {},

}

runs_for_every_step = 20

max_amount_of_nodes = 100

Cap = 10

while (amount_of_nodes < max_amount_of_nodes + step):

print("amount of nodes: ", amount_of_nodes)

time_collect_of_one_step = {

"min": None,

"max": None,

"avarage": None,

}

dist_collect_of_one_step = {

"min": None,

"max": None,

"avarage": None,

}

global debug

debug = False

for i in range(runs_for_every_step):

time_start = time.time()

if debug: print("## [main_base]->start")

dist_coef = main_base(amount_of_nodes, Cap)

if debug: print("## [main_base]->finish")

time_of_work = time.time() - time_start

if not time_collect_of_one_step["min"]:

time_collect_of_one_step["min"] = time_of_work

else:

time_collect_of_one_step["min"] = min_max_avarage(time_collect_of_one_step["min"], time_of_work, "min")

if not dist_collect_of_one_step["min"]:

dist_collect_of_one_step["min"] = dist_coef

else:

dist_collect_of_one_step["min"] = min_max_avarage(dist_collect_of_one_step["min"], dist_coef, "min")

if not time_collect_of_one_step["max"]:

time_collect_of_one_step["max"] = time_of_work

else:

time_collect_of_one_step["max"] = min_max_avarage(time_collect_of_one_step["max"], time_of_work, "max")

if not dist_collect_of_one_step["max"]:

dist_collect_of_one_step["max"] = dist_coef

else:

dist_collect_of_one_step["max"] = min_max_avarage(dist_collect_of_one_step["max"], dist_coef, "max")

if not time_collect_of_one_step["avarage"]:

time_collect_of_one_step["avarage"] = time_of_work

else:

time_collect_of_one_step["avarage"] = min_max_avarage(time_collect_of_one_step["avarage"], time_of_work,

"avarage")

if not dist_collect_of_one_step["avarage"]:

dist_collect_of_one_step["avarage"] = dist_coef

else:

dist_collect_of_one_step["avarage"] = min_max_avarage(dist_collect_of_one_step["avarage"], dist_coef,

"avarage")

time_collect_of_one_step["avarage"] /= runs_for_every_step

dist_collect_of_one_step["avarage"] /= runs_for_every_step

data_collecting["time"][amount_of_nodes] = time_collect_of_one_step

data_collecting["dist"][amount_of_nodes] = dist_collect_of_one_step

multiple += 1

amount_of_nodes = step * multiple

print("time data")

for amount_of_nodes in data_collecting["time"]:

print("amount of nodes: %s, min: %s, max: %s, avarage: %s" % (

amount_of_nodes, data_collecting["time"][amount_of_nodes]["min"],

data_collecting["time"][amount_of_nodes]["max"], data_collecting["time"][amount_of_nodes]["avarage"]))

print("dist data")

for amount_of_nodes in data_collecting["dist"]:

print("amount of nodes: %s, min: %s, max: %s, avarage: %s" % (

amount_of_nodes, data_collecting["dist"][amount_of_nodes]["min"],

data_collecting["dist"][amount_of_nodes]["max"], data_collecting["dist"][amount_of_nodes]["avarage"]))

if __name__ == "__main__":

main_main()

Размещено на Allbest.ur


Подобные документы

  • Задачи и структура транспортного хозяйства в составе предприятия. Определение грузооборотов предприятия, маршрутов транспорта и необходимого количества транспортных средств, диспетчирование работы. Способы решения транспортной задачи методами оптимизации.

    реферат [408,0 K], добавлен 08.05.2009

  • Автомобильные перевозки на территории Республики Беларусь. Международные автобусные маршруты. Выявление наименее прибыльных направлений и поиск путей увеличения экспорта транспортных услуг путем открытия новых международных пассажирских маршрутов.

    дипломная работа [60,2 K], добавлен 07.02.2012

  • Проблемы российского транспорта. Сведения о международных транспортных коридорах (МТК), история их развития. Критерии выбора транспортных коммуникаций. Задачи и алгоритм формирования МТК, их значение для России с точки зрения национальной безопасности.

    курсовая работа [40,1 K], добавлен 27.06.2009

  • Размещение оборудования в основных и вспомогательных цехах предприятия. Средства механизации погрузочно-разгрузочных и подъёмно-транспортных работ. Определение требуемого количества транспорта. Расчет тягового усилия тележки. Выбор транспортных средств.

    дипломная работа [2,7 M], добавлен 08.03.2015

  • Формирование маршрутов перевозок, выбор типа подвижного состава и расчет грузооборота. Расчет времени и скорости доставки грузов. Расчет технико-эксплуатационных и экономических показателей использования транспортных средств различных видов транспорта.

    курсовая работа [997,7 K], добавлен 25.12.2010

  • Роль транспорта и транспортных услуг в системе международных экономических отношений. Понятие транспорта, транспортных операций и международных транспортных услуг. Основные виды и классификация транспортных операций и международных транспортных услуг.

    лекция [114,3 K], добавлен 10.05.2013

  • Характеристика видов транспорта: сухопытный, водный, авиационный. Признаки классификации транспортных путешествий, рейтинг привлекательности транспортных средств. Анализ развития транспортной отрасли и и туристический потенциал Тверской области.

    курсовая работа [25,4 K], добавлен 29.06.2010

  • Основные положения по организации автобусных маршрутов. Анализ зарубежного опыта организации наземного пассажирского транспорта. Создание выделенных полос для городских маршрутов. Схема действующих полос по г. Москве. Обзор оценки свободного времени.

    дипломная работа [2,0 M], добавлен 20.06.2013

  • Активы автотранспортного предприятия. Резерв на ремонт транспортных средств. Ежемесячная сумма резервирования. Размер отчислений на дорогостоящие виды ремонта. Порядок отражения на счетах бухгалтерского учета. Долгосрочный ремонт грузовых автомобилей.

    реферат [20,4 K], добавлен 07.03.2009

  • Ознакомление с технико-эксплуатационными показателями работы автомобилей. Рассмотрение результатов решения задачи маршрутизации методом потенциалов. Анализ технологического расчета маршрутов. Характеристика сводных показателей сменно-суточного пробега.

    курсовая работа [462,7 K], добавлен 29.10.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.