(9.123)
Наконец, неравенство (9.123) можно преобразовать в равенство, добавив дополнительную переменную xm+i:
(9.124)
где xm+i — целое, положительное.
Таким образом, если в исходную задачу добавить линейное ограничение (9.124), задача все равно останется полностью целочисленной.
Уравнение отсекающей плоскости получается в результате вычитания из (9.124) уравнения (9.121):
(9.125)
где f(aij), f(bi) —дробная часть чисел аij и bi.
Заметим, что текущее решение задачи линейного программирования не удовлетворяет ограничению (9.125), поскольку значение
xm+i= —f(bi) строго отрицательно.
Алгоритм отсечения (алгоритм Гомори) состоит из следующих шагов.
1. Найти оптимальное решение задачи линейного программирования (9.117) — (9.119) без условия целочисленности (9.120).
2. Прекратить вычисления, если текущее решение задачи является целочисленным. В противном случае выбрать какую-либо дробную базисную переменную. Составить ограничение (9.125) из уравнения, содержащего эту базисную переменную в текущем оптимальном решении задачи линейного программирования.
3. Добавить к исходной задаче линейного программирования новое ограничение (9.125), найти оптимальное решение задачи с дополнительным ограничением и вернуться к шагу 2.
Введение на шаге 3 отсекающего ограничения (9.125) наряду с условием xm+i>0 делает текущее решение задачи линейного программирования недопустимым. Отсечение текущего оптимального решения означает, что на шаге 3 значение целевой функции в задаче максимизации не может возрасти, а может лишь уменьшиться. Отметим, что алгоритмы отсечения не гарантируют получения допустимого целочисленного решения до самой последней итерации. Вследствие этого при преждевременном прекращении вычислений можно допустимое решение и не получить.
Методы возврата. В этой группе методов имеются различные модификации. Наиболее распространенным среди них является метод ветвей и границ, который предназначен для решения частично целочисленных задач. Как и в методе отсечения, решение задачи начинается с отыскания оптимального решения задачи линейного программирования без учета условия целочисленности. Затем формируется семейство связанных, но различных задач линейного программирования. Термин «возврат» определяет специфический способ формирования и решения последовательности задач.
Рассмотрим задачу максимизации (9.117) — (9.120). Допустим, что для каждой целочисленной переменной можно задать верхнюю и нижнюю границы, в пределах которых безусловно содержатся ее оптимальные значения
(9.126)
Идея метода ветвей и границ основана на следующем элементарном факте. Рассмотрим любую переменную хj и примем, что R есть некоторое целое число, где Lj≤R ≤Uj-1. Тогда оптимальное решение задачи будет удовлетворять одному из ограничений
xj≥R + 1 или x j≤ R. (9.127)
К примеру, если при решении задачи линейного программирования получено xi = 2,6, то можно поставить и решить две задачи линейного программирования, причем в одну из них вводится согласно (9.127) условие 3≤ x1 ≤U1, а к другую — условие L1≤ x1 ≤2. Предположим, что каждая из этих задач имеет оптимальное решение, удовлетворяющее условию целочисленности (9.120). Тогда решение, доставляющее большее значение целевой функции, является оптимальным решением исходной целочисленной задачи.
Метод ветвей и границ основан на решении некоторого множества задач линейного программирования. Границы (9.126) на каждую переменную xj служат для конкретизации диапазона изменений переменных в задаче целочисленного программирования, что в свою очередь определяет мощность множества задач линейного программирования, используемых в процедуре реализации метода ветвей к границ. Поэтому трудоемкость вычислений определяется числом целочисленных переменных, содержащихся в задаче.
Алгоритм решения задачи целочисленного программирования методом ветвей и границ заключается в следующем. На каждой итерации (обозначим номер итерации через t) имеются нижняя оценка F*t(X) оптимального значения целевой функции и список задач линейного программирования, подлежащих решению. Процедура решения состоит в последовательном улучшении оценки F* (X) и приближении ее к оптимальному значению Fopt (Х).
На итерации 1 список задач содержит одну задачу (9.117) — (9.119). На итерации t из списка выбирают и решают задачу линейного программирования. Если она не имеет допустимого решения или если полученное оптимальное значение целевой функции Ft opt (X)≤ Ft*(X), то нижняя оценка остается прежней и из списка выбирают очередную задачу для решения. Если полученное решение удовлетворяет условию целочисленности (9.120) и Ft opt (Х)>Ft*(X), то полученное оптимальное решение Ft opt (Х) на итерации t принимают в качестве нижней оценки для последующих итераций. Если полученное оптимальное решение задачи линейного программирования не удовлетворяет условиям целочисленности (9.120), то выбирают нецелочисленную переменную хj и решаемую задачу разбивают на две новые задачи линейного программирования путем введения в каждую из них по одному ограничению (9.127).
При остановке алгоритма в случае, если допустимому решению соответствует значение целевой функции Ft opt (Х)=Ft*(X), полученное решение оптимально, в противном случае допустимого решения не существует. Метод ветвей и границ особенно эффективен для решения комбинаторных задач, в частности задачи коммивояжера.
В общем виде процедура реализации этого метода заключается в следующем (рассмотрим ее применительно к задаче минимизации). Предположим, что имеется возможность получить нижнюю оценку качества решения F*V(X) как для всего множества V возможных решений, так и для его различных подмножеств. Разобьем множество на два непересекающихся подмножества А и В с точными нижними границами критерия качества FА opt (Х) и FВ opt (Х), связанных с F*(X) очевидным соотношением
F opt ( (X) = min { FА opt (X), FB opt (X)}.
Поскольку множества А и В имеют меньшее число элементов, чем множество V, т. е. возможность получить нижние оценки качества F*А(Х) и F*B (X) более близкие к FА opt (X) и FB opt (X), чем в первоначальном множестве V, это означает, что оценка
min{F*А (X), F*B (X)} будет более близка к Fopt(X), чем оценка F*V (X).
Можно предположить, что оптимальное решение будет с большой вероятностью принадлежать тому из подмножеств А и В, которое имеет меньшую нижнюю оценку. Если оказалось, что F*B(X)<F*A (X), то есть все основания для детального исследования подмножества В. Последнее разбивают на два подмножества С и D с соответствующими нижними оценками F*С (X) и F*D (X), и если оказалось, что
F*D(X)<F*С(X), то подобному разбиению подвергается подмножество D. Эту процедуру продолжают до тех пор, пока не придут к подмножеству, состоящему из одного элемента с оценкой
F *(X)=F0(X). Процедура разбиения обычно представляется в виде дерева решений (рис. 9.13).

Рис. 9.13. Геометрическая иллюстрация мотода ветвей и границ
Найденное решение необходимо проверить на оптимальность. Для этого проверяют, нет ли среди нерассмотренных множеств А, С и т. д. элемента со значением нижней оценки F*(X)<F0(X). При этом множества, у которых F*(X)≥F0(X), дальше не рассматриваются.
Разбиение перспективных множеств либо приведет к решению с оценкой F*(X)<F0(X), которое должно быть принято за оптимальное, либо позволит убедиться в оптимальности полученного ранее решения с оценкой F0(X). Из процедуры реализации метода ветвей и границ становится ясным, почему этот метод получил название метода возврата.
Метод ветвей и границ наряду с методами отсечения обладает существенными достоинствами с вычислительной точки зрения. Алгоритмы, построенные на этих методах, сравнительно легко программируются на ЭВМ и реализуются на любой итерации без вмешательства человека, однако их эффективность резко снижается при увеличении размерности решаемой задачи.
Применение моделей и методов математического программирования при консультировании проблем было рассмотрено в примерах п. 9.2. Ниже приводятся примеры постановки типовых задач структурного синтеза в терминах математического программирования.
Пример 9.8. Формирование рекомендаций по решению задачи оптимизация структуры сети электросвязи. Процесс консультирования по решению задачи проектирования региональных сетей электросвязи состоит из ряда взаимосвязанных этапов:
|
Из за большого объема этот материал размещен на нескольких страницах:
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 |


