Базовый возможное решение

редактировать

В теории линейного программирования, базовое возможное решение (BFS ) - решение с минимальным набором ненулевых переменных. Геометрически каждая BFS соответствует углу многогранника возможных решений. Если существует оптимальное решение, то существует оптимальная BFS. Следовательно, чтобы найти оптимальное решение, достаточно рассмотреть BFS-ы. Этот факт используется симплексным алгоритмом, который по существу перемещается от одного BFS к другому, пока не будет найден оптимальный.

Содержание
  • 1 Определение
  • 2 Свойства
  • 3 Примеры
  • 4 Геометрическая интерпретация
  • 5 Применение в симплексном алгоритме
  • 6 Ссылки
Определение

Чтобы определить BFS, мы сначала представляем линейную программу в так называемой эквациональной форме:

увеличить c T ⋅ x {\ textstyle \ mathbf {c ^ {T}} \ cdot \ mathbf {x}}{\ textstyle \ mathbf {c ^ {T}} \ cdot \ mathbf {x}}
с учетом A x = b {\ displaystyle A \ mathbf {x} = \ mathbf {b}}A \ mathbf {x} = \ mathbf {b} и x ≥ 0 {\ displaystyle \ mathbf {x} \ geq 0}{\ displaystyle \ mathbf {x} \ geq 0}

где:

  • c T {\ displaystyle \ mathbf {c ^ {T}}}{\ displaystyle \ mathbf {c ^ {T}}} и x {\ displaystyle \ mathbf {x}}\ mathbf {x} - векторы размера n (количество переменных);
  • b {\ displaystyle \ mathbf {b}}\ mathbf {b} - вектор размера m (количество ограничений);
  • A {\ displaystyle A}A - матрица размера m на n;
  • x ≥ 0 {\ displaystyle \ mathbf {x} \ geq 0}{\ displaystyle \ mathbf {x} \ geq 0} означает, что все переменные неотрицательны.

Любую линейную программу можно преобразовать в форму уравнения путем добавления переменных резервирования.

В качестве предварительного шага очистки мы проверяем, что:

  • Система A x = b {\ displaystyle A \ mathbf {x} = \ mathbf {b}}A \ mathbf {x} = \ mathbf {b} имеет по крайней мере одно решение (в противном случае весь LP не имеет решения и больше нечего делать);
  • Все m строки матрицы A {\ displaystyle A}A линейно независимы, т. е. ее ранг равен m (в противном случае мы можем просто удалить лишние строки, не меняя LP).

Обычно m A x = b {\ displaystyle A \ mathbf {x} = \ mathbf {b}}A \ mathbf {x} = \ mathbf {b} имеет множество решений; каждое такое решение называется допустимым решением ЛП.

Пусть B - подмножество m индексов из {1,..., n}. Обозначим через AB {\ displaystyle A_ {B}}A_B квадратную матрицу m на m, составленную из m столбцов A {\ displaystyle A}A проиндексированных на B. Если AB {\ displaystyle A_ {B}}A_B равно неособое число, столбцы, проиндексированные B, являются базисом пространство столбца из A {\ displaystyle A}A . В этом случае мы называем B базой ЛП. Поскольку ранг A {\ displaystyle A}A равен m, он имеет по крайней мере одно основание; поскольку A {\ displaystyle A}A имеет n столбцов, он имеет не более (нм) {\ displaystyle {\ binom {n} {m}}}{\ displaystyle {\ binom {n} {m}}} базы.

Для базиса B мы говорим, что допустимое решение x {\ displaystyle \ mathbf {x}}\ mathbf {x} является базовым допустимым решением с базисом B если все его ненулевые переменные проиндексированы B, т. е. для всех j ∉ B: xj = 0 {\ displaystyle j \ not \ in B: ~~ x_ {j} = 0}{\ displaystyle j \ not \ in B: ~~ x_ {j} = 0} .

Свойства

1. BFS определяется только ограничениями LP (матрица A {\ displaystyle A}A и вектор b {\ displaystyle \ mathbf {b}}\ mathbf {b} ); это не зависит от цели оптимизации.

2. По определению, BFS имеет не более m ненулевых переменных и не менее n-m нулевых переменных. BFS может иметь менее m ненулевых переменных; в этом случае он может иметь множество различных баз, каждая из которых содержит индексы его ненулевых переменных.

3. Возможное решение x {\ displaystyle \ mathbf {x}}\ mathbf {x} является базовым, если и только если столбцы матрицы AK {\ displaystyle A_ {K}}{\ displaystyle A_ {K}} линейно независимы, где K - это набор индексов ненулевых элементов x {\ displaystyle \ mathbf {x}}\ mathbf {x} .

4. BFS однозначно определяется базисом B: для каждого базиса B из m индексов существует не более одного BFS x B {\ displaystyle \ mathbf {x_ {B}}}{\ displaystyle \ mathbf {x_ {B}}} с базой B. Это потому, что x B {\ displaystyle \ mathbf {x_ {B}}}{\ displaystyle \ mathbf {x_ {B}}} должен удовлетворять ограничению AB x B = b {\ displaystyle A_ {B} \ mathbf {x_ {B}} = b}{\ displaystyle A_ {B} \ mathbf {x_ {B}} = b} , и по определению основы матрица AB {\ displaystyle A_ {B}}A_B неособая, поэтому ограничение имеет уникальный решение. Обратное неверно: каждая BFS может происходить из разных баз.

Если уникальное решение AB x B = b {\ displaystyle A_ {B} \ mathbf {x_ {B}} = b}{\ displaystyle A_ {B} \ mathbf {x_ {B}} = b} удовлетворяет ограничениям неотрицательности, тогда базис называется допустимым базисом .

5. Если линейная программа имеет оптимальное решение (т. Е. Допустимое решение, а набор возможных решений ограничен), то она имеет оптимальную BFS. Это следствие принципа максимума Бауэра : цель линейной программы - выпуклая; множество допустимых решений выпукло (это пересечение гиперпространств); поэтому цель достигает своего максимума в крайней точке множества возможных решений.

Поскольку количество BFS-ов конечно и ограничено (нм) {\ displaystyle {\ binom {n} {m}}}{\ displaystyle {\ binom {n} {m}}} , оптимальное решение для любого LP можно найти за конечное время, просто оценив целевую функцию во всех (нм) {\ displaystyle {\ binom {n} {m}}}{\ displaystyle {\ binom {n} {m}}} BFS-s. Это не самый эффективный способ решить ЛП; симплексный алгоритм исследует BFS-файлы гораздо более эффективно.

Примеры

Рассмотрим линейную программу со следующими ограничениями:

x 1 + 5 x 2 + 3 x 3 + 4 x 4 + 6 x 5 = 14 x 2 + 3 x 3 + 5 x 4 + 6 x 5 = 7 ∀ i ∈ {1,…, 5}: xi ≥ 0 {\ displaystyle {\ begin {align} x_ {1} + 5x_ {2} + 3x_ {3} + 4x_ {4} + 6x_ {5} = 14 \\ x_ {2} + 3x_ {3} + 5x_ {4} + 6x_ {5} = 7 \\\ для всех i \ in \ {1, \ ldots, 5 \}: x_ {i} \ geq 0 \ end {align}}}{\ displaystyle {\ begin {выровнено} x_ {1} + 5x_ {2} + 3x_ {3} + 4x_ {4} + 6x_ {5} = 14 \\ x_ {2} + 3x_ {3} + 5x_ {4} + 6x_ {5 } = 7 \\\ forall i \ in \ {1, \ ldots, 5 \}: x_ {i} \ geq 0 \ end {align}}}

Матрица A:

A = (1 5 3 4 6 0 1 3 5 6) b = (14 7) { \ displaystyle A = {\ begin {pmatrix} 1 5 3 4 6 \\ 0 1 3 5 6 \ end {pmatrix}} ~~~~~ \ mathbf {b} = (14 ~~ 7)}{\ displaystyle A = {\ begin {pmatrix} 1 5 3 4 6 \\ 0 1 3 5 6 \ end {pmatrix}} ~~~~~ \ mathbf {b} = (14 ~~ 7)}

Здесь m = 2, а всего 10 подмножества 2 индексов, однако, не все из них являются базами: набор {3,5} не является базисом, поскольку столбцы 3 и 5 линейно зависимы.

Множество B = {2,4} является базисом, поскольку матрица AB = (5 4 1 5) {\ displaystyle A_ {B} = {\ begin {pmatrix} 5 4 \\ 1 5 \ end {pmatrix}}}{\ displ aystyle A_ {B} = {\ begin {pmatrix} 5 4 \\ 1 5 \ end {pmatrix}}} неособое число.

Уникальный BFS, соответствующий этому основанию, равен x B = (0 2 0 1 0) {\ displaystyle x_ {B} = (0 ~~ 2 ~~ 0 ~~ 1 ~~ 0) }{\ displaystyle x_ {B} = (0 ~~ 2 ~~ 0 ~~ 1 ~~ 0)} .

Геометрическая интерпретация
Вытянутая пятиугольная orthocupolarotunda.png

Множество всех возможных решений является пересечением гиперпространств. Следовательно, это выпуклый многогранник. Если он ограничен, то это выпуклый многогранник.

. Каждой BFS соответствует вершина этого многогранника.

Применение в симплексном алгоритме

симплексный алгоритм сохраняет в каждой точке своего выполнения «текущий базис» B (подмножество m из n переменных), «текущая BFS» и «текущая таблица». Таблица представляет собой представление линейной программы, где основные переменные выражены через неосновные:

x B = p + Q x N z = z 0 + r T x N {\ displaystyle {\ begin {выравнивается} x_ {B} = p + Qx_ {N} \\ z = z_ {0} + r ^ {T} x_ {N} \ end {выравнивается}}}{\ displaystyle {\ begin {выровнено} x_ {B } = p + Qx_ {N} \\ z = z_ {0} + r ^ {T} x_ {N} \ end {align}}} где x B { \ displaystyle x_ {B}}x_ {B} - вектор из m базовых переменных, x N {\ displaystyle x_ {N}}x_N - вектор из n неосновных переменных, и z {\ displaystyle z}z - цель максимизации. Поскольку неосновные переменные равны 0, текущая BFS - это p {\ displaystyle p}п , а текущая цель максимизации - z 0 {\ displaystyle z_ {0}}z_ {0} .

Если все коэффициенты в r {\ displaystyle r}r отрицательны, то z 0 {\ displaystyle z_ {0}}z_ {0} является оптимальным решением, поскольку все переменные (включая все неосновные переменные) должно быть не менее 0, поэтому вторая строка подразумевает z ≤ z 0 {\ displaystyle z \ leq z_ {0}}{\ displaystyle z \ leq z_ {0}} .

Если некоторые коэффициенты в r {\ displaystyle r}r положительны, тогда можно будет увеличить цель максимизации. Например, если x 5 {\ displaystyle x_ {5}}x_5не является базовым, а его коэффициент в r {\ displaystyle r}r положительный, тогда увеличение его выше 0 может увеличить z {\ displaystyle z}z . Если это возможно сделать без нарушения других ограничений, то увеличенная переменная становится базовой (она «входит в базовую»), в то время как другая небазовая переменная уменьшается до 0 для сохранения ограничений равенства и, таким образом, становится не базовой (она «выходит с базы»).

Если этот процесс проделан осторожно, то можно гарантировать, что z {\ displaystyle z}z увеличивается до тех пор, пока не будет достигнута оптимальная BFS.

Ссылки
Последняя правка сделана 2021-05-11 13:56:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте