Skip to content

Commit 4e85bcc

Browse files
committed
Shrink step length for each resampling iteration
1 parent 286c8b2 commit 4e85bcc

4 files changed

Lines changed: 10 additions & 5 deletions

File tree

popt/update_schemes/enopt.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,13 @@ def calc_update(self):
172172
improvement = False
173173
success = False
174174
resampling_iter = 0
175+
self.optimizer.restore_parameters()
175176

176177
while not improvement: # resampling loop
177178

178-
# Shrink covariance each time we try resampling
179+
# Shrink covariance and step size each time we try resampling
179180
shrink = self.cov_factor ** resampling_iter
181+
self.optimizer.apply_backtracking(np.sqrt(self.cov_factor)** resampling_iter)
180182

181183
# Calculate gradient
182184
if self.nesterov:

popt/update_schemes/genopt.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ def calc_update(self):
138138
improvement = False
139139
success = False
140140
resampling_iter = 0
141+
self.optimizer.restore_parameters()
141142

142143
while improvement is False: # resampling loop
143144

popt/update_schemes/smcopt.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,13 @@ def calc_update(self,):
126126
success = False
127127
resampling_iter = 0
128128
inflate = 2 * (self.inflation_factor + self.iteration)
129+
self.optimizer.restore_parameters()
129130

130131
while improvement is False: # resampling loop
131132

132-
# Shrink covariance each time we try resampling
133+
# Shrink covariance and step size each time we try resampling
133134
shrink = self.cov_factor ** resampling_iter
135+
self.optimizer.apply_backtracking(np.sqrt(self.cov_factor) ** resampling_iter)
134136

135137
# Calc sensitivity
136138
(sens_matrix, self.best_state, best_func_tmp) = self.sens(self.mean_state, inflate,

popt/update_schemes/subroutines/optimizers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,12 @@ def apply_smc_update(self, control, gradient, **kwargs):
124124
new_control = (1-alpha) * control + alpha * gradient
125125
return new_control
126126

127-
def apply_backtracking(self):
127+
def apply_backtracking(self, shrink=0.5):
128128
"""
129129
Apply backtracking by reducing step size and momentum temporarily.
130130
"""
131-
self._step_size = 0.5*self._step_size
132-
self._momentum = 0.5*self._momentum
131+
self._step_size = shrink*self._step_size
132+
self._momentum = shrink*self._momentum
133133

134134
def restore_parameters(self):
135135
"""

0 commit comments

Comments
 (0)