paradiseo/eo/contrib/irace/expe/alpha/run_algo.sh

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}"