
- •1. Цели и задачи системного анализа
- •1.1. Определения системного анализа
- •1.2. Понятие сложной системы
- •1.3. Характеристика задач системного анализа
- •1.4. Особенности задач системного анализа
- •1.5. Прогнозирование и планирование
- •2. Характеристика этапов системного
- •2.1. Процедуры системного анализа
- •2.2. Анализ структуры системы
- •2.3. Сбор данных о функционировании системы
- •2.4. Построение моделей систем
- •2.5. Проверка адекватности моделей
- •2.6. Определение целей системного анализа
- •2.7. Формирование критериев
- •2.8. Генерирование альтернатив
- •2.9. Реализация выбора и принятия решений
- •3. Построение моделей систем
- •3.1. Понятие модели системы
- •3.2. Способы описания систем
- •3.3. Анализ и синтез - методы исследования систем
- •3.4. Декомпозиция и агрегирование
- •4. Эксперимент – средство построения
- •4.1. Характеристика эксперимента
- •4.3. Обработка экспериментальных данных
- •4.4. Вероятностное описание событий и процессов
- •4.5. Описание ситуаций с помощью нечетких моделей
- •4.6. Характеристика и классификация статистической
- •5. Математическое программирование
- •5.1. Математические постановки задач, приводящие
- •5.2 Задача линейного программирования
- •5.3. Решение задач линейного программирования
- •5.5. Дискретное программирование
- •6. Выбор или принятие решений
- •6.1. Характеристика задач принятия решений
- •6.2. Критериальный способ описания выбора
- •6.3. Выбор в условиях неопределенности
- •6.4. Концепция риска в задачах системного анализа
- •6.5. Принятие решений в условиях стохастической
- •6.6. Выбор при нечеткой исходной информации
- •6.8. Коллективный или групповой выбор
5.5. Дискретное программирование
Постановка задачи дискретного программирования. Многие задачи системного анализа, такие как распределение ресурсов, задачи сетевого планирования и управления, календарного планирования, описываются математическими моделями дискретного программирования.
Рассмотрим общую задачу максимизации.
Найти
при условиях
g1(x1,
х2,...,
хп)
0;
…
gm(x1 ,x2 ,...,xn) 0;
X=(x1,x2,...,xn)
D,
где D - некоторое множество R(n).
Если множество D является конечным или счетным, то данная задача является задачей дискретного программирования (ЗДП). Чаще всего условие дискретности разделено по отдельным переменным следующим образом:
хj Dj= 1,2,..., n,
где D- конечное (или счетное) множество.
Если вводится ограничение хj - целые числа (j = 1, 2,...,n), то приходят к задачам целочисленного программирования (ЦП), которое является частным случаем дискретного программирования.
В задачах дискретного программирования область допустимых решений является невыпуклой и несвязной. Поэтому отыскание решения таких задач сопряжено со значительными трудностями. В частности, невозможно применение стандартных приемов, используемых при замене дискретной задачи ее непрерывным аналогом, состоящих в дальнейшем округлении найденного решения до ближайшего целочисленного. Например, рассмотрим следующую ЗЛП:
где х1, х2 х3 0, хj - целые числа (j = 1, 2, 3). Игнорируя условие целочисленное™, находим оптимальный план симплекс-методом:
Проверка показывает, что никакое округление компонент этого плана не дает допустимого решения, удовлетворяющего ограничениям этой задачи. Искомое целочисленное решение задачи хх опт= 2, х2 опт= 2, х3опт= 5.
Таким образом, для решения задачи дискретного программирования (ЗДП) необходимы специальные методы. Методы решения ЗДП по принципу подхода к проблеме делят на три группы: 1) методы отсечения или отсекающих плоскостей; 2) метод ветвей и границ; 3) методы случайного поиска и эвристические методы.
Математические модели задач дискретного программирования. По структуре математической модели задачи дискретного программирования разделяют на следующие классы:
задачи с неделимостями;
экстремальные комбинаторные задачи;
задачи на несвязных и на невыпуклых плоскостях;
задачи с разрывными целевыми функциями. Рассмотрим существо некоторых из них.
Задачи с неделимостями. Математические модели задач с неделимостями основаны на требовании целочисленности переменных {хi}, вытекающем из физических условий практических задач.
К таким задачам относится задача об определении оптимальной структуры производственной программы, где {хi, х2,..., хn} - объемы выпуска продукции.
Эта задача заключается в отыскании
при
(i=1,2,…,m)
х1 0,х2 0,...,хп >0; xj -целые при j J.
Если J = N = (1, 2, ...,n), то задача называется полностью целочисленной, в противном случае, частично целочисленной.
Задача о ранце. Одной из наиболее распространенных задач целочисленного программирования является так называемая задача о ранце.
Рассмотрим
постановку данной задачи. Турист
готовится к длительному переходу в
горах. В рюкзаке он может нести груз,
масса которого не более W.
Этот
груз может включать в себя п
видов
предметов, каждый предмет типа j,
массой
,
j=
1,
2,..., п.
Для
каждого вида предмета турист определяет
его ценность Еj
во
время перехода. Задача заключается
в определении количества предметов
каждого типа, которые он должен положить
в рюкзак, чтобы суммарная ценность
снаряжения была максимальной.
Обозначим через хj количество предметов j-го типа в рюкзаке.
Тогда математическая модель задачи такова:
при ограничениях
-
целое, i=
1,2,...,m.
Экстремальные комбинаторные задачи. В данных задачах необходимо найти экстремум некоторой целевой функции, заданной на конечном множестве, элементами которого служат перестановки из п символов (объектов).
Одной
из наиболее простых задач этого класса
является задача
о назначениях: найти
такую перестановку (р1
,
р2,...,
рп)
из
чисел 1, 2, 3, ..., п,
при
которой обеспечен
p
по всем перестановкам (р1,
р2...,
рп).
Каждая
такая перестановка может быть представлена
точкой в n2-
мерном евклидовом пространстве или в
виде матрицы
.
Вводим переменные хij= 1, если i-й механизм предназначен для j-й работы; хij = 0 - в противном случае.
Очевидно, что должно выполняться условие
Данные
ограничения означают, что один механизм
может быть предназначен для выполнения
только одной работы. Тогда задача будет
состоять в определении таких чисел
{хij},
при которых достигается минимум
функционала
.
Задача
о коммивояжере. Имеется
(п
+ 1)
город. Задана матрица С =
расстояний
между городами. Выезжая из исходного
города А0
коммивояжер
должен побывать во всех остальных
городах по одному разу и вернуться в
город A0.
Требуется
определить, в каком порядке следует
объезжать города, чтобы суммарное
пройденное расстояние было минимально.
Введем переменные хij = 1, если коммивояжер переезжает из населенного пункта Аi в Аj; хij = 0 - в противном случае.
Математическая модель задачи имеет следующий вид:
при условиях
,(j=1,2,…,n);
,
(i=1,2,…,n);
,
(i,
j=1,2,…,n,
i
j);
где ui, uj - произвольные целые и неотрицательные числа.
Коммивояжер выезжает из каждого города один раз, и въезжает один раз в каждый город.
Метод ветвей и границ для задачи целочисленного программирования. Рассмотрим частично целочисленную задачу ЛП. Требуется минимизировать
при условиях
,
(j=1,2,…,m);
,(i
= l,2,...,n);
хi - целые числа.
Процесс
поиска оптимального решения начинают
с решения непрерывной задачи ЛП. Если
полученный при этом оптимальный план
не
удовлетворяет условию целочисленности,
то значение целевой функции
дает
нижнюю оценку для искомого решения,
т.е. min
z
=
.
Пусть
некоторая переменная
не
получила в плане
целочисленного решения. В целочисленном
плане значение хi0
следует либо уменьшить, по крайней мере
до [хi0],
либо
увеличить, по крайней мере до [хi0]+
1.
Если границы изменения хi0 заранее не заданы, то их можно вычислить, решив для этого две вспомогательные задачи ЛП. Эти задачи состоят в максимизации и минимизации хi0.
Теперь
для каждого фиксированного целочисленного
значения хi0
в
найденном отрезке (хi0min,
хi0max)
находят minz,
решая задачу ЛП с заданными ограничениями
и с дополнительным ограничением
.
Таким
образом, все указанные выше возможности
можно представить в виде некоторого
дерева, в котором вершина 0 отвечает
плану
,
а каждая из соединенных с ней вершин
отвечает оптимальному плану следующей
задачи: минимизировать z
при
заданных условиях. Каждой из таких
вершин приписывают оценку
,
которая
равна minz
при указанных выше ограничениях.
Очевидно,
,
для
всех k.
Если
оптимальные планы полученных задач
удовлетворяют условиям целочисленности,
то план с минимальной оценкой
и
будет оптимальным планом исходной
задачи. В противном случае возникает
необходимость в продолжении ветвления.
При этом каждый раз для очередного
ветвления выбирают вершину с наименьшей
оценкой.
Любой маршрут в дереве от начальной вершины 0 до некоторой вершины определяет допустимую последовательность выбора целочисленных решений для переменных. Процесс продолжают до тех пор, пока продолжение ветвления становится невозможным.
Каждая конечная вершина отвечает некоторому допустимому целочисленному плану. Вершина с минимальной оценкой дает оптимальный план.
Рассмотрим
алгоритм решения задачи целочисленного
программирования. На первом этапе
необходимо задать множество G(0),
определяемое условиями. Далее
формируются множества
,
заданными и дополнительным условием
или
,где
[хj0]
- целая часть xj0.
Далее
осуществляется вычисление оценок. Для
множества G(0)
оценку
(G(0))
определяют как
,
где
- оптимальный план непрерывной задачи
ЛП.
Для
множества
оценку
определяют аналогично:
где
-оптимальный
план задачи.
Если
множество
оказывается пустым, ему приписывают
оценку
.
На следующем этапе осуществляется нахождение планов. Если план удовлетворяет условию целочисленности, -оптимальный план задачи. Если удовлетворяет условию целочисленности, он является оптимальным планом задачи с дополнительными условиями и некоторым планом исходной задачи.
Далее
выполняют ветвление. Ветвление производят
в том случае, когда план
не
удовлетворяет условию целочисленности.
Пусть
- одна из нецелочисленных компонент
плана, где
,
тогда
множество
разбивают на два подмножества:
,
причем
;
Укажем некоторые особенности метода ветвей и границ для задач ЦП.
1.Если
все коэффициенты сj
целевой
функции - целые при
и равны нулю при у > п1
то
оценку
можно
заменить на более сильную оценку
,
где ]а[
обозначено
наименьшее целое, но не меньшее, чем а,
т.е.
округленное до ближайшего целого с
избытком.
Алгоритм метода в вычислительном отношении представляет собой последовательность задач ЛП, причем конечность алгоритма следует из предполагаемой ограниченности множества G.
Из описания алгоритма следует, что в применении метода ветвей и границ для полностью целочисленных и для частично целочисленных задач нет никакой разницы.
Геометрически этот метод можно интерпретировать таким образом. Гиперплоскость, определяемая целевой функцией задачи, вдавливается внутрь многогранника планов соответствующей задачи ЛП до встречи с ближайшей целочисленной точкой этого многогранника.
Пример
применения метода ветвей и границ для
решения задач дискретного программирования.
Постановка
задачи следующая: минимизировать
функцию
при
ограничениях
;
x1, x2 – целые числа.
Нулевой
шаг. Оптимальный
план задачи ЛП
тогда имеем
.
Поскольку
план Х0
не
удовлетворяет условию целочисленности,
возьмем его нецелочисленную компоненту
и
разобьем множество
:
.
Первый
шаг. Решаем
две задачи ЛП, заключающиеся в минимизации
исходной задачи по множествам
.
В первом случае минимум достигается при
и
Множество
оказывается
пустым, поэтому
Разбиваем
на
и
,
где
и
.
Обозначим
,
,
Второй
шаг. Решаем
две задачи ЛП, заключающиеся в минимизации
исходной задачи при дополнительном
ограничении
и
,
тогда
и
и
.
Производим
разветвление множества
:
где
,
.
Обозначим
,
,
,
Третий
шаг. Решаем
две задачи ЛП, заключающиеся в минимизации
исходной задачи по множествам
и
.
Находим
={3,2}
и
;
и
,
и
;
и
.
Дерево решений приведено на рисунке 5.2.
Итак получен целочисленный план = {3,2}, причем
План
= {3,2} - оптимальный, так как
Рисунок 5.2. Дерево решений задачи целочисленного программирования