Управление корпоративными программами информационные системы и математические модели - Гламаздин Е.С., Новиков Д.А., Цве
.pdfx : 0 ≤ x ≤ max xij , и рассмотрим задачу максимизации функ- |
|||
|
0≤ j≤ N (i) |
|
|
m ~ |
(xi ) при ограничениях |
m |
0 ≤ xi ≤ max xij , |
ции å fi |
å xi ≤ K , |
||
i=1 |
|
i=1 |
0≤ j≤ N (i) |
i = 1, ..., m.
~
Заметим, что функции fi (x) вогнуты и кусочно-линейны.
~
Выбираем проект с номером i1, для которого функция fi1 (x) имеет наибольший наклон первого звена ломаной графика.
|
Вкладываем в проект i1 величину средств a1 |
= min[xi , K] , где |
|
~ |
1 |
xi |
|
|
– первая точка излома функции fi (x) . |
|
|
1 |
1 |
|
|
Если a1 < K, то оптимальное распределение средств найдено. |
|
~ |
Если a1 > K, то рассмотрим новую задачу с K = K – a1, где |
|
~ |
|
|
fi |
(x) = fi (a1 + x) , а остальные функции остаются прежними. |
|
1 |
1 |
|
Выбор проекта и величины вложения в него осуществляются аналогично и т.д.
Алгоритм завершает свою работу либо после исчерпания ка- питала K, либо после того, как вложение по каждому проекту i
достигнет максимальной величины |
max xij . |
|
|
|||
|
|
|
|
0≤ j≤ N (i) |
|
|
Если найденное решение |
x0 ,i = 1,...,m |
удовлетворяет усло- |
||||
~ |
|
|
i |
|
|
|
0 |
0 |
то |
решение |
0 |
,i = 1,...,m будет |
|
вию fi |
(xi ) = |
fi (xi ), i = 1,...,m , |
xi |
являться текущим решением исходной задачи, для которого рас- считывается значение целевой функции.
Для данного решения необходимо проверить условие неотри- цательности баланса счета заказчика – решить задачу нижнего уровня (алгоритм решения задачи нижнего уровня приведен ниже в подразделе 2.7).
Предположим, что при некотором i1 выполнено строгое нера-
~ |
|
0 |
) > |
fi |
0 |
) , |
и |
0 |
принадлежит минимальному от- |
|
венство fi |
(xi |
(xi |
xi |
|
||||||
1 |
|
1 |
|
1 |
1 |
|
|
1 |
|
|
резку [xi1 , xi2 |
], где xi1 , xi2 |
X i |
. Тогда исходная задача разбивает- |
|||||||
1 |
1 |
|
|
|
1 |
1 |
|
1 |
|
|
ся на две подзадачи с измененными ограничениями по проекту i1:
121
0 £ x |
£ x1 |
в первой подзадаче и x2 |
£ x |
i |
£ |
max x |
i |
j |
во второй. |
i |
i |
i |
|
|
≤ j≤ N (i1 ) |
|
|||
1 |
1 |
1 |
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
Каждая из подзадач решается указанным выше способом и так далее. Если текущее решение подзадачи удовлетворяет условию
~ |
0 |
) = |
0 |
),i =1,...,m , то оценка снизу для максимума целевой |
fi |
(xi |
fi (xi |
функции возрастает.
Для реализации данного алгоритма введем следующие обо- значения.
Пусть заданы |
матрицы |
R = {rt }Î Rm×max( N (i))×n+1 |
и |
|
|
|
|
ij |
|
C = {ct |
}Î Rm×max( N (i))×n+1 |
, где m – |
количество инвестиционных |
|
ij |
|
|
|
|
проектов, N(i) – количество вариантов реализации для каждого проекта, T – срок реализации каждого варианта.
Элементы rijt матрицы R определяют величины возвратов для варианта j по проекту i в момент времени t = 0, …, T.
Элементы cijt матрицы C определяют величины затрат для ва- рианта j по проекту i в момент времени t = 0, …, T.
Матрицы R = {rt }Î Rm×max( N (i))×n+1 |
и C = {ct }Î Rm×max( N (i))×n+1 |
||||
|
|
ij |
|
ij |
|
определяют элементы |
матриц |
X = {x }Î Rm×max( N (i)) |
и |
||
|
|
|
|
ij |
|
F = { f |
ij |
}Î Rm×max( N (i)) , где |
x – минимальная величина средств, |
||
|
|
ij |
|
|
необходимых для реализации варианта j по проекту i, fij – значе-
ние приведенной стоимости проекта i в случае выбора варианта j. Матрицы X и F определяют значения кусочно-постоянной
ì |
0, 0 £ x < xi1 |
|||
ï |
||||
|
|
|
||
функции fi(x): fi (x) = í fij , xij £ x < xij+1, j = 1,..., N (i) -1. |
||||
ï f |
iN (i) |
, x ³ x |
||
î |
|
iN (i) |
Определим характеристики минимальной вогнутой функции
~ |
(x) , для которой |
~ |
(x) ³ fi (x) при "x : 0 |
£ x £ max xij . |
fi |
fi |
|||
|
|
|
|
0≤ j≤ N (i) |
122
Обозначим S = {sij } – матрица, элементы которой определя-
ют точки излома функции |
~ |
(x) . Элементы матрицы |
|||
fi |
|||||
вычисляются следующим образом. |
|||||
|
Обозначим |
T = {t } Rm×max(N (i)) , |
|||
|
fij |
|
|
ij |
|
tij = |
, i = 1,...,m; j = 1,..., N (i) |
– |
тангенсы угла наклона |
||
|
|||||
|
xij |
|
|
S = {sij }
где
прямой,
проходящей |
через |
начало координат и точку |
с |
координатами |
|||||||||||||||||
(xij , fij ) – точку разрыва функции fi(x). |
|
|
|
|
|
|
|
|
|
||||||||||||
Обозначим |
|
j1 |
– позиция максимального элемента строки i |
||||||||||||||||||
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
матрицы |
T. |
Зафиксируем первый |
|
столбец |
матрицы |
S: |
s |
|
= j1 |
, |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i1 |
i |
|
|
i = 1, …, m. Переместим |
|
начало координат |
в точку |
(xiji1 , fiji1 ) и |
|||||||||||||||||
осуществим перерасчет элементов матрицы T: |
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
fij − f |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
1 |
= |
|
|
|
iji |
, i = 1,...,m.; j = j1 |
+1,..., N (i) . |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
ij− ji |
|
|
xij − xiji1 |
|
i |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Обозначим |
|
j2 |
– позиция максимального элемента строки i |
||||||||||||||||||
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
матрицы |
T. |
Зафиксируем второй |
столбец |
матрицы |
S: |
s |
|
= j2 |
, |
||||||||||||
i = 1, …, m, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i2 |
i |
|
|||
и |
т.д. |
Результатом |
вычислений |
является |
|
|
матри- |
||||||||||||||
ца S = {sij }. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Обозначим N’(i) – |
число итераций для строки i матрицы |
||||||||||||||||||||
S = {sij } |
– |
число элементов в строке i матрицы |
S. Обозначим |
||||||||||||||||||
X ' = {x' |
ij |
} Rm×max( N '(i)) |
|
и F' = { f ' |
ij |
} Rm×max( N '(i)) , |
где x' |
ij |
= x |
, |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
isij |
|
|||
f 'ij = fisij |
, i = 1, …, m и j = 1, …, N’(i). |
|
|
|
|
|
|
|
|
|
|||||||||||
Таким |
образом, |
|
|
матрицы |
|
X ' = {x'ij } Rm×max( N '(i)) |
и |
||||||||||||||
F' = { f 'ij } Rm×max( N '(i)) |
|
|
|
|
|
~ |
|
|
|
|
|
|
|
|
|||||||
|
определяют функции fi (x) : |
|
|
|
|
|
|
123
|
ì f 'ij+1- f 'ij |
× x + f 'ij , x'ij £ x £ x'ij+1 |
, j = 1,..., |
|||||
|
ï |
|
|
|
|
|
||
|
x' |
|
|
-x' |
|
|||
~ |
ï |
|
ij+1 |
|
ij |
|
|
|
ï f ' |
i1 |
|
|
|
|
|
||
fi |
(x) = í |
|
× x,0 £ x £ x'i1 |
|
||||
x' |
|
|
||||||
|
ï |
|
|
|
|
|
|
|
|
i1 |
|
|
|
|
|||
|
ï f 'iN '(i) , x ³ x'iN '(i) |
|
||||||
|
ï |
|
|
|
|
|
|
|
|
î |
|
|
|
|
|
|
|
Определим |
матрицу T ' = {t'ij } Rm×max( N '(i)) , |
~
щую углы наклона звеньев графика функции fi (x) :
N'(i) -1
.
характеризую-
ì f ' |
ij+1 |
- f ' |
ij |
,i = 1,...,m; j = 1,..., N '(i) -1 |
|
|
ï |
|
|
|
|||
|
|
|
|
|
||
ï x'ij+1 |
-x'ij |
. |
||||
t'ij = í |
|
|
|
|
||
ï0,i = 1,...,m; j = N '(i),..., max(N '(i)) -1; N' (i) < max(N'(i)) -1 |
|
|||||
ï |
|
|
|
|
|
|
ï |
|
|
|
|
|
|
î |
|
|
|
|
|
|
Матрица T ' = {t'ij } Rm×max( N '(i)) определяет тангенсы углов |
~ |
(x) . При этом в строке i элемент |
наклона для графиков функций fi |
|
j матрицы T’ определяет тангенс угла наклона для звена j графика |
|
~ |
|
|
|
|
функции fi (x) . |
|
|
|
|
|
|
Определим векторы X 0 = {x0 |
} и |
F0 = { f 0}, i = 1, ..., m, |
где |
|
|
i |
|
i |
|
|
x0 |
определяет общую величину инвестиций в проект i после каж- |
||||
i |
|
|
|
|
|
дой итерации алгоритма решения задачи верхнего уровня, |
fi |
0 – |
определяет отдачу от проекта i при инвестициях в размере xi0 .
Начальные условия: xi0 = 0 , fi0 = 0 , i = 1, ... , m.
На первой итерации алгоритма определяем позицию макси- мального элемента в первом столбце матрицы T ' = {t'ij }. Обозна- чим i1 – номер строки, в которой находится максимальный элемент,
~
i1 – номер проекта, для которого функция fi (x) имеет наиболь-
124
ший наклон первого звена ломаной графика, x'i11 – первая точка
~
излома функции fi (x) .
Обозначим C = {ci},i =1,...,m – вектор, элементом которого
является номер рассматриваемого варианта для проекта i (номер варианта определяется в терминах матрицы X’ – не совпадает с номерами вариантов для матрицы X: для перехода к номерам вари-
антов в исходных терминах задачи необходимо использовать матрицу S = {sij }).
На каждой итерации алгоритма индексируется номер варианта для соответствующего проекта i1. На первой итерации
ci |
= 1, ci = 0, i ¹ i1 . |
Вкладываем в проект i1 величину |
средств |
|||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
a = min[x' |
i |
1 |
, K] , |
x0 |
= x0 |
+ a – инвестиции в проект i1 |
увеличе- |
|||||
1 |
|
|
i |
|
|
i |
|
1 |
|
|
||
ны на a1. |
1 |
|
|
1 |
|
|
1 |
|
|
|
|
|
|
|
|
|
f 0 |
|
|
|
|
|
|||
|
Если a |
|
< K , то |
= |
f ' |
i 1 |
– фиксируем увеличение отдачи от |
|||||
|
1 |
|
|
|
i |
1 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
1 |
|
|
инвестиций и производим новую итерацию алгоритма с изменен-
ными |
начальными |
условиями: |
K = K - a1 |
(уменьшаем |
размер |
|
свободного |
капитала), |
t'i1 j = t'i1 j+1 , |
j = 1,..., N '(i1) -1, |
|||
x'i1 j = x'i1 j+1-a1 , |
j =1,..., N '(i1) -1, |
f 'i1 j = f 'i1 j +1 , |
||||
j =1,..., N '(i1) -1, |
(сдвигаем график |
функции |
~ |
|||
fi (x) : |
||||||
~ |
~ |
+ x) ), |
N '(i1) = N '(i1) -1 (уменьшаем количество |
|||
fi (x) = fi (a1 |
||||||
1 |
1 |
|
|
|
|
|
рассматриваемых вариантов по проекту i1).
Если a1 = K , то определено текущее распределение средств
X 0 = {x0 |
}; отдача от инвестиций |
F0 = { f 0 |
}; вектор |
i |
|
i |
|
C = {ci}, i = 1,...,m .
Необходимо проверить, удовлетворяет ли распределение сле-
дующему условию: |
~ |
0 |
0 |
|
fi (xi ) = fi (xi ) при всех i = 1, ..., m. |
||||
|
|
|
~ |
(x) следует, что равенство |
Из определения функций fi(x) и fi |
||||
выполняется тогда |
и |
только |
тогда, |
когда элементы вектора |
125
X 0 = {xi0} совпадают с точками разрыва функции fi(x) – элемента-
ми |
строк |
матрицы |
X ' = {x'ij }Î Rm×max( N '(i)) . Таким образом, |
|||
~ |
|
0 |
0 |
|
0 |
= x'ici i = 1,...,m . |
fi |
(xi ) = fi (xi ) xi |
|||||
|
|
Проверим выполнение данного условия: |
||||
|
|
1) Если |
x0 |
= x' |
ici |
i = 1,...,m , то найдено текущее решение |
|
|
|
i |
|
|
задачи нижнего уровня:
X 0 = {xi0}, i = 1, ..., m – распределение инвестиций; F0 = { fi0}, i = 1, ..., m – отдача от инвестиций;
m
S= å fi0 – суммарная отдача от инвестиций – целевая функ-
i=1
ция задачи;
J = { j1*,..., jm* } – номера вариантов, реализуемых по проекту
i, где ji* = sici .
Для найденного решения необходимо осуществить проверку неотрицательности баланса счета заказчика – проверку существо- вания решения задачи нижнего уровня.
2) Если |
x0 ¹ x' |
ici |
при i = i |
2 |
, то распределение X |
0 = {x0} не |
||||||
|
i |
|
|
|
|
|
|
|
|
i |
||
является текущим решением задачи нижнего уровня. |
|
|
||||||||||
Определим минимальный отрезок [x1, x2 ], которому принад- |
||||||||||||
лежит точка x0 , где x1, x2 – точки разрыва функции f |
i2 |
(x) . |
||||||||||
|
i2 |
|
|
|
|
|
|
|
|
|
|
|
Точки |
разрыва функции |
|
fi2 (x) |
|
определяются |
матрицей |
||||||
X = {x }Î Rm×max( N (i)) , |
следовательно |
x1, x2 совпадают с соответ- |
||||||||||
ij |
|
|
|
|
|
|
|
|
|
|
|
|
ствующими элементами строки i2 матрицы X. |
|
|
|
|||||||||
Пусть x1 = x |
, x2 |
= x |
, |
где x |
, x |
– элементы матри- |
||||||
|
i2 j1 |
|
|
i2 j+1 |
|
|
i2 |
j1 |
i2 j +1 |
|
|
|
цы X. Тогда исходная задача разбивается на две подзадачи с изме- |
||||||||||||
ненными начальными условиями – происходит ветвление: |
||||||||||||
Левая ветвь: |
N (i2 ) = j1 |
(уменьшаем количество рассматри- |
||||||||||
ваемых вариантов |
|
по |
проекту |
|
i2). Значения |
элементов матриц |
126
X = {xij} и F = { fij} остаются прежними для i = 1, ..., m, j = 1,..., N (i) (с учетом изменения количества вариантов по проек-
ту i2). |
|
|
|
xi2 j |
= xi2 j+ j1 +1 , |
j = 1,..., N (i) − j1 −1, |
|||
Правая |
ветвь: |
||||||||
fi2 j = fi2 j+ j1 +1 , j = 1,..., N (i) − j1 −1, |
(сдвигаем графики функций |
||||||||
~ |
fi2 |
(x) ), |
K = K − xi2 j+ j1 +1 , |
0 |
= xi2 j+ j1 +1 (вкладываем в |
||||
fi2 (x) и |
xi2 |
||||||||
проект i2 |
величину средств xi2 j+ j1 +1 : считаем выбор данного проек- |
||||||||
та приоритетным в начальный момент). |
|
S = {sij }, |
|||||||
Для |
каждой |
ветви |
производится расчет матриц |
||||||
X ' = {x'ij } Rm×max( N '(i)) |
и F' = { f 'ij } Rm×max( N '(i)) , определяющих |
||||||||
соответствующие |
функции |
~ |
и |
вычисляются |
вектора |
||||
fi (x) , |
|||||||||
X 0 = {x0 |
} и |
F0 = { f 0} (при этом для правой ветви элемент i |
2 |
||||||
i |
|
|
i |
|
|
|
|
|
вектора X 0 = {xi0}– ненулевой).
Расчеты данных величин производятся аналогично вышеопи- санному алгоритму.
В случае если для распределения подзадачи не выполняется условие xi0 = x'ici , i = 1,...,m , то происходит дальнейшее ветвле-
ние подзадачи.
Результатом ветвления является дерево, в листьях которого будут определены текущие решения (X 0 ,F 0 ,S, J * ) каждой подза-
дачи, для которых проверяется существование решения задачи нижнего уровня.
Построение дерева и выбор оптимального решения, на кото- ром достигается максимум целевой функции, осуществляется рекурсивно.
2.7. Алгоритм решения задачи нижнего уровня. Текущим решением задачи верхнего уровня является набор проектов (с соответствующим выбором подрядчиков), реализация которых возможна при ограничении на общий объем инвестиций K = PVG+.
127
Для выбранного набора проектов необходимо определить воз-
можность их реализации при ограничениях на состояние счета заказчика.
Условие неотрицательности баланса счета заказчика форму- лируется следующим образом:
|
|
|
t |
m t |
|
|
|
|
t = 0,...,T |
å gk vk |
+ å å(rt* - ct * )vk ³ 0 , |
|
|
|
|
|
k =0 |
iji |
iji |
|
|
|
|
i=1 k =0 |
|
|
|
t |
|
|
|
|
|
|
где ågk vk |
– приведенная величина кредитного потока на момент |
|||||
k =0 |
|
|
|
|
|
|
времени t, |
m t |
|
|
|
|
|
å å(rt* - ct * )vk – суммарный баланс по всем проек- |
||||||
|
|
iji |
iji |
|
|
|
|
|
i=1 k =0 |
|
|
|
|
там на момент времени t. |
|
|
|
|||
Текущее решение задачи верхнего уровня определяет сле- |
||||||
дующие |
параметры: |
X 0 = {x0 |
}, i = 1, ..., m |
– вектор, |
элементы |
|
|
|
|
i |
|
|
проект i; |
которого |
определяют |
распределение инвестиций в |
F0 = { fi0}, i = 1, ..., m – вектор, элементы которого определяют
m
отдачу от инвестиций по проекту i; S = å fi0 – суммарная отдача
i=1
от инвестиций – целевая функция задачи, J * = { j1*,..., jm* } – номера вариантов, реализуемых по проекту i (в случае, если по проекту i выбран вариант с номером, j > ji* Î J * , а для остальных проектов
номера вариантов принадлежат J * , то реализация такого набора проектов невозможна при заданных ограничениях на объем инве- стиций).
Если для решения (X 0 ,F 0 ,S, J * ) выполняется условие неот-
рицательности баланса счета заказчика, то данное решение являет-
ся решением задачи нижнего уровня и происходит возврат на верхний уровень.
Заметим, что решение, характеристики которого заданы век-
тором J '= {j' ,..., j' |
m |
}, где |
j' |
i |
£ j* |
при i = 1,...,n , также удовле- |
1 |
|
|
i |
|
творяет ограничениям на общий объем инвестиций, так как эле- менты соответствующего вектора X '= {x'i }, i = 1,...,m не
128
превосходят элементы вектора X 0 = {xi0}, i = 1, ..., m, а элементы
вектора F' = { f 'i } не превосходят элементы вектора F0 = { fi0}. Таким образом, текущее решение задачи верхнего уровня
(X 0 ,F 0 ,S, J * ) |
определяет множество D допустимых решений при |
|
ограничении на общий объем инвестиций, причем |
решение |
|
(X 0 ,F 0 ,S, J * ) |
является на множестве D «наилучшим», |
так как |
сумма S является на данном множестве максимальной.
В случае, если текущее решение задачи нижнего уровня (X 0 ,F 0 ,S, J * ) не удовлетворяет ограничениям на состояние счета заказчика, необходимо решить задачу нижнего уровня, т.е. опреде- лить «наилучшее» решение(X ', F', S, J ' ) D , на котором выпол-
няется условие неотрицательности счета заказчика – решение, для которого значение S будет максимальным на множестве допусти- мых решений D.
Решение (X ', F', S, J ' ) D будет являться решением соот-
ветствующей подзадачи верхнего уровня. Выбор оптимального решения задачи, на котором достигается максимум целевой функ- ции, будет осуществляться с учетом соответствующего значения величины S .
Задача нижнего уровня решается следующим образом. Вектор J * = {j1*,..., jm* } определяет фиксированный набор вариантов, из которых осуществляется выборка решения (X ', F', S, J ' ) D
задачи нижнего уровня.
В соответствии с начальными условиями заданы матрицы X = {xij} Rm×max( N (i)) и F = { fij} Rm×max( N (i)) . Элементам строки i данных матриц соответствуют точки разрыва кусочно- постоянной функции fi(x).
Так как функции fi(x) являются неубывающими, то элементы строк матрицы F = { fij} Rm×max( N (i)) упорядочены по возраста- нию.
Обозначим N ' (i) , i = 1,...,m – количество вариантов реализа- ции, которые не были отброшены для проекта i на верхнем уровне:
129
N ' (i) = j* . Тогда решение задачи верхнего уровня (X 0 |
,F 0 |
,S, J * ) |
||||
|
|
i |
|
|
|
|
определяет выборку элементов матрицы X = {x }Î Rm´max( N (i)) |
и |
|||||
|
|
|
ij |
|
|
|
F = { f |
ij |
}Î Rm´max( N (i)) |
при i = 1,...,m ; j = 1,..., N '(i) , |
где |
x |
– |
|
|
|
|
ij |
|
величина инвестиций в проект i в случае выбора варианта реали- зации с номером j; fij – значение приведенной стоимости проекта i (отдача от инвестиций) в случае выбора варианта j.
Обозначим J1 = { j1}, где |
j1 |
= j* -1 ( i = 1,...,m ): вектор, |
i |
i |
i |
компоненты которого определяют величину инвестиций и отдачу от инвестиций в проект i в случае выбора варианта с номером
j* -1. |
|
|
i |
|
|
Введем вспомогательный вектор |
J 2 = { j2 ) , i = 1,...,m . На- |
|
|
|
i |
чальные условия: J 2 = { j2 |
} = 0. Обозначим S1 = {s1}, i = 1,...,m – |
|
i |
|
i |
вектор, компоненты которого определяют суммарную отдачу от инвестиций в случае, если для проекта i выбирается вариант с
номером |
j1 , |
а по остальным проектам выбираются варианты с |
|||||||||
|
|
|
i |
|
|
|
|
|
|
|
|
номерами |
jk* : |
S1 = {si1}, i = 1,...,m , где si1 = |
å fkN ' (k ) + fiN ' (i) . |
||||||||
|
|
|
|
|
|
|
|
|
|
|
1£k £m,k ¹i |
|
|
Пусть Smax |
– максимальная суммарная отдача от инвестиций, |
||||||||
S |
|
= max s 1 |
, |
при этом i |
= (i |
|
s1 = S |
|
) |
– номер проекта, при |
|
|
|
|
|||||||||
|
max |
1£i£m i |
|
1 |
|
|
i |
max |
|
|
|
|
|
|
|
|
|
котором достигается максимальное значение si1 . Определим:
X ' = {x'}, |
где |
x' |
= x0 |
при |
i = 1,...,m,i ¹ i , |
x' |
= x |
' |
(i )-1 |
, |
|
i |
|
i |
i |
|
|
1 |
i1 |
i N |
|
||
|
|
|
|
|
|
|
|
|
1 |
1 |
|
F' = { f '}, |
где |
f ' |
= f 0 |
при |
i = 1,...,m,i ¹ i , |
f ' |
= f |
' |
(i )-1 |
, |
|
i |
|
i |
i |
|
|
1 |
i1 |
|
i N |
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
m |
|
|
|
|
|
|
|
|
|
|
|
S' = å fi' , S' = Smax , |
J ' = { j'i }, где |
j'i = N'(i1) -1. |
|
|
|
|
|
||||
i=1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
(X ',F',S', J ') |
|
|
|
|
|
|
|||
Тогда |
решение |
является «наилучшим» на |
множестве D за исключением решения (X 0 ,F 0 ,S, J * ) .
Проверим выполнение условия неотрицательности баланса счета заказчика для решения (X ',F',S', J ') : t = 0,...,n
130