try alternative API for expe module
This commit is contained in:
parent
03fd19b088
commit
5e48e52941
1 changed files with 34 additions and 31 deletions
65
expe.py
65
expe.py
|
|
@ -1,46 +1,49 @@
|
|||
import subprocess
|
||||
import itertools
|
||||
|
||||
|
||||
def batchsplit(axe, njobs):
|
||||
for i in range(0,len(axe),njobs):
|
||||
yield axe[i:i+njobs]
|
||||
|
||||
|
||||
def batchrun(key, jobs, params, cmd_tpl):
|
||||
procs = []
|
||||
for job in jobs:
|
||||
params[key] = job
|
||||
cmd = cmd_tpl.format(**params)
|
||||
p = subprocess.Popen(cmd, shell=True)
|
||||
procs.append(p)
|
||||
|
||||
for job in procs:
|
||||
job.wait()
|
||||
|
||||
|
||||
def expe(axes):
|
||||
for p in itertools.product(*[axes[k] for k in axes]):
|
||||
params = {}
|
||||
for i in range(len(axes)):
|
||||
params[list(axes.keys())[i]] = p[i]
|
||||
yield params
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
# can = argparse.ArgumentParser()
|
||||
#
|
||||
# can.add_argument("-n", "--nb-sensors", metavar="NB", default=3, type=int,
|
||||
# help="Number of sensors")
|
||||
#
|
||||
# can.add_argument("-r", "--sensor-range", metavar="RATIO", default=0.3, type=float,
|
||||
# help="Sensors' range (as a fraction of domain width)")
|
||||
#
|
||||
# can.add_argument("-w", "--domain-width", metavar="NB", default=30, type=int,
|
||||
# help="Domain width (a number of cells)")
|
||||
#
|
||||
# can.add_argument("-i", "--iters", metavar="NB", default=100, type=int,
|
||||
# help="Maximum number of iterations")
|
||||
#
|
||||
# the = can.parse_args()
|
||||
|
||||
const_args=" --nb-sensors 5 --sensor-range 0.2 --domain-width 50 --iters 10000"
|
||||
solvers = ["num_greedy","bit_greedy","num_rand","bit_rand"]
|
||||
nbruns = 100
|
||||
nbruns = 2
|
||||
outdir = "results"
|
||||
|
||||
if not os.path.exists(outdir):
|
||||
os.mkdir(outdir)
|
||||
|
||||
cmd_tpl = "python3 snp.py --no-plot --dir {outdir} --seed {{seed}} --solver {{solver}}".format(outdir=outdir)
|
||||
for seed in range(nbruns):
|
||||
procs = []
|
||||
for solver in solvers:
|
||||
print(seed,solver)
|
||||
p = subprocess.Popen(
|
||||
"python3 snp.py "
|
||||
+ const_args
|
||||
+ " --no-plot --dir {} --seed {} --solver {}"
|
||||
.format(outdir,seed,solver),
|
||||
shell=True
|
||||
)
|
||||
procs.append(p)
|
||||
|
||||
for proc in procs:
|
||||
proc.wait()
|
||||
for params in expe({"seed":[seed]}):
|
||||
for by_four in batchsplit(solvers, 4):
|
||||
batchrun("solver", by_four, params, cmd_tpl)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue