|
|||
|
Решение задачи линейного программирования модифицированным симплекс-методом
Математическое описание
Решается задача линейного программирования:
min (c, x) ( или max (c, x) ) ,
A x = b ,
x ≥ 0 ,
где A - матрица размерности m на n, x
и c - векторы длины n, b - вектоp длины m.
Используется модифицированный симплекс - метод. Исходная информация задается в виде расширенной матрицы
| a11 a12 . . . a1n
| . . . . . . . . . . . . . . . . . . . . . .
A1 = | am1 am2 . . . amn
| c1 c2 . . . cn
| am+2,1 am+2,2 . . . am+2,N
где ai j ( i = 1, ... , m ; j = 1, ... , n ) - элементы матрицы A ,
am+2, j = - ( a1 j + a2 j + ... + am j ) для j = 1, ... , n
Вектоp b дополняется двумя компонентами
bm + 1 = 0,
bm + 2 = - (b1 + ... + bm).
Точность вычислений характеризуется величиной невязки
r = bm+2 - Σ am+2, j x j
С.Гасс, Линейное программирование, Физматгиз, 1961.
Использование
ML01R (A, M1, U, N, X1, NB, P, EPS, XK)
Параметры
A - | вещественный двумерный массив размерности m + 2 на n, содержащий элементы расширенной матрицы A1; |
M - | число стpок матрицы A1 (тип: целый); |
U - | рабочий массив размерности M на M (тип: вещественный); |
N - | число столбцов матрицы A1 (тип: целый); |
X - | вещественный вектоp длины M, при этом на входе X (I) = bI, I = 1, ..., M, на выходе для I = 1, ... , M - 2 ; X (I) - ненулевые компоненты решения, X (M - 1) - минимальное (или максимальное) значение линейной формы, X (M) - величина невязки r; |
NB - | вектоp длины M, содержащий номеpа ненулевых компонент решения т.е. xNB (I) = X (I) для I = 1, ... , M - 2 (тип: целый); |
P - | целая переменная, при обращении к подпрограмме задается равной 1, если требуется найти максимум линейной формы, и не равной 1, в противном случае; на выходе: |
P = 1 - | если найдено решение, |
P = 2 - | если задача несовместна, |
P = 3 - | если значение линейной формы неограничено; |
EPS - | заданная абсолютная погрешность вычислений (тип: вещественный); |
XK - | вещественный рабочий вектоp длины M. |
Задача должна быть приведена к виду, в котоpом компоненты вектоpа b неотрицательны.
Подпрограмма рекомендуется для использования, если матрица A содержит много ненулевых элементов.