[irace] add expe run scripts
This commit is contained in:
parent
2326fd8c8b
commit
a959a3b57e
3 changed files with 119 additions and 0 deletions
67
eo/contrib/irace/run_elite.sh
Executable file
67
eo/contrib/irace/run_elite.sh
Executable file
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Number of runs (=seeds).
|
||||
runs=50
|
||||
|
||||
# You most probably want to run on release builds.
|
||||
exe="./release/fastga"
|
||||
|
||||
outdir="$(date --iso-8601=minutes)_results_elites"
|
||||
mkdir ${outdir}
|
||||
|
||||
# FIXME
|
||||
algos=(
|
||||
"--crossover-rate=1 --cross-selector=2 --crossover=1 --mutation-rate=2 --mut-selector=2 --mutation=8 --replacement=8"
|
||||
"--crossover-rate=4 --cross-selector=5 --crossover=2 --mutation-rate=3 --mut-selector=4 --mutation=9 --replacement=9"
|
||||
"--crossover-rate=1 --cross-selector=3 --crossover=8 --mutation-rate=2 --mut-selector=6 --mutation=3 --replacement=2"
|
||||
"--crossover-rate=2 --cross-selector=1 --crossover=1 --mutation-rate=2 --mut-selector=6 --mutation=9 --replacement=0"
|
||||
"--crossover-rate=4 --cross-selector=2 --crossover=2 --mutation-rate=4 --mut-selector=3 --mutation=7 --replacement=0"
|
||||
"--crossover-rate=0 --cross-selector=3 --crossover=2 --mutation-rate=4 --mut-selector=2 --mutation=6 --replacement=0"
|
||||
"--crossover-rate=3 --cross-selector=0 --crossover=3 --mutation-rate=4 --mut-selector=3 --mutation=10 --replacement=0"
|
||||
"--crossover-rate=0 --cross-selector=1 --crossover=0 --mutation-rate=3 --mut-selector=2 --mutation=10 --replacement=0"
|
||||
"--crossover-rate=2 --cross-selector=2 --crossover=2 --mutation-rate=4 --mut-selector=5 --mutation=10 --replacement=0"
|
||||
"--crossover-rate=4 --cross-selector=2 --crossover=2 --mutation-rate=4 --mut-selector=5 --mutation=9 --replacement=0"
|
||||
"--crossover-rate=3 --cross-selector=2 --crossover=10 --mutation-rate=4 --mut-selector=2 --mutation=10 --replacement=0"
|
||||
"--crossover-rate=2 --cross-selector=2 --crossover=5 --mutation-rate=4 --mut-selector=3 --mutation=9 --replacement=0"
|
||||
"--crossover-rate=3 --cross-selector=6 --crossover=2 --mutation-rate=4 --mut-selector=1 --mutation=10 --replacement=0"
|
||||
"--crossover-rate=1 --cross-selector=5 --crossover=9 --mutation-rate=4 --mut-selector=2 --mutation=8 --replacement=0"
|
||||
"--crossover-rate=2 --cross-selector=5 --crossover=2 --mutation-rate=4 --mut-selector=6 --mutation=8 --replacement=0"
|
||||
"--crossover-rate=2 --cross-selector=2 --crossover=10 --mutation-rate=4 --mut-selector=6 --mutation=10 --replacement=0"
|
||||
"--crossover-rate=3 --cross-selector=2 --crossover=2 --mutation-rate=4 --mut-selector=5 --mutation=10 --replacement=0"
|
||||
"--crossover-rate=4 --cross-selector=2 --crossover=2 --mutation-rate=4 --mut-selector=1 --mutation=8 --replacement=0"
|
||||
"--crossover-rate=4 --cross-selector=2 --crossover=2 --mutation-rate=4 --mut-selector=6 --mutation=9 --replacement=0"
|
||||
)
|
||||
|
||||
pb=0 # Loop counter.
|
||||
for algo in "${algos[@]}" ; do
|
||||
echo "Problem ${pb}"
|
||||
echo -n "Runs: "
|
||||
|
||||
for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
|
||||
# This is the command to be ran.
|
||||
cmd="${exe} --full-log=1 --problem=${pb} --seed=${seed} ${algo}"
|
||||
# echo ${cmd} # Print the command.
|
||||
|
||||
# Forge a directory/log file name
|
||||
# (remove double dashs and replace spaces with underscore).
|
||||
name_run="pb=${pb}_seed=${seed}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
|
||||
# echo $name_run
|
||||
|
||||
# Progress print.
|
||||
echo -n "${seed} "
|
||||
|
||||
# Actually start the command.
|
||||
${cmd} > "${outdir}/${name_run}.dat" 2> "${outdir}/${name_run}.log"
|
||||
|
||||
# Check for the most common problem in the log file.
|
||||
cat "${outdir}/${name_run}.log" | grep "illogical performance"
|
||||
done
|
||||
|
||||
echo ""
|
||||
perc=$(echo "scale=2;${pb}/${#algos[@]}*100" | bc)
|
||||
echo -e "${perc}%\n"
|
||||
pb=$((pb+1))
|
||||
|
||||
done
|
||||
|
||||
echo "Done"
|
||||
14
eo/contrib/irace/run_irace_all.sh
Executable file
14
eo/contrib/irace/run_irace_all.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
date -Iseconds
|
||||
echo "STARTS"
|
||||
|
||||
for r in $(seq 15); do
|
||||
echo "Run $r/15";
|
||||
date -Iseconds
|
||||
./run_irace_parallel-batch.sh
|
||||
date -Iseconds
|
||||
done
|
||||
|
||||
echo "DONE"
|
||||
date -Iseconds
|
||||
38
eo/contrib/irace/run_irace_parallel-batch.sh
Executable file
38
eo/contrib/irace/run_irace_parallel-batch.sh
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/bash
|
||||
|
||||
outdir="$(date --iso-8601=ns)_results_irace"
|
||||
mkdir ${outdir}
|
||||
cd ${outdir}
|
||||
|
||||
run(){
|
||||
p="$1"
|
||||
|
||||
echo "Problem ${p}"
|
||||
res="results_problem_${p}"
|
||||
mkdir ${res}
|
||||
cd ${res}
|
||||
|
||||
# Fore some reason, irace absolutely need those files...
|
||||
cp ../../irace-config/example.scen .
|
||||
cp ../../irace-config/default.instances .
|
||||
cp ../../release/fastga .
|
||||
cat ../../irace-config/target-runner | sed "s/{{PROBLEM}}/${p}/" > ./target-runner
|
||||
chmod u+x target-runner
|
||||
|
||||
# Generate the parameter list file.
|
||||
./fastga -h > fastga.param 2>/dev/null
|
||||
# /usr/lib/R/site-library/irace/bin/irace --scenario example.scen 2>&1 | tee irace.log
|
||||
/usr/lib/R/site-library/irace/bin/irace --scenario example.scen &> irace.log
|
||||
|
||||
cd ..
|
||||
echo "Done problem ${p}"
|
||||
}
|
||||
|
||||
N=5 # Somehow 5 is the fastest on my 4-cores machine.
|
||||
(
|
||||
for pb in $(seq 0 18); do
|
||||
((i=i%N)); ((i++==0)) && wait
|
||||
run "$pb" &
|
||||
done
|
||||
wait
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue