Обычный симплекс-метод.
Симплексом в пространстве n переменных называют выпуклый многогранник, имеющий n+1 вершину. В пространстве двух переменных это треугольник, в пространстве трех переменных - тетраэдр. В обычном симплекс- методе используется правильный симплекс (все ребра которого равны). Идея симплекс-метода, заключается в следующем.
Выбирается начальный симплекс с вершинами x(1)-х(2)-х(3). В вершинах исходного симплекса рассчитывается значение целевой функции f(x(1)), f(x(2)), f(x(3)). Из этих трех значений выбирается "наихудшая точка (при поиске минимума это та точка, в которой функция принимает максимальное значение). Допустим, что это точка x(1) . Через центр тяжести противолежащей грани xц.т.=(x(2) + x(3))/2 строится новая вершина симплекса x(4), симметричная "наихудшей" вершине x(1) (рис.4.1):
Рисунок 4.1
В результате получается новый симплекс x(2) – x(3) - x(4) , причем значение целевой функции в двух точках x(2) и x(3) уже известно. Поэтому вычисляется значение функции в точке x(4) и среди всех вершин ищется вершина с «наихудшим» значением. Эта вершина вновь отображается через середину противолежащей грани и вся процедура повторяется. Признаком окончания поиска является так называемая процедура зацикливания, когда вновь отображенная вершина оказывается «наихудшей». В этом случае, если заданная точность не достигается (точность обычно определяется длиной ребра симплекса), необходимо уменьшить размеры симплекса. Процедура повторяется до тех пор, пока длина ребра симплекса не станет меньше заданной точности.
В общем n–мерном случае, если обозначить отображаемую вершину симплекса за x(1), остальные вершины – x(2), х(3), …, х(n+1) отображенную вершину за x(n+2), координаты центра тяжести грани, относительно которой производится отображение, определяются по формуле:
а отображаемой вершины
здесь множитель α > 0. При α=1 получаем зеркальное отображение х(1) и если исходный симплекс был правильным, то при зеркальном отображении и новый симплекс окажется правильным.
Дата добавления: 2021-01-26; просмотров: 410;