Научная статья на тему 'О решении задач линейного программирования в целых числах'

О решении задач линейного программирования в целых числах Текст научной статьи по специальности «Математика»

CC BY
540
50
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по математике, автор научной работы — Ларионов Юрий Иванович, Хажмурадов Манан Ахмадович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Solving the problems of linear programming in integers

The modifїcation of known algorithm of a srnplex method providing solution of the hnear tasks іп rntegers !s considered, that allows to avo!d the mcrease of round-off errors.

Текст научной работы на тему «О решении задач линейного программирования в целых числах»

У- 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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Литература: 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

i Надоели баннеры? Вы всегда можете отключить рекламу.