После заполнения элемента плана объемы производства и потребления корректируются. Коррекции предшествует построение цепочки. Цепочка содержит обязательно нечетное число нулей и в принципе может состоять из одного нуля. Построение цепочки начинается с последнего найденного нуля со штрихом. Затем по столбу к нулю со звездочкой, а уже от него по строке к нулю со штрихом. Для коррекции плана выбирается корректирующий элемент . Он выбирается из невязки строки сначала, из невязки конца цепочки и элементов конца Х, соответствующих нулям со звездочкой, которые вошли в цепочку. Элемент прибавляется к элементу Хij, если ему в цепочку соответствовал элемент Сij =0', и отнимается от элемента Хij, если в цепочке ему соответствовал элемент Сij =0*. Для коррекции плана рассчитывается невязка по строкам и столбцам, а так же суммарная невязка.
Рассчитываются невязки по столбцам и строкам.
Невязка по строке , i=1,m, j=1,n (2.19)
Невязка по строке , i=1,m, j=1,n (2.20)
Затем рассчитывается суммарная невязка плана
∆ (2.21)
Рисунок 2.3 - блок - схема подпрограммы вычисления невязки.
Описание программы.
Описание работы программы:
пользователь вводит количество поставщиков и потребителей;
пользователь вводит все данные о поставщиках и потребителях;
пользователь вводит ограничения;
строит матрицу Сij, элементы которой отображают определенную скидку;
Все используемые в программе переменные и подпрограммы, кратко описаны в таблицах 2.1
Описание блок-схемы:
блок-схема проверка на условие баланса представлена на рисунке 2.1;
блок - схема общего алгоритма вычисления опорного плана представлена на рисунке 2.2;
блок схема вычисления невязки представлено на рисунке 2.3
Таблица 2.1 -Используемые переменные
Имя | Тип | Описание |
Cont | TZLPTableContext | В каждой конкретной библиотеке будет свой тип контекста |
Значение функции | Integer | Код возврата: ResultError = - 1 - ошибка в алгоритме; ResultFinish = 0 - успешное окончание расчетов; ResultNoSolution = 1 - нет решения; |
SourceF | TFunction | Целевая функция |
Limitations | TLimitations | Ограничения |
MinMax | TFunctionType | Функция на минимум или максимум. ftMin - минимум; ftMax - максимум. |
Integer
Длина массива ограничений
Factors
TDynIntegerArray
Массив ограничений: последовательность из Len целых чисел (Integer)
Значение функции
TIntegerMatrix
матрица из целых чисел