示例#1
0
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
示例#2
0
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
示例#3
0
 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
示例#4
0
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
示例#5
0
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,))
示例#6
0
文件: test_re.py 项目: benureau/goals
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
示例#7
0
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
示例#8
0
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)
示例#9
0
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
示例#10
0
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
示例#11
0
文件: datafile.py 项目: benureau/l2l
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)
示例#12
0
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)
示例#13
0
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
示例#14
0
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
示例#15
0
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
示例#16
0
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
示例#17
0
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
示例#18
0
import treedict
import common

cfg = treedict.TreeDict()
cfg.update(common.cfg)

cfg.exp.name = 'origin'
示例#19
0
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,
示例#20
0
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)))
示例#21
0
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