Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Н.А. Янков.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
372 Кб
Скачать
☆

Анализ и уточнение требований к программе

  1. Анализ процесса обработки информации и выбор структур данных для ее хранения

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

  1. С – массив для занесения цены перевозок.

  2. p – массив со структурой аналогичной массива С, куда будет заноситься распределение поставок груза.

  3. cu – массив, в начальной стадии разработки, копия массива С, предназначен для нахождения оптимальности перевозок. Введен для того, что в конечной стадии решения задачи необходимо обратиться к исходным затратам перевозок для подсчета общей стоимости затрат.

Так же в программе будут использоваться одномерные массивы:

  1. B – одномерный массив типа real от 1 до 6 для запоминания потребностей каждого потребителя в трех сортах груза.

  2. alfa, betta – потенциалы для приближения оптимальности плана; alfa – потенциалы по строкам, betta – потенциалы по столбцам.

  3. А – одномерный массив дробного типа из 4 элементов содержащий количество разных сортов на складах поставщиков.

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

  5. di, dj – массив со структурой аналогичной F0 для запоминания местонахождения элемента массива F0 в массиве Р. Эти массивы введены для того, чтобы после завершения цикла передвижения сохранить эти изменения в массиве Р.

Так же необходимы переменные дробного типа для различных вычислений:

Lqp – для вычисления коэффициента взаимозаменяемости; при этом Lqp = ql/pl, где pl единиц первого сорта заменяют ql единиц второго.

f – переменная для вычисления затрат на перевозку груза.

min – переменная будет необходима для поиска минимального отрицательного числа в массиве cu, чтобы организовать цикл передвижения.

Для организации различных циклов будут необходимы переменные счетчики:l, i, j, n.

Вспомогательные переменные целочисленного типа - x,y,xj,yi .

  1. Разработка основных алгоритмов решения задачи

Процесс решения задачи можно рассмотреть пошагово:

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

  2. Блокировка поставок. Условие задачи требует блокировки некоторых ячеек для того, чтобы не переместились в эти ячейки распределенный груз. Для этого необходимо присвоить, этим ячейкам, реализовав линейный алгоритм, большую цену на перевозку - 100.

  3. Распределение поставок. Распределение организуем методом северо-западного угла. Для этого необходимо разработать циклический алгоритм т.к. массив, в котором будет осуществляться распределение – двумерный. Каждый раз в данном цикле будет проверяться условие: сколько нужно переместить и сколько груза есть на складе, для этого задействуем алгоритм проверки условия. Сначала просматриваем количество необходимого груза, затем количество имеющегося груза на складе, если они равны, то количеству груза на складе присваиваем ноль и количество необходимого груза и присваиваем рассматриваемому полю необходимое количество груза. Если же количество имеющегося на складе превышает потребности, то значению количества груза присваиваем разность имеющегося на складе и необходимого груза для потребителей. Иначе, если количество на складе меньше требуемого груза, то рассматриваемому полю присвоим количество имеющегося груза на складе, а потребность в грузе уменьшаем на количество груза на складе.

  4. Объявление потенциалов. Потенциалы будут находиться в двух массивах: для строк – alfa, для столбцов – betta. Для нахождения этих потенциалов необходимо разработать циклический алгоритм, в котором сначала найдем в каждой строке максимальный по модулю элемент и присвоим соответствующему элементу массива его значение противоположное по знаку. Для нахождения значения по столбцам каждому значению массива будем присваивать сумму всех соответствующих значений цены и элементов массива аlfa.

  5. Пересчет цен на перевозку. Для пересчета цен на перевозку необходимо разработать циклический алгоритм, в котором каждому новому значению элементов присваиваем сумму исходного значения и значение потенциалов рассматривая массив Сu = С.

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

  7. Проверка плана на оптимальность. В цикле проверим, есть ли отрицательные цены на перевозку и есть ли в них поставки. Если такие ячейки будут, то перейдем к пункту 6. А если таковых не имеется, то переходим на конечный расчет.

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