В процессе оптимизации симплекс-таблицы с помощью простого симплекс-метода выполняется множество жордановых исключений. Разумно предположить, что если число итераций велико и намного превосходит количество переменных плана, то такая оптимизация может сопровождаться существенным накоплением ошибки и непосредственное решение СЛАУ для найденного оптимального плана позволит уточнить решение (либо выявить, что план в действительности не оптимален).
Для решения СЛАУ я использовал тот же самый метод жордановских исключений, с выбором максимального разрешающего элемента по всей матрице (в литературе говорится, что это позволяет получить наиболее точные результаты).
Удивительно, но при численном эксперименте выяснилось, что результаты непосредственного решения СЛАУ оказываются менее точными, чем решение симплекс-метода.
Это наталкивает на мысль, что правило выбора разрешающего элемента как максимального элемента матрицы пусть и хорошее, но не самое лучшее.
Пробовал выбирать разрешающий элемент как минимальное отношение максимального и второго по величине элементов столбца (разумеется по модулю). Пробовал выбирать разрешающий столбец как в симплекс-методе (минимальное значение в строке функционала), а строку - по максимальному абсолютному значению элемента. И ещё разные другие способы. Максимальная точность была такая же как и при выборе по максимальному элементу. В некоторых случаях точность была даже ещё меньше.
Исходные данные генерировались по определённому уравнению, а потом оценивались его коэффициенты. Ошибки вычислений я оценивал по расхождению заданных значений коэффициентов и вычисленных.
Вообще, абсолютные значения расхождений небольшие
- для симплекс-метода, и
- для прямого решения СЛАУ. Но это на модельной задаче, в других случаях расхождения могут оказаться и большими. Главная неприятность в том, что в таких условиях уточнение оптимального плана может и не быть уточнением вовсе и проверить это будет никак нельзя.
Может быть кто то сможет посоветовать, какой ни будь более эффективный способ определения порядка жордановых исключений? (насколько я понимаю pLU - разложение - это почти то же самое, выигрыша в точности оно не даст)
Единственным выходом в данной ситуации мне представляется использовать для решение QR разложение,
но это весьма затратная в вычислительном отношении процедура, и не хотелось бы без особой нужды её использовать.