Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по математике для магистров.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
9.51 Mб
Скачать

21.20.1 Модифицированный поиск Хука-Дживса

Метод Хука-Дживса нетрудно модифицировать и для учета ограничений.

Было выдвинуто предположение, что для этого вполне достаточно при решении задачи минимизации присвоить целевой функции очень большое значение там, где ограничения нарушаются. К тому же такую идею просто реализовать с помощью программирования.

Нужно проверить, каждая ли точка, полученная в процессе поиска, принадлежит области ограничений. Если каждая, то целевая функция вычисляется обычным путем. Если нет, то целевой функции присваивается очень большое значение. Таким образом, поиск будет осуществляться снова в допустимой области в направлении к минимальной точке внутри этой области.

В тексте программы модифицированного метода прямого поиска Хука-Дживса сделана попытка реализовать такую процедуру. Рассматриваемая задача формулируется следующим образом:

минимизировать f(x1, x2) = 3x12+4x1x2+5x22

при ограничениях x1і 0, x2і 0, x1+x2і 4.

Минимум, равный 44, достигается в точке (3; 1) при ограничении х12=4

Для начальной точки (4;3) и при длине шага, равной единице, программой успешно решена задача минимизации.

Для начальной точки (3;4) и длины шага =1 программой также успешно решена задача минимизации.

Для начальной точки (5;6) и длины шага =1 задача не решена, так как программа остановилась в точке (1;3), т.е. на активном ограничении, и выдала неверный результат.

Аналогичные неутешительные результаты были получены для начальной точки (5;6) и длины шага =0,5. Неверное решение было найдено в точке (1,5;2,5). Для начальной точки (4;3) и длины шага 0,5 программа работала нормально, но было получено неверное решение в точке (2,5;1,5).

Проблема понятна. С помощью данного метода невозможно двигаться вдоль границы, где находится решение. Общая задача оптимизации при наличии ограничений очень сложна и для получения практического метода решения требуются более изощренные процедуры, чем приведенная выше.

21.20.2 Методы случайного поиска

Наиболее простой процедурой случайного поиска является прямая выборочная процедура, заключающаяся в разыгрывании на ЭВМ последовательности точек с координатами

xi = xiL +ri (xiU - xiL), i=1,2,...,N,

где

ri - случайная величина, равномерно распределенная на интервале [0,1].

После проверки каждой точки на допустимость вычисляются значения целевой функции, которые сравниваются с наилучшим значением, полученным к данному моменту. Если текущая точка дает лучшее значение, то она запоминается, в противном - отбрасывается. Процесс прекращается после заданного числа итераций N или по исчерпанию заданного машинного времени. Для получения 90% доверительного интервала величиной e i (xiU - xiL), где 0<e <1, для переменной xi совместный случайный поиск требует

испытаний. При N=5, e i=0,01 число испытаний оценивается в 2,3 1010, что исключает возможность непосредственного использования метода.

Значительного увеличения эффективности процедуры случайного поиска можно достигнуть путем группировки выборок в серии. При этом наилучшая точка в каждой серии используется как начальная точка следующей серии, точки которой уже выбираются из интервала меньшей величины. Данная процедура получила название выборки со сжатием пространства поиска. Рассмотрим более подробно ее алгоритм.

Заданы границы значений всех переменных xiL, xiU, i=1,2,..., N (размерность задачи), начальные допустимая точка xo и интервал поиска D xo = xiU - xiL, количество серий Q, количество точек в серии P и параметр окончания вычислений e . Для каждой из серий, начиная с q = 1, необходимо выполнить следующие действия.

Шаг 1. Для i = 1,2,...,N вычислить

xip = xiq-1 +ri D xq-1,

где

ri - случайная величина, равномерно распределенная на интервале [-0,5;0,5].

Шаг 2.

    • Если xp - недопустимая точка и p < P, то повторить шаг 1.

    • Если xp - допустимая точка, то запомнить xp и W(xp) и

      • если p < P, то повторить шаг 1.

      • если p = P, то найти среди всех допустимых точек xp точку с наименьшим значением W(xp) и положить ее равной xq.

Шаг 3. Уменьшить интервал поиска, полагая D xiq = e i D xiq-1.

Шаг 4.

  • Если q > Q, то закончить вычисления.

  • В противном случае увеличить q = q + 1 и продолжить вычисления, начиная с шага 1.