Научная статья на тему 'Алгоритм и программа метода случайного поиска с адаптирующимся шагом'

Алгоритм и программа метода случайного поиска с адаптирующимся шагом Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
545
55
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Алгоритм и программа метода случайного поиска с адаптирующимся шагом»

ИЗВЕСТИЯ

ТОМСКОГО ОРДЕНА ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ И ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ПОЛИТЕХНИЧЕСКОГО ИНСТИТУТА ИМ. С. М. КИРОВА

Том 277

1977

АЛГОРИТМ И ПРОГРАММА МЕТОДА СЛУЧАЙНОГО ПОИСКА С АДАПТИРУЮЩИМСЯ ШАГОМ

(Представлена научным семинаром лаборатории вычислительной техники и автоматизации НИИ ЯФ ЭА)

Задача поиска минимума функции F(X) формулируется следующим образом: найти вектор Х* = -^2--. хп ), доставляющий

min F(X) =F(X*), где D — область ограничений на переменные в виде xgD _

fj(X)^0, /=1,т. Случай поиска максимума F(X) сводится заменой R(X)=—F(X) к задаче поиска минимума R{X).

Метод случайного поиска. был впервые предложен и разработан Л. А. Растригиным [1]. Алгоритм метода можно записать в виде следующего рекуррентного выражения:

Здесь 5 — длина рабочего шага в пространстве переменных;

| — очередная реализация случайного вектора, равномерно распределенного по гиперкубу с единичным ребром с центром в начале координат.

Метод шагового случайного поиска минимума функции был запрограммирован по схеме с адаптирующимся шагом из [3]. Коротко суть предлагаемой в [3] „модификации состоит в следующем.

Пробные диаги из базовой точки осуществляются парами (делаются шаги длиной 5 и 5- (1+а), а>0. Если после М1 шагов не происходит уменьшения функции цели Р(Х), то шаг поиска уменьшается в К\ раз. Если при некоторой величине шага значение функции уменьшается, то эта величина шага запоминается в качестве номинального. Через М2 вычислений функции осуществляется «длинный шаг», в /С2 раз больше номинального. Если эта попытка удачна, то выбирается новое, большее значение номинального шага, если нет — шаг остается прежним.

• Подробнее с алгоритмом метода и результатами сравнения данного метода с другими можно ознакомиться в [2].

Н. Ф. ФИЛИПЕНКО

Алгоритм метода

S ;, если F(X*)<F(X*-1); . S-5-ДХ*, если F(Xk)^>F(Xk-1)-

Описание программы

Программа составлена для ЭВМ М-20, БЭСМ-4, М-220. Программа использует константы ИС-2; барабаны и ленты не использует. Рабочие ячейки 0001—0003; длина СП и рабочих полей равна шах \ 0256,0242 + + 2п \ . Таким образом, при /г>6 длина СП вместе с рабочими полями равна 0242 + 2п ячеек. При п^б длина СП равна 0256.

Программа СПАД настраивается по любому месту МОЗУ. Это значит, что предварительно СП может быть записана, начиная с любой ячейки а МОЗУ, например, по команде: С 010а, С+1,0000|, хранящейся в ячейке С. Настройка по месту (с ячейки а) производится после первого обращения к СП автоматически.

Обращение к программе осуществляется следующими двумя строками:

х+0 *+1

0 16 *+1 а 7610 14*2*3 п X* Р <з>

Здесь а — ячейка, с которой расположена в МОЗУ программа,

а+1—ячейка, в которую программист должен засылать вычисленное значение Р(Х).

Прежде чем вычислить значение Р(Х), необходимо проверить справедливость неравенства ¡¿(Х)~^0, ¡—\,т. Если хотя бы одно из неравенств не выполняется, то следует передать управление в ячейку (Т7—1) с засылкой любого не нулевого кода в ячейку (а + 2). (Следует помнить, что нельзя до обращения к программе засылать что-либо в ячейки а+1 и а+2). Р — ячейка входа в программу вычисления Р(Х); р—1 — ячейка выхода из программы вычисления Р(Х) (должна быть свободной). Таким образом, после вычисления значения Р(Х) и проверки ограничений программист должен заслать в ячейку (а+1) значение Р(Х) и передать управление в ячейку (Р~1); п—размерность вектора переменных X (задается в восьмеричном виде); Х°-г- ячейка, начиная с которой расположены компоненты вектора (начальная точка поиска). Причем вектор X должен удовлетворять условиям ¡}(Х)^0; /=1, т; <е>—ячейка, содержащая требуемую погрешность для проверки условия окончания процесса минимизации Р{Х). Компоненты Х° я а — суть нормализованные восьмеричные числа.

Предусмотрены следующие режимы использования признаков для различных критериев окончания процесса минимизации:

а) если Л2=1, то критерий г—Р(Хк)>0;

б) если яз=1, то критерий е—\\Хк — Хк~х ||>0;

в) если я 1 = Яг — Яз = 0, то критерий е—\Р(Хк)—Р(Хк~х )|>0;

г) если Я1=1, то критерий остановки задает программист (например, по числу вычислений.Р(Х)).

В случае г) ячейка <е> является ячейкой входа в блок проверки выполнения критерия в основной программе (ОП) программиста. Если критерий не выполнился и минимизация будет продолжена, программисту нужно передать управление в ячейку (е—1) (которая должна быть свободной). Если критерий выполнился, то при желании программист может передать управление в ячейку (а+0153) программы СПАД, где проводятся следующие заключительные действия. Пересылка вектора Хт{п (некоторого приближения к точке X*) на поле Х0, Р(Х т}п ) = = >а+1, восстановление ЯА основной программы и возврат в ячейку (и+2) ОП.

При выполнении критериев а)ч-в) заключительные действия выполняются автоматически.

Рабочие поля программы

а+0242ч-а+0241+п — компоненты вектора Хт1п (минимальная точка на данном этапе поиска); а+0242+п-^а+0241+2гг — компоненты вектора Хты (минимальная, полученная в результате одной итерации); Х°~Х°-\-п—1 —компоненты вектора текущей точки.

Параметры метода

Таблица!

№ Ячейки Обозначение Значение в программе

а+0214 (1+я) 1,5

а+0215 1,0

а+0216 0,5

а+0217 Мх 6,0

х+0220 ^ К-2 10,0

а+0221 м. 6,0

а+0222 10-5

Назначение параметров метода (кроме А5) описано в алгоритме метода. Все параметры задаются нормализованными восьмеричными числами.

В зависимости от значения А5 программа СПАД работает в двух режимах: если Д5>5, то шаг в методе делается с нормировкой по переменным (т. е. длина шага по каждой переменнбй зависит от абсолютного значения этой переменной,— чем больше значение переменной, тем больше по ней шаг), если Д5>5, то нормировка не производится. Таким образом, при больших Д5 нормировка не будет, а при Д5 = 0 нормировка шага будет делаться всегда.

,Для того чтобы изменить некоторый параметр, достаточно после ввода программы СПАД занести его в соответствующую ячейку в восьмеричном нормализованном виде (перед первым обращением к СПАД из ОП).

Возможные авосты, зацикливание и некоторые рекомендации

Программа случайного поиска может зациклить, если будет найден минимум Р(Х), а критерий окончания минимизации не выполнен (найден локальный минимум, либо неправильно задано е). Следует также отметить, что критерий окончания минимизации проверяется только | после уменьшения функции цели. Зацикливание может произойти при значении Д5 = 0, если какая-либо из переменных будет равна нулю, гак как в этом случае шаг по этой переменной будет равен нулю.

За зацикливанием можно следить по ячейке (а+0232), где находится шаг метода. При зацикливании шаг превращается в нуль.

Авост возможен в ячейке (а+0074) но команде 04, в случае, если все компоненты вектора X равны нулю.

За процессом минимизации можно следить по ячейке (а+0231), где находятся /7(Хт1П ) текущее; в ячейке (а+0230) находится значение Р(Х°); в ячейке (а-(-0233) находится число вычислений Р(Х).

. Как видно из обращения к программе СПАД, число переменных п не может быть больше 63. В принципе же размерность вектора X может быть больше 63. Для этого достаточно в ячейку (а+0007) ввести команду (00; </г>,—,2223), где Сп> — номер ячейки, в которой по второму адресу должно находиться число переменных в восьмеричном виде.

Программа случайного поиска

2000 4 72 0000 7610 7521 2056 0 02 2222 2235 0000

2001 2 72 0000 7777 0000 2057 0 36 0000 2061 2073

2002 7 16 0003 0224 0000 2060 0 16 2076 2065 2073

2003 4 72 0000 7610 2157 2061 0 72 0000 2223 0002

2004 4 55 0000 7740 2'223 2062 4 03 2241 0000 0001

2005 4 55 0000 7732 2224

2006 4 55 0000 7731 2225 2063 0 01 0001 0002 0002

2007 0 67 2223 0000 2223 2064 1 32 0002 2062 7777

2010 0 14 0114 2225 2225 2065 0 72 0000 2223 2236

2011 4 55 0000 7734 2226 2066 0 13 2212 2213 2212

2012 0 67 2226 0000 0003 2067 0 15 2212 2213 2213

2013 0 14 0114 2223 0001 2070 06 0101 2212 0001

2014 0 67 0001 0000 0002 2071 0* 02 7761 0001 0001

2015 0 13 2042 2225 2151 2072 0 05 2235 0001 0001

2016 4 55 0000 7712 2241 2073 0 00 0000 0000 0000

2017 0 76 2201 2025 2150

2020 4 55 0000 7711 0000 2074 4 04 2241 0002 0003

2021 0 76 2203 2025 2150 2075 0 05 0001 0003 0001

2022 4 55 0000 7714 0000 2076 0 00 0000 0000 0000

2077 1 32 0002 2066 7777

2023 0 36 2202 2025 2150 2100 0 72 0000 2224 0000

2024 0 00 2204 0000 2150 2101 3 16 2102 0000 7777

2025 4 16 0001 2026 2160 ' 2102 0 01 2233 7761 2233

2026 •о 53 0001 7750 2237 2103 0 00 0000 0000 0000

2027 0 01 2237 0000 2237 2104 0 15 0000 2002 0000

2030 0 13 2205 2226 2045 2105 0 76 0000 2116 2002

2031 0 13 2206 0002 2046 2106 0 02 2001 2231 0000

2032 0 13 2207 0003 2076 2107 0 76 0000 2116 0000

2034 0 00 2045 0000 2141 2110 0 72 0000 2223 2241

2035 0 13 2210 0001 2154 2111 0 00 0000 0000 0000

2033 0 13 2045 0002 2111 2112 1 32 0002 2111 7777

2036 0 13 2154 0003 2154 2113 0 00 2235 0000 2232

2037 0 13 2206 0001 2162 2114 0 00 0000 0000 2226

2040 0 13 2211 2223 2171 2115 0 .00 2001 0000 2231

2041 0 00 0000 0000 2226 2116 0 05 2232 2214 2235

2042 0 02 0001 0000 0000 2117 0 02 0000 2240 2240

2043 0 00 2215 0000 2232 2120 0 36 0000 2056 0000

2044 0 72 0000 2223 2233 2121 0 55 2241 7740 0000

2045 0 00 0000 0000 0000 2122 0 76 0000 2150 2241

2046 0 00 0000 0000 0000

2047 1 32 0002 2045 7777 2123 0 01 2226 7761 2226

2050 0 72 0000 2224 2234 2124 0 02 2226 2217 0000

2051 3 16 2052 0000 7777 2125 0 36 0000 2130 0000

2126 0 05 2232 2216 2232

2052 0 00 2001 0000 2230 2127 0 00 0000 0000 2226

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

2053 0 00 2001 0000 2231 2130 0 02 2227 2221 0000

2054 0 00 7761 0000 2240

2055 0 00 2232 0000 2235

2133 0 16 2134 2056 2103

2134 0 15 0000 2002 0000

2135 0 76 0000 2137 2002

2136 0 02 2001 2231 0000

2137 0 76 0000 2146 ' 2227

2140 0 72 0000 2223 0000

2141 0 00 0000 0000 0000

2142 1 32 0002 2141 7777

2143 0 01 2234 7761 2234

2144 0 00 2001 0000 2231

2145 0 00 2235 0000 2232

2146 0 01 2227 7761 2227

2147 0 56 0000 2055 2103

2150 0 00 0000 0000 0000

2151 0 00 0000 0000 0000

2152 0 76 0000 2161 0000

2153 0 72 0000 2223 0000

2154 0 00 0000 0000 0000

2155 1 32 0002 2154 7777

2156 0 00 2231 0000 2001

2157 0 00 0000 0000 0000

2160 0 00 0000 0000 0000

2161 0 72 0000 2223 0000

2162 0 00 0000 0000 0000

2163 1 32 0002 2162 7777

2164 0 56 0000 2130 0000

2165 0 02 2236 2231 0001

2166 0 03 0001 0000 0001

2167 0 56 2231 2151 2236

2170 0 72 0000 2223 0001

2171 0 00 0000 0000 0000

2172 0 03 0002 0000 0002

2173 0 01 0001 0002 0001

2174 1 32 0002 2171 777,7

2175 0 04 0001 2237 0001

2176 0 56 0000 2151 0000

2177 0 72 0000 2225 0000

2200 3 16 2161 0000 7777

2201 0 00 2231 0000 0001

2202 0 56 0000 2165 0000

2203 0 56 0000 2170 0000

2204 0 56 0000 2177 0000

2131 0 36 0000 2146 0000

2132 0 05 2232 2220 2235

2205 5 00 7777 0000 2241

2206 5 00 2241 0000 2241

2207 5 01 2241 0000 7777

2210 5 00 2241 0000 7777

2211 6 02 2241 2241 0002

2212 1 00 6220 7732 5042

2213 0 00 5006 2307 7730

2214 1 01 6000 0000 0000

2215 1 01 4000 0000 0000

2216 1 00 4000 0000 0000

2217 1 03 6000 0000 0000

2220 1 04 5000 0000 0000

2221 1 03 6000 0000 0000

2222 0 60 4000 0000 0000

2223 0 00 0243 0000 0000

2224 7 52 0000 0000 0224

2225 7 13 0234 0224 0234

2226 3 14 0064 0224 0225

2227 7 13 0234 0225 0234

2230 3 54 0114 0224 0225

2231 5 62 0225 7716 0226

2232 7 52 0211 0000 0150

2233 2 13 0000 0000 0001

2234 4 72 0001 0224 0232

2235 1 00 0001 0000 0227

2236 5 33 0227. 7716 0230

2237 3 36 0000 0243 0002

2240 6 33 0230 0223 0000

2241 2 76 0000 0243 0000

2242 2 41 0001 0226 0001

2243 3 14 0064 0226 0226

2244 3 14 0114 0227 0227

2245 2 76 0000 0236 0000

2246 7 72 0000 0232 0250

2247 3 53 0001 7777 7777

2250 0 00 0000 0000 0000

2251 6 33 0150 0232 0000

2252 3 76 0000 0231 0001

2253 7 16 0000 0254 0255

2254 0 72 0000 7521 0000

2255 0 00 0000 0000 0000

0 34 ,6514 3254 6230

ЛИТЕРАТУРА

1. Л. А. Р а с т р и г и II. Статистические методы поиска. М., «Наука», 1968.

2. В. В. Захаров, Н. М. Филипенко. Сравнение случайного поиска со схемой спуска на тестовых функциях. «Автоматика и вычислительная техника», 1972, № 1.

3. М. Schumer, К. Stei glitz. Adaptive step size random search. IEEE Trans. Automat. Control v. 13, № 3, 1968.

i Надоели баннеры? Вы всегда можете отключить рекламу.