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

книги / Некоторые главы математического программирования

..pdf
Скачиваний:
0
Добавлен:
12.11.2023
Размер:
530.35 Кб
Скачать

Дополняем табл. 1 строкой из этого уравнения, получаем расширенную задачу. Запишем ее в С-таблицу (табл. 2).

Таблица 2

Ба-

Свободный

x1

x2

y1

y2

y3

y4

bi/aij

 

зис

член

 

 

 

 

 

 

 

 

x2

16/5

0

1

4/5

–1/5

0

0

 

x1

8/5

1

0

–7/20

3/20

0

0

32/3

(4/3),(–1)

y4

3/5

0

0

13/20

3/20

–1

1

4

z

–16

0

0

–1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

x2

4

0

1

5/3

0

–4/3

4/3

 

 

x1

1

1

0

–1

0

1

–1

 

 

y2

4

0

0

13/3

1

–20/3

20/3

 

 

z

–16

0

0

–1

0

0

0

 

 

Получим оптимальный план xц* = (1, 4, 0, 4, 0, 0) (xц – целочисленное решение) расширенной задачи, причем zmax = 16. Все компоненты этого плана – целые числа.

Итак, для исходной задачи получили:

x* = (1, 4); zmax = z (x*) = 16.

1.3. Метод ветвей и границ

Рассмотрим еще один точный метод решения целочисленной задачи линейного программирования ((1.2.1)–(1.2.4)) – метод ветвей и границ. Этот метод является одним из комбинаторных методов решения задач такого класса, в котором вместо полного перебора всех допустимых решений задачи осуществляется их частичный направленный перебор.

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

11

Пусть в оптимальном плане переменная xk оказалась нецелым числом, тогда интервал [βk] < xk < [βk] + 1 не содержит допустимых целочисленных компонент решения. Следовательно, целое значение xk должно удовлетворять одному из двух неравенств: xk ≤ [βk] или xk ≥ [βk] + 1. Это и есть дополнительные ограничения. Эти условия, добавленные к ограничениям исходной задачи, приводят к появлению двух подзадач, на которые разветвляется исходная задача. Каждая из полученных подзадач с целевой функцией исходной задачи решается методами линейного программирования.

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

Пример 2

Найти оптимальный план поставок станков на предприятие. Математическая модель задачи:

z (x) = 14x1 + 8x2 (max)

при следующих условиях:

3x1 2x2 12,

4x1 x2 14;

x1 ≥ 0, x2 ≥ 0, x1, x2 – целые числа.

Решение

Исходную задачу без условия целочисленности решаем сим- плекс-методом или графическим методом. Оптимальное решение достигается в точке xнц* = (3,2; 1,2), zmax = 54,4.

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

12

Выберем переменную x2*, так как 1 ≤ x2* ≤ 2, то получаем две подзадачи:

2.1

 

 

 

2.2

 

 

 

z =

14x1 + 8x2 (max);

z = 14x1 + 8x2 (max);

3x 2x

 

12,

3x

2x

 

12,

 

1

2

 

 

1

2

 

4x1 x2

14,

4x1 x2

14,

x

1;

 

 

x

2

2;

 

 

2

 

 

 

 

 

 

 

x1 ≥ 0, x2 ≥ 0, x1, x2 – целые

x1 ≥ 0, x2 ≥ 0, x1, x2 – целые

числа.

 

 

 

числа.

 

 

 

 

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

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

(рис. 1).

х2

 

14

 

12

 

10

 

8

 

6

4

 

2

xнц*

 

2

4

6

8

х1

Рис. 1

Разбиваем область Ω на две части, соответствующие задачам 2.1

и 2.2 (рис. 2).

13

х2

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

xнц* = (3,2; 1,2)

 

 

 

 

 

 

 

 

 

 

х1

1

2

3 (2)

(1)

 

 

 

 

 

Рис. 2

 

 

 

Решаем задачу 2.1 графическим методом (рис. 3).

х2

4

3

2

1

x2.1*

1

2

3

х1

Рис. 3

Находим оптимальное решение x2.1* задачи 2.1:

x2 1,

4x1 x2 14;

14

x2.1* 13 ;1 ;4

z x2.1* 53 12 .

Поскольку первая компонента оптимального плана нецелая, продолжим ветвление. Имеем: 3 ≤ x1* ≤ 4.

Задача 2.1 порождает еще две подзадачи:

2.1.1

 

2.1.2

z = 14x1 + 8x2 (max);

z = 14x1 + 8x2 (max);

x

 

1,

 

x

1,

 

2

 

14,

 

2

4x1 x2

4x1 x2 14,

x

 

3;

 

x

4;

1

 

 

1

x1 ≥ 0, x2 ≥ 0, x1, x2 – целые

x1 ≥ 0, x2 ≥ 0, x1, x2 – целые

числа.

 

 

 

числа.

 

Решаем

графически подза-

Область допустимых реше-

дачу 2.1.1 (рис. 4).

ний задачи 2.1.2 пуста (Ø).

 

 

 

х2

 

 

4

3

2

1 х2*.1.1

1 2

3

х1

Рис. 4

15

Находим оптимальное решение х2*.1.1 подзадачи 2.1.1:

х1 3,х2 1;

х2*.1.1 = (3; 1); z ( х2*.1.1 ) = 50.

Получилиоптимальноецелочисленноерешениеисходной задачи. Переходимкрешению задачи2.2 графическимметодом(рис. 5).

х2

6

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2.2*

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

х1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

Рис. 5

Находим оптимальное решение x2.2* задачи 2.2:

x

2,

 

 

 

2

 

 

12;

3x1 2x2

x2.2

*

8

; 2

 

;

 

=

 

 

 

3

 

 

 

z (x2.2*) = 5313.

16

Поскольку первая компонента оптимального плана нецелая, то ветвление продолжается. Имеем: 2 ≤ x1* ≤ 3.

Задача 2.2 порождает две подзадачи:

2.2.1

2.2.2

z = 14x1 + 8x2 (max);

z = 14x1 + 8x2 (max);

x

 

2,

x

2,

 

2

 

 

2

3x1 2x2 12,

3x1 2x2 12,

x

 

2;

x

3;

1

 

1

x1 ≥ 0, x2 ≥ 0, x1, x2 – целые

x1 ≥ 0, x2 ≥ 0, x1, x2 – целые

числа.

 

 

числа.

 

Решаем графически подза-

Область допустимых реше-

дачу 2.2.1 (рис. 6).

ний задачи 2.2.2 пуста (Ø).

 

 

х2

 

 

6

5

4

х2*.2.1

3

2

1

1

2

3

х1

Рис. 6

Находим оптимальное решение х2*.2.1 подзадачи 2.2.1:

x1 2,

3x1 2x2 12;

17

х2*.2.1 = (2; 3); z ( х2*.2.1 ) = 52.

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

Построим дерево решений исходной задачи (рис. 7).

Задача 2

xнц*= (3,2; 1,2); zmax = 54,4

 

2.1

 

 

 

 

2.2

 

 

 

x* = 13

; 1

;

z*= 53

1

 

x* = 8

; 2

;

z*=

53

1

14

 

 

 

2

 

3

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

2.1.1

 

2.1.2

 

2.2.1

 

2.2.2

x* = (3; 1);

 

Ø

 

x* = (2; 3);

 

Ø

z*= 50

 

 

 

z*= 52

 

 

Рис. 7

Итак, оптимальное целочисленное решение исходной задачи имеет вид:

x* 2, 3 ;

zmax 52.

18

Глава 2. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

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

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

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

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

Рассмотрим общую постановку задачи динамического программирования (поэтапной оптимизации).

Берется управляемый процесс. Под воздействием управления система (объект управления) переводится из начального состояния S0 в конечное состояние S. Процесс управления разбивается на N шагов. На каждом шаге выбирается одно из множества допустимых

управлений Vn n 1, N . Это управление переводит систему в одно из состояний множества Sn n 1, N .

Элементы множеств Vn и Sn определяются из условий конкретной задачи.

Последовательность состояний системы можно изобразить в виде графа состояний, представленного на рис. 8.

19

 

V1

 

V2

 

Vn-1

 

Vn

 

Vn+1

 

Vn+2

VN-1

 

VN

 

S0

S1

Sn-1

Sn

Sn+1

SN-1

SN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 8

Пусть на n-м шаге достигается эффект fn(Sn–1, Vn), а общий эффект является суммой эффектов, достигнутых на каждом шаге.

Тогда задача динамического программирования формулируется так: построить допустимое управление V* = (V1*, V2*,…, VN*), переводящее систему из состояния S0 в состояние SN, при котором функция цели F принимает максимальное (минимальное) значение, т.е.

N

F fn Sn 1,Vn extr.

n 1

2.2.Решение задачи динамического программирования

Принципы решения задачи динамического программирования. Задача решается методом динамического программирования, в основу которого положены принцип оптимальности и принцип погружения, сформулированные Р. Беллманом.

Принцип оптимальности можно сформулировать так: оптимальное управление на каждом шаге определяется состоянием системы на начало этого шага и целью управления.

Вматематической форме принцип оптимальности выражается

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

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

20