|
Input: Initial parameter configurations . |
|
Input: # chains N, # follow-up moves C, max # of iterations without score increment before stopping S. |
|
Input: Max # consecutive mode-break moves R, # top modes disregarded in move-break moves D. |
|
Input: Split and merge move parameters Q, f, t. |
|
Input: Mixing ratios: local shotgun graph moves to local ξ-moves g, local ξ-moves to split moves h. |
1 |
|
2 |
for
i ← 1 to N
do
|
3 |
|
% Select the initial configuration for the i-th search chain
|
4 |
if
i ≤ I
then
|
5 |
|
|
6 |
else |
7 |
|
d ~ Multinomial(1, exp(last_best_score[1:I])) |
8 |
|
9 |
|
10 |
% Start the i-th run of stochastic search
|
11 |
k ← 0, c ← 0, last_best_score[i] ← −∞ |
12 |
while
c < S
do
|
13 |
|
% Local moves
|
14 |
while
c < C
do
|
15 |
|
if
g * k is an integer
then
|
16 |
|
Perform local update moves on ξ1, …, ξn
|
17 |
Perform the merge move with tuning parameters (f, t) |
18 |
if
g * h * k is an integer
then
|
19 |
|
Perform the split move with tuning parameters (f, t) |
20 |
else |
21 |
|
Perform local shotgun update moves on
|
22 |
|
23 |
if
score > last_best_score
then
c ← 0 |
24 |
else
c ← c + 1 |
25 |
|
26 |
% Move break moves
|
27 |
r ← 1, B ← 1 |
28 |
while
c ≥ C and r ≤ R
do
|
29 |
|
Perform a mode break move with tuning parameters (B, D) |
30 |
for
j ← 1 to C
do
|
31 |
|
Perform local shotgun update moves on
|
32 |
|
33 |
if
score > last_best_score
then
c ← 0 |
34 |
else
c ← c + C, r ← r + 1, B ← B + 1 |
35 |
|
36 |
% Global graph jump move
|
37 |
if
r > R
then
|
38 |
|
l ~ uniform{1, …, L} |
39 |
Perform a global jump move on
|
40 |
c ← 0 |
41 |
|
42 |
k ← k + 1 |
43 |
if
score > last_best_score[i]
then
last_best_score[i] = score,
|
44 |
|
45 |
return
|