Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системы организационного управления. Учебное пособие
.pdf
161
m
=
∑
i
=
xcF
,
ii
1
x
где
– целые неотрицательные числа; сi – целые числа;
i
линейные неравенства
∑
=mi
, j
j
iij
1
= 1, 2, …, n, a
, bj – целые числа.
ij
xa
≤ b
Необходимо определить значения хi, при которых целевая функция достигает экстремального значения. Решение такой задачи осуществляется с помощью метода Гомори или метода секущих. Обзор
методов решения этого класса задач дан в книге [24], сами методы
изложены в работах [28].
Целочисленные задачи с булевыми переменными. Задачи этого
класса в значительной степени аналогичны задачам предыдущего
класса, но в то же время имеют свои особенности, которые позволяют
их выделить.
Постановка задачи
– заданы:
целевая функция
m
, x
=
∑
=
i
xcF
ii
1
∈(0, 1), i = 1, 2, …, m;
i
линейные ограничения
xa
≤ b
∑
=mi
, j
j
iij
1
= 1, 2, …, n, a
, bj, ci – целые числа.
ij
Необходимо определить набор (х1, ..., хт), при котором целевая
функция достигает экстремального значения.
Основным методом решения этой задачи является метод «ветвей
и границ».
Комбинаторное программирование. Этот раздел математиче-
ского программирования включает дискретные задачи, и специаль-

N
162
ные методы их решения, как правило, нелинейные. Термин «комбинаторное программирование» обусловлен тем, что чисто дискретные
задачи можно интерпретировать как задачи оптимизации функций,
определенных на заданном множестве выборок (комбинаций) из конечного числа элементов.
Задачи календарного планирования. Примером задачи названно-
го класса является задача определения очередности выполнения заданий. Формулируется эта задача следующим образом: заданы исход-
I
ные данные
π
, ..., π
2
) – перестановка элементов множества IN, определяющая
N
= {1, 2, ..., N} – множество номеров заданий; π = (π
N
,
1
очередность выполнения заданий;
ния;
T(j) – директивный срок окончания j-го задания; a(j) – штраф,
накладываемый на исполнителя за невыполнение
τ(j) – время выполнения j-гo зада-
j-го задания к сроку
T(j); θ(х) — функция скалярной переменной х, принимающей значе-
ние 0 при
х ≤ 0, и значение 1 при х > 0. Множество возможных реше-
ний рассматриваемой задачи составляет всевозможные перестановки
π из элементов множества I
множестве
ПN ищется оптимальное решение. В качестве целевой
. Это множество обозначим через ПN. На
N
функции выбирается функция
j
⎡
∑∑
==
Ij
⎢
k
1
⎣
TaF
⎤
π−πτθπ=π
,
)()()()(
jkj
⎥
⎦
которая представляет собой суммарный штраф за нарушение директивных сроков выполнения заданий. Следовательно, задача состоит в определении последовательности π∈П
, при которой достига-
N
ется минимум функции F(π).
Вторым примером задач названного класса является задача определения порядка обработки деталей. Формулируется эта задача
следующим образом: заданы исходные данные I
– множество номе-
N
ров деталей, подлежащих обработке; π – перестановка из элементов
множеств I
, задающая порядок запуска деталей в производство; I
N
M
–
множество номеров станков; каждая из деталей должна быть обрабо-
тана на каждом из М станков; любая деталь обрабатывается без перерыва; последовательность прохождения деталей по станкам одинакова для всех деталей; нумерация станков соответствует последова-

163
тельности обработки деталей; время τ(i, j) обработки j-й детали на i-м
станке.
Высказанные предположения дают возможность определить для
каждого порядка запуска деталей
ботки детали
π
, на первых k станках. Для k = 1
j
j
πτ
∑
ii1
=
),1( ;
далее для
j = 1 имеем при всех k∈I
k
Т
(π1, π) =
k
∑
i
=
1
πτ
i
),( .
1
Значения
Т
, π) в общем случае определяются рекуррентно по
k(πj
формуле
Т
, π) = τ(k, π
k(πj
) + max{ Т
j
k – 1(πj
π время Т
M
, π), Тk(π
, π) завершения обра-
k(πj
, π)}.
j – 1
π
Это соотношение вытекает из того, что обработка детали
на k-
j
м станке может начинаться только после окончания обработки этой
же детали на (
станке детали π
k – 1)-м станке и после окончания обработки на k-м
, предшествующей в очередности π детали π
j – 1
. Це-
j
левой функцией рассматриваемой задачи является окончание обра-
π
ботки детали
на станке М:
N
F(π) = T
M(πN
, π).
Множеством возможных решений является ПN, на котором определяется целевая функция.
Задача распределения заданий. Примером задач этого класса яв-
ляется следующая задача: заданы исходные данные I
номеров заданий; I
на выполнение j-гo задания i-м исполнителем; r
– множество номеров исполнителей; t
M
=
(r1, ..., rM) – разбие-
– множество
N
– затраты
ij
ние множества IN на М подмножеств (подмножества не имеют общих
элементов, а объединение их составляет множество IN, причем неко-

M
164
торые из подмножеств r
могут быть пустыми); R(N, М) – множество
i
всех разбиений r указанного типа.
В задачах данного типа множество возможных решений совпадает с
R(N, M). Для определения оптимального разбиения использу-
ется либо критерий наибольшей суммарной эффективности либо критерий равномерной загрузки исполнителей. Соответствующие целевые функции имеют вид
=
1
∑∑
∈∈
Iirj
jitrF ),()(
;
i
⎧
=
2
⎪
⎨
∈
∑
Ii
M
⎪
∈
rj
⎩
i
⎫
⎪
.
jitrF ),(max)(
⎬
⎪
⎭
Следовательно, задача сводится либо к минимизации F1(r), либо
к максимизации F2(r).
Вторым примером является так называемая «задача коммивояжера», формулировка которой сводится к следующему: задан полный
граф (I, U), где I = {i} – множество вершин, a U = {i, j} – множество
дуг графа, вес дуги определяется значением Uij.
Необходимо найти на этом графе контур, включающий каждую
вершину точно по одному разу и имеющий минимальный (максимальный) суммарный вес.
Для решения сформулированных задач применяется приближенный метод – метод «ветвей и границ».
Нелинейное программирование. Этот раздел математического
программировании разрабатывает теорию и методы решения задач
определения экстремума нелинейной функции многих переменных
при наличии нелинейных ограничений на эти переменные.
Общая формулировка задачи нелинейного программирования
заключается в следующем: задана нелинейная целевая функция F(x),
где х – n-мерный вектор, определяющий некоторую точку в n-мерном
евклидовом пространстве Е
n
и т функций ограничений:
g
≥ 0, i = 1, 2, …, m.
i

165
Необходимо определить значение составляющих вектора х таких, чтобы функция F(x) достигала экстремального значения при выполнении всех ограничений.
По характеру функции F(x) и функций ограничений gi(х) можно
классифицировать задачи нелинейного программирования.
Задача нелинейного программирования с линейными ограничениями формулируется следующим образом: задана нелинейная функция F(x), где х – n-мерный вектор, определяющий некоторую точку в
n-мерном евклидовом пространстве Е
– матрица размера m×n; b – m-мерный вектор-столбец.
n
и равенство Ах = b; х ≥ 0, где
Необходимо определить значение вектора х такое, чтобы функция F(x) достигала экстремального значения при выполнении заданных ограничений.
Решение задач этого класса изложено в работах [28, 35].
Второй разновидностью задач рассматриваемого класса является задача квадратичного программирования, в которой необходимо
определить экстремум квадратичной функции
∑
∈=Iji
xxcxF,)( ,
jiij
при выполнении условия Ах
=
b.
Решение задач этого класса дано в работах [35].
Динамическое программирование. Динамическое программи-
рование – это метод решения задач нелинейного математического
программирования. Метод основан на следующем принципе оптимальности: оптимальная стратегия обладает тем свойством, что каковы бы ни были начальное состояние и принятое начальное решение,
последующие решения должны составлять оптимальную стратегию
относительно состояния, возникшего в результате первоначального
решения.
Математическая формулировка этого принципа заключается в
следующем. Рассмотрим некоторый управляемый объект S, состояние
которого в любой момент времени задано вектором х. Составляющие
вектора
являются фазовыми координатами изображающей точки в
фазовом пространстве объекта. Время выделяется, как отдельная координата. На каждой стадии n-этапного процесса изменения состоя-

166
ния объекта можно изменять управляющее воздействие, описываемое
вектором и. Под воздействием вектора и объект переходит в новое
состояние х'. Связь между состояниями х, х' и воздействием u задается оператором Т:
x′ = T(x, u).
Далее, пусть эффективность функционирования объекта оценивается оператором R(x, и), тогда максимальная эффективность за n
этапов движения объекта будет функцией только начального состояния х и числа этапов n. Обозначим эту величину через Fn(x), тогда
(x) =
1
max
u
R(x, и).
На основании принципа оптимальности запишем основное рекуррентное соотношение
n+1
(x) =
max [R(x, u) + F
u
(T(x, u))].
n
В случае бесконечного процесса получаем основное функциональное уравнение динамического программирования
F(x) =
max[R(x, u) + F(T(x, u))].
u
Если состояние объекта отображается в дискретном пространстве, то используется дискретное динамическое программирование.
Метод динамического программирования достаточно подробно изложен в руководствах [22, 34]. В этих же руководствах приведены
многочисленные примеры использования данного метода для решения конкретных задач.
Метод множителей Лагранжа. Этот метод решения служит для
определения экстремума функций многих переменных. Он является
одним из основных методов решения задач нелинейного математического программирования. Сущность метода заключается в следующем: пусть задана нелинейная целевая функция F(x), где х – n-

∂
∂
x
x
x
167
мерный вектор. Необходимо определить экстремум F(x) при ограничениях g(х) = b, где g и b – векторы.
Решение определяется поэтапно. На первом этапе вводится вектор y = (y
, y2, …, ym), составляющие которого носят название множи-
1
телей Лагранжа. На втором этапе определяется функция Лагранжа
как сумма целевой функции и скалярного произведения вектора множителей Лагранжа и вектора разности между постоянными ограничениями и функциями ограничений:
L(x, y) = F(x) + y(b – g(x))
или в развернутом виде
L(x1, …, xn; y1, …, y
) = F(x
m
, …, xn) +
1
∑
=mi
y
(bi – gi(x1, …, xn)).
i
1
Последним является отыскание точки (х*, у*), в которой все ча-
стные производные первого порядка функции Лагранжа обращаются
в нуль:
∂
L
()
yx
∂
∂
xF
=
**, =
*)(
−
g
y
x
∂
0*)(*
;
∂
L
()
∂
y
xgbyx
0*)(**, =−=
.
Совместное решение m + n уравнений, полученных из приведенных дифференциальных соотношений, дает значения m + n неизвестных: переменных х
…, у
*. Если выполнено условие отрицательности определителя мат-
m
*, х2*, …, хn* и множителей Лагранжа у1*, у2*,
1
рицы Гессе

168
2
∂
L
2
∂
2
∂
L
=
2
∂
x
x
1
2
∂
L
2
∂
L
L
∂∂
xx
21
2
∂
L
L
xx
∂∂
1
xx
∂∂
nn
2
2
∂
L
∂∂
xx
1
n
MMMM
,
2
∂
L
2
x
∂
n
то значения переменных х* = (х
*, …, хn*) дают локальное решение
1
задачи математического программирования. Если целевая функция
F(х) строго выпукла (вогнута), то метод множителей Лагранжа дает
общий экстремум. Этот метод детально изложен в руководствах [28,
35], где также рассмотрены примеры применения этого метода.
Градиентные методы оптимизации. К градиентным методам
оптимизации относят методы, в которых процесс вычисления оптимального значения целевой функции основан на использовании градиента (или антиградиента) этой функции.
Метод формулируется следующим образом. Пусть задана целевая функция F(х), значения которой зависят от составляющих вектора
х = (х
довом пространстве Е
вычисление значений F(x) для такой последовательности точек х
..., х
, ..., хn), определяющего положение точки х в n-мерном евкли-
1
т
, которая приводит к оптимальному значению F(x). Для опреде-
n
. Процесс оптимизации представляет собой
1
, х2,
ленности дальнейших формулировок примем, что оптимальной точкой является точка минимума функции F(x).
В процессе оптимизации в окрестности точки хk определяется
одно или несколько значений F(x), так называемые пробные шаги.
Затем на основании полученных значений вычисляется новая точка
k+1
x
– рабочий шаг, после чего процесс вычислений повторяется. В
рассматриваемом методе пробные шаги используются для приближенного построения градиента F(x). Сущность градиентного метода
заключается в следующем. Предположим, что F(x) дифференцируема
и ее градиент h(x) всюду в Еn удовлетворяют условию Липшица
yrxhyxh ≤−+ )()( ,

()(
)
x
169
где ||х|| =
та. Введем обозначение F
значение F(х) в точке xk. Для построения точки х
∑
=ni
2
x
– норма вектора х в Еn, а r – положительная констан-
i
1
= min F(х) и будем считать, что вычислено
0
k+1
вычисляется при-
ближенное значение h(xk). Для этого необходимо вычислить значение
F(x) в т точках
k
х
= Δхе
, i = 1, 2, ..., m,
i
где Δх – константа, равная длине пробного шага, е
– m-мерный еди-
i
ничный вектор с единицей на i-м месте. Затем вычисляется вектор
H(xk), компоненты которого определяются по формуле
k
=
xH
)( .
i
k
i
−Δ+
k
xFxexF
Δ
Если Δх → 0, то H(хk) → h(х
k
). Таким образом, H(хk) является
приближенным значением градиента h(х) в точке хk. Очередная точка
k+1
x
определяется с помощью рабочего шага α
в направлении H(хk):
k
k+1=xk
x
–
α
H(xk).
k
После определения значения F(x
k+1
) переходят к следующей
итерации. Для окончания вычислений используют элементарное правило остановки
F(x
k
) – F(x
k+1
) ≤ ε,
где ε – заданная положительная константа.
Если неравенство выполняется, то достигнут локальный мини-
мум функции F(x).
Градиентный метод дает глобальный минимум только для строго вогнутых функций. Может оказаться, что найденный минимум и
глобальный минимум совпадают для некоторой многоэкстремальной
функции. Это совпадение может быть либо случайным, либо целенаправленным, но в последнем случае необходима дополнительная ин-

170
формация о характере изменения функции F(x).
Метод наискорейшего спуска получается в градиентном методе
следующим способом: выбирается α
таким образом, чтобы на каж-
k
дом шаге минимизировать функцию F(x), т.е. определить минимум
k
F(x
– α
H(xk)).
k
Градиентные и примыкающие к ним методы возможных направлений достаточно полно исследованы в работе [35].
Метод покоординатной оптимизации. Сущность метода за-
ключается в том, что определение минимума функции F(x), где х – nмерный вектор евклидового пространства Еn, связано с преобразованием координат на каждом шаге таким образом, чтобы координатные
оси совпадали с направлением поиска. Направление поиска выбирается из условия определения локального минимума функции F(х).
Производится аналогичное построение и для определения максимума
функций.
Этот метод оказывается эффективным в тех случаях, когда специфические особенности задач позволяют осуществить определение
абсолютного минимума по выбранному направлению координатной
оси.
Общая математическая формулировка метода заключается в
следующем. Исходную для k-го шага точку х обозначим через x
k
, где
k = 1, 2, …. Исходную для этого шага систему координат назовем k-й
системой. Началом k-й системы является точка x
k
. Через D
k
, где
i
i = 1, 2, …, n, обозначим множество точек х на i-й оси k-й системы
координат. Тогда метод покоординатной оптимизации записывается в
следующем виде:
k
F(x
) =
min
∈
Dx
−
k
i
F(x),
1
где i – выбранное направление покоординатной оптимизации.
Вычисления прекращаются, если выполняется неравенство
k – 1
F(x
) – F(xk) ≤ ε,
где ε – заданная точность вычислений.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
