Exemple #1
0
    def test_subreuse(self):
            mbounds = ((0, 1), (-1, 0))

            env = testenvs.RandomEnv(mbounds)

            reuse_cfg                  = explorers.SubReuseExplorer.defcfg._deepcopy()
            reuse_cfg.m_channels       = env.m_channels
            reuse_cfg.reuse.s_channels = env.s_channels
            reuse_cfg.reuse.algorithm  = 'random'
            reuse_cfg.reuse.res        = 10
            reuse_cfg._strict(True)


            dataset = {'m_channels'  : [env.m_channels[0]],
                       's_channels'  : env.s_channels,
                       'explorations': []}
            orders  = []
            for _ in range(100):
                m = tools.random_signal(reuse_cfg.m_channels)
                m.pop(env.m_channels[1].name)
                s = tools.random_signal(reuse_cfg.reuse.s_channels)
                dataset['explorations'].append(({'m_signal': m}, {'s_signal': s}))
                orders.append(m)

            reuse_explorer = explorers.SubReuseExplorer(reuse_cfg, [dataset])

            for _ in range(100):
                order = reuse_explorer.explore()
                order['m_signal'].pop(env.m_channels[1].name)
                self.assertTrue(order['m_signal'] in orders)

            self.assertEqual(reuse_explorer.explore(), None)
Exemple #2
0
    def test_reuseexp_random2(self):
        mbounds = ((0, 1), (-1, 0))

        env = testenvs.RandomEnv(mbounds)

        reuse_cfg                  = explorers.ReuseExplorer.defcfg._deepcopy()
        reuse_cfg.m_channels       = env.m_channels
        reuse_cfg.reuse.s_channels = env.s_channels
        reuse_cfg.reuse.algorithm  = 'sensor_uniform'
        reuse_cfg.reuse.res        = 10
        reuse_cfg._strict(True)

        dataset = {'m_channels'  : env.m_channels,
                   's_channels'  : env.s_channels,
                   'explorations': []}
        orders  = []
        for _ in range(1000):
            m = tools.random_signal(reuse_cfg.m_channels)
            s = tools.random_signal(reuse_cfg.reuse.s_channels)
            dataset['explorations'].append(({'m_signal': m}, {'s_signal': s}))
            orders.append(m)


        reuse_explorer = explorers.ReuseExplorer(reuse_cfg, [dataset])

        for _ in range(100):
            order = reuse_explorer.explore()
            self.assertTrue(order['m_signal'] in orders)
Exemple #3
0
    def test_subreuse(self):
        mbounds = ((0, 1), (-1, 0))

        env = testenvs.RandomEnv(mbounds)

        reuse_cfg = explorers.SubReuseExplorer.defcfg._deepcopy()
        reuse_cfg.m_channels = env.m_channels
        reuse_cfg.reuse.s_channels = env.s_channels
        reuse_cfg.reuse.algorithm = 'random'
        reuse_cfg.reuse.res = 10
        reuse_cfg._strict(True)

        dataset = {
            'm_channels': [env.m_channels[0]],
            's_channels': env.s_channels,
            'explorations': []
        }
        orders = []
        for _ in range(100):
            m = tools.random_signal(reuse_cfg.m_channels)
            m.pop(env.m_channels[1].name)
            s = tools.random_signal(reuse_cfg.reuse.s_channels)
            dataset['explorations'].append(({'m_signal': m}, {'s_signal': s}))
            orders.append(m)

        reuse_explorer = explorers.SubReuseExplorer(reuse_cfg, [dataset])

        for _ in range(100):
            order = reuse_explorer.explore()
            order['m_signal'].pop(env.m_channels[1].name)
            self.assertTrue(order['m_signal'] in orders)

        self.assertEqual(reuse_explorer.explore(), None)
Exemple #4
0
    def test_reuse_simple(self):
        m_channels = (Channel('a', (0, 1)), Channel('b', (-1, 0)))
        s_channels = (Channel('x', (4, 9)),)

        dataset = {'m_channels'  : m_channels,
                   's_channels'  : s_channels,
                   'explorations': []}
        orders  = []
        for _ in range(1000):
            m = tools.random_signal(m_channels)
            s = tools.random_signal(s_channels)
            dataset['explorations'].append(({'m_signal': m}, {'s_signal': s}))
            orders.append(m)

        reuse_cfg = reuse.s_reusegen.RandomReuse.defcfg._deepcopy()
        rndreuse = reuse.s_reusegen.RandomReuse(reuse_cfg, dataset)

        self.assertEqual(len(rndreuse), 1000)

        c = 0
        for mc in rndreuse:
            c += 1
            self.assertTrue(mc in orders)

        self.assertEqual(c, 1000)
        self.assertEqual(len(rndreuse), 0)
Exemple #5
0
    def test_reuseexp_random2(self):
        mbounds = ((0, 1), (-1, 0))

        env = testenvs.RandomEnv(mbounds)

        reuse_cfg = explorers.ReuseExplorer.defcfg._deepcopy()
        reuse_cfg.m_channels = env.m_channels
        reuse_cfg.reuse.s_channels = env.s_channels
        reuse_cfg.reuse.algorithm = 'sensor_uniform'
        reuse_cfg.reuse.res = 10
        reuse_cfg._strict(True)

        dataset = {
            'm_channels': env.m_channels,
            's_channels': env.s_channels,
            'explorations': []
        }
        orders = []
        for _ in range(1000):
            m = tools.random_signal(reuse_cfg.m_channels)
            s = tools.random_signal(reuse_cfg.reuse.s_channels)
            dataset['explorations'].append(({'m_signal': m}, {'s_signal': s}))
            orders.append(m)

        reuse_explorer = explorers.ReuseExplorer(reuse_cfg, [dataset])

        for _ in range(100):
            order = reuse_explorer.explore()
            self.assertTrue(order['m_signal'] in orders)
Exemple #6
0
    def test_im(self):

        mbounds = ((23, 34), (-3, -2))
        sbounds = ((0, 1), (-1, -0), (101, 1001))
        env = testenvs.BoundedRandomEnv(mbounds, sbounds)
        exp_cfg = explorers.IMExplorer.defcfg._deepcopy()
        exp_cfg.m_channels = env.m_channels
        exp_cfg.s_channels = env.s_channels
        exp_cfg.learner = learners.RandomLearner.defcfg._deepcopy()
        exp_cfg.res = 100

        for im_name in ['explorers.LocalInterestModel',
                        'explorers.PredictiveNoveltyMotivation',
                        'explorers.IntermediateLevelOfNoveltyMotivation',
                       ]:
            exp_cfg.lim.classname = im_name

            exp = explorers.IMExplorer(exp_cfg)

            for _ in range(10):
                m_signal = tools.random_signal(env.m_channels)
                feedback = env.execute(m_signal)
                exp.receive({'m_signal': m_signal, 'uuid': exp.cfg.uuid}, feedback)

            for _ in range(100):
                exploration = exp.explore()
                self.assertTrue(all(c.bounds[0] <= exploration['m_signal'][c.name] <= c.bounds[1] for c in env.m_channels))
                feedback = env.execute(exploration['m_signal'])
                exp.receive(exploration, feedback)
Exemple #7
0
    def test_im(self):

        mbounds = ((23, 34), (-3, -2))
        sbounds = ((0, 1), (-1, -0), (101, 1001))
        env = testenvs.BoundedRandomEnv(mbounds, sbounds)
        exp_cfg = explorers.IMExplorer.defcfg._deepcopy()
        exp_cfg.m_channels = env.m_channels
        exp_cfg.s_channels = env.s_channels
        exp_cfg.learner = learners.RandomLearner.defcfg._deepcopy()
        exp_cfg.res = 100

        for im_name in [
                'explorers.LocalInterestModel',
                'explorers.PredictiveNoveltyMotivation',
                'explorers.IntermediateLevelOfNoveltyMotivation',
        ]:
            exp_cfg.lim.classname = im_name

            exp = explorers.IMExplorer(exp_cfg)

            for _ in range(10):
                m_signal = tools.random_signal(env.m_channels)
                feedback = env.execute(m_signal)
                exp.receive({
                    'm_signal': m_signal,
                    'uuid': exp.cfg.uuid
                }, feedback)

            for _ in range(100):
                exploration = exp.explore()
                self.assertTrue(
                    all(c.bounds[0] <= exploration['m_signal'][c.name] <=
                        c.bounds[1] for c in env.m_channels))
                feedback = env.execute(exploration['m_signal'])
                exp.receive(exploration, feedback)
Exemple #8
0
    def test_multi_random(self):
        mbounds = ((0, 1), (-1, 0))

        env = testenvs.RandomEnv(mbounds)

        reuse_cfg = explorers.MultiReuseExplorer.defcfg._deepcopy()
        reuse_cfg.m_channels = env.m_channels
        reuse_cfg.s_channels = env.m_channels
        reuse_cfg.reuse.s_channels = env.s_channels
        reuse_cfg.reuse.algorithm = 'random'
        reuse_cfg.reuse.res = 10
        reuse_cfg.pick_algorithm = 'diversity'
        reuse_cfg.res = 10
        reuse_cfg._strict(True)

        datasets = []
        orders = []
        for _ in range(5):
            dataset = {
                'm_channels': env.m_channels,
                's_channels': env.s_channels,
                'explorations': []
            }
            for _ in range(100):
                m = tools.random_signal(reuse_cfg.m_channels)
                s = tools.random_signal(reuse_cfg.reuse.s_channels)
                dataset['explorations'].append(({
                    'm_signal': m
                }, {
                    's_signal': s
                }))
                orders.append(m)

            datasets.append(dataset)

        reuse_explorer = explorers.MultiReuseExplorer(reuse_cfg, datasets)

        for _ in range(500):
            order = reuse_explorer.explore()
            self.assertTrue(order['m_signal'] in orders)

        self.assertEqual(reuse_explorer.explore(), None)
Exemple #9
0
    def test_multi_random(self):
        mbounds = ((0, 1), (-1, 0))

        env = testenvs.RandomEnv(mbounds)

        reuse_cfg                  = explorers.MultiReuseExplorer.defcfg._deepcopy()
        reuse_cfg.m_channels       = env.m_channels
        reuse_cfg.s_channels       = env.m_channels
        reuse_cfg.reuse.s_channels = env.s_channels
        reuse_cfg.reuse.algorithm  = 'random'
        reuse_cfg.reuse.res        = 10
        reuse_cfg.pick_algorithm   = 'diversity'
        reuse_cfg.res              = 10
        reuse_cfg._strict(True)

        datasets = []
        orders  = []
        for _ in range(5):
            dataset = {'m_channels'  : env.m_channels,
                       's_channels'  : env.s_channels,
                       'explorations': []}
            for _ in range(100):
                m = tools.random_signal(reuse_cfg.m_channels)
                s = tools.random_signal(reuse_cfg.reuse.s_channels)
                dataset['explorations'].append(({'m_signal': m}, {'s_signal': s}))
                orders.append(m)

            datasets.append(dataset)


        reuse_explorer = explorers.MultiReuseExplorer(reuse_cfg, datasets)

        for _ in range(500):
            order = reuse_explorer.explore()
            self.assertTrue(order['m_signal'] in orders)

        self.assertEqual(reuse_explorer.explore(), None)
Exemple #10
0
 def _execute(self, m_signal, meta=None):
     return tools.random_signal(self.s_channels)
Exemple #11
0
 def _execute(self, m_signal, meta=None):
     return tools.random_signal(self.s_channels)