# by Fabien C. Y. Benureau and Pierre-Yves Oudeyer # Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments import dotdot import exp_cfgs from exp_factory import make_exp def rmb_reuse(path="frontiers2016/objects/reuse", rep=25): nor_diff = {"exp.path": path, "exp.prefix": ("dov_reuse",), "exp.repetitions": rep, "meta.run_tests": True} src_diff = nor_diff tgt_diff = nor_diff return make_exp( [("dov_cube45_0.s", "dov_ball45_0.s"), ("dov_ball45_0.s", "dov_cube45_0.s")], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=("random.motor",), nor_ex_names=("rmb200.rgb.p0.05",), tgt_ex_names=("reuse_200_0.5_20_p0.05",), ) if __name__ == "__main__": experiments.run_exps(rmb_reuse())
# Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments import dotdot import exp_cfgs from exp_factory import make_exp def quick_test(): nor_diff = {'exp.path' : 'test/test', 'exp.prefix' : ('dov_test',), 'exp.repetitions' : 3, 'exploration.steps': 150, 'meta.run_tests' : True, 'provenance.check_dirty' : False, 'provenance.check_continuity' : False} src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_cube45_0.k', 'dov_ball45_0.k')], cfg=exp_cfgs.dov_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb100.rgb.p0.05',), nor_ex_names=('rmb100.rgb.p0.05',), tgt_ex_names=('reuse_100_0.5_20_p0.05',)) if __name__ == '__main__': experiments.run_exps(quick_test())
# Code for generating figures of the article: # "Behavioral Diversity Generation in Autonomous Exploration Through Reuse of Past Experience" # by Fabien C. Y. Benureau and Pierre-Yves Oudeyer # Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments from fig19a_cluster import rgap def rgap_crude(): return rgap(src_env='dov_ball45_0.kb') if __name__ == '__main__': experiments.run_exps(rgap_crude())
import exp_cfgs from exp_factory import make_exp def quick_test(): nor_diff = { 'exp.path': 'test/test', 'exp.prefix': ('dov_test', ), 'exp.repetitions': 3, 'exploration.steps': 150, 'meta.run_tests': True, 'provenance.check_dirty': False, 'provenance.check_continuity': False } src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_cube45_0.k', 'dov_ball45_0.k')], cfg=exp_cfgs.dov_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb100.rgb.p0.05', ), nor_ex_names=('rmb100.rgb.p0.05', ), tgt_ex_names=('reuse_100_0.5_20_p0.05', )) if __name__ == '__main__': experiments.run_exps(quick_test())
import dotdot import exp_cfgs from exp_factory import make_exp def rmb_reuse(path='frontiers2016/objects/reuse', rep=25): nor_diff = { 'exp.path': path, 'exp.prefix': ('dov_reuse', ), 'exp.repetitions': rep, 'meta.run_tests': True } src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_cube45_0.s', 'dov_ball45_0.s'), ('dov_ball45_0.s', 'dov_cube45_0.s')], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('random.motor', ), nor_ex_names=('rmb200.rgb.p0.05', ), tgt_ex_names=('reuse_200_0.5_20_p0.05', )) if __name__ == '__main__': experiments.run_exps(rmb_reuse())
r_ex = explorers.MetaExplorer.defcfg._deepcopy() r_ex.eras = (mb, None) r_ex.weights = ((1-p_reuse, 0.0, p_reuse), (0.0, 1.0, 0.0)) r_ex.ex_0 = explorers.RandomMotorExplorer.defcfg._deepcopy() r_ex.ex_1 = explorers.RandomGoalExplorer.defcfg._deepcopy() r_ex.ex_1.learner = learners.MutateNNLearner.defcfg._deepcopy() r_ex.ex_1.learner.operator.name = 'uniform' r_ex.ex_1.learner.operator.d = 0.05 r_ex.ex_2 = explorers.ReuseExplorer.defcfg._deepcopy() r_ex.ex_2.reuse.res = res r_ex.ex_2.reuse.algorithm = algorithm alg_str = '' if algorithm == 'sensor_uniform' else '.' + algorithm return 'reuse{}_{}_{}_{}_{}'.format(alg_str, mb, p_reuse, res, lrn_name), r_ex tgt_cfg = cfg._deepcopy() tgt_cfg.exp.path = 'unit_tests/' tgt_cfg.exploration.ex_name, tgt_cfg.exploration.explorer = reuse_ex(50, 0.5) tgt_cfg.exploration.deps = (experiments.expkey(cfg),) tgt_cfg.exp.prefix = ('prefix2',) #, 'random.motor', 'kin7_150') if __name__ == '__main__': experiments.run_exps([cfg, tgt_cfg])
# Code for generating figures of the article: # "Behavioral Diversity Generation in Autonomous Exploration Through Reuse of Past Experience" # by Fabien C. Y. Benureau and Pierre-Yves Oudeyer # Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments from fig19a_cluster import rgap def rgap_h(): return rgap(src_env='dov_ball45_0.k', tgt_env='dov_ball45_0.h', path='frontiers2016/objects/rgap_hard', rep=4, nor_ex_name='rmb300.rgb.mesh25.p0.07.h', tgt_ex_name='reuse_300_0.5_25_rgb.mesh25.p0.07.h') if __name__ == '__main__': experiments.run_exps(rgap_h()) # 'rmb300.rgb.mesh25.p0.07.h' # 'reuse_300_0.5_25_rgb.mesh25.p0.07.h'
import dotdot import exp_cfgs from exp_factory import make_exp def ball_cube(path="frontiers2016/objects/reuse", rep=25): nor_diff = {"exp.path": path, "exp.prefix": ("dov_reuse",), "exp.repetitions": rep, "meta.run_tests": True} src_diff = nor_diff tgt_diff = nor_diff return make_exp( [ ("dov_ball45_0.s", "dov_ball45_0.s"), ("dov_cube45_0.s", "dov_ball45_0.s"), ("dov_ball45_0.s", "dov_cube45_0.s"), ("dov_cube45_0.s", "dov_cube45_0.s"), ], cfg=exp_cfgs.dov_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=("rmb200.rgb.p0.05",), nor_ex_names=("rmb200.rgb.p0.05",), tgt_ex_names=("reuse_200_0.5_20_p0.05",), ) if __name__ == "__main__": experiments.run_exps(ball_cube())
# by Fabien C. Y. Benureau and Pierre-Yves Oudeyer # Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments import dotdot import exp_cfgs from exp_factory import make_exp def rmb_reuse_short(path='frontiers2016/objects/reuse', rep=25): nor_diff = {'exp.path' : path, 'exp.prefix' : ('dov_reuse',), 'exp.repetitions' : rep, 'meta.run_tests' : True} src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_cube45_0.s', 'dov_ball45_0.s'), ('dov_ball45_0.s', 'dov_cube45_0.s')], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('random.motor',), nor_ex_names=('rmb200.rgb.p0.05',), tgt_ex_names=('reuse_50_0.5_20_p0.05',)) if __name__ == '__main__': experiments.run_exps(rmb_reuse_short())
# by Fabien C. Y. Benureau and Pierre-Yves Oudeyer # Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments import dotdot import exp_cfgs from exp_factory import make_exp def planar(path='frontiers2016/planar_arms', rep=100): cfg = exp_cfgs.planar_cfg._deepcopy() nor_diff = {'exp.path' : path, 'exp.prefix' : ('kin_reuse',), 'exp.repetitions' : rep, 'meta.run_tests' : True} src_diff = nor_diff tgt_diff = nor_diff return make_exp([('kin20_150', 'kin20_150_p_0.9')], cfg=exp_cfgs.planar_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb50.rgb.p0.05',), nor_ex_names=('rmb50.rgb.p0.05',), tgt_ex_names=('reuse_50_1.0_20_p0.05',)) if __name__ == '__main__': experiments.run_exps(planar())
# "Behavioral Diversity Generation in Autonomous Exploration Through Reuse of Past Experience" # by Fabien C. Y. Benureau and Pierre-Yves Oudeyer # Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments import dotdot import exp_cfgs from exp_factory import make_exp def pool(path='frontiers2016/objects/pool', rep=100): nor_diff = {'exp.path' : path, 'exp.prefix' : ('dov_pool',), 'exp.repetitions' : rep, 'meta.run_tests' : True} src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_ball45_0.s', 'dov_pool.s')], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb300.rgb.p0.05',), nor_ex_names=('rmb300.rgb.p0.025',), tgt_ex_names=('reuse_300_0.5_40_p0.025',)) if __name__ == '__main__': experiments.run_exps(pool())
from exp_factory import make_exp def planar_test(): cfg = exp_cfgs.planar_cfg._deepcopy() nor_diff = { 'exp.path': 'test/planar_test', 'exp.prefix': ('test', ), 'exp.repetitions': 1, 'exploration.steps': 10000, 'provenance.check_dirty': False, 'provenance.check_continuity': True, 'meta.run_tests': True } src_diff = nor_diff tgt_diff = nor_diff return make_exp([('kin20_150', 'kin20_150_p_0.9')], cfg=exp_cfgs.planar_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb50.rgb.p0.05', ), nor_ex_names=('rmb50.rgb.p0.05', ), tgt_ex_names=('reuse_50_1.0_20_p0.05', )) if __name__ == '__main__': experiments.run_exps(planar_test())
# by Fabien C. Y. Benureau and Pierre-Yves Oudeyer # Licensed under the Open Science License (see http://fabien.benureau.com/openscience.html) import experiments import dotdot import exp_cfgs from exp_factory import make_exp def dissimilar(path='frontiers2016/objects/reuse', rep=100): nor_diff = {'exp.path' : path, 'exp.prefix' : ('dov_reuse',), 'exp.repetitions' : rep, 'meta.run_tests' : True} src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_ball45_0.s', 'dov_ball45_4.s'), ('dov_ball45_4.s', 'dov_ball45_0.s')], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb200.rgb.p0.05',), nor_ex_names=('rmb200.rgb.p0.05',), tgt_ex_names=('reuse_200_0.5_20_p0.05',)) if __name__ == '__main__': experiments.run_exps(dissimilar())
import experiments import dotdot import exp_cfgs from exp_factory import make_exp def planar_test(): cfg = exp_cfgs.planar_cfg._deepcopy() nor_diff = {'exp.path' : 'test/planar_test', 'exp.prefix' : ('test',), 'exp.repetitions' : 1, 'exploration.steps': 10000, 'provenance.check_dirty' : False, 'provenance.check_continuity': True, 'meta.run_tests' : True} src_diff = nor_diff tgt_diff = nor_diff return make_exp([('kin20_150', 'kin20_150_p_0.9')], cfg=exp_cfgs.planar_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb50.rgb.p0.05',), nor_ex_names=('rmb50.rgb.p0.05',), tgt_ex_names=('reuse_50_1.0_20_p0.05',)) if __name__ == '__main__': experiments.run_exps(planar_test())
} src_diff = nor_diff tgt_diff = nor_diff expcfgs = make_exp([('dov_ball45_0_a20.h', 'dov_ball45_0_a20.h'), ('dov_cube45_0_a20.h', 'dov_ball45_0_a20.h'), ('dov_ball45_0_a20.h', 'dov_cube45_0_a20.h'), ('dov_cube45_0_a20.h', 'dov_cube45_0_a20.h')], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb300.rgb.lwlr.h', ), nor_ex_names=('rmb300.rgb.lwlr.h', ), tgt_ex_names=('reuse_300_0.5_40_lwlr.h', )) # one repetion of the ball -> cube experiment got its data corrupted. for nor_cfg, src_cfg, tgt_cfg in expcfgs: src_env_name = tgt_cfg.exp.prefix[2] tgt_env_name = tgt_cfg.exploration.env_name if (src_env_name, tgt_env_name) == ('dov_ball45_0_a20.h', 'dov_cube45_0_a20.h'): tgt_cfg.exp.repetitions = 3 return expcfgs if __name__ == '__main__': experiments.run_exps(ball_cube_hard())
import dotdot import exp_cfgs from exp_factory import make_exp def planar(path='frontiers2016/planar_arms', rep=100): cfg = exp_cfgs.planar_cfg._deepcopy() nor_diff = { 'exp.path': path, 'exp.prefix': ('kin_reuse', ), 'exp.repetitions': rep, 'meta.run_tests': True } src_diff = nor_diff tgt_diff = nor_diff return make_exp([('kin20_150', 'kin20_150_p_0.9')], cfg=exp_cfgs.planar_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb50.rgb.p0.05', ), nor_ex_names=('rmb50.rgb.p0.05', ), tgt_ex_names=('reuse_50_1.0_20_p0.05', )) if __name__ == '__main__': experiments.run_exps(planar())
nor_diff = {'exp.path' : path, 'exp.prefix' : ('dov_hard',), 'exp.repetitions' : rep, 'meta.run_tests' : True} src_diff = nor_diff tgt_diff = nor_diff expcfgs = make_exp([('dov_ball45_0_a20.h', 'dov_ball45_0_a20.h'), ('dov_cube45_0_a20.h', 'dov_ball45_0_a20.h'), ('dov_ball45_0_a20.h', 'dov_cube45_0_a20.h'), ('dov_cube45_0_a20.h', 'dov_cube45_0_a20.h')], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb300.rgb.lwlr.h',), nor_ex_names=('rmb300.rgb.lwlr.h',), tgt_ex_names=('reuse_300_0.5_40_lwlr.h',)) # one repetion of the ball -> cube experiment got its data corrupted. for nor_cfg, src_cfg, tgt_cfg in expcfgs: src_env_name = tgt_cfg.exp.prefix[2] tgt_env_name = tgt_cfg.exploration.env_name if (src_env_name, tgt_env_name) == ('dov_ball45_0_a20.h', 'dov_cube45_0_a20.h'): tgt_cfg.exp.repetitions = 3 return expcfgs if __name__ == '__main__': experiments.run_exps(ball_cube_hard())
import dotdot import exp_cfgs from exp_factory import make_exp def rmb_reuse_short(path='frontiers2016/objects/reuse', rep=25): nor_diff = { 'exp.path': path, 'exp.prefix': ('dov_reuse', ), 'exp.repetitions': rep, 'meta.run_tests': True } src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_cube45_0.s', 'dov_ball45_0.s'), ('dov_ball45_0.s', 'dov_cube45_0.s')], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('random.motor', ), nor_ex_names=('rmb200.rgb.p0.05', ), tgt_ex_names=('reuse_50_0.5_20_p0.05', )) if __name__ == '__main__': experiments.run_exps(rmb_reuse_short())
import exp_cfgs from exp_factory import make_exp def ball_cube(path='frontiers2016/objects/reuse', rep=25): nor_diff = { 'exp.path': path, 'exp.prefix': ('dov_reuse', ), 'exp.repetitions': rep, 'meta.run_tests': True } src_diff = nor_diff tgt_diff = nor_diff return make_exp([('dov_ball45_0.s', 'dov_ball45_0.s'), ('dov_cube45_0.s', 'dov_ball45_0.s'), ('dov_ball45_0.s', 'dov_cube45_0.s'), ('dov_cube45_0.s', 'dov_cube45_0.s')], cfg=exp_cfgs.dov_cfg._deepcopy(), nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=('rmb200.rgb.p0.05', ), nor_ex_names=('rmb200.rgb.p0.05', ), tgt_ex_names=('reuse_200_0.5_20_p0.05', )) if __name__ == '__main__': experiments.run_exps(ball_cube())
import experiments import dotdot import exp_cfgs from exp_factory import make_exp def rgap(src_env='dov_ball45_0.k', tgt_env='dov_ball45_0.s', nor_ex_name='rmb200.rgb.p0.05', tgt_ex_name='reuse_200_0.5_20_p0.05', path='frontiers2016/objects/rgap', rep=25): nor_diff = {'exp.path' : path, 'exp.prefix' : ('dov_rgap',), 'exp.repetitions' : rep, 'meta.run_tests' : True} src_diff = dict(nor_diff) src_diff['meta.run_tests'] = False tgt_diff = nor_diff expcfgs = make_exp([(src_env, tgt_env)], cfg=exp_cfgs.dov_cfg, nor_diff=nor_diff, src_diff=src_diff, tgt_diff=tgt_diff, src_ex_names=(nor_ex_name,), nor_ex_names=(nor_ex_name,), tgt_ex_names=(tgt_ex_name,)) return expcfgs if __name__ == '__main__': experiments.run_exps(rgap())
r_ex = explorers.MetaExplorer.defcfg._deepcopy() r_ex.eras = (mb, None) r_ex.weights = ((1 - p_reuse, 0.0, p_reuse), (0.0, 1.0, 0.0)) r_ex.ex_0 = explorers.RandomMotorExplorer.defcfg._deepcopy() r_ex.ex_1 = explorers.RandomGoalExplorer.defcfg._deepcopy() r_ex.ex_1.learner = learners.MutateNNLearner.defcfg._deepcopy() r_ex.ex_1.learner.operator.name = 'uniform' r_ex.ex_1.learner.operator.d = 0.05 r_ex.ex_2 = explorers.ReuseExplorer.defcfg._deepcopy() r_ex.ex_2.reuse.res = res r_ex.ex_2.reuse.algorithm = algorithm alg_str = '' if algorithm == 'sensor_uniform' else '.' + algorithm return 'reuse{}_{}_{}_{}_{}'.format(alg_str, mb, p_reuse, res, lrn_name), r_ex tgt_cfg = cfg._deepcopy() tgt_cfg.exp.path = 'unit_tests/' tgt_cfg.exploration.ex_name, tgt_cfg.exploration.explorer = reuse_ex(50, 0.5) tgt_cfg.exploration.deps = (experiments.expkey(cfg), ) tgt_cfg.exp.prefix = ('prefix2', ) #, 'random.motor', 'kin7_150') if __name__ == '__main__': experiments.run_exps([cfg, tgt_cfg])