def do_experiment(exp_configs): for experiment in exp_configs: exp_config = experiment["config"] model_config = experiment["model"] env_config = experiment["environment"] exp_name = exp_config["name"] exp_trials = exp_config["trials"] exp_steps = exp_config["steps"] print(f"Starting Experiment: {exp_name}") model_arch = model_config["architecture"] factory = get_arch_factory(model_arch) model = factory.createModel() model_file = model_config["file"] model.load(model_file) env_default_act = env_config["default_act"] model.motor.next_action = env_default_act env_type = env_config["type"] myenv = get_env_factory(env_type) env_map = env_config["obs_map"] myexp = Experiment(model, myenv, exp_name,env_map) #myexp = Experiment(model, myenv, "CMU Gym Cartpole", map) myexp.start(exp_name) # appends to a log file myexp.run(exp_trials, exp_steps) myexp.stop() #closes log file
def test_ccm_counting(): # test CMU ACT-R Counting factory = ccm_factory.CcmFactory() model = factory.createModel() model.load('metaverse.architectures.actr_ccmsuite.counting_prods') model.working.addWME('add 5 2 count:None sum:None') #TODO: move these to a config file model.declarative.addDM('count 0 1') model.declarative.addDM('count 1 2') model.declarative.addDM('count 2 3') model.declarative.addDM('count 3 4') model.declarative.addDM('count 4 5') model.declarative.addDM('count 5 6') model.declarative.addDM('count 6 7') model.declarative.addDM('count 7 8') model.declarative.addDM('count 8 9') model.declarative.addDM('count 9 10') myenv = SimpleEnvironment("counting") myexp = Experiment(model, myenv, "CMU Counting") myexp.start("ccm_count_test") # appends to a log file myexp.run(1, 10) myexp.stop() #closes log file myexp.report("CCM")
def compare_production_systems(): #changes to production cycle rate cycle_start = 1 #once per second cycle_end = 0.05 #10 times per second task = "production_test" trials = 5 steps = 10 test_iv = "ps" iv_start = 0.05 iv_end = 0.1 iv_inc = 0.01 prod_test_config_switch = { 'ACTR': "/tests/psych/count_test.lisp", 'CCM' : 'metaverse.architectures.actr_ccmsuite.counting_prods', 'Soar' : "soar_agent.config" } architectures = ['ACTR', 'CCM', 'Soar'] architectures1 = ['ACTR'] architectures2 = ['CCM'] architectures3 = ['Soar'] reporter = scribe.Reporter() experiments = [] for arch in architectures: factory = get_arch_factory(arch) model = factory.createModel() model_file = prod_test_config_switch.get(arch) model.load(model_file) myenv = SimpleEnvironment(task) myexp = Experiment(model, myenv, task) #myexp.set_parameters(test_iv, iv_start, iv_end, iv_inc ) myexp.start(task+"_"+arch) # appends to a log file myexp.run(trials, steps) myexp.stop() # closes log file outfile = myexp.report() experiments.append([arch, outfile]) reporter.add_experiment(arch, outfile) with open('last_counting_experiments.yaml', 'w') as yaml_file: yaml.dump(experiments, yaml_file) reporter.gen_arch_frames() reporter.declarative_mem_activation_report(plot="series")
def test_cmu_counting(): # test CMU ACT-R Counting factory = cmu_factory.CmuActrFactory() model = factory.createModel() model.load("/tests/psych/count_test.lisp") myenv = SimpleEnvironment(name="counting") myexp = Experiment(model, myenv, "CMU Counting") myexp.start("cmu_count_test") # appends to a log file myexp.run(1, 50) myexp.stop() #closes log file myexp.report("ACTR")
def test_soar_starcraft(): # test CMU ACT-R Counting factory = soar_factory.SoarFactory() model = factory.createModel() model.load("starcraft2.soar","starcraft") myenv = StarCraftEnvironment("SC2MoveToBeacon-v1") myexp = Experiment(model, myenv, "Soar StarCraft Beacons") model.motor.next_action = [-1, -1] myexp.start("soar_beacons") # appends to a log file myexp.run(1, 100) #if no cycles provided, env determines end state myexp.stop() #closes log file myexp.report("Soar")
def test_soar_cartpole(): # test CMU ACT-R Counting factory = soar_factory.SoarFactory() model = factory.createModel() model.load("cart-pole.soar","cart-pole") myenv = GymEnvironment("CartPole-v0") #TODO: pass registered gym.env_id?? myexp = Experiment(model, myenv, "Soar Gym Cartpole") model.perception.create_input_wmes myexp.start("soar_cartpole") # appends to a log file myexp.run(10, 195) #if no cycles provided, env determines end state myexp.stop() #closes log file myexp.report("Soar")
def test_ccm_cartpole(): # test CMU ACT-R Counting factory = ccm_factory.CcmFactory() model = factory.createModel() model.load('metaverse.architectures.actr_ccmsuite.cartpole_prods') myenv = GymEnvironment("CartPole-v0") #TODO: pass registered gym.env_id?? map = ['cart_pos', 'cart_vel', 'pole_pos', 'pole_vel'] myexp = Experiment(model, myenv, "CCM Gym Cartpole", map) model.motor.next_action = 0 #TODO: change to random action space myexp.start("ccm_cartpole") # appends to a log file myexp.run(10, 195) #if no cycles provided, env determines end state myexp.stop() #closes log file myexp.report("CCM") #TODO: get report type from agent factory
def test_ccm_starcraft(): # test CMU ACT-R Counting factory = ccm_factory.CcmFactory() model = factory.createModel() #model.perception = Sc2Perception() model.load('metaverse.architectures.actr_ccmsuite.beacon_prods') myenv = StarCraftEnvironment("SC2MoveToBeacon-v1") map = ['loc_x', 'loc_y'] myexp = Experiment(model, myenv, "CCM StarCraft Beacons", map) model.motor.next_action = [-1,-1] # TODO: change to random action space myexp.start("ccm_beacons") # appends to a log file myexp.run(1, 100) #if no cycles provided, env determines end state myexp.stop() #closes log file myexp.report("CCM") #TODO: get report type from agent factory
def test_cmu_starcraft(): # test CMU ACT-R Counting factory = cmu_factory.CmuActrFactory() model = factory.createModel() map = ['beacon_x', 'beacon_y'] #model.perception.setObservationSpace(map) model.load("/tests/sc2/gym_sc2-beacons-simple.lisp") myenv = StarCraftEnvironment("SC2MoveToBeacon-v1") myexp = Experiment(model, myenv, "CMU StarCraft Beacons",map) model.motor.next_action = [-1, -1] myexp.start("cmu_beacons") # appends to a log file myexp.run(1, 100) #if no cycles provided, env determines end state myexp.stop() #closes log file myexp.report("ACTR")
def test_cmu_cartpole(): # test CMU ACT-R Counting factory = cmu_factory.CmuActrFactory() model = factory.createModel() model.load("/tests/gym/cartpole.lisp") map = ['cart_pos', 'cart_vel', 'pole_pos', 'pole_vel'] #model.perception.setObservationSpace(map) myenv = GymEnvironment("CartPole-v0") #TODO: pass registered gym.env_id?? model.motor.next_action = 0 myexp = Experiment(model, myenv, "CMU Gym Cartpole", map) myexp.start("cmu_cartpole") # appends to a log file myexp.run(10, 195) #if no cycles provided, env determines end state myexp.stop() #closes log file myexp.report("ACTR")
def test_soar_counting(): # test CMU ACT-R Counting factory = soar_factory.SoarFactory() #modelFile = model_switch.get(arch) # TODO: load from experiment config model = factory.createModel() model.load("soar_agent.config") trials = 1 steps = 11 myenv = SimpleEnvironment("counting", maxsteps=steps) myexp = Experiment(model, myenv, "Soar Counting") myexp.start("soar_counting") # appends to a log file #myexp.run(12) myexp.run(trials, steps) myexp.stop() #closes log file myexp.report("Soar")
def compare_beacons(): task = "visual task" trials = 1 steps = 195 test_iv = "ps" iv_start = 0.05 iv_end = 0.1 iv_inc = 0.01 prod_test_config_switch = { 'ACTR': "/tests/gym/cartpole.lisp", 'CCM': 'metaverse.architectures.actr_ccmsuite.cartpole_prods', 'Soar': "/tests/cart-pole/soar_agent.config" } architectures = ['ACTR', 'CCM', 'Soar'] architectures1 = ['ACTR'] architectures2 = ['CCM'] architectures3 = ['Soar'] reporter = scribe.Reporter() experiments = [] # for arch in architectures: # factory = get_arch_factory(arch) # model = factory.createModel() # model_file = prod_test_config_switch.get(arch) # model.load(model_file) # #myenv = SimpleEnvironment(task) # myenv = GymEnvironment("CartPole-v0") # TODO: pass registered gym.env_id?? # model.motor.next_action = 0 # myexp = Experiment(model, myenv, task, map) # # myexp.set_parameters(test_iv, iv_start, iv_end, iv_inc ) # myexp.start(task + "_" + arch) # appends to a log file # myexp.run(trials, steps) # myexp.stop() # closes log file # outfile = myexp.report() # experiments.append([arch, outfile]) # reporter.add_experiment(arch, outfile) # test CMU ACT-R Starcraft factory = cmu_factory.CmuActrFactory() model = factory.createModel() map = ['beacon_x', 'beacon_y'] #model.perception.setObservationSpace(map) model.load("/tests/sc2/gym_sc2-beacons-simple.lisp") myenv = StarCraftEnvironment("SC2MoveToBeacon-v1") myexp = Experiment(model, myenv, "CMU StarCraft Beacons",map) model.motor.next_action = [-1, -1] myexp.start("cmu_beacons") # appends to a log file myexp.run(1, 100) #if no cycles provided, env determines end state myexp.stop() #closes log file outfile = myexp.report("ACTR") experiments.append(["ACTR", outfile]) reporter.add_experiment("ACTR", outfile) # test CCM ACT-R Starcraft factory = ccm_factory.CcmFactory() model = factory.createModel() #model.perception = Sc2Perception() model.load('metaverse.architectures.actr_ccmsuite.beacon_prods') myenv = StarCraftEnvironment("SC2MoveToBeacon-v1") map = ['loc_x', 'loc_y'] myexp = Experiment(model, myenv, "CCM StarCraft Beacons", map) model.motor.next_action = [-1,-1] # TODO: change to random action space myexp.start("ccm_beacons") # appends to a log file myexp.run(1, 100) #if no cycles provided, env determines end state myexp.stop() #closes log file outfile = myexp.report("CCM") #TODO: get report type from agent factory experiments.append(["CCM", outfile]) reporter.add_experiment("CCM", outfile) # test Soar Starcraft factory = soar_factory.SoarFactory() model = factory.createModel() model.load("starcraft2.soar","starcraft") myenv = StarCraftEnvironment("SC2MoveToBeacon-v1") myexp = Experiment(model, myenv, "Soar StarCraft Beacons") model.motor.next_action = [-1, -1] myexp.start("soar_beacons") # appends to a log file myexp.run(1, 100) #if no cycles provided, env determines end state myexp.stop() #closes log file outfile = myexp.report("Soar") experiments.append(["Soar", outfile]) reporter.add_experiment("Soar", outfile) with open('last_beacons_experiments.yaml', 'w') as yaml_file: yaml.dump(experiments, yaml_file) reporter.gen_arch_frames() reporter.vision_activation_report(plot="series") reporter.motor_activation_report(plot="series")
def compare_cartpole(): task = "visual task" trials = 1 steps = 195 test_iv = "ps" iv_start = 0.05 iv_end = 0.1 iv_inc = 0.01 prod_test_config_switch = { 'ACTR': "/tests/gym/cartpole.lisp", 'CCM': 'metaverse.architectures.actr_ccmsuite.cartpole_prods', 'Soar': "/tests/cart-pole/soar_agent.config" } architectures = ['ACTR', 'CCM', 'Soar'] architectures1 = ['ACTR'] architectures2 = ['CCM'] architectures3 = ['Soar'] reporter = scribe.Reporter() experiments = [] # for arch in architectures: # factory = get_arch_factory(arch) # model = factory.createModel() # model_file = prod_test_config_switch.get(arch) # model.load(model_file) # #myenv = SimpleEnvironment(task) # myenv = GymEnvironment("CartPole-v0") # TODO: pass registered gym.env_id?? # model.motor.next_action = 0 # myexp = Experiment(model, myenv, task, map) # # myexp.set_parameters(test_iv, iv_start, iv_end, iv_inc ) # myexp.start(task + "_" + arch) # appends to a log file # myexp.run(trials, steps) # myexp.stop() # closes log file # outfile = myexp.report() # experiments.append([arch, outfile]) # reporter.add_experiment(arch, outfile) # test CMU ACT-R Counting factory = cmu_factory.CmuActrFactory() model = factory.createModel() model.load("/tests/gym/cartpole.lisp") map = ['cart_pos', 'cart_vel', 'pole_pos', 'pole_vel'] myenv = GymEnvironment("CartPole-v0") #TODO: pass registered gym.env_id?? model.motor.next_action = 0 myexp = Experiment(model, myenv, "CMU Gym Cartpole", map) myexp.start("cmu_cartpole") # appends to a log file myexp.run(5, 195) #if no cycles provided, env determines end state myexp.stop() #closes log file outfile = myexp.report("ACTR") experiments.append(["ACTR", outfile]) reporter.add_experiment("ACTR", outfile) # test CMU ACT-R Counting factory = ccm_factory.CcmFactory() model = factory.createModel() model.load('metaverse.architectures.actr_ccmsuite.cartpole_prods') myenv = GymEnvironment("CartPole-v0") #TODO: pass registered gym.env_id?? map = ['cart_pos', 'cart_vel', 'pole_pos', 'pole_vel'] myexp = Experiment(model, myenv, "CCM Gym Cartpole", map) model.motor.next_action = 0 #TODO: change to random action space myexp.start("ccm_cartpole") # appends to a log file myexp.run(5, 195) #if no cycles provided, env determines end state myexp.stop() #closes log file outfile = myexp.report("CCM") #TODO: get report type from agent factory experiments.append(["CCM", outfile]) reporter.add_experiment("CCM", outfile) # test CMU ACT-R Counting factory = soar_factory.SoarFactory() model = factory.createModel() model.load("cart-pole.soar","cart-pole") myenv = GymEnvironment("CartPole-v0") #TODO: pass registered gym.env_id?? myexp = Experiment(model, myenv, "Soar Gym Cartpole") model.perception.create_input_wmes myexp.start("soar_cartpole") # appends to a log file myexp.run(5, 195) #if no cycles provided, env determines end state myexp.stop() #closes log file outfile = myexp.report("Soar") experiments.append(["Soar", outfile]) reporter.add_experiment("Soar", outfile) with open('last_cartpole_experiments.yaml', 'w') as yaml_file: yaml.dump(experiments, yaml_file) reporter.gen_arch_frames() reporter.vision_activation_report(plot="series") reporter.motor_activation_report(plot="series")