Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОДЕРЖАНИЕ тпр.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
775.69 Кб
Скачать

2.3 Описание алгоритма нахождения опорного плана методом северо-западного угла

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

Структурная схема алгоритма представлена в приложении А. Подробный алгоритм метода северо-западного угла имеет следующую структуру:

Первый шаг алгоритма заключается в обнулении матрицы перевозки.

На втором шаге «координаты» рассматриваемого элемента матрицы перевозки устанавливаются в соответствии с северо-западным углом (i=1, j=1).

На третьем этапе вычисляется минимальное значение d из запасов i-того поставщика и потребности j-того потребителя.

На четвёртом этапе из запасов i-того поставщика и потребности j-того потребителя вычесть значение d.

На пятом этапе значение рассматриваемого элемента приравнивается значению d

Если на данном этапе запасы i-того поставщика истощены, инкрементировать i.

Если на данном этапе потребности j-того потребителя полностью удовлетворены, инкрементировать j.

Если координаты находятся в пределах матрицы m*n, то переход на третий этап.

Иначе переход на проверку вырожденности и конец.

Алгоритм проверки вырожденности состоит из одного блока ветвления, сравнивающего количество базисных элементов с числом m+n-1. Если эти значения равны, производится переход на вычисление оптимального решения. В противном случае добавляются недостающее до невырожденного плана количество базисных нулей.

2.4 Описание алгоритма нахождения оптимального плана распределительным методом

Распределительный метод крайне удобен в программной реализации, так как данный метод просто алгоритмируется, а из-за высокой производительности современных ЭВМ недостатки по скорости вычислений метода сводятся на нет.

Структурная схема алгоритма представлена в приложении В. Алгоритм распределительного метода нахождения оптимального решения транспортной задачи имеет следующую структуру:

На первом этапе алгоритма устанавливаются координаты первого свободного элемента.

На втором этапе строится и означивается цикл пересчёта для данного элемента.

На третьем этапе вычисляется цена цикла пересчёта.

Если она не меньше нуля:

Если данный свободный элемент не последний: произвести переход к следующему элементу.

Иначе (если элемент был последний) План оптимален, вычисление стоимости маршрута.

Переход на конец.

Иначе (если цена цикла оказалась отрицательной):

Найти минимальный элемент цикла, помеченный знаком минус.

Произвести переход по циклу: вычесть найденный минимум из всех элементов цикла, помеченных знаком минус, и прибавить его ко всем элементам цикла, помеченным знаком плюс.

Переход на первый этап.

2.5 Проектирование сценария диалога

Логической моделью построения диалога в программе была выбрана модель «запрос-ответ»: Пользователь формирует запрос к программе и посылает его, а программа реагирует на запрос, формируя ответ запроса.

Запрос со стороны пользователя формируется путём введения значений матрицы стоимости, запасов поставщиков и нужд потребителей. Отправка запроса производится нажатием кнопки «Выполнить».

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

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

Структурная схема алгоритма ведения диалога представлена на рисунке 2.1

Рисунок 2.1- Структурная схема алгоритма ведения алгоритма диалога.