Компьютерная реализация задачи о коммивояжере

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 27.12.2018
Размер файла 233,8 K

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

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

Размещено на http://www.allbest.ru/

Днепропетровский национальный университет им. О. Гончара

КОМПЬЮТЕРНАЯ РЕАЛИЗАЦИЯ ЗАДАЧИ О КОММИВОЯЖЕРЕ

Б.А. Бигеев, к.т.н.

Аннотация

экономический задача коммивояжер компьютерный

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

Ключевые слова: задача о коммивояжере, маршрут, алгоритм, экономические затраты.

Annotation

The article gives the mathematical definition and computer realization of a well-known economic task about a commercial traveler. The unique algorithm of coving the problem that provides the fully satisfactory rout with minimum economic costs.

Введение

В статье представлена задача о коммивояжере - бродячем торговце, который покинул город (которому мы присваиваем имя «С»), объехав еще N городов и вернулся снова в город с именем «С». В его распоряжении есть дороги, соединяющие эти города. Он должен выбрать свой маршрут - порядок посещения городов так, чтобы путь, который ему надлежит пройти, был минимальным. Основное условие этой задачи состоит в том, что в каждом городе коммивояжер может побывать только 1 раз - это условие будем называть условием (?). Естественно, что расстояние между двумя городами - функция f(xi, xj) - определено. Добавление города с именем «С» расширяет сферу практического применения в экономике задачи о коммивояжере.

Функция f(xi, xj) может означать не только расстояние, но и, например, время, издержки в пути; да и сам коммивояжер может быть некоторым транспортным средством, развозящем товары поN пунктам доставки.

Математическая постановка задачи

Длина l пути S определяется формулой

. (1)

а) Сумма в выражении (1) распространена по всем индексам i, j, удовлетворяет условию (?).

б) Путь из пункта i в пункт j может не совпадать по затратам пути из пункта j в пункт i. Это значит, что

. (2)

Эта задача не удовлетворяет принципу оптимальности Беллмана и не может решаться методами динамического программирования. Но функция f(xi, xj) и функция пути l(x1,…,xN) в этой задаче определены на конечном множестве точек, следовательно задача сводится к перебору всех возможных маршрутов и проблема носит чисто вычислительный характер. Однако именно вычислительные трудности здесь огромны: число возможных маршрутов между N пунктами доставки равно N!.

Техническая постановки задачи

1. Имеется N пунктов доставки, куда следует завести заданные объемы грузов.

2. Имеется «Матрица расстояний» между пунктами доставки.

3. Имеется «Матрица весов» для каждого пути, отражающая характер дорог, их пропускную способность и загруженность.

4. Расходы на преодоление пути между пунктами i и j вычисляются по формуле:

(3)

где Gij - вес транспортного средства с грузом, соответствующим участку пути между пунктами i и j.

lij - длина пути между пунктами i и j.

vij - весовой коэффициент участка пути между пунктами i и j.

kz - коэффициент затрат, отражающий расход топлива на единицу пути и амортизационные отчисления транспортного средства.

Найти оптимальный порядок обхода пунктов доставки, чтобы затраты на доставку были минимальными.

На данном этапе разработки компьютерной реализации число пунктов доставки ограничено, N Ј 9.

Результаты

Задача о коммивояжере принципиально состоит из двух вычислительных процессов.

Первый процесс это генерация перестановок (возможных маршрутов) из N элементов по N. Количество таких перестановок, как уже было сказано, составляет N!.

Второй процесс это вычисление затрат на преодолении текущего маршрута.

Процедура генерации перестановок относится к числу исключительно сложных программистских задач. Нами разработаны два алгоритма генерации перестановок. В первом алгоритме члены натурального ряда от 1 до N! преобразуются в соответствующие перестановки. Второй алгоритм построен на использовании рекуррентного вызова процедур. Это означает, что при генерации перестановок процедура N раз вызывает сама себя. И каждый такой вызов дожжен не начинать процесс заново, а продолжить предыдущее. Оба алгоритма характеризуются высоким уровнем программирования.

Мы установили, что генератор по первому алгоритму дает выигрыш при использовании устаревших компьютеров с малой оперативной памятью. На современной технике второй алгоритм дает 40-ка процентный выигрыш во времени. Следует также подчеркнуть, что каждый из алгоритмов обладает исключительной производительностью: 9! перестановок (362880) он генерирует на современном компьютере за 5 - 6 секунд. Текст одной из процедур приведен ниже.

Sub Perestanovki()

' Перебор всех перестановок из n элементов по n

' достигается путем преобразования натурального ряда

' чисел от 1 до n! в перестановки

Dim n As Integer

Dim a As String

Dim p(10), po(10), pf(10) As Long

' p(n) - целевой массив

' pо(n) - контрольный массив

n = Cells(1, 1).Value

Application.ScreenUpdating = False

' первичные присвоения

J = 1

For i = 1 To n

J = J * i

pf(i) = J ' накопление факториалов от 1 до n

Next i

k = J

Cells(5, 1) = J

m = 1

For i = 1 To k ' цикл от 1 до n!

For J = 1 To n

po(J) = J ' числа от 1 до n

Next J

ii = i

For J = n - 1 To 2 Step -1

' элемент натурального ряда делится в цикле

' последовательно на (n-1)!, (n-2)!,..., 2!,

' чтобы получить первые n-2 индекса

kk = pf(J)

L = Int((2 * (ii - 1) + 1) / (2 * kk)) + 1

ii = ii - kk * (L - 1)

jk = n - J

If jk > 1 Then

t = 0

For LL = 1 To n

If po(LL) > 0 Then

t = t + 1

If t = L Then

L = LL

Exit For

End If

End If

Next LL

End If

p(jk) = L

po(L) = 0

Next J

' получение двух последних индексов

m = 3 - m ' m принимает значения 1,2,1,2,...

ji = m

For J = 1 To n

ij = po(J)

If ij > 0 Then

p(n + 1 - ji) = ij

ji = 3 - ji

End If

Next J

' свертка массива p(n) для компактно печати

a = ""

For J = 1 To n

a = a & Trim(Str(p(J)))

Next J

Next i

End Sub

Программа, реализующая расчет затрат на преодолении маршрута зависит от экранной реализации процесса вычислений, от размещения исходных данных. Вот примерный вид листа Excel с данными к задаче.

Процедуру расчета затрат мы также написали в двух вариантах. В первом варианте использовано чтение данных из матриц расстояний и весов с помощью вычисляемых индексов. Во втором случае использован конечный автомат, таблица переходов которого содержит всю информации о ячейках матриц весов и расстояний. Процедуры эквивалентны. Кроме вычисления затрат на маршруте, процедура обеспечивает печать текущего маршрута, если он лучше предыдущих и индикацию процесса поиска решения. Два последних обстоятельства существенно замедляют работу программы: на обработку маршрута затрачивается времени в 30 - 40 раз больше, чем на генерацию перестановки (маршрута). Поэтому имеется возможность отказаться от индикации.

Выводы

? разработаны два оригинальных алгоритма генерации перестановок из N элементов по N, производительность которых составляет примерно 80000 перестановок в секунду;

? разработана техническая схема задачи о коммивояжере. При этом учтены длины и класс дорог, изменение веса груза в процессе его развозки по пунктам, а также норму затрат транспортного средства. Все это реализовано в виде программного модуля расчета затрат;

? программа автоматически настраивается на количество пунктов доставки по объему исходных таблиц (в рамках ограничений от 1 до 9);

? программа может использоваться не только для доставки грузов на пункты доставки, но и сбор грузов от производителей (например, для объезда молочных ферм), если грузы доставки брать со знаком минус;

? обеспечена наглядность представления результатов расчета;

? использован индикатор работы программы, что особенно важно при длительных расчетах

Список использованных источников

1. Моисеев Н.Н., Иванилов Ю.П., Столярова Е.М. Методы оптимизации. М.: «Наука», Главная редакция физико-математической литературы, 1978. 352 с.

2. Романовский И.В. Алгоритмы решения экстремальных задач. М.: Главная редакция физико-математической литературы изд-ва «Наука», 1977.

3. Гавурин М.К. Лекции по методам вычислений. М.: Главная редакция физико-математической литературы изд-ва «Наука», 1971.

4. Кузин Л.Т. Основы кибернетики: В 2-х т. Т.2. Основы кибернетических моделей: Учеб. пособие для вузов. - Энергия, 1979. 584 с.

5. Марюта А.Н., Смирнов С.А. Эвристический системный анализ экономики: Монография. - Днепропетровск: Наука и образование, 2004. 294 с.

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

...

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

  • Разработка, макетирование и реализация экспертной системы для решения задачи о коммивояжере, используя возможности языка Prolog. Составление графа "Карта Саратовской области" и решение проблемы поиска кратчайшего пути между двумя пунктами на карте.

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

  • Поиск верхних и нижних границ для оптимального значения на подобласти допустимых решений. Методы и проблемы решения задач нелинейного программирования. Написание и отладка программы. Создание программы для решения задачи "коммивояжёра" прямым алгоритмом.

    курсовая работа [176,9 K], добавлен 22.01.2016

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

    курсовая работа [167,8 K], добавлен 01.10.2009

  • Сущность теории графов и сетевого моделирования. Выбор оптимального пути и стоимости переезда коммивояжера с помощью метода ветвей и границ. Разработка программы выбора самого выгодного маршрута, проходящего через указанные города хотя бы по одному разу.

    курсовая работа [3,5 M], добавлен 08.08.2013

  • Программные продукты для решения задачи построения оптимального маршрута. Выбор аппаратных и программных средств для построения маршрута обхода пациентов. Математическая модель муравьиного алгоритма: состав, структура, тестирование, отладка, реализация.

    дипломная работа [1,9 M], добавлен 03.12.2017

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

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

  • Особенности решения транспортной задачи распределительным методом и анализ результатов. Построение математической модели, алгоритма. Создание программы для решения транспортной задачи распределительным методом в программной среде Borland Delphi 7.

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

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

    курсовая работа [2,0 M], добавлен 12.02.2013

  • Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.

    курсовая работа [2,5 M], добавлен 22.11.2012

  • Краткий обзор решения транспортных задач. Экономическая интерпретация поставленной задачи. Разработка и описание алгоритма решения задачи. Построение математической модели. Решение задачи вручную и с помощью ЭВМ. Анализ модели на чувствительность.

    курсовая работа [844,3 K], добавлен 16.06.2011

  • Использование математических и программных средств моделирования при решении задачи минимизации транспортных издержек. Использование метода потенциалов, разработка алгоритма программы на языке программирования Turbo Pascal 7.0. Методы реализации.

    курсовая работа [156,6 K], добавлен 16.02.2016

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

    курсовая работа [2,1 M], добавлен 21.12.2011

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

    контрольная работа [15,1 K], добавлен 21.10.2010

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

    учебное пособие [534,1 K], добавлен 11.07.2010

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

    курсовая работа [85,9 K], добавлен 31.10.2014

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

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

  • Описание математических методов решения задачи оптимизации. Рассмотрение использования линейного программирования для решения транспортной задачи. Применение симплекс-метода, разработка разработать компьютерной модели в Microsoft Office Excel 2010.

    курсовая работа [1,5 M], добавлен 24.05.2015

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

    курсовая работа [713,3 K], добавлен 19.10.2012

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

    дипломная работа [1,5 M], добавлен 23.02.2015

  • Задачи, решаемые методом динамического программирования. Основные этапы нахождения деревянного алгоритма решения задачи. Выполнение алгоритма Прима. Построение Эйлерового цикла. Решение задач средствами Excel. Алгоритм основной программы - Derevo.

    курсовая работа [586,3 K], добавлен 04.04.2015

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