Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

golunova_l_v_matematicheskie_modeli_v_transportnyh_raschetah

.pdf
Скачиваний:
166
Добавлен:
06.03.2016
Размер:
2.79 Mб
Скачать

3. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ

3.1. ОБЩАЯ ПОСТАНОВКА ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

Первые задачи, связанные с отысканием наименьших и наибольших величин, были поставлены в древности. Упоминания о максимумах и минимумах встречаются в трудах Евклида, Аполлония, Архимеда. Потребность решать экстремальные проблемы способствовала созданию математического анализа и вариационного исчисления. В становлении современных методов оптимизации сыграли определенную роль ученые Куисни (1759 г.) и Л. Вальрас (1874 г.), предложившие первые элементарные модели математического программирования. Математические основы линейного программирования разрабатывались М. Жорданом (1873 г.), Г. Минковским (1896 г.) и Ю. Фаркашем (1903 г.). Важную роль в теории оптимизации сыграл фундаментальный труд Г. Вагнера (1969 г.), который является одним из ведущих специалистов по исследованию операций.

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

Методы решения оптимизационных задач зависят как от вида целевой функции Z(X), так и от области допустимых значений множества переменных W. Если целевая функция в задаче является функцией n переменных, то для решения таких за-

91

дач используются методы математического программиро-

вания. В математическом программировании в зависимости от вида целевой функции Z(X) и от области W выделяют следующие основные задачи:

задачи линейного программирования, если Z(X) и W линейны;

задачи целочисленного программирования, если ставится условие целочисленности переменных x1, x2, …, xn;

задачи нелинейного программирования, если форма Z(X) носит нелинейный характер.

Вобщем виде оптимизационная задача записывается следующим образом:

F = Z(X) →min (max) при X W,

(3.1)

где X = (x1, x2, …, xn);

W – область допустимых значений переменных

x1, x2, …, xn;

Z(X) – целевая функция.

Для того чтобы решить задачу оптимизации, достаточно найти её оптимальное решение, то есть указать X0 W такое,

что Z(X0) = Z(X) при любом X W. При этом Z(X0) ≥ Z(X) при нахождении максимального значения, и Z(X0) ≤ Z(X) – для слу-

чая минимизации.

Оптимизационная задача является неразрешимой, если она не имеет оптимального решения. В частности, задача максимизации будет неразрешима, если целевая функция Z(X) не ограничена сверху на допустимом множестве W.

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

ные ограничения.

 

Линейным программированием определяют

экстремум

(минимум или максимум) функции вида:

 

n

(3.2)

Z(X) = cjxj max (min),

j =1

 

если аргументы связаны системой линейных ограничений:

n

(3.3)

aijxj bi, i = 1,m .

j =1

92

Число неизвестных x равно n, а число линейных ограничений – m, причем n > m. Кроме того, полагают, что

xj ≥ 0, j = 1,n, (3.4)

так как отрицательные значения величин в практических задачах не имеют смысла.

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

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

n

(3.5)

Z(X) = cjxj min;

j =1

 

n

 

 

(3.6)

aijxj = bi, i = 1,m ;

j =1

 

bi ≥ 0;

(3.7)

xj ≥ 0, j =

 

.

(3.8)

1,n

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

к задаче линейного программирования в канонической форме. Для этого в общем случае нужно уметь сводить задачу максимизации к задаче минимизации; переходить от ограничений неравенств к ограничениям равенств и заменять переменные, которые не подчиняются условию неотрицательности. Максимизация некоторой функции эквивалентна минимизации той же функции, взятой с противоположным знаком, и наоборот.

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

1)если в исходной задаче требуется определить максимум линейной функции, то следует изменить знак и искать минимум этой функции;

2)если в ограничениях правая часть отрицательна, то следует умножить это ограничение на –1;

93

3)если среди ограничений имеются неравенства, то путем введения дополнительных неотрицательных переменных они преобразуются в равенства;

4)если некоторая переменная xk не имеет ограничений по знаку, то она заменяется (в целевой функции и во всех ограничениях) разностью между двумя новыми неотрицательными переменными: xk = x’k xl, где l – свободный индекс, xk ≥ 0,

xl ≥ 0.

Пример 3.1. Приведение к канонической форме задачи линейного программирования:

Zmin = 2x1 + x2 x3;

2x2 x3 ≤ 5;

x1 + x2 x3 ≥ –1; 2x1 x2 ≤ –3;

x1 ≤ 0, x2 ≥ 0, x3 ≥ 0.

Решение:

Введем в каждое уравнение системы ограничений выравнивающие переменные x4, х5, х6. Система запишется в виде равенств, причем в первое и третье уравнения системы ограничений переменные х4, х6 вводятся в левую часть со знаком «+», а во второе уравнение вводится х5 со знаком «–». Итак:

2x2 x3 + x4 = 5;

x1 + x2 x3 x5 = –1; 2x1 x2 + x6 = –3;

x4 ≥ 0, x5 ≥ 0, x6 ≥ 0.

Свободные члены в канонической форме должны быть положительными, для этого два последних уравнения умножим на –1:

2x2 x3 + x4 = 5;

x1 x2 + x3 + x5 = 1; –2x1 + x2 x6 = 3.

В канонической форме записи задач линейного программирования все переменные, входящие в систему ограничений, должны быть неотрицательными. Допустим, что x1 = x1 x7, где x1 ≥ 0,

x7 ≥ 0.

Подставляя данное выражение в систему ограничений и целевую функцию, записывая переменные в порядке возрастания индекса, получим задачу линейного программирования, представленную в канонической форме:

2x2 x3 + x4 = 5;

x1 x2 + x3 + x5 + x7 = 1; –2x1 + x2 x6 + 2x7 = 3;

94

Zmin = 2x1 + x2 x3 – 2x7; x’1 ≥ 0, xi ≥ 0, i = 2, …, 7.

3.2. ПОСТРОЕНИЕ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

На каждую автоколонну из 100 автомашин, направляемых для перевозки груза в район A, выделяется одна передвижная мастерская, две автомашины технической помощи и 2 мотоцикла для разъездных механиков. В район B на такую же автоколонну – 2 передвижные мастерские, 1 автомашина технической помощи, мотоциклы не выделяются. Ежедневно одна автоколонна в районе A вывозит 3 тыс. т. руды, в районе B – 2,5 тыс. т. руды. Какое количество автоколонн следует направить в каждый район, если имеется 1000 автомашин, 16 авторемонтных мастерских, 16 автомашин технической помощи и 14 мотоциклов для того, чтобы обеспечить максимальный вывоз руды?

 

 

 

 

Таблица 3.1

 

 

Исходные данные

 

 

 

 

Техника

Состав одной автоколонны

Имеющиеся ресурсы, ед.

 

B

 

A

 

 

Автомашины

100

 

100

1000

Мастерские

1

 

2

16

Тех. помощь

2

 

1

16

Мотоциклы

2

 

0

14

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

1.Для определения каких величин должна быть построена модель, то есть как идентифицировать переменные данной задачи?

2.Какие ограничения должны быть наложены на переменные, чтобы выполнялись условия, характерные для моделируемой системы?

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

Ответы на вышеперечисленные вопросы для данной задачи

95

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

Предположим, что x1 – количество автоколонн в районе A, х2 – количество автоколонн в районе B. Так как количество автоколонн в каждом районе ограничено имеющимися ресурсами, также учитывая, что количество автоколонн не может быть отрицательным, должны выполняться следующие неравенства:

100x1 + 100x2 ≤ 1000;

x1 + 2x2 ≤ 16; 2x1 + x2 ≤ 16; 2x1 ≤ 14;

x1 ≥ 0; x2 ≥ 0.

В районе A x1 автоколонн и х2 автоколонн в районе B перевезут груза Z = 3x1 + 2,5x2.

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

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

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

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

2.Линейная функция может стремиться как к максимуму, так и к минимуму.

3.Переменные в задачах всегда неотрицательны.

3.3. ГРАФИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

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

-для решения задач с двумя переменными, когда ограничения выражены неравенствами;

96

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

Запишем задачу линейного программирования с двумя переменными:

- целевая функция:

Zmax = c1x1 + c2x2;

(3.9)

- ограничения:

 

a11x1 + a12x2 b1;

 

a21x1 + a22x2 b2;

(3.10)

………………….

am1x1 + am2x2 bm;

x1 ≥ 0; x2 ≥ 0. (3.11)

Каждое из неравенств (3.9)–(3.11) системы ограничений задачи геометрически определяет полуплоскость соответственно с граничными прямыми:

ai1x1 + ai2x2 = bi; i = 1,m ; x1 = 0; x2 = 0.

Для практического решения задачи линейного программирования (3.9)–(3.11) графическим способом необходимо:

1.Построить прямые по уравнениям системы ограничений (3.10), в которых неравенства заменяются равенствами.

2.Найти полуплоскости, определяемые каждым из ограничений задачи.

3.Определить область допустимых решений. В том случае, если система неравенств (3.10)–(3.11) совместна, область ее решений есть множество точек, принадлежащих всем указанным полуплоскостям. Так как множество точек пересечения данных полуплоскостей – выпуклое, то областью допустимых решений является выпуклое множество, которое называется многоугольником решений. Стороны этого многоугольника лежат на прямых, уравнения которых получаются из исходной системы ограничений заменой знаков неравенств на знаки равенств.

4.Построить вектор градиент C =(c1,c2), координатами которого являются коэффициенты целевой функции.

5.Построить прямую Z = с1x1+c2x2 = 0, проходящую через начало координат и перпендикулярную вектору С. Эта прямая,

97

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

6.Перемещать прямую Z = с1x1+c2x2 параллельно вдоль вектора С до самой удалённой точки области допустимых решений.

Если решается задача поиска максимума, то прямая Z = с1x1+c2x2 перемещается в направлении вектора С до поиска самой удаленной (крайней) точки области допустимых решений. В случае поиска минимума – в направлении противоположном возрастанию вектора С до самой удаленной точки.

7.Определить координаты точки максимума (минимума) функции и вычислить значение целевой функции в этой точке.

Взависимости от вида области ограничений и типа целевой функции (3.10)–(3.11) решением может быть выпуклый многоугольник; выпуклая многоугольная неограниченная область; пустая область; луч; отрезок; единственная точка.

Рисунок 3.1 характеризует случай, когда целевая функция принимает максимальное значение в единственной точке А. Из рисунка 3.2 видно, что максимальное значение целевая функция принимает в любой точке отрезка АВ. На рисунке 3.3 изображен случай, когда максимум недостижим, а на рисунке 3.4 – случай, когда система ограничений задачи несовместна.

Рисунок 3.1 – Область допусти-

Рисунок 3.2 – Область допус-

мых решений – единственная

тимых решений – отрезок

точка

 

98

Рисунок 3.3 – Область допусти-

Рисунок 3.4 – Область допус-

мых решений – неограниченная

тимых решений – пустая

выпуклая область

область

Таким образом, задача определения максимума функции Z сводится к нахождению в допустимой области решений точки, через которую проходит прямая из семейства Z = const, соответствующая наибольшему значению параметра Z. Эта точка существует тогда, когда область допустимых решений представляет собой многоугольник решений, при этом целевая функция ограничена сверху. При указанных условиях в одной из вершин многоугольника решений целевая функция принимает максимальное значение.

Пример 3.2. Рассмотрим решение задачи об оптимальном количестве автоколонн (см. 3.2) геометрическим способом.

Решение:

Построим многоугольник решений (рисунок 3.5). Для этого в системе координат X10X2 на плоскости изобразим граничные прямые:

100x1 + 100x2 = 1000

(1);

x1 + 2x2

= 16

(2);

2x1

+ x2

= 16

(3);

2x1

= 14

 

(4).

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

OK1K2K3K4K5.

Для построения прямой Z = 3x1 + 2,5х2 = 0 строим вектор градиент С = (3; 2,5) и через начало координат проводим перпендикулярную ему прямую Z=0, которую перемещаем параллельно самой себе в направлении вектора С. На рисунке 3.5 видно, что по от-

99

ношению к многоугольнику решений опорной эта прямая становится в точке K3, где функция принимает максимальное значение. Точка K3 лежит на пересечении прямых 1 и 3. Для определения её координат решим систему уравнений:

100x1 + 100x2 = 1000;

2x1 + x2 = 16.

Оптимальный план задачи х1 = 6; x2 = 4. Подставляя значения х1 и х2 в линейную функцию, получим:

Zmax = 3·6 + 2,5·4 = 28.

Рисунок 3.5 – Решение задачи линейного программирования графическим способом

Полученное решение означает, что в район A необходимо направить 6 автоколонн, а в район B – 4 автоколонны. Количество руды, перевозимой в этом случае, составит: Z = 28 тыс. тонн.

3.4. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ СРЕДСТВАМИ MS EXCEL

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

Предприятие изготавливает два вида продукции – П1 и П2, которая поступает в оптовую продажу. Для производства продукции используются два вида сырья – А и В. Максимально возможные запасы сырья в сутки составляют 9 и 14 единиц со-

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]