43 lines
1.3 KiB
Bash
Executable file
43 lines
1.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Number of runs (=seeds).
|
|
runs=50
|
|
|
|
# Array of problems.
|
|
# You may set something like: (0 2 5 17)
|
|
problems=($(seq 0 18))
|
|
|
|
# Capture anything passed to the script
|
|
outdir="$1"
|
|
algo="${@:2}"
|
|
|
|
# You most probably want to run on release builds.
|
|
exe="./release/fastga"
|
|
|
|
i=1 # Loop counter.
|
|
for pb in "${problems[@]}" ; do # Iterate over the problems array.
|
|
for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
|
|
# Forge a directory/log file name
|
|
# (remove double dashs and replace spaces with underscore).
|
|
name="pb=${pb}_seed=${seed}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
|
|
|
|
# This is the command to be ran.
|
|
cmd="${exe} --problem=${pb} --seed=${seed} ${algo}"
|
|
echo ${cmd} # Print the command.
|
|
|
|
# Progress print.
|
|
echo -n "problem ${pb}, run ${seed}"
|
|
|
|
# Actually start the command.
|
|
${cmd} > "${outdir}/${name}.dat" 2> "${outdir}/${name}.log"
|
|
|
|
# Check for the most common problem in the log file.
|
|
cat "${outdir}/${name}.log" | grep "illogical performance"
|
|
|
|
perc=$(echo "scale=2;${i}/(${#problems[@]}*${runs})*100" | bc)
|
|
echo -e " -- ${perc}%"
|
|
i=$((i+1))
|
|
done
|
|
done
|
|
|
|
echo "Done $((${#problems[@]}*${runs})) runs, results in ${outdir}"
|