Опубликован: 06.11.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 6:

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

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Аннотация: Предмет дискретного программирования. Постановка задачи линейного программирования. Геометрическая интерпретация задачи линейного программирования. Общий путь нахождения оптимального плана. Вычислительные методы линейного программирования. Пример математической модели дискретного программирования (транспортная задача). Метод северо-западного угла.

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

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

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

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

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

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

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

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

c_1x_1+c_2x_2+...+c_jx_j+...+c_nx_n=c_0 ( 6.1)
,

где c_jj - e — известные коэффициенты;

x_j - j - e — неизвестные переменные (j=1,2,...,n).

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

Условия задачи задаются в виде системы линейных уравнений или неравенств, которые представляют ограничения, налагаемые на использование имеющихся ресурсов:

a_{11}x_1+a_{12}x_2+...+a_{1j}x_j+...+a_{1n}x_n=b_1;\\
a_{21}x_1+a_{22}x_2+...+a_{2j}x_j+...+a_{2n}x_n=b_2;\\ 
.......................................\\
a_{i1}x_1+a_{i2}x_2+...+a_{ij}x_j+...+a_{in}x_n=b_i;\\
a_{m1}x_1+a_{m2}x_2+...+a_{mj}x_j+...+a_{mn}x_n=b_m;\\ ( 6.2)

где

j=1,2,...n;i=1,2,...,m;m < n\\ x_j \ge 0 (j=1,2,...n).

Искомые величины (x_1,x_2,...,x_n) не могут быть отрицательными; a_{ij},b_i — известные постоянные величины, характеризующие условия задачи.

Целевая функция задается в виде такой линейной формы:

y=c_1x_1+c_2x_2+...+c_jx_j+...+c_nx_n ( 6.3)

где c_j — постоянные коэффициенты, которые обычно называют коэффициентами стоимости (j=1,2,...,n).

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

x_{n+1},x_{n+2},...,x_{n+m},

можно привести систему линейных ограничений к виду (6.2.).

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

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

Пример

Четыре вида овощей (m=4) необходимо распределить по шести транспортным средствам (n=6).

Распределение овощей по транспортным средствам сопряжено с необходимостью учета ряда ограничений, которые могут быть описаны системой четырех уравнений с шестью неизвестными, аналогичными системе 6.2.

\left.
\begin{array}{ccc}
4x_1+x_4=16;\\
2x_2+x_5=10;\\
x_3+2x_4+6x_5=76;\\
4x_1+3x_2+x_6=24;\\
x_j\ge 0(j=1,...,4)\\
\end{array}
\right\} ( 6.4)

Смысл первого уравнения в нашем примере означает, что овощ типа 1, общий ресурс которого составляет 16 единиц, может размещаться в количестве четырех единиц на транспортном средстве первого типа и одной единицы на транспортном средстве четвертого типа. Аналогично и второе уравнение и так далее.

Последнее условие говорит о том, что число типов транспортного средства не может быть отрицательным.

Необходимо определить, какое количество транспортного средства каждого типа следует иметь, чтобы общие потери в них были минимальными.

Оплата за конкретное транспортное средство (в тысячах рублей) задана следующей таблицей.

Тип единицы транспорта, j 1 2 3 4 5 6
Стоимость перевозки на транспорте данного типа, c_j 0,4 0,5 0,2 0,8 0,6 0,3

В соответствии с приведенными данными, целевая функция, подлежащая оптимизации, примет вид:

y=0,4x_1+0,5x_2+0,2x_3+0,8x_4+0,6x_5+0,3x_6 ( 6.5)
.

Решение задачи сводится к выполнению ограничений, заданных уравнением (6.4.)

В этом примере, когда n-m=2, каждое из ограничительных линейных уравнений (6.4.), а также линейная функция (6.5.), могут быть представлены геометрически в двухмерном пространстве (на плоскости), что дает возможность весьма наглядно интерпретировать основные идеи метода линейного программирования.

Геометрическая интерпретация задачи линейного программирования. Чтобы иметь возможность наглядно представить ограничения и целевую функцию на графике, необходимо выразить все неизвестные через две независимые величины, например, x_1 и x_2, соответствующие координатным осям, относительно которых будет производиться построение (рис. 6.1). Из уравнения (6.4.) следует:

\left.
\begin{array}{ccc}
x_3=8x_1+12x_2-16;\\
x_4=16-4x_1;\\
x_5=10-2x_2;\\
x_6=24-4x_1-3x_2
\end{array}
\right\} ( 6.6)

А целевая функция примет такой вид:

y=-2,4x_1+0,8x_2+22,8.

Из сопоставления уравнений (6.6.) и последнего из ограничений (6.2.) x_j\ge 0 следует:

x_1\ge 0;\\
x_2\ge 0;\\
x_3=8x_1+12x_2-16\ge 0;\\
x_4=16-4x_1\ge 0;\\
x_5=10-2x_2\ge 0;\\
x_6=24-4x_1-3x_2\ge 0; ( 6.8)

Каждому из неравенств (6.8.) на графике рис. 6.1 соответствует полуплоскость, в пределах которой находятся все допускаемые данным неравенством значения переменной величины x_j(j=1,2,...,6).

Так, например, неравенству x_1\ge 0 соответствует полуплоскость вправо от оси x_2 (граница ее заштрихована).

Неравенству

x_3=8x_1+12x_2 -16\ge 0

соответствует полуплоскость вправо и вверх от линии, соответствующей значению данного неравенства (при x_3=0 ).

Уравнение этой линии

x_1+\frac{3}{4}x_2-1=0.

Таким же образом можно построить границы, определяемые другими уравнениями.

Неравенствам (6.8.) соответствует некоторая область – шестиугольник ABCDEF, образованный границами упомянутых выше полуплоскостей. Эта область может быть названа областью допустимых планов, поскольку любая точка в ее пределах отвечает требованиям наложенных ограничений (6.4.).

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

Целевой функции соответствует семейство параллельных прямых. Рассмотрим одну из них, проходящую через начало координат, что будет иметь место при y=22,8.

При этом

x_2=3x_1.

Интересующая нас прямая y=22,8, как видно из рисунка 6.1, имеет наклон вправо от оси x_2. Задаваясь различными значениями y, получим семейство прямых линий, параллельных прямой y=22,8, которая проходит через точку 0. При этом чем меньше будет y, тем, очевидно, правее располагается соответствующая прямая.

Поскольку мы добиваемся минимального значения y, нас будет интересовать прямая, расположенная в наибольшем удалении вправо от прямой y=22,8 и проходящая через многоугольник ABCDEF, — прямая y_{min}.

Как видно из рисунка 6.1, единственной точкой, соответствующей оптимальному плану, будет та вершина многоугольника ABCDEF, которая одновременно принадлежит области допустимых планов и отвечает требованию минимизации целевой функции y — вершина C.

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


Рис. 6.1.
< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Данил Комардин
Данил Комардин

мне задали дистанционное задание на сертификат,но я не могу его найти

Илья Шаров
Илья Шаров
Россия
Андрей Савельев
Андрей Савельев
Россия, Магнитогорск