Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системный анализ / 14. Блочное программирование.doc
Скачиваний:
114
Добавлен:
10.05.2014
Размер:
631.81 Кб
Скачать

12

Блочное прогр.doc

Блочное программирование

Итак, мы достаточно подробно изучили симплекс-метод, двойственный симплекс-метод, а также модифицированный симплекс-метод.

Что можно сказать об этих методах? Прежде всего, это - универсальные, конечные методы.

Конечность - это гарантия решения задачи ЛП за конечное количество шагов (пусть и очень большое).

Универсальность. Это означает, что данные методы практически не учитывают особенности строения матрицы коэффициентов ограничений. Главное, что задача относится к классу задач ЛП:

<c,x>  max ,

AX=A0 ,

x 0 .

И вот здесь мы сталкиваемся с фундаментальным "законом" математического программирования: за универсальность нужно платить. Иными словами, конкретную задачу лучше, эффективнее решать методом, ориентированным на особенности именно этой задачи, чем методом, полностью игнорирующим любые особенности.

Например, в нелинейном программировании вообще нет универсальных методов. Практически каждый метод (за исключением, разве что, полного перебора) предъявляет определенные требования, как к целевой функции, так и к функциям, определяющим множество допустимых решений1.

Но вернемся к линейному программированию.

Многие классы широко распространенных задач ЛП обладают специфическим строением матрицы ограничений (A) . Эти особенности позволяют существенно снизить трудоемкость решения данных задач.

Первый из рассматриваемых нами классов представляют задачи так называемого "блочного программирования".

Задачи блочного программирования

Некоторые задачи ЛП большой размерности имеют такие структурные особенности, которые позволяют найти их оптимальное решение путем т.н. декомпозиции (или разложения) исходной задачи на ряд подзадач меньшей размерности. Причем эти подзадачи решаются практически независимо друг от друга. Основной эффект при таком подходе связан с тем, что существенно легче решить много "маленьких" задач, чем одну, но "большую". В математическом программировании это связано с полиномиальной и, даже, экспоненциальной зависимостью трудоемкости решения задач от их размерности.

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

Ситуации, приводящие к постановке подобных задач, встречаются довольно часто.

Например, это - задачи планирования производственной деятельности предприятий, входящих в объединение. Хотя каждое из таких предприятий может иметь свои независимые ограничения, производственные программы отдельных предприятий обычно согласовывают на верхнем уровне управления из-за объективно существующих ограничений (связанных, например, с общим объемом финансовых ресурсов, которыми располагает объединение).

При этом возникает задача ЛП, обладающая структурой, которую в схематичной форме можно представить следующим образом.

Целевая функция

extr

Общие ограничения

Независимые ограничения

п/п

1

п/п

2

п/п

L

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

Поэтому нет проблем, если общие ограничения, образующие т.н. БЛОК-СВЯЗКУ, отсутствуют:

Целевая функция

extr

Независимые ограничения

п/п

1

п/п

2

п/п

L

Решить подобную задачу - это просто "разрезать" ее на L независимых задач, решить каждую из этих задач и объединить полученные оптимальные решения.

При этом:- пример, когда работает "принцип согласованного максимума", известный в теории иерархических систем (Месарович).

Наличие же блока-связки, в общем случае, приводит к тому, что . Дело в том, что, как правило, оптимизация какой-либо одной частной задачи "ущемляет" возможность оптимизации другой задачи.

Теория блочного программирования ориентирована на решение методом декомпозиции задач, имеющих как общие, так и независимые ограничения.

Класс задач с подобной структурой достаточно широк. В частности, к этому классу очень просто сводятся задачи, имеющие матрицу ограничений вида:

Ясно, что двойственная задача имеет блочно-диагональную структуру с блоком-связкой.

Более того, при сильной разреженности матрицы ограничений можно (небезуспешно) попытаться путем перестановки строк и столбцов придать произвольной задаче подобную структуру.