Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мет прин реш.docx
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
1.39 Mб
Скачать

Лекция 13. Дискретное программирование.

 

Постановка задачи дискретного программирования. Многие задачи системного анализа, такие как распределение ресурсов, задачи сетевого планирования и управления, календарного планирования, описываются математическими моделями дискретного программирования.

Рассмотрим общую задачу максимизации.

Найти                       

при условиях

                        (13.12)

где - некоторое множество R(n)

Если множество является конечным или счетным, то условие (13.12) - это условие дискретности, и данная задача является задачей дискретного программирования (ЗДП). Чаще всего условие дискретности разделено по отдельным переменным следующим образом:

где D - конечное (или счетное) множество.

Если вводится ограничение х; - целые числа (j=l,2,..., n), то приходят к задачам целочисленного программирования (ЦП), которое является частным случаем дискретного программирования.

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

найти max (x1-3x2 +3х3) при условиях

где х1х2, х3 ≥ 0, xj - целые числа (j = 1,2, 3). Игнорируя условие целочисленности, находим оптимальный план симплекс-методом:

x1опт=1/2,   x2=0,…,x2опт= .

Проверка показывает, что никакое округление компонент этого плана не дает допустимого решения, удовлетворяющего ограничениям этой задачи. Искомое целочисленное решение задачи x1пт =2, x2опт=0x3опт=5.

Таким образом, для решения задачи дискретного программирования (ЗДП) необходимы специальные методы. Методы решения ЗДП по принципу подхода к проблеме делят на три группы: 1) методы отсечения или отсекающих плоскостей; 2) метод ветвей и границ; 3) методы случайного поиска и эвристические методы.

Математические модели задач дискретного программирования. По структуре математической модели задачи дискретного программирования разделяют на следующие классы:

1) задачи с неделимостями;

2) экстремальные комбинаторные задачи;

3) задачи на несвязных и на невыпуклых плоскостях;

4) задачи с разрывными целевыми функциями.

Рассмотрим существо некоторых из них.

Задачи с неделимостями. Математические модели задач с неделимостями основаны на требовании  целочисленности переменных {xi}, вытекающем из физических условий практических задач.

К таким задачам относится задача об определении оптимальной структуры производственной программы, где 1, х2,..., хп- объемы выпуска продукции.

Эта задача заключается в отыскании

                        (13.13)

при

    (13.14)

                (13.15)

Если J =N = (1,2,..., n), то задача называется полностью целочисленной, в противном случае, если JN  - частично целочисленной.

Задача о ранце. Одной из наиболее распространенных задач целочисленного программирования является так называемая задача о ранце.

Рассмотрим постановку данной задачи. Турист готовится к длительному переходу в горах. В рюкзаке он может нести груз, масса которого не более WЭтот груз может включать в себя п видов предметов, каждый предмет типа j, массой wj ,j= 1,2,..., n. Для каждого вида предмета турист определяет его ценность Ej  во время перехода. Задача заключается в определении количества предметов каждого типа, которые он должен положить в рюкзак, чтобы суммарная ценность снаряжения была максимальной.

Обозначим через хj количество предметов j-го типа в рюкзаке.

Тогда математическая модель задачи такова:

               (13.16)

при ограничениях

 xj -целое, i= 1,2,..., т.        (13.17)

Экстремальные комбинаторные задачи. В данных задачах необходимо найти экстремум некоторой целевой функции, заданной на конечном множестве, элементами которого служат перестановки из nсимволов (объектов).

Одной из наиболее простых задач этого класса является задача о назначенияхнайти такую перестановку (р12,..., рn) из чисел 1,2,3,...,n,

при которой обеспечен    по всем перестановкам (р12,..., рn). Каждая такая перестановка может быть представлена точкой в п2мерном евклидовом пространстве или в виде матрицы Хп

Вводим переменные:

Хij = 1, если i-и механизм предназначен для j-й работы; хij = 0 — в противном случае.

Очевидно, что должно выполняться условие

 (13.18)

Данные ограничения означают, что один механизм может быть предназначен для выполнения только одной работы. Тогда задача будет состоять в определении таких чисел ij}, при которых достигается минимум функционала min   при ограничениях (13.18).

Задача о коммивояжере. Имеется (n + 1) город. Задана матрица

С = ||cij || расстояний между городами. Выезжая из исходного города Aij , коммивояжер должен побывать во всех остальных городах по одному разу и вернуться в город АijТребуется определить, в каком порядке следует объезжать города, чтобы суммарное пройденное расстояние было минимально.

Введем переменные:

Xij — 1, если коммивояжер переезжает из населенного пункта А, в Аjхij - 0 - в противном случае.

Математическая модель задачи имеет следующий вид: найти

                                          (13.19)

при условиях

;                               (13.20)

;                               (13.21)

,   (13.22)

 

где ui, uj - произвольные целые и неотрицательные числа.

Условие (13.20) означает, что коммивояжер выезжает из каждого города один раз, а условие (13.21)- что он въезжает один раз в каждый город.

Если ограничить задачу только условиями (13.20) и (13.21), она будет эквивалентна задаче о назначениях, план которой не обязан быть цикличным. Иначе говоря, путь коммивояжера при этом можно представить как рад несвязанных подциклов, в то время как его путь в действительности состоит из одного цикла.

Покажем, что для любого цикла, начинающегося в Aij можно найти ui удовлетворяющие условию (13.22). Пусть ui =pесли коммивояжер посещает город Аi на р-м этапе. Отсюда следует, что

ui- иj ≤ п - 1 для всех и jи, таким образом, условие (13.22) выполняется при xij = 0.

При хij = 1 условие (13.22) выполняется как строгое равенство:

ui-uj+nxij=p-(p+1)+n = n-1.

 

Метод ветвей и границ для задачи целочисленного программирования.

Рассмотрим частично целочисленную задачу ЛП:

минимизировать

                                (13.23)

при условиях

;                 (13.24)

;                  (13.25)

- целые числа.                                 (13.26)

Процесс поиска оптимального решения начинают с решения непрерывной задачи ЛП. Если полученный при этом оптимальный план  не удовлетворяет условию (13.26), то значение целевой функции   дает нижнюю оценку для искомого решения, т.е. .

Пусть некоторая переменная хi0 (1≤ i0 ≤ т) не получила в плане   целочисленного решения. В целочисленном плане значение хi0 следует либо уменьшить, по крайней мере до [хi0], либо увеличить, по крайней мере до [хi0]1.

Если границы изменения хi0 заранее не заданы, то их можно вычислить, решив для этого две вспомогательные задачи ЛП. Эти задачи состоят в максимизации и минимизации хi при условиях (13.24) и (13,25).

Теперь для каждого фиксированного целочисленного значения хi0 в найденном отрезке i0min, хi0max] находят min z, решая задачу ЛП с ограничениями (13.24), (13.25) и с дополнительным ограничениемхi0ki0..

Таким образом, все указанные выше возможности можно представить в виде некоторого дерева, в котором вершина 0 отвечает плану  , а каждая из соединенных с ней вершин отвечает оптимальному плану следующей задачи: минимизировать при условиях (13.24), (13.25) и дополнительном условии, что переменной хi0 дано значение хi0 ≤ кi0где кio - целое число. Каждой из таких вершин приписывают оценку которая равна min z при указанных выше ограничениях. Очевидно,  , для всех k.

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

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

Каждая конечная вершина отвечает некоторому допустимому целочисленному плану. Вершина с минимальной оценкой дает оптимальный план.

Рассмотрим алгоритм решения задачи целочисленного программирования.

На первом этапе необходимо задать множество G(0), определяемое условиями (13,24), (13.25).

На втором этапе формируются множества   задаваемые условиями (13.24), (13.25) и дополнительным условием

xj≤[xj0] или xj≥[ xj0] +1                                                                       (13.27)

где [xj0] - целая часть хj0.

На третьем этапе осуществляется вычисление оценок. Для множества G(0) оценку   определяют как  =f( ), где   -  оптимальный план непрерывной задачи ЛП.  Для множества  оценку  определяют аналогично:

где  -оптимальный план задачи с условиями (13.24), (13.25) и с дополнительным условием (13.27).

Если множество   оказывается пустым, ему приписывают оценку  = ∞.

На четвертом этапе осуществляется нахождение планов. Если план   удовлетворяет условию целочисленности (13.26),   -оптимальный план задачи. Если  удовлетворяет условию целочисленности (13.26), он является оптимальным планом задачи с условиями (13.24), (13.25), (13.27) и некоторым планом исходной задачи (13.23) - (13.26).

На пятом этапе выполняют ветвление. Ветвление производят в том случае, когда план   не удовлетворяет условию целочисленности (13.26).

Пусть   - одна из нецелочисленных компонент плана, где 1 ≤ρ≤n1, тогда   множество      разбивают   на   два   подмножества:

.причем

;                       (13.28)

                       (13.29)

Укажем некоторые особенности метода ветвей и границ для задач ЦП.

1. Если все коэффициенты сj целевой функции - целые при 1 jnи равны нулю при j > ni, то оценку   МОЖНО заменить на более сильную оценку  , где ]а[ обозначено наименьшее целое, но не меньшее, чем а, т.е. округленное до ближайшего целого с избытком. 

2.  Алгоритм метода в вычислительном отношении представляет собой последовательность задач ЛП, причем конечность алгоритма следует из предполагаемой ограниченности множества G.

3. Из описания -алгоритма следует, что в применении метода ветвей и границ для полностью целочисленных и для частично .целочисленных задач нет никакой разницы.

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

 

Пример 1 применения метода ветвей и границ для решения задач дискретного программирования.

Возьмем задачу

Максимизировать 3x1+3x+13x3                                                                                   (13.30)   

При ограничениях -3 x1+6 x2+7 x3≤8;                                              (13.31)

                                 x1-3 x+7 x3≤8;                                                (13.32)

где каждая переменная xдолжна быть неотрицательным целым. Предположим, что заданы границы на каждую переменную:

0≤xj≤5, j=1,2,3.

Как принято, обозначим x0значение целевой функции.

На итерации 1 примем нижнюю границу x0, поскольку при всех xj=0 имеем допустимое решение. Основой список содержит лишь одну задачу линейного программирования (13.30 ) (13.31) и (13.32) , которую назовем задачей 1. Выберем эту задачу на шаге 1 и найдем ее оптимальное решение на шаге 2:

x0=16, x1=x2= x3=0.

Поскольку решение не является целочисленным, перейдем от шага 3 к шагу 4 и выберем x1Внесем далее в основной список

Задачу 2: ограничения          (13.33)

3≤x1≤5; 0≤x2≤5; 0≤x3≤5;

Задачу 3: ограничения (13.34)

0≤x1≤2; 0≤x2≤5; 0≤x3≤5;

Допустимое решение задачи 2 отсутствует. Поэтому выберем x02x03=0 и вернемся к шагу 1. выберем теперь задачу 3 и получим на шаге 2 оптимальное решение

x0= x1=x2=2, x3= не являющееся целочисленным. Дальнейший ход решения задачи показан на рис. 13.1.

Рис. 13.1

Решением задачи является оптимальный план x1=x2=0, x3=1, значение целевой функции f(x)=13.