def test_nearest_neighbor_rbf_options(self): import numpy as np import openmdao.api as om prob = om.Problem() prob.model.add_subsystem('p', om.IndepVarComp('x', 2.1)) sin_mm = om.MetaModelUnStructuredComp() sin_mm.add_input('x', 0.) sin_mm.add_output('f_x', 0., surrogate=om.NearestNeighbor(interpolant_type='rbf', num_neighbors=3)) prob.model.add_subsystem('sin_mm', sin_mm) prob.model.connect('p.x', 'sin_mm.x') prob.setup(check=True) # train the surrogate and check predicted value sin_mm.options['train:x'] = np.linspace(0, 10, 20) sin_mm.options['train:f_x'] = .5 * np.sin(sin_mm.options['train:x']) prob['sin_mm.x'] = 2.1 prob.run_model() assert_near_equal(prob['sin_mm.f_x'], .5 * np.sin(prob['sin_mm.x']), 5e-3)
def test_nearest_neighbor_rbf_options(self): prob = om.Problem() sin_mm = om.MetaModelUnStructuredComp() sin_mm.add_input('x', 2.1) sin_mm.add_output('f_x', 0., surrogate=om.NearestNeighbor(interpolant_type='rbf', num_neighbors=3)) prob.model.add_subsystem('sin_mm', sin_mm) prob.setup(check=True) # train the surrogate and check predicted value sin_mm.options['train_x'] = np.linspace(0, 10, 20) sin_mm.options['train_f_x'] = .5 * np.sin(sin_mm.options['train_x']) prob.set_val('sin_mm.x', 2.1) prob.run_model() assert_near_equal(prob.get_val('sin_mm.f_x'), .5 * np.sin(prob.get_val('sin_mm.x')), 5e-3)
def setup(self): surrogate = om.NearestNeighbor() self.add_output('sin_x', 0., surrogate=surrogate, training_data=.5 * np.sin(np.linspace(0, 10, 20)))
def test_nearest_neighbor(self): import numpy as np import openmdao.api as om prob = om.Problem() sin_mm = om.MetaModelUnStructuredComp() sin_mm.add_input('x', 2.1) sin_mm.add_output( 'f_x', 0., surrogate=om.NearestNeighbor(interpolant_type='linear')) prob.model.add_subsystem('sin_mm', sin_mm) prob.setup(check=True) # train the surrogate and check predicted value sin_mm.options['train:x'] = np.linspace(0, 10, 20) sin_mm.options['train:f_x'] = .5 * np.sin(sin_mm.options['train:x']) prob.set_val('sin_mm.x', 2.1) prob.run_model() assert_near_equal(prob.get_val('sin_mm.f_x'), .5 * np.sin(prob.get_val('sin_mm.x')), 2e-3)