У- a ^.
—=> p О JT*\ є с . P .
—э —э і і і і і і it 4 X е £
2R <—>
Рис. 4. Пластина с врезами
Таблица 2
а
6,1 6,3 6,5 7 7,5 8 8,5
wo 0 0,523 0,781 1,25 1,62 1,96 2,27
Таблица 3
а
4,9 5 5,5 6 6,5 7 7,5
wo 0 0,120 0,889 1,29 1,63 1,94 2,23
Из приведенных выше результатов следует, что при увеличении радиусов врезов пластина становится более устойчивой.
Преимущество предложенного подхода состоит в том, что решение задачи находится в аналитическом виде. Изменение формы пластины, способов ее нагружения и закрепления не требуют существенных изменений в алгоритме.
Литература: 1.ВольмирА.С. Гибкие пластинки и оболочки. М.: Гостехиздат, 1956. 420 с. 2.РваневВ.Л. Теория R-функций и некоторые ее приложения. К.: Наук. думка, 1982. 552 с. 3.Шевненко А.Н. Программирование структур решения краевых задач на языке RL-1. Харьков: Ин-т пробл. машиностр., 1979. 23 с. 4. Корнишин М.С., ФайзулинаМ.А. Геометрически нелинейные задачи изгиба и устойчивости пластин сложной формы // Исследования по теории пластин и оболочек. 1984. Вып. 17, ч. 1. С. 20-31.
Поступила в редколлегию 29.02.2000
Рецензент: д-р техн. наук, проф. Курпа Л.В.
Линник Анна Борисовна, аспирант кафедры прикладной математики ХГПУ. Адрес: Украина, 61142, Харьков, ул.Блюхера, 38а, кв.249, тел.40-09-41. E-mail: [email protected]
УДК 519.713
О РЕШЕНИИ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ В ЦЕЛЫХ ЧИСЛАХ
ЛАРИОНОВ Ю.И., ХАЖМУРАДОВ М.А.________
Для уменьшения ошибок, связанных с использованием округлений при решении задач линейного программирования, предлагается модификация известного алгоритма симплекс-метода, обеспечивающая текущее решение в целых числах.
Линейное программирование (ЛП) с точки зрения уровня теоретических разработок, сферы приложения и реализации вычислительных методов является одним из наиболее развитых направлений в области решения оптимизационных задач.
Успехи, достигнутые в использовании методов Л П при решении конкретных задач, во многом обусловлены значительным увеличением быстродействия и объёмом памяти ЭВМ. Об этом свидетельствует множество разнообразных стандартных пакетов программ, нашедших широкое распространение у пользователей, в которых предусмотрена возможность осуществления вычислительных процедур с многократно увеличенной точностью, что позволяет значительно уменьшить эффект ошибок округления.
Основу большинства таких пакетов составляет симплекс-метод, предложенный Дж. Данцигом, хотя создано множество весьма изощренных алгоритмов метода, направленных на сокращение времени решения, на повышение вычислительной
устойчивости и разработку алгоритмов, позволяющих решать задачи больших размеров. Симплексметод и его разновидности остаются преобладающими при решении задач линейного программирования [1].
Число симплекс-итераций при решении задач ЛП зависит в основном от числа ограничений, а не от количества переменных. В грубом приближении число необходимых итераций лежит в пределах от 1,5 до 2m, где m — количество ограничений — уравнений в начальной симплекс-таблице.
Тем, кому приходилось искать ручным способом решение для систем, содержащих относительно небольшое число линейных уравнений, хорошо известно, что вычислительные погрешности, возникающие в процессе округления тех или иных чисел, могут накапливаться весьма быстро. Действительно, если при вычислениях сохранять только две или три значащие цифры, окончательный ответ может оказаться “слишком неточным” и поэтому не пригодным для использования. В случае, когда число уравнений в системе велико (а именно с этой ситуацией мы сталкиваемся при практическом применении методов ЛП), опасность “потери точности” оказывается особенно серьезной.
Хотя теоретическая основа симплекс-метода гарантирует сходимость к оптимальному решению за конечное число шагов, трудности вычислительного характера, возникающие вследствие ошибок округления в процессе машинных расчетов, в этом методе не учитываются. Такие трудности встречаются прежде всего тогда, когда искусственные переменные являются частью начального базисно-
128
РИ, 2000, № 2
го решения. Использование “больших штрафов” в целевой функции может привести к ошибке округления, обусловленной операциями над группой чисел, включающих очень большие и относительно малые числа. С учетом этих обстоятельств во многие машинные программы, предназначенные для реализации симплексного метода, вводят специальные процедуры контроля за погрешностями, появляющимися вследствие округления. Однако даже в этом случае требуемая точность не всегда обеспечивается. Поэтому при нахождении решения для той или иной линейной оптимизационной модели следует принимать надлежащие меры предосторожности [2].
Наиболее широко распространенный способ контроля роста ошибок округления заключаются в том, чтобы рассмотреть равенство Ах =в.
Левая часть этого равенства вычисляется последовательно строка за строкой, при этом используется сохраняемое в памяти ЭВМ значение текущего х, и если для какой-либо строки разница между вычисленной величиной и соответствующим элементом вектора ограничений выйдет за пределы некоторого допуска, то это указывает на чрезмерную ошибку округления — так называемая невязка строки. Подобным образом проверяются и невязки столбцов, которые при отсутствии ошибок округления должны быть равны нулю. Большинство коммерческих систем ЛП использует несколько способов автоматического масштабирования перед выполнением итераций симплекс-метода. Например, уравновешивание, когда все элементы матрицы А делаются близкими по величине, либо если исходные данные заданы в виде десятичных чисел, то их переводят в целочисленные умножением всех исходных данных на 10к. Это все, что может быть априори, а затем последовательность операций исключения, связанных с итерациями симплекс-метода, определяет рост ошибок округления в соответствии с тем, как выполняется алгоритм. При этом устанавливаются допуски на ошибку вместо точной проверки на ноль. Их различные значения отражают относительную величину допустимой ошибки.
Точно решить линейные задачи можно только в целых числах. Поэтому полезна разработка алгоритмов точного анализа (без округления) задач линейного программирования, особенно при решении плохо обусловленных задач, когда обычные методы решения (с округлениями) ведут к недопустимо большим погрешностям [3].
Задачу ЛП в общем случае можно записать в каноническом виде:
коэффициенты, стоящие при переменных в огра-[ е^-а eyo, nay да \ и о п бц, образуют единичную матрицу I. Указанная структура модели может быть также получена путем введения искусственных переменных, которые добавляются в левую часть ограничений только тогда, когда необходимо дополнить единичную матрицу I. Рассматриваемая форма модели обеспечивает автоматическое получение начального допустимого базисного решения, а именно х11 = в.
Введем следующее понятие. Столбцы канонической задачи, соответствующие переменным х11, будем называть правильными, если они содержат единственный ненулевой элемент, который к тому же является положительным числом. В рассматриваемой модели все столбцы, образующие единичную матрицу I, правильные. Таким образом, их масштабирование, т.е. умножение на ненулевое действительное число, согласно введенному понятию, дает также правильные столбцы.
Идея симплекс-метода состоит в том, чтобы, исходя из текущего допустимого базисного решения, найти новое допустимое базисное решение, исключая для этого некоторый вектор из пробного базиса и заменяя его одним из небазисных векторов. Вектор, включаемый при этом в базис, должен, по крайней мере, не ухудшать значение целевой функции, а удаление вектора обеспечивает получение нового допустимого базисного решения.
Преобразование задачи линейного программирования к новому базису является симплексным. Для получения решения в целых числах будем осуществлять его по следующим правилам (которые отличны от традиционных [4]) при переходе к очередной симплекс-таблице:
1. Выбирается отличный от нуля разрешающий элемент x(rk) > 0 некоторой r-й таблицы.
2. Разрешающая l -я строка выбирается из условия
0 і _ і <П|І< m {7х" 1= ~(?Г ’ a<^lk > 0. Все элементы разрешающей строки в последующей таблице определяются соотношением alj ; = aljj = 1, n;.
3. Все элементы разрешающего (к-го) столбца заменяются нулями, кроме разрешающего элемента. Таким образом, к-й столбец становится правильным столбцом, а а(k+1) = а(k );.
4. Все остальные элементы (r+1)—й таблицы вычисляются из соотношений
максимизировать (или минимизировать)
Z = Ci xi + Cii Xu
при ограничениях AxI + I xII = в > 0,
XI, XII > 0.
Такая форма представления задачи предполагает разделение переменных на х1 и х11, при котором
a(r+1) _ я(г). я(г) _ я(г). я(г) і Ф i j Ф k
aij - aij ' alk alj ' aik , i * l, j * k,
(г + 1) _ в (г ) . я(г ) _ в (г ) . я(г ) i . l і - ві ■ alk вl ■ aik , i * l,
вг = в і ' • al/ - в l ' • a.
7(г + 1) _ 7(г ) , я(г ) _ я(г ) , д(г )
7 - 7 • alk al -A k ,
РИ, 2000, № 2
129
Af1» =A<[>-a|t> - ajj'-Af, j = Ln
Таким образом, завершается итерация метода последовательного улучшения плана. Если (г+1)-я таблица итоговая, то ненулевые компоненты оптимального плана получаются делением элементов столбца х симплекс-таблицы на ненулевые элементы правильных столбцов этой же таблицы, а значение целевой функции определяется соотношением
*
Z(x )
Z(r+1)
П xlk
t=1
Рассмотрим следующую задачу. Найти Z=3x3 ^ max при условии 2х1 + 4х2 - Х4 = 9,
-3х1 + 2х2 + 3х4 = 3,
х1 - 12х2 + х3 + 2х4 = 4,
х > 0, j = 1,4 .
Решение задачи методом искусственного базиса приведено в таблице.
Ненулевые компоненты искомого оптимального плана х * получим делением элементов столбца х на 3 -й итерации на ненулевые элементы правильных
столбцов, т.е. х* = х2 = 6^32 ’ хз = •
Окончательно имеем
*
х
(з/.
(/8;
227/
/8
; 0).
Значение целевой функции определим по формуле
*
Z(x )
2724 2 • 16
N° итерации ІБ с х 0 0 3 0
Р1 Р2 Р3 Р4
1-я итерация 1 Р5 -M 9 2 4 0 -1
2 Р6 -M 3 -3 2 0 3
3 Р3 3 4 1 -12 1 2
m+1 12 3 -36 0 6
m+2 -12 1 -6 0 -2
2-я итерация 1 Р5 -M 6 16 0 0 -14
2 Р2 0 3 -3 2 0 3
3 Р3 3 44 -34 0 2 40
m+1 132 -102 0 0 120
m+2 -6 -16 0 0 14
3-я итерация 1 Р1 0 6 16 0 0 -14
2 Р2 0 66 0 32 0 6
3 Р3 3 908 0 0 32 164
m+1 2724 0 0 0 492
Литература: 1. ТахаХ. Линейное программирование. В кн. Исследование операций/ Под ред. Дж. Моудера, С. Элмаграби. М.:Мир, 1981. Т.1. С.81-121. 2. Муртаф Б. Современное линейное программирование. М.: Мир, 1984. 224с. 3. Ганшин ТС. Методы оптимизации и решение уравнений. М.: Наука, 1987. 128с. 4. Кузнецов АВ, Холод Математическое программирование. Минск:
Высш. шк., 1984. 221с.
Поступила в редколлегию 12.02.2000
Рецензент: д-р техн. наук, проф. Путятин Е.П.
Ларионов Юрий Иванович, канд. техн. наук, доцент ХТУРЭ. Научные интересы: исследование операций. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 40-98-07.
Хажмурадов Манан Ахмадович, д-р техн. наук, профессор, начальник отдела ННЦ ХФТИ. Научные интересы: математическое моделирование физических процессов, технических систем и сетей. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 35-65-94.
130
РИ, 2000, № 2