Skip to content

Commit 1858d07

Browse files
committed
[estimate] add bounds. Hopefully fixes #81
1 parent a059152 commit 1858d07

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

smcpp/commands/command.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ def add_common_estimation_args(parser):
8484
default=smcpp.defaults.xtol,
8585
help=r"x tolerance for optimizer. "
8686
"optimizer will stop when |x' - x|_\infty < xtol")
87+
optimizer.add_argument('--Nmax', type=float,
88+
default=smcpp.defaults.maximum_population_size,
89+
help="upper bound on scaled effective population size")
90+
optimizer.add_argument('--Nmin', type=float,
91+
default=smcpp.defaults.minimum_population_size,
92+
help="lower bound on scaled effective population size")
8793
optimizer.add_argument('--regularization-penalty', '-rp',
8894
type=float, help="regularization penalty",
8995
default=smcpp.defaults.regularization_penalty)

smcpp/defaults.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
maximum = 1e4
99
t1 = None
1010
tK = None
11-
regularization_degree = 1
11+
regularization_degree = 2
1212
spline = "piecewise"
1313
cores = None
1414
perplexity_threshold = .5
15+
minimum_population_size = 1e-3
16+
maximum_population_size = 1e3

smcpp/model.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,11 @@ def f(x):
187187
self[:] = res.x
188188

189189
def stepwise_values(self):
190-
return self(np.cumsum(self.s))
190+
ret = np.clip(self(np.cumsum(self.s)),
191+
smcpp.defaults.minimum_population_size,
192+
smcpp.defaults.maximum_population_size)
193+
# logger.debug("self[:]: %s\ns: %s\nstep(): %s", self[:], self.s, ret)
194+
return ret
191195

192196
def reset(self):
193197
self[:] = 0.

0 commit comments

Comments
 (0)