9.12. Методы и алгоритмы оптимизации структур
Из множества формализуемых задач структурного синтеза значительная их часть может быть сведена к определению экстремального значения целевой функции
(9.117)
при ограничениях
(9.118)
(9.119)
xj — целые числа, j= 1, 2,…, р (р≤т). (9.120)
Если в сформулированной задаче ограничения (9.120) отсутствуют, то имеет место классическая задача линейного программирования, если ограничения (9.120) имеются и р=т, то данная задача является полностью целочисленной, при р<т задача является частично целочисленной.
Задача линейного программирования. В настоящее время теория линейного программирования хорошо разработана и имеется целый арсенал методов решения задач линейного программирования — это, например симплекс-метод, реализующий последовательную процедуру направленного поиска оптимального значения целевой функции (9.117) при существующих ограничениях вида (9.118) и (9.119).
Симплекс-метод. Первоначально система неравенств (9.118) путем введения дополнительных переменных xm+i≥Q преобразуется в систему уравнений таким образом, чтобы имело место одно из двух выражений

Такое изменение приводит просто к увеличению числа переменных, что не меняет существа задачи. Введем ряд понятий, широко применяемых в задачах линейного программирования.
Базисом называют любой набор из п таких переменных, что определитель, составленный из коэффициентов при этих переменных, не равен нулю. Отметим, что остальные т—п переменных называют свободными.
Не уменьшая общности, рассмотрим сущность симплекс-метода на примере задачи максимизации целевой функции (9.117) при наличии ограничений (9.118) и (9.119). Для определения первоначального базисного решения какие-либо т—п переменные принимают за свободные, т. е. приравнивают нулю, при этом все базисные переменные выражают через свободные, после чего решают систему полученных уравнений. Если некоторые из базисных переменных окажутся отрицательными, то полученное базисное решение является недопустимым и производится переход к новому базису путем выбора новой совокупности свободных переменных. Базисное решение, в котором отсутствуют отрицательные переменные, называют допустимым.
После того как найдено допустимое базисное решение, проверяют, не достигнут ли максимум целевой функции F(Х). Если нет, то ищут новое допустимое базисное решение, но не любое, а такое, которое увеличивает значение целевой функции F(Х). Затем процедуру повторяют. Данный метод довольно быстро приводит к цели, так как позволяет исключить из рассмотрения большое число базисных решений, заведомо не обращающих в максимум целевую функцию F(Х).
Проверку того, не достигнут ли при найденном решении максимум целевой функции, можно сделать путем поиска нового базисного решения, при котором значение целевой функции F(X) будет больше предыдущего. Для прихода к новому допустимому базисному решению одну из свободных переменных следует сделать базисной, при этом она будет отличной от нуля, т. е. возрастет. Следовательно, если какая-либо из свободных переменных входит в выражение для целевой функции со знаком « + », а значит, при ее увеличении целевая функция увеличивается, то максимум целевой функции не достигнут и данную свободную переменную следует перевести в базисную.
Однако при возрастании свободной переменной некоторые из базисных переменных начнут уменьшаться. Так как отрицательные значения переменных недопустимы, в качестве новой свободной переменной следует взять ту из базисных, которая раньше других обратится в нуль.
Задачи целочисленного программирования. В общем случае условие целочисленности накладывает дополнительные ограничения, вследствие которых максимальное значение целевой функции (в задачах максимизации) оказывается, как правило, меньше максимального значения целевой функции соответствующей задачи линейного программирования; в последней отсутствуют условия це-лочисленности переменных.
Комбинаторные методы. Методы решения задач целочисленного линейного программирования в классе комбинаторных методов базируются на максимальном учете характера задач и конечности множества вариантов их решения. В их вычислительных схемах используется идея частичного перебора вариантов решения задач. Это достигается путем отбрасывания некоторых подмножеств вариантов, которые согласно известным свойствам оптимального решения заведомо могут считаться неперспективными.
Отличительной особенностью комбинаторных алгоритмов является и то, что во многих из них вообще не используется решение задач линейного программирования, соответствующей исходной целочисленной задаче линейного программирования.
Таким образом, для большинства комбинаторных методов не требуется специальных доказательств их конечности, что и способствовало широкому применению методов этого типа на практике. Большая группа комбинаторных методов базируется на достаточно общей схеме методов, которые объединены под названием — методы «ветвей и границ». В настоящее время схема метода «ветвей и границ» широко используется на практике.
Приближенные методы. Одной из основных причин бурного развития этой группы методом следует назвать сравнительную сложность реализации точных методов, а зачастую и просто невозможность применения последних для задач большой размерности и для задач, время решения которых ограничено. Другим фактором, способствующим на практике развитию приближенных методов, является то, что для многих практических задач в значительной мере точные решения не обеспечиваются из-за малой достоверности исходных данных.
Среди приближенных методов решения целочисленных задач линейного программирования следует выделить применение различного рода эвристических алгоритмов, основанных на:
а) методах, построенных на использовании случайного поиска;
б) методах, сочетающих случайный поиск с идеей локальной оптимизации;
в) методах, вычислительные схемы которых строятся на максимальном учете специфики конкретных типов задач и др.
Рассмотрим два основных подхода к отысканию точного оптимального решения задач целочисленного программирования, базирующихся на методах отсекающих плоскостей и методах возврата.
Методы отсекающих плоскостей (методы отсечения). Исходным моментом решения задачи целочисленного программирования является оптимальное решение соответствующей задачи линейного программирования, полученной после отбрасывания условий целочис-ленности. На каждой итерации добавляется линейное ограничение, удовлетворяющее целочисленному решению исходной задачи, но исключающее текущее нецелочисленное решение. Вычислительный процесс прекращается, как только будет достигнуто любое целочисленное решение. Сходимость обеспечивается за конечное, но иногда очень большое число итераций.
Сущность алгоритмов, основанных на методе отсечения, легко уяснить, обратившись к геометрическим представлениям в пространстве решений (см. п. 9.1). Определим выпуклую оболочку множества допустимых целочисленных точек (решений) как минимальное выпуклое множество, содержащее все эти точки. Допустимыми решениями будет не вся область допустимых решений, находящаяся внутри и на границе выпуклой оболочки, а лишь отдельные дискретные точки этой области, имеющие все целочисленные координаты. Целевая функция достигает оптимального значения в одной из вершин этой выпуклой оболочки, которая представляет собой одно из допустимых целочисленных решений.
Выпуклую оболочку можно представить конечным множеством линейных ограничений (9.118), как изображено на рис. 9.12.

Рис. 9.12. Геометрическая иллюстрация принципа отсечения
Можно, не считаясь с условиями целочисленности, найти решение, определяемое точкой 1, а затем, округлив это решение до ближайших целых чисел, получить целочисленное решение в точке 2. Однако при этом может получиться решение, далекое от оптимального. Оптимальным целочисленным решением будет точка 3.
Для определения оптимального решения в алгоритмах отсечения вначале рассмотрим выпуклую оболочку, определенную линейными ограничениями (9.118) и условиями неотрицательности переменных исходной задачи, и отыщем экстремальную точку этой оболочки (точка 1 на рис. 9.12). Если такое решение оказывается нецелочислеппым, то добавляют ограничение, отсекающее текущую экстремальную точку и уменьшающее «объем» выпуклой оболочки (прямая А—А). Однако новое ограничение не отсекает ни одной экстремальной точки выпуклой оболочки, принадлежащей допустимым целочисленным решениям. В конечном итоге вводится такое число дополнительных ограничений, что экстремальная точка усеченной ныпуклой оболочки представляет собой целочисленное решение исходной задачи.
Покажем, как формально построить дополнительные линейные ограничения, которым должно удовлетворить любое решение задачи (9.117) — (9.120). Рассмотрим ограничение
(9.121)
Возможно, одна или несколько величин аij и bi являются дробными. Обозначим символом [аij] целую часть аij, т. е. наибольшее целое число, меньшее действительного числа аij или равное ему. Поскольку на величины хj наложено ограничение (9.119), любые значения хj, соответствующие условию (9.121), должны удовлетворять более слабому ограничению
(9.122)
Поскольку сумма в левой части неравенства (9.122) должна быть целочисленной, (9.122) можно усилить следующим образом:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |


