def test_orderbias(): """Test orderbias methods""" cfg = treedict.TreeDict() cfg.s_areas = (((0.0, 10.0), ), ((10.0, 20.0), ), ((20.0, 30.0), )) se = StaticExplorer((1, ), cfg=cfg) dataset = [] for i in xrange(6): goal = (5.0, ) effect = (float(i), ) order = effect se.add_effect(effect, goal=goal) dataset.append((order, effect)) for i in xrange(6): goal = (15.0, ) effect = (10.0 + float(i) / 2, ) order = effect se.add_effect(effect, goal=goal) dataset.append((order, effect)) for i in xrange(6): goal = (25.0, ) effect = (25.0, ) order = effect se.add_effect(effect, goal=goal) dataset.append((order, effect)) ob = bias.IMBias(se, dataset) #print ", ".join(str(int(x[0])) for x in ob.order_bias) return True
def config_test(key): cfg = treedict.TreeDict() cfg.exp.expname = key[1] cfg.exp.key = key cfg.exp.stage = 'primary' if key[0] == names.kPrimaryTest else 'secondary' cfg.test.res = 20 cfg.test.freq = 100 cfg.test.max = 10001 seed = random.randint(0, sys.maxint) cfg.hardware.seed.test = seed datakey = (names.kPrimaryData if key[0] == names.kPrimaryTest else names.kSecondaryData, ) + key[1:] cfg.hardware.datafile = names.key2jobname(datakey) datacfg = datafile.load_config(cfg.hardware.datafile) cfg.test.fixed_dim = None if datacfg.sim.sensors == 'toy': cfg.test.fixed_dim = [None, None, 1.0] cfg.hardware.testfile = names.key2jobname(key) cfg.hardware.configfile = names.key2jobname(key) + '.cfg' jobgraph.add_job(cfg.hardware.testfile, cfg, [cfg.hardware.datafile]) return cfg
def __init__(self): self.s_feats = range(10) self.s_bounds = tuple((i+0.0, i+1.0) for i in range(10)) self.m_feats = range(-1, 0) self.m_bounds = ((0.0, 1.0),) self.cfg = treedict.TreeDict() self.cfg.verbose = False
def test_gridbias(): """Test basic methods of GridBias""" cfg = treedict.TreeDict() cfg.s_bounds = ((0.0, 1.0), (0.0, 1.0)) cfg.s_res = (10, 10) ge = grid.GridExplorer((0, 1), cfg=cfg) dataset = [] for _ in xrange(1000): effect = (random.random(), random.random()) goal = (random.random(), random.random()) prediction = (random.random(), random.random()) ge.add_effect(effect, goal=goal, prediction=prediction) order = (random.random(), ) * 6 dataset.append((order, effect)) ob = bias.IMBias(ge, dataset) gb = bias.GridBias(ob, (0, 1), cfg=cfg) gb.setup(10) for _ in xrange(1000): effect = (random.random(), random.random()) goal = (random.random(), random.random()) prediction = (random.random(), random.random()) ge.add_effect(effect, goal=goal, prediction=prediction) ge.next_goal() return True
def test_belongs(): """Test if filtered values are correctly recognized""" cfg = treedict.TreeDict() cfg.effect.s_bounds = ((-1.0, 1.0),) cfg.effect.s_res = (10,) goalexplorer = effect.GridExplorer((1.0,), cfg = cfg) goalexplorer = effect.EffectFilter(goalexplorer, (((0.0, 0.0),),)) return goalexplorer._in_filtered_values((0.0,)) and not goalexplorer._in_filtered_values((1.0,))
def test1(): """Basic instanciation of BoundedRandomExplorer""" cfg = treedict.TreeDict() cfg.effect.s_bounds = ((-1, 1), (0, 10)) bre = BoundedRandomExplorer((0, 1), cfg=cfg) for i in range(10): g = bre.next_goal() bre.add_effect(g, g) return True
def test1(): """Basic instanciation of StaticExplorer""" cfg = treedict.TreeDict() cfg.s_areas = (((-1, 1), (0, 10)),) se = StaticExplorer((0, 1), cfg = cfg) for i in range(10): g = se.next_goal() se.add_effect(g, g) return True
def compile_primary(expname): datafile.update() prim_names = datafile.prim_test_available() prim_cfgs = [[] for _ in range(10)] for filename in prim_names: cat, file_expname, primid, rep = names.name2key(filename) if file_expname == expname: prim_cfgs[primid].append(filename) prim_cfgs = [sorted(filenames) for filenames in prim_cfgs] testset, results = perf(prim_cfgs) cfg = treedict.TreeDict() cfg.hardware.resultsfile = names.r_pname(names.kPrimaryResults, expname) exp.save_results(cfg, time.time(), testset, results)
def test_qsub_options(): """Test if qsub option are correctly handled""" check = True cfg = treedict.TreeDict() cfg.qsub.resources.mem = '16gb' node = missing.DependencyNode('bla', cfg) check *= node.qsub_options() == ' -l mem=16gb ' cfg.qsub.resources.walltime = '5:00:00' node = missing.DependencyNode('bla', cfg) check *= node.qsub_options() == ' -l mem=16gb,walltime=5:00:00 ' return check
def test1(): """Basic instanciation of Guide""" cfg = treedict.TreeDict() g = guide.Guide((-1,), (1,), ((-10.0, 10.0),), cfg) def f(x): return (2*x[0]**1.5,) for _ in range(20): action = g.next_action() if action[0] == 'goal': break return True
def load_config(filename, configdir=paths.configdir): if filename[-4:] != '.cfg': filename = filename + '.cfg' filepath = os.path.join(configdir, filename) filepath = os.path.expanduser(filepath) with open(filepath, 'r') as f: s = f.read() d = {} for line in s.split('\n'): key, value = line.split('=') key = key.strip() value = eval(value.strip(), {}, {}) d[key] = value return treedict.TreeDict().fromdict(d)
def compile_secondary(primname, source, expname): datafile.update() sec_names = datafile.sec_test_available() sec_cfgs = [[] for _ in range(10)] for filename in sec_names: cat, file_primname, primid, file_secname, secid, rep = names.name2key( filename) if file_primname == primname and file_secname == expname and primid == source: sec_cfgs[secid].append(filename) sec_cfgs = [sorted(filenames) for filenames in sec_cfgs] testset, sec_results = perf(sec_cfgs) cfg = treedict.TreeDict() cfg.hardware.resultsfile = names.r_sname(names.kSecondaryResults, primname, source, expname) exp.save_results(cfg, time.time(), testset, sec_results)
def test2(): """Basic instanciation of Guide with a GridExplorer""" cfg = treedict.TreeDict() cfg.effect.s_bounds = ((-64, 64),) cfg.effect.s_res = (25,) goalexplorer = effect.GridExplorer((1, ), cfg) g = guide.Guide((-1,), (1,), ((-10.0, 10.0),), cfg, goalexplorer = goalexplorer) def f(x): return (2*x[0]**1.5,) for _ in range(20): action = g.next_action() if action[0] == 'goal': break return True
def test1(): """Check basic cell behavior""" cfg = treedict.TreeDict() dcell = cell.DualCell(((-100.0, 100.0), ), None, None, cfg, w=[1.0]) goal = (10.0, ) for i in xrange(40): effect = (10.0 + random.uniform(-(10 - i), 10 - i), ) prediction = (10.0 + random.uniform(-(10 - i), 10 - i), ) dcell.add(effect, goal=goal, prediction=prediction) dcell.gcell.cp_all dcell.ecell.pei_all dcell.interest_all() check = len(dcell.gcell) == 40 and len(dcell.ecell) == 40 return check
def test1(): """Test basic method of competence""" check = True cfg = treedict.TreeDict() cfg.cmpce.min_d = 0.01 cfg.cmpce.function = 'ident' cmpce.competence([1.0], [0.5], cfg) cfg.cmpce.exp_alpha = 3.0 cfg.cmpce.function = 'exp' cmpce.competence([1.0], [0.5], cfg) cfg.cmpce.log_beta = 0.1 cfg.cmpce.function = 'log' cmpce.competence([1.0], [0.5], cfg) check *= cmpce.competence([0.01], [0.005], cfg) == 0.0 return check
def test1(): """Test basic methods of gridexplorer""" cfg = treedict.TreeDict() cfg.effect.s_bounds = ((0.0, 1.0), (0.0, 1.0)) ge = grid.GridExplorer((0, 1), cfg=cfg) for _ in xrange(100): effect = (random.random(), random.random()) goal = (random.random(), random.random()) prediction = (random.random(), random.random()) ge.add_effect(effect, goal=goal, prediction=prediction) for _ in xrange(1000): ge.next_goal() ge.cell_list() ge.active_cell_list() return True
def test_config(): """Test that configuration is not changed""" cfg = treedict.TreeDict() cfg.effect.s_bounds = ((-64, 64), ) cfg.effect.s_res = (25, ) goalexplorer = effect.GridExplorer((1, ), cfg) g = guide.Guide((-1, ), (1, ), ((-10.0, 10.0), ), cfg, goalexplorer=goalexplorer) #print cfg.makeReport() cfg.freeze() def f(x): return (2 * x[0]**1.5, ) for _ in range(20): action = g.next_action() if action[0] == 'goal': break return True
import treedict import common cfg = treedict.TreeDict() cfg.update(common.cfg) cfg.exp.name = 'origin'
import treedict from ..tools.splittree import SplitTree from cell import DualCell defaultcfg = treedict.TreeDict() class CellTree(object): """Class instanciating cells around a SplitTree""" def __init__(self, bounds, crit_size, cfg, w=None): self.dim = len(bounds) self.bounds = bounds self.crit_size = crit_size self.w = w if self.w is None: self.w = len(bounds) * [1.0] self.cfg = cfg self.cellcount = 0 self.cells = [DualCell(self.bounds, self, 0, self.cfg, w=self.w)] # keeping track of leaves and nodes self.leafcells = set([self.cells[0]]) self.nodecells = set() # keeping track of node cells with effects self.active_cells = set() self.splittree = SplitTree(self.bounds, self.crit_size,
def run_first(cfg): start_time = time.time() try: if cfg.hardware.seed.get('primary', None) is None: seed = random.randint(0, sys.maxint) cfg.hardware.seed.primary = seed random.seed(cfg.hardware.seed.primary) bot = robots.build_robot(cfg.sim) ## Configuration ## goalscfg = treedict.TreeDict() goalscfg.effect.explorer = BoundedRandomExplorer cfg.goals.update(goalscfg, overwrite = False) cfg.goals.effect.s_feats = s_feats = bot.s_feats cfg.goals.effect.s_bounds = s_bounds = bot.s_bounds cfg.goals.motor.m_feats = m_feats = bot.m_feats cfg.goals.motor.m_bounds = m_bounds = bot.m_bounds ## Instanciation of core modules ## s_explorer = BoundedRandomExplorer(s_feats, cfg.goals) if 'explorename' in cfg.goals.effect: if cfg.goals.effect.explorername == 'cluster': s_explorer = cluster.ClusterExplorer(s_feats, cfg.goals) elif cfg.goals.effect.explorername == 'cluster_im': s_explorer = cluster.ClusterIMExplorer(s_feats, cfg.goals) m_explorer = MotorBabble(bot.m_feats, bot.m_bounds, cfg.goals) guide = Guide(m_feats, s_feats, m_bounds, cfg.goals, goalexplorer = s_explorer, motorbabble = m_explorer) learner = Learner(m_feats, s_feats, m_bounds, fwd = 'ES-LWLR', inv = 'L-BFGS-B') cfg.freeze() print(cfg.makeReport()) ## Runing learning ## for i in xrange(cfg.exp.trials): exp.learn(bot, guide, learner) if not cfg.sim.verbose: gfx.print_progress(i+1, cfg.exp.trials, prefix = '{}learning... {}'.format(gfx.purple, gfx.cyan), suffix = gfx.end, eta = 1) print '' exp.save_data(cfg, guide) except Exception: import traceback traceback.print_exc() finally: bot.close() print("ran for {}s.".format(int(time.time() - start_time)))
def config_results(key, jobdep): cfg = treedict.TreeDict() cfg.exp.key = key cfg.hardware.configfile = names.key2jobname(key) + '.cfg' jobgraph.add_job(names.key2jobname(key), cfg, dependencies=jobdep) return cfg