def test_default_surrogate_change(self): metamodel = MetaModel() mmins = set(metamodel.list_inputs()) mmouts = set(metamodel.list_outputs()) metamodel.default_surrogate = KrigingSurrogate() metamodel.model = Simple() metamodel.default_surrogate = LogisticRegression() attrs = metamodel.get_attributes(io_only=False) for s in attrs['Slots']: self.assertNotEqual(s['name'], 'c') self.assertNotEqual(s['name'], 'd') inputs = set(metamodel.list_inputs()) outputs = set(metamodel.list_outputs()) self.assertEquals(inputs - mmins, set(['a', 'b'])) self.assertEquals(outputs - mmouts, set(['c', 'd'])) for i in range(3): metamodel.train_next = True metamodel.run() self.assertTrue(len(metamodel._training_data['c']) == 3) self.assertTrue(len(metamodel._training_data['d']) == 3) self.assertTrue(len(metamodel._training_input_history) == 3) metamodel.includes = ['a', 'b', 'c', 'd'] self.assertTrue(len(metamodel._training_data['c']) == 3) self.assertTrue(len(metamodel._training_data['d']) == 3) self.assertTrue(len(metamodel._training_input_history) == 3) # removing an output should not clobber the rest of the training data metamodel.includes = ['a', 'b', 'c'] self.assertTrue(len(metamodel._training_data['c']) == 3) self.assertTrue('d' not in metamodel._training_data) self.assertTrue(len(metamodel._training_input_history) == 3) # now put a different model in with the same inputs/outputs metamodel.model = SimpleMatch() metamodel.includes = ['a', 'b', 'c', 'd'] inputs = set(metamodel.list_inputs()) outputs = set(metamodel.list_outputs()) self.assertEquals(inputs - mmins, set(['a', 'b'])) self.assertEquals(outputs - mmouts, set(['c', 'd'])) self.assertTrue(len(metamodel._training_data['c']) == 0) self.assertTrue(len(metamodel._training_data['d']) == 0) self.assertTrue(len(metamodel._training_input_history) == 0) # now put a different model in metamodel.model = Simple2() metamodel.includes = ['w', 'x', 'y', 'z'] inputs = set(metamodel.list_inputs()) outputs = set(metamodel.list_outputs()) self.assertEquals(inputs - mmins, set(['w', 'x'])) self.assertEquals(outputs - mmouts, set(['y', 'z']))
def test_default_surrogate_change(self): metamodel = MetaModel() mmins = set(metamodel.list_inputs()) mmouts = set(metamodel.list_outputs()) metamodel.default_surrogate = KrigingSurrogate() metamodel.model = Simple() metamodel.default_surrogate = LogisticRegression() attrs = metamodel.get_attributes(io_only=False) for s in attrs['Slots']: self.assertNotEqual(s['name'], 'c') self.assertNotEqual(s['name'], 'd') inputs = set(metamodel.list_inputs()) outputs = set(metamodel.list_outputs()) self.assertEquals(inputs-mmins, set(['a','b'])) self.assertEquals(outputs-mmouts, set(['c','d'])) for i in range(3): metamodel.train_next = True metamodel.run() self.assertTrue(len(metamodel._training_data['c']) == 3) self.assertTrue(len(metamodel._training_data['d']) == 3) self.assertTrue(len(metamodel._training_input_history) == 3) metamodel.includes = ['a','b','c','d'] self.assertTrue(len(metamodel._training_data['c']) == 3) self.assertTrue(len(metamodel._training_data['d']) == 3) self.assertTrue(len(metamodel._training_input_history) == 3) # removing an output should not clobber the rest of the training data metamodel.includes = ['a','b','c'] self.assertTrue(len(metamodel._training_data['c']) == 3) self.assertTrue('d' not in metamodel._training_data) self.assertTrue(len(metamodel._training_input_history) == 3) # now put a different model in with the same inputs/outputs metamodel.model = SimpleMatch() metamodel.includes = ['a','b','c','d'] inputs = set(metamodel.list_inputs()) outputs = set(metamodel.list_outputs()) self.assertEquals(inputs-mmins, set(['a','b'])) self.assertEquals(outputs-mmouts, set(['c', 'd'])) self.assertTrue(len(metamodel._training_data['c']) == 0) self.assertTrue(len(metamodel._training_data['d']) == 0) self.assertTrue(len(metamodel._training_input_history) == 0) # now put a different model in metamodel.model = Simple2() metamodel.includes = ['w','x','y','z'] inputs = set(metamodel.list_inputs()) outputs = set(metamodel.list_outputs()) self.assertEquals(inputs-mmins, set(['w','x'])) self.assertEquals(outputs-mmouts, set(['y','z']))
def test_default_execute(self): metamodel = MetaModel() metamodel.name = 'meta' metamodel.default_surrogate = KrigingSurrogate() metamodel.model = Simple() metamodel.recorder = DumbRecorder() simple = Simple() #import pdb; pdb.set_trace() metamodel.a = simple.a = 1. metamodel.b = simple.b = 2. metamodel.train_next = True simple.run() metamodel.run() metamodel.a = simple.a = 1. metamodel.b = simple.b = 2. metamodel.train_next = True simple.run() metamodel.run() self.assertEqual(metamodel.c.getvalue(), 3.) self.assertEqual(metamodel.d.getvalue(), -1.) self.assertEqual(metamodel.c.getvalue(), simple.c) self.assertEqual(metamodel.d.getvalue(), simple.d)
def test_default_execute(self): metamodel = MetaModel() metamodel.name = 'meta' metamodel.default_surrogate = KrigingSurrogate() metamodel.model = Simple() metamodel.recorder = DumbRecorder() simple = Simple() #import pdb; pdb.set_trace() metamodel.a = simple.a = 1. metamodel.b = simple.b = 2. metamodel.train_next = True simple.run() metamodel.run() metamodel.a = simple.a = 1. metamodel.b = simple.b = 2. metamodel.train_next = True simple.run() metamodel.run() self.assertEqual(metamodel.c.getvalue(), 3.) self.assertEqual(metamodel.d.getvalue(), -1.) self.assertEqual(metamodel.c.getvalue(), simple.c) self.assertEqual(metamodel.d.getvalue(), simple.d)
def test_warm_start(self): metamodel = MetaModel() metamodel.name = 'meta' metamodel.default_surrogate = KrigingSurrogate() metamodel.model = Simple() metamodel.recorder = DumbRecorder() simple = Simple() cases = [] metamodel.a = 1. metamodel.b = 2. metamodel.train_next = True metamodel.run() inputs = [('meta2.a', metamodel.a), ('meta2.b', metamodel.b)] outputs = [('meta2.c', metamodel.c.mu), ('meta2.d', metamodel.d.mu)] cases.append(Case(inputs=inputs, outputs=outputs)) metamodel.a = 3. metamodel.b = 5. metamodel.train_next = True metamodel.run() inputs = [('meta2.a', metamodel.a), ('meta2.b', metamodel.b)] outputs = [('meta2.c', metamodel.c.mu), ('meta2.d', metamodel.d.mu)] cases.append(Case(inputs=inputs, outputs=outputs)) case_iter = ListCaseIterator(cases) metamodel2 = MetaModel() metamodel2.name = 'meta2' metamodel2.default_surrogate = KrigingSurrogate() metamodel2.model = Simple() metamodel2.recorder = DumbRecorder() metamodel2.warm_start_data = case_iter metamodel2.a = simple.a = 1 metamodel2.b = simple.b = 2 metamodel.train_next = True metamodel2.run() simple.run() self.assertEqual(metamodel2.c.getvalue(), 3.) self.assertEqual(metamodel2.d.getvalue(), -1.) self.assertEqual(metamodel2.c.getvalue(), simple.c) self.assertEqual(metamodel2.d.getvalue(), simple.d)
def test_warm_start(self): metamodel = MetaModel() metamodel.name = 'meta' metamodel.default_surrogate = KrigingSurrogate() metamodel.model = Simple() metamodel.recorder = DumbRecorder() simple = Simple() cases = [] metamodel.a = 1. metamodel.b = 2. metamodel.train_next = True metamodel.run() inputs = [('meta2.a',metamodel.a),('meta2.b',metamodel.b)] outputs = [('meta2.c',metamodel.c.mu),('meta2.d',metamodel.d.mu)] cases.append(Case(inputs=inputs,outputs=outputs)) metamodel.a = 3. metamodel.b = 5. metamodel.train_next = True metamodel.run() inputs = [('meta2.a',metamodel.a),('meta2.b',metamodel.b)] outputs = [('meta2.c',metamodel.c.mu),('meta2.d',metamodel.d.mu)] cases.append(Case(inputs=inputs,outputs=outputs)) case_iter = ListCaseIterator(cases) metamodel2 = MetaModel() metamodel2.name = 'meta2' metamodel2.default_surrogate = KrigingSurrogate() metamodel2.model = Simple() metamodel2.recorder = DumbRecorder() metamodel2.warm_start_data = case_iter metamodel2.a = simple.a = 1 metamodel2.b = simple.b = 2 metamodel.train_next = True metamodel2.run() simple.run() self.assertEqual(metamodel2.c.getvalue(), 3.) self.assertEqual(metamodel2.d.getvalue(), -1.) self.assertEqual(metamodel2.c.getvalue(), simple.c) self.assertEqual(metamodel2.d.getvalue(), simple.d)
def test_proxy(self): meta = MetaModel() meta.default_surrogate = KrigingSurrogate() meta.model = SimpleProxy() for i in range(3): meta.train_next = True meta.run() self.assertEqual(len(meta._training_data['f_x']), 3)
def test_proxy(self): meta = MetaModel() meta.default_surrogate = KrigingSurrogate() meta.model = SimpleProxy() for i in range(3): meta.train_next = True meta.run() self.assertEqual(len(meta._training_data['f_x']), 3)