Skip to content

Commit

Permalink
Added tests, updated doc
Browse files Browse the repository at this point in the history
  • Loading branch information
gnannicini committed Sep 24, 2018
1 parent ac884ec commit 9def169
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 3 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
2018-09-23 Giacomo Nannicini <nannicini@us.ibm.com>
* rbfopt_algorithm.py (update_log): changed log format.
* rbfopt_algorithm.py (RbfoptAlgorithm): constructor now accepts
do_init_strategy option.
* rbfopt_algorithm.py (restart): added distance check for
user-provided points.
* rbfopt_settings.py : added options max_cycles and
thresh_unlimited_refinement_stalled.

2018-08-29 Giacomo Nannicini <nannicini@us.ibm.com>
* rbfopt_algorithm.py (restoration_search_parallel): deleted.
* rbfopt_algorithm.py (optimize_parallel): solved bug in parallel
Expand Down
Binary file modified manual.pdf
Binary file not shown.
6 changes: 3 additions & 3 deletions src/rbfopt/rbfopt_algorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -1664,7 +1664,7 @@ def restart(self, pool=None):
Raises
------
ValueError
RuntimeError
If the routine does not find enough good initialization points.
"""
Expand Down Expand Up @@ -1833,8 +1833,8 @@ def restart(self, pool=None):
self.node_pos[(i+1):])))
self.update_log('Initialization', self.node_is_noisy[i], val, gap)
if (len(self.node_pos) < self.n + 1):
raise ValueError('Not enough initialization points; try ' +
'again with do_init_strategy=True.')
raise RuntimeError('Not enough initialization points; try ' +
'again with do_init_strategy=True.')
# -- end function

def restoration_search(self):
Expand Down
45 changes: 45 additions & 0 deletions tests/test_rbfopt_algorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -296,3 +296,48 @@ def test_prob03_fixed(self):
self.assertLessEqual(res[0], target, msg=msg)
# -- end function
# -- end class

class TestInitPoints(unittest.TestCase):
"""Test RbfoptAlgorithms when providing initial points."""

def test_distinct_init_points(self):
"""Verify that distinct points are accepted."""
bb = tf.TestBlackBox('branin')
optimum = bb._function.optimum_value
init_node_pos = [[0, 0], [1, 1], [0, 10], [5, 0]]
settings = RbfoptSettings(target_objval=optimum, max_iterations=10,
eps_opt=0.0, rand_seed=89123132)
alg = ra.RbfoptAlgorithm(settings, bb, init_node_pos=init_node_pos)
res = alg.optimize()
for node in init_node_pos:
self.assertIn(node, alg.all_node_pos,
msg='Initial point not found in all_node_pos')
# -- end function

def test_failed_init_points(self):
"""Verify that not enough points raises an error."""
bb = tf.TestBlackBox('branin')
optimum = bb._function.optimum_value
init_node_pos = [[0, 0], [1, 1], [0, 10], [5, 0]]
settings = RbfoptSettings(target_objval=optimum, max_iterations=10,
eps_opt=0.0)
alg = ra.RbfoptAlgorithm(settings, bb, init_node_pos=init_node_pos,
do_init_strategy=False)
res = alg.optimize()
for node in init_node_pos:
self.assertIn(node, alg.all_node_pos[:4],
msg='Initial point not found in all_node_pos')
# -- end function

def test_duplicate_init_points(self):
"""Verify that duplicate points are removed."""
bb = tf.TestBlackBox('branin')
optimum = bb._function.optimum_value
init_node_pos = [[0, 0], [1, 1], [0, 1.0e-12]]
settings = RbfoptSettings(target_objval=optimum, max_iterations=10,
eps_opt=0.0)
alg = ra.RbfoptAlgorithm(settings, bb, init_node_pos=init_node_pos,
do_init_strategy=False)
self.assertRaises(RuntimeError, alg.optimize)
# -- end function
# -- end class

0 comments on commit 9def169

Please sign in to comment.