/**
* Метод для вычисления функции ограничений
*/
public double constraintFunc(int[] choice) {
double result = 0;
for (int threat = 0; threat < threatProb.length; threat++) {
double maxPreventionProb = 0;
for (int tool = 0; tool < toolPrice.length; tool++) {
double tmp = preventionProb[threat][tool] *
choice[tool];
if (tmp > maxPreventionProb) {
maxPreventionProb = tmp;
}
}
result += threatDamage[threat] *
threatProb[threat] *
maxPreventionProb;
}
return result;
}
}
Выводы.
Рассмотрен метод вектора спада. Данный метод отно-
сится к группе градиентных методов и предназначен для решения
дискретных оптимизационных задач, он дает локальное решение.
Приведено общее описание метода, а также подготовлена програм-
ма на языке Java, реализующая алгоритм метода вектора спада при-
менительно к решению задачи выбора вариантов защиты от угроз
безопасности вычислительной сети предприятия.
Скорость работы рассмотренного алгоритма и точность получен-
ных результатов сравнивались с показателями работы точного алгорит-
ма. В качестве точного алгоритма был выбран аддитивный алгоритм
Балаша.
Подтверждена экспоненциальная зависимость трудоемкости адди-
тивного алгоритма и полиномиальная зависимость трудоемкости ал-
горитма метода вектора спада от числа угроз, чем обусловлена су-
щественно более высокая скорость работы последнего. Применение
точного алгоритма неприемлемо при решении задачи с большим чи-
слом рассматриваемых вариантов защиты.
Платой за высокую скорость работы является низкая точность ре-
шений, найденных алгоритмом вектора спада, что может послужить
препятствием для его использования.
СПИСОК ЛИТЕРАТУРЫ
1. Г э р и М., Д ж о н с о н Д. Вычислительные машины и труднорешаемые задачи.
– М.: Мир, 1982. – 416 с.
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2008. № 2 81