|
|
@ -2,6 +2,7 @@ |
|
|
|
|
|
|
|
import os |
|
|
|
import subprocess |
|
|
|
from concurrent.futures import ThreadPoolExecutor |
|
|
|
|
|
|
|
abs_path = os.getcwd() |
|
|
|
|
|
|
@ -22,6 +23,7 @@ slippery_probs=[[0.25, 0.75], # 0.75 |
|
|
|
# [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] |
|
|
@ -35,19 +37,40 @@ comps = ["relative", "absolute"] |
|
|
|
|
|
|
|
NUM_TIMESTEPS=250000 |
|
|
|
LOGDIR="../logresults/" |
|
|
|
ENV="MiniGrid-LavaSlipperyS12-v2" |
|
|
|
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:{probs[2]}, 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} {1}' |
|
|
|
subprocess.call(execute_command, shell=True)#.decode("utf-8").split('\n') |
|
|
|
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:{probs[2]}, 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} {1}' |
|
|
|
subprocess.call(execute_command, shell=True)#.decode("utf-8").split('\n') |
|
|
|
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, f"echo {task[0]}", task[1]) |