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

Введение в математическое программирование

..pdf
Скачиваний:
14
Добавлен:
15.11.2022
Размер:
1.81 Mб
Скачать

Решим задачу венгерским методом, используя табл. 3.9.2. В i-й строке и j-м столбце табл. 3.9.2 стоит время tij на вы-

полнение i-м ученым j-го проекта (i =

 

 

j =

 

 

 

1,4;

1,4) .

 

 

 

 

 

 

 

 

 

 

Таблица 3.9.2

 

 

 

 

 

 

 

 

Номер ученого

 

Номер проекта

 

 

1

2

 

3

 

4

 

 

 

 

 

 

 

1

3

7

 

5

 

8

3

 

2

2

4

 

4

 

5

2

 

3

4

7

 

2

 

8

2

 

4

9

7

 

3

 

8

3

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

Таблица 3.9.3

Номер ученого

 

Номер проекта

 

1

2

3

4

 

1

0

4

2

5

2

0

2

2

3

3

2

5

0

6

4

6

4

0

5

 

0

2

0

3

Отнимем минимальные элементы из соответствующих столбцов. Перейдем к табл. 3.9.4.

Таблица 3.9.4

Номер ученого

 

Номер проекта

 

1

2

3

4

 

1

0

2

2

2

2

0

0

2

0

3

2

3

0

3

4

6

2

0

2

 

81

 

 

 

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

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

Это вычеркивание означает, что так как второй ученый назначен руководителем второго проекта, то он не может быть выбран для выполнения четвертого проекта. Число отмеченных нулей равно 3, т.е. назначение не является полным. Перейдем к п. 4 алгоритма. Найдем минимальный набор строк и столбцов, содержащий все нули (табл. 3.9.5).

 

 

 

Таблица 3.9.5

 

Номер ученого

 

Номер проекта

 

 

 

1

2

3

4

 

 

 

 

 

1

0

2

 

 

2

2

 

 

 

 

 

2

0

0

 

 

2

0

 

3

2

3

 

 

0

3

 

4

6

2

 

 

0

2

 

 

 

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

Кроме третьего столбца, больше нет столбцов, содержащих перечеркнутые нули в отмеченных строках. Вычеркнем отмеченный столбец и неотмеченные строки. В оставшихся клетках минимальный элемент равен 2. Вычтем его из каждого числа невычеркнутых (1, 2, 4) столбцов. Получим табл. 3.9.6.

82

 

 

 

 

Таблица 3.9.6

 

 

 

 

 

 

 

 

Номер ученого

 

Номер проекта

 

 

 

1

2

3

4

 

 

 

 

 

1

–2

0

2

0

 

 

2

–2

–2

2

–2

 

 

3

0

1

0

1

 

 

4

4

0

0

0

 

Теперь прибавим 2 к каждому числу вычеркнутых строк

в преобразованной таблице. Получим табл. 3.9.7.

 

 

 

 

 

 

Таблица 3.9.7

 

 

 

 

 

 

 

Номер ученого

 

Номер проекта

 

 

 

1

2

3

4

 

 

 

 

 

1

0

2

4

2

 

 

2

0

0

4

0

 

 

3

0

1

0

1

 

 

4

4

0

0

0

 

Вновь сделаем назначение, отметив по порядку нули в табл. 3.9.7. Это назначение является полным, так как число отмеченных нулей равно 4. Получено следующее назначение: первый ученый назначается научным руководителем первого проекта: x11 =1; второй ученый – научным руководителем второго про-

екта: x22 =1; третий ученый – научным руководителем третьего проекта: x33 =1; четвертый ученый – научным руководителем четвертого проекта: x44 =1 .

Время выполнения всех проектов Zmin =3 + 4 + 2 +8 =17 .

Данное назначение не единственное. Если во второй строке сначала отметить не второй, а четвертый нуль, то получим следующее назначение (табл. 3.9.8).

83

Таблица 3.9.8

Номер ученого

 

Номер проекта

 

1

2

3

4

 

1

0

2

4

2

2

0

0

4

0

3

0

1

0

1

4

4

0

0

0

первый ученый руководит первым проектом: x11 =1; второй ученый руководит четвертым проектом: x24 =1 ; третий ученый руководит третьим проектом: x33 =1; четвертый ученый руководит вторым проектом: x42 =1 . Время выполнения проектов не изменилось: Zmin =

=3 +5 +2 +7 =17 .

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

Замечание:

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

ГЛАВА IV Нелинейное програмирование

Задача математического программирования называется не-

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

Z = f (x1, x2 , ..., xn ) (max (min));

ϕ

(x , x

 

, ..., x

 

)b

(i =

 

 

),

 

 

 

2

n

1, m

 

 

 

 

i

1

 

i

 

 

 

1

 

 

 

 

ϕ

(x , x

 

, ..., x

 

)b

(i =

 

 

 

 

 

),

2

n

m

+1, m

2

 

 

i

1

 

i

1

 

 

 

 

 

ϕ (x , x , ..., x )= b

(i =

 

 

 

),

m

 

+1, m

 

i

1

2

 

n

i

2

 

 

 

 

 

 

 

 

 

 

 

 

где x j – переменные задачи ( j =1, n) ; bi – фиксированные па-

раметры (i =1, m) ; f ,ϕi (i =1, m) – заданные функции от n переменных.

84

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

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

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

Рассмотрим задачу нелинейного программирования с двумя переменными.

Требуется найти максимум (минимум) функции

 

 

 

 

Z = f (x1, x2 )

(4.1.1)

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

 

 

 

 

 

 

 

 

 

 

ϕ

(x

, x

 

)b

(i =

 

 

),

 

 

 

2

1, m

 

i

1

 

i

1

 

 

 

ϕi (x1, x2 )bi

(i =

m1 +1, m2

),

(4.1.2)

ϕ (x , x )=b

(i =

 

).

 

m +1, m

 

 

1

 

2

i

2

 

 

 

 

i

 

 

 

 

 

Система ограничений

(4.1.2) определяет на

плоскости

x10x2 некоторую область, которая является областью допусти-

мых решений задачи.

Решить задачу нелинейного программирования графически – это значит найти точку области допустимых решений, через которую проходит линия f (x1, x2 ) =C наивысшего (наинизшего)

уровня.

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

Алгоритм решения ЗНП графическим методом

1. На плоскости x10x2 строят область допустимых реше-

ний, определяемую системой (4.1.2). Если область допустимых решений пуста (ограничения не совместимы), то задача (4.1.1)– –(4.1.2) не имеет решений.

85

2. Строят линию уровня функции Z : f (x1, x2 ) =C , где C – произвольная постоянная.

3.Определяют направление возрастания (убывания) функ-

ции Z.

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

торую проходит линия уровня f (x1, x2 ) =C с наибольшим

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

5. Определяют значения х1 и х2 для точки, найденной в п. 4, и величину функции Z в этой точке.

Пример 12

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

Z = 2x1 +3x2 (max);

(4.1.3)

x

x

 

3,

 

 

1

 

2

 

16,

 

x2

+ x2

(4.1.4)

 

1

 

 

2

 

x1 0,

 

 

x

0.

 

 

 

2

 

 

 

 

 

В соответствии с алгоритмом построим на плоскости x10x2 область допустимых решений (рис. 4.1.1).

х2

3

А

 

 

 

0

2 4

х1

Z = C1

Рис. 4.1.1

86

Ограничения x j 0 ( j =1, 2) выделяют на плоскости пер-

вую четверть. Неравенство x2 + x22 16 определяет на плоско-

сти внутренность круга с центром в начале координат и радиусом 4. Границей части плоскости, соответствующей неравенству

x x

2

3 , является гипербола

x =

3

. Неравенство выполняет-

 

1

 

2

x1

 

 

 

 

 

 

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

Функция возрастает в направлении вектора c ={2, 3} – в на-

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

Заметим, что в точке А совпадают тангенсы углов наклона

касательной к окружности

x2

+ x2 16 и прямой 2x

+3x

= c

 

 

 

1

 

 

2

 

 

 

1

2

1

к оси 0x . Для прямой x

= −

2

x

+ c1 : tg α = −

2

.

 

 

 

 

3

3

 

 

1

2

 

 

1

3

 

 

 

 

 

 

 

Продифференцируем выражение x2

+ x2

=16 как неявную

 

 

 

 

 

 

1

2

 

 

 

 

 

 

функцию от x1 . Получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x1 +2x2 x2′ = 0,

 

x2′ = −

x1

, tg α = −

x1

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

 

 

 

x2

 

 

Приравнивая значения тангенсов, получим уравнение

x1 = − 2 , 3 x1 2 x2 = 0. x2 3

Так как точка А лежит на окружности, для определения ее координат получаем систему уравнений

3x

2x

2

= 0,

 

1

 

 

 

 

2

2

 

 

 

 

=16.

x1

+ x2

 

 

87

 

 

 

Оптимальное решение

 

 

 

 

 

X *

 

8

;

12

 

=

13

13

.

 

 

 

 

Максимальное значение целевой функции

Z(X *) = 2

8

+3

12

=

52 .

 

13

 

13

 

13

4.2. Метод множителей Лагранжа

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

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

Найти максимум (минимум) функции

Z = f (x1, x2 , ..., xn )

(4.2.1)

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

ϕi (x1, x2 , ..., xn ) = bi (i =

1, m

) ,

(4.2.2)

где функции f и ϕi (i =1, m) непрерывны и непрерывны их частные производные по x j ( j =1, n) .

Для решения этой задачи применим метод множителей Лагранжа.

Рассмотрим идею метода на примере ЗНП с двумя переменными:

Z = f (x1, x2 ) (max); ϕ(x1, x2 ) =b .

88

На плоскости x10x2 уравнение ϕ(x1, x2 ) =b определяет

график некоторой функции, представленный на рис. 4.2.1.

На графике показаны несколько линий уровня функции Z = f (x1, x2 ) и выбранное в качестве примера направление ее возрастания.

f (x1, x2 )= c

x2

f (x1, x2 )= c3

f (x1, x2 )= c2

l

f (x1, x2 )= c1

n А

ϕ(x1, x2 )=b

0

x1

 

Рис. 4.2.1

В точке А, в которой функция Z достигает максимального значения, совпадают касательные к графикам функций

f (x1, x2 ) = c

и ϕ(x1, x2 ) = b .

Значит, в точке А векторы-нормали к кривым, задаваемым функциями ϕ(x1, x2 ) = b и f (x1, x2 ) = c коллинеарны.

Обозначим эти векторы соответственно через n и l . Имеем l = λ n , где λ – коэффициент пропорциональности.

Координатами векторов l и n являются значения частных производных функций f è ϕ соответственно в точке А.

 

 

 

f

 

f

 

 

l =

,

 

,

 

x2

 

 

 

x1

 

 

 

 

 

89

 

 

 

 

∂ϕ

 

∂ϕ

 

n =

 

,

 

.

x1

 

 

 

x2

Из условия пропорциональности в точке А имеем

f = λ ∂ϕ , x1 x1

f = λ ∂ϕ . x2 x2

Для определения координат точки А, в которой функция Z достигает максимума, к этим уравнениям надо добавить условие принадлежности точки А графику функции ϕ(x1, x2 ) = b .

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

f = λ ∂ϕ , x1 x1

f = λ ∂ϕ , x2 x2

ϕ(x1, x2 ) =b.

Введем новую функцию

F(x1, x2 ) = f (x1, x2 ) +λ(b −ϕ(x1, x2 )) .

Тогда последняя система перепишется в виде

F(x1, x2 , λ) = f (x1, x2 ) – λ ∂ϕ(x1, x2 ) = 0,

 

x1

 

 

 

x1

 

 

 

 

 

x1

 

 

 

 

 

 

, λ)

 

 

)

 

 

 

x

 

)

 

 

F(x , x

2

=

f (x , x

2

– λ

∂ϕ(x ,

2

= 0,

 

1

 

1

 

1

 

 

 

x2

 

 

 

x2

 

 

 

 

 

x2

 

 

 

 

 

F(x , x

2

, λ)

= b −ϕ(x ,

x

 

) = 0.

 

 

 

 

 

1

 

2

 

 

 

 

 

λ

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функцию F называют функцией Лагранжа.

90