You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.8 KiB
76 lines
2.8 KiB
#!/usr/bin/python3
|
|
|
|
import os
|
|
import subprocess
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
|
|
abs_path = os.getcwd()
|
|
|
|
slippery_configs=[f"{abs_path}/slippery_prob_075.yaml",
|
|
# f"{abs_path}/slippery_prob_08.yaml",
|
|
f"{abs_path}/slippery_prob_085.yaml",
|
|
# f"{abs_path}/slippery_prob_09.yaml",
|
|
f"{abs_path}/slippery_prob_095.yaml",
|
|
# f"{abs_path}/slippery_prob_1.yaml"
|
|
]
|
|
|
|
slippery_probs=[[0.25, 0.75], # 0.75
|
|
#[0.1, 0.2, 0.8], # 0.8
|
|
[0.15,0.85], # 0.85
|
|
#[0.05, 0.1, 0.9], # 0.9
|
|
[0.05, 0.95], # 0.95
|
|
# [0.01, 0.02, 0.98], # 0.98
|
|
# [0.005,0.01, 0.99], # 0.99
|
|
#[0, 0, 1] # 1
|
|
]
|
|
prob_turn_intended = 1
|
|
|
|
|
|
#shield_values = [0.85, 0.9, 0.95, 0.98, 0.99, 1]
|
|
shield_values = [0.85, .95, 1]
|
|
|
|
prob_confs = list(zip(slippery_probs, slippery_configs))
|
|
counter = 1
|
|
shielding = ["full", "none"]
|
|
comparison_type = ["relative", "absolute"]
|
|
comps = ["relative", "absolute"]
|
|
|
|
NUM_TIMESTEPS=250000
|
|
LOGDIR="../logresults/"
|
|
ENV="MiniGrid-LavaSlipperyCliffS12-v0"
|
|
|
|
tasks = list()
|
|
NUM_WORKER=2
|
|
|
|
def run_command(command, logname):
|
|
log = open(f"{logname}.log", "w")
|
|
print(f"running {command}")
|
|
subprocess.call(command, shell=True, stdout=log)#.decode("utf-8").split('\n')
|
|
close(log)
|
|
|
|
|
|
# matrix for shielded runs
|
|
for shield_value in shield_values:
|
|
for sh_comp in comparison_type:
|
|
for probs, config in prob_confs:
|
|
command = f"echo \"Running experiment with shielding full, sh_value:{shield_value}, sh_comp:{sh_comp}, probvalues:{probs}, config{config}\""
|
|
execute_command = f'./syncscript.sh {NUM_TIMESTEPS} {LOGDIR} {"70"} {ENV} full {sh_comp} {config} {probs[0]} {probs[1]} {0} {shield_value} {prob_turn_intended}'
|
|
print(execute_command)
|
|
logname = f"shielded_comp_{sh_comp}_value_{shield_value}_probvalues{'_'.join(format(p, '10.3f') for p in probs)}_{config.split('/')[-1]}".replace(" ", "")
|
|
tasks.append((execute_command, logname))
|
|
|
|
# loop for unshielded runs
|
|
for probs, config in prob_confs:
|
|
command = f"echo \"Running experiment with shielding none, sh_value:0.0, sh_comp:{sh_comp}, probvalues:{probs}, config{config}\""
|
|
execute_command = f'./syncscript.sh {NUM_TIMESTEPS} {LOGDIR} {"70"} {ENV} none {sh_comp} {config} {probs[0]} {probs[1]} {0} {shield_value} {prob_turn_intended}'
|
|
logname = f"unshielded_probvalues{'_'.join(format(p, '10.3f') for p in probs)}_{config.split('/')[-1]}".replace(" ", "")
|
|
print(execute_command)
|
|
tasks.append((execute_command, logname))
|
|
|
|
print(f"Going to execute {len(tasks)} with {NUM_WORKER} threads... press Enter to start")
|
|
input("")
|
|
|
|
with ThreadPoolExecutor(max_workers=NUM_WORKER) as e:
|
|
for task in tasks:
|
|
print(f"submitted {task}")
|
|
e.submit(run_command, task[0], task[1])
|