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

01-09-2014_14-57-50 / Моделир. Оптим.(з)_Подобие_ЛП_лекц

..pdf
Скачиваний:
51
Добавлен:
29.03.2015
Размер:
3.3 Mб
Скачать

201

Будем считать, что на допустимом множестве X задачи (6.44)…(6.47) знаменатель целевой функции из (6.44) не обращается в нуль и, соответственно, сохраняет знак. Если этот знаменатель отрицателен, то умножим числитель и знаменатель дроби из (6.44) на -1 и будем в дальнейшем считать, что

n

d j x j d0 0 для

i 1

Обозначим

всех x X.

 

 

 

n

 

 

 

 

 

 

 

y

1

 

 

d

j

x

j

d

0

 

0

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

(очевидно, y0 0 при x X) и введем

новые переменные

y

j

y x

,

j 1: n.

В новых переменных

 

0 j

 

 

дача (6.44)…(6.47) принимает следующий вид:

y

j

,

 

 

j

0,1, , n,

за-

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

f

y

c j

y j

min,

 

 

 

 

 

 

 

 

j 0

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

ij

y

j

b y

0

 

0,

i = 1:l,

 

 

 

 

 

 

i

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

ij

y

j

b y

0

0,

i = (l + 1):m,

 

 

 

 

 

i

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d j y j

1,

 

 

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

 

 

 

 

y

j

0,

 

j 0, 1,...n,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(6.48)

т.е. превращается в задачу линейного программирования. Отметим, что требо-

вание

у

0

0

, включенное в условие задачи (6.48), не ограничивает возможного

 

 

изменения переменной y0, так как y0 0 при

x X.

 

Найдем решение y y0 , , yn ,

~

 

 

f

задачи линейного программирова-

ния (6.48) и, используя равенства:

y

x j , j 1, , n,

j y0

 

 

min f x

~

 

 

f

f

,

 

 

 

 

X

 

 

 

(6.49)

получим решение исходной задачи дробно − линейного программирования

(6.44)…(6.47).

Если y0 0, то допустимое множество X задачи (6.44)…(6.47) не огра-

ниченно и минимум целевой функции f(x) на нем не достигается.

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

f x

c1x1

c2 x2

max

(6.50)

d1x1

d2 x2

 

 

 

 

 

201

202

при условиях (6.45)…(6.47).

Чтобы найти решение задачи (6.50) сначала находим многоугольник решений, определяемый ограничениями (6.45)…(6.47). Предполагая, что этот многоугольник не пуст, полагаем значение функции равным некоторому числу h

где

k

Из (6.51) найдем

 

c hd

 

x

 

 

 

1

 

1

;

 

 

 

 

 

hd

 

c

 

2

 

 

2

 

 

 

 

 

 

2

 

 

 

 

c1x1

c2 x2

h .

(6.51)

d1x1

d2 x2

 

 

x

 

c hd

x

 

 

 

 

 

1

 

1

или

x

 

kx

,

 

 

 

 

 

 

2

 

 

 

 

c

1

2

 

 

hd

 

 

1

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

kx

уравнение разрешающей прямой, проходящей через

1

 

начало координат. С изменением h разрешающая прямая вращается относительно начала координат. Направление вращения разрешающей прямой определяется по знаку производной dk/dh. Отрицательный знак производной соответствует вращению разрешающей прямой по часовой стрелке, а положительный – против часовой стрелки. Вращая построенную прямую (6.51) вокруг начала координат, либо определяем вершину (вершины), в которой функция (6.50) принимает максимальное значение, либо устанавливаем неограниченность функции на множестве планов задачи.

Процесс нахождения решения задачи (6.50) при условиях (6.45)…(6.47) включает следующие этапы:

10. В системе ограничений задачи заменяют знаки неравенств на знаки точных равенств и строят определяемые этими равенствами прямые.

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

30. Находят многоугольник решений задачи.

40. Строят прямую (6.51), уравнение которой получается, если положить значение целевой функции (6.44) равным некоторому постоянному числу.

50. Определяют точку максимума или устанавливают неразрешимость

задачи.

60. Находят значение целевой функции в точке максимума.

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

1). Многогранник решений ограничен, максимум и минимум достигается в его угловых точках (рис. 6.19).

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

202

203

3). Многогранник решений не ограничен, и один из экстремумов достигается. Например, минимум достигается в одной из вершин многогранника решений и функция f имеет так называемый асимптотический максимум (рис.

6.21).

4). Многогранник решений не ограничен, как максимум, так и минимум являются асимптотическими (рис. 6.22).

Рис. 6.19. Ограниченный

Рис. 6.20. Неограниченный многогранник

многогранник решений

решений (max и min существуют)

Рис. 6.21. Неограниченный многогранник

Рис. 6.22. Неограниченный много-

решений (асимптотический max)

гранник решений (асимптотический

 

max и min)

Пример 6.19.

f x

2x

3x

2

min

1

 

 

 

 

x

x

 

 

 

 

2

 

 

 

 

1

 

 

 

 

 

 

2x1 8x2

 

26,

 

x1

x2

4,

 

 

 

12x

3x

 

39,

 

1

 

2

 

 

 

 

(6.52)

(6.53)

x1 , x2 0.

(6.54)

203

204

Решение. Таким образом, математическая постановка задачи состоит в определении неотрицательного решения системы линейных неравенств (6.53), при котором достигается минимум функции (6.52). Чтобы найти решение задачи, прежде всего построим многоугольник решений. Как видно из рис. 6.23, им является треугольник BCD. Значит, функция (6.52) принимает минимальное значение в одной из точек: B, C или D. Чтобы определить, в какой именно, положим значение функции f равным некоторому числу, например 11/4. Тогда

2x

3x

 

 

11

1

 

 

2

 

 

 

 

 

x

x

2

 

 

4

1

 

 

 

 

или

3x

x

2

0.

1

 

 

(6.55)

Уравнение (6.55) определяет прямую, проходящую через начало координат. Координаты точек, принадлежащих этой прямой и многоугольнику решений, являются планами задачи, при которых значение функции (6.52) равно

11/4.

Возьмем теперь h = 5/2, т.е. положим

2x

3x

 

 

5

 

 

1

 

 

 

2

 

 

 

 

 

 

 

 

 

x

x

2

 

 

2

 

 

1

 

 

 

 

 

или

 

 

 

 

 

 

 

 

x

 

x

2

0.

 

1

 

 

 

 

 

 

(6.56)

Рис. 6.23. Графическое решение задачи

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

204

205

(6.52), равное 5/2, меньше, чем в точках прямой (6.55). Следовательно, если положить значение функции (6.52) равным некоторому числу h0:

f x

2x

3x

 

h

,

1

 

 

2

 

 

 

 

 

 

x

x

 

 

0

 

 

2

 

 

 

 

1

 

 

 

 

(6.57)

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

f x

2x

3x

 

h,

1

 

 

2

 

 

 

 

 

x

x

2

 

 

 

1

 

 

 

где h h0 .

Найдем последнюю общую точку вращаемой прямой с многоугольником решений. Это точка D (3,1) (рис. 6.21), в которой достигается минимум функ-

ции (6.52)

f

 

 

2 3 3 1

 

9

.

min

1

3

4

 

 

 

 

 

 

 

 

 

При нахождении угловой точки многоугольника решений, в которой целевая функция задачи принимает наименьшее значение, мы полагали значение функции равным некоторым двум постоянным числам и установили направление вращения прямой, определяющее уменьшение значения функции. Это можно было сделать и по-другому. А именно: полагая значение функции f равным некоторому числу h, т.е.

2x

3x

 

h,

1

 

 

2

 

 

 

x

x

2

 

 

1

 

 

 

(6.58)

и получив некоторую прямую, проходящую через начало координат и имеющую угловой коэффициент, зависящий от h, можно, используя производную, установить направление вращения прямой (6.58) при возрастании h. Получим

dkdh 1 h 3 2 . Получили положительное значение производной. Следова-

тельно, при вращении прямой против часовой стрелки h будет возрастать, то есть в точке D будет минимум, а в точке B максимум функции.

Практически же дело обстоит гораздо проще. Найдя точки В (1,3) и D (3,1) (рис. 6.21), в которых функция (6.52) может принимать минимальное значение, вычислим ее значение в этих точках: F(В)=11/4, F(D)=9/4. Так как F(В) ≥ F(D), то можно утверждать, что в точке D целевая функция принимает минимальное значение. Одновременно с этим заметим, что в точке В функция принимает максимальное значение.

Пример 6.20.

205

206

 

 

x

 

2x x

min,

f

 

 

 

1

2

 

 

 

 

 

 

 

 

 

x

2x

1

 

 

 

 

1

 

2

 

 

x 2x

2,

 

 

 

1

 

2

 

 

 

 

 

2x x

x

6,

 

 

 

1

2

 

3

 

 

 

x

j

0,

j 1, 2, 3.

 

 

 

 

 

 

 

 

 

Решение. Знаменатель x1

2x2

1 целевой функции положителен при всех

x из

y

0

 

 

 

 

допустимого

1

x

2x

2

1 ,

 

1

 

 

множества

y

j

y x

,

 

0 j

 

X

j

, так как х1, х2 ≥ 0. Вводя переменные,

1, 2, 3,

получим следующую задачу линей-

 

ного программирования:

f

 

y 2 y

 

y

2

min,

 

 

 

 

 

 

1

 

 

 

 

 

y

 

 

2 y

2

2 y

0

0,

 

1

 

 

 

 

 

 

 

 

2 y

y

2

y

6 y

0

0,

 

 

 

1

 

3

 

 

 

 

 

y

 

 

2 y

2

y

 

1,

 

 

1

 

 

 

0

 

 

 

 

 

 

y

j

0,

 

j 0,

 

, 3.

 

 

 

 

 

 

 

 

 

 

 

 

Приведем задачу к каноническому виду:

y

2 y

2

1

 

 

2 y

y

2

 

1

 

y

2 y

2

1

 

 

Выражая y0 через y1 и y2 из последнего уравнения,

8y1 13y2 y3 6, 3y1 2 y2 y4 2.

2 y0 y4 0,

y3 6 y0 0,

y0 1.

получим:

Принимаем за базисные переменные y3, y4, а свободные переменные y1, y2 полагаем равными нулю, находим базисное решения:

y

0

0;0;6;

 

Так как все базисные переменные в

2 .

y

0

 

положительны,

данное базисное

решение является допустимым и невырожденным. Составляем симплекстаб-

лицы, соответствующую угловой точке

y

0

и следуя алгоритму (см. 6.2.4) полу-

 

 

 

чаем решение:

 

 

y

y2

 

 

 

1

 

 

y

3

8

13

6

 

 

 

 

 

 

 

 

y

4

3

2

2

 

 

~

 

-2

1

0

f y

 

 

 

206

207

 

 

 

 

 

 

 

 

 

 

 

y

4

 

 

y

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

2

 

 

y

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

-8

23

2

 

 

 

3

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

1

 

 

 

y1

1

 

2

2

 

1

3

 

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f y

2

7

4

 

~

y

2

 

 

 

 

 

 

 

 

 

 

f

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Из полученного решения следует:

y

 

1

 

,

y

 

2

 

,

y

 

0,

y

 

2

 

,

y

 

0,

f

 

4 .

 

0

 

3

 

1

 

3

 

 

2

 

 

3

 

3

 

 

4

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Используя формулы (6.49) получаем решение исходной задачи:

x

 

2;0;2 ,

f 4

 

.

 

3

 

 

 

 

 

y

2

 

 

23

 

 

3

2

3

 

7

3

 

2

3

 

2

3

 

4

3

 

6.4. Целочисленное программирование

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

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

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

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

нейного) программирования.

Специфика задач целочисленного программирования заключается в том,

что переменные xj и функции f(x), gi(x) могут принимать только дискретные значения. Специальными преобразованиями в подавляющем большинстве случаев можно свести эти дискретные значения к целочисленным.

Вобщем случае целочисленными могут быть не все, а части переменных

ифункций. Если все функции f (x), gi (x) линейные, то имеет место линейная за-

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

207

208

переменными x j и функциями f(x), gi(x) и целочисленными переменными и не-

прерывными функциями (рис. 6.24). Кроме того, встречаются задачи частично или полностью целочисленные в зависимости от того, часть или все переменные xj принимают целочисленные значения.

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

f (x)

min;

 

 

(6.59)

n

 

 

 

 

 

 

 

 

1: m;

 

a x

j

 

b ,

i

(6.60)

ij

 

 

 

 

i

 

 

 

 

j=1

 

 

 

 

 

 

 

 

 

 

 

 

 

x

j

0,

 

j = 1:n;

(6.61)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

j

Z, j = 1:n.

(6.62)

 

 

 

 

 

 

 

 

 

 

где Z − множество целых чисел.

Целочисленное программирование

Линейное программирование

Частично целочисленное программирование

Нелинейное программирование

Полностью целочисленное программирование

Программирование с целочисленными функциями

Программирование с непрерывными функциями

Выпуклое целочисленное программирование

Рис. 6.24. Классификация задач целочисленного программирования

Невыпуклость и несвязность области допустимых решений задачи (6.59)…(6.62) делает невозможным применение стандартных алгоритмов линейного программирования. Поэтому большинство известных алгоритмов ре-

208

209

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

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

Методы целочисленной оптимизации можно разделить на три основные группы:

а) методы отсечения; б) комбинаторные методы;

в) приближенные методы.

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

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

Пример 6.21. Решить целочисленную задачу линейного программирова-

ния графическим методом.

 

 

f (x) x1 20x2

min,

x1 10x2 40,

 

4x1 2x2

29,

 

x j 0,

x j Z ,

j 1, 2.

На плоскости (х1, х2) построим допустимое множество Х рассматриваемой задачи линейного программирования без требования целочисленности (многоугольник ABCD на рис. 6.25) и отметим точки множества Х с целочисленными координатами. Совокупность этих точек представляет собой допустимое множество Х полностью целочисленной задачи.

209

210

X2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

X*

 

 

 

 

 

 

 

 

 

 

 

 

Z*

 

 

 

 

 

 

 

 

 

В

 

 

f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

А

1

2

3

4

 

5

6

7D

X1

Рис. 8.2. Графическая иллюстрация решения

задачи

 

 

 

 

 

 

 

 

Рис. 6.25. Графическая иллюстрация решения задачи

Перемещая линию уровня целевой функции

f (x)

в направлении

f ( 1; 20) убывания

f

(x)

, находим крайнее положение этой линии, в кото-

ром она еще имеет непустое пересечение с множеством

Х . В этом положении

линия уровня проходит через точку В(0;4), поэтому решение задачи имеет вид

 

 

(0;4),

f

 

 

min f (x)

 

80.

x

 

Отметим, что, как видно из рис. 6.23, точкой минимума даче без требования целочисленности является точка

f

(x) в данной за-

C(5;4/5), т.е.

 

 

(5;4,5),

f

 

 

min f (x)

 

85.

x

 

 

 

 

 

 

 

X

 

 

Отсюда следует, что точкой минимума

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

210