Алгоритм:
Заданы границы значений всех переменных xiL, xiU, i=1,2,..., N (размерность задачи), допустимая точка xo, параметр отображения a (рекомендуется a =1,3) и параметры окончания вычислений e и d.
Шаг 1. Построение начального комплекса, состоящего из P допустимых точек (рекомендуется P=2N). Для каждой точки p = 1, 2,...,P-1
o случайным образом определить координаты xp;
- если xp - недопустимая точка, то найти центр тяжести xцт уже найденных точек и положить xp = xp + (xцт - xp); повторять процедуру до тех пор, пока xp не станет допустимой;
- если xp - допустимая точка, повторять до тех пор, пока p=P;
- вычислить W(xp) для p=0,1,...,P-1.
Шаг 2. Отражение комплекса:
o выбрать точку xR, для которой W(xR) = max W(xp) = Wmax (решается задача минимизации);
- найти центр тяжести xцт и новую точку xm = xцт + a (xцт - xR);
- если xm - допустимая точка и W(xm)< Wmax, уменьшить в два раза расстояние между xm и центром тяжести xцт, продолжать поиск, пока W(xm)<Wmax;
- если xm - допустимая точка и W(xm)<Wmax, то перейти к шагу 4;
- если xm - недопустимая точка, то перейти к шагу 3.
Шаг 3. Корректировка для обеспечения допустимости:
|
|
· если xim<xiL(нижняя граница допускаемой области), то положить xim = xiL;
- если xim>xiU(верхняя граница допускаемой области), то положить xim = xiU;
- если xm - недопустимая точка, то уменьшить в два раза расстояние до центра тяжести; продолжать до тех пор, пока xm не станет допустимой точкой.
Шаг 4. Проверка условий окончания вычислений:
положить и ;
если и , то вычисления прекратить; в противном случае перейти к шагу 2a.