update the experiments config
- feat add a template in target-runner to change the problem - loop over irace runs for each problem
This commit is contained in:
parent
82af0ed674
commit
2fe6d03c8a
5 changed files with 26 additions and 42 deletions
|
|
@ -63,7 +63,7 @@ targetRunner = "./target-runner"
|
||||||
## Maximum number of runs (invocations of targetRunner) that will be
|
## Maximum number of runs (invocations of targetRunner) that will be
|
||||||
## performed. It determines the maximum budget of experiments for the
|
## performed. It determines the maximum budget of experiments for the
|
||||||
## tuning.
|
## tuning.
|
||||||
maxExperiments = 2000
|
maxExperiments = 100000
|
||||||
|
|
||||||
## Maximum total execution time in seconds for the executions of
|
## Maximum total execution time in seconds for the executions of
|
||||||
## targetRunner. targetRunner must return two values: cost and time.
|
## targetRunner. targetRunner must return two values: cost and time.
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ error() {
|
||||||
EXE="./fastga"
|
EXE="./fastga"
|
||||||
LOG_DIR="irace_logs"
|
LOG_DIR="irace_logs"
|
||||||
|
|
||||||
FIXED_PARAMS="--problem=0"
|
FIXED_PARAMS="--problem={{PROBLEM}}"
|
||||||
|
|
||||||
CONFIG_ID=$1
|
CONFIG_ID=$1
|
||||||
INSTANCE_ID=$2
|
INSTANCE_ID=$2
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,12 @@ runs=50
|
||||||
problems=($(seq 0 18))
|
problems=($(seq 0 18))
|
||||||
|
|
||||||
# Capture anything passed to the script
|
# Capture anything passed to the script
|
||||||
algo="$@"
|
outdir="$1"
|
||||||
|
algo="${@:2}"
|
||||||
|
|
||||||
# You most probably want to run on release builds.
|
# You most probably want to run on release builds.
|
||||||
exe="./release/fastga"
|
exe="./release/fastga"
|
||||||
|
|
||||||
outdir="results"
|
|
||||||
mkdir -p ${outdir}
|
|
||||||
|
|
||||||
i=1 # Loop counter.
|
i=1 # Loop counter.
|
||||||
for pb in "${problems[@]}" ; do # Iterate over the problems array.
|
for pb in "${problems[@]}" ; do # Iterate over the problems array.
|
||||||
for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
|
for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
|
||||||
|
|
@ -25,7 +23,7 @@ for pb in "${problems[@]}" ; do # Iterate over the problems array.
|
||||||
|
|
||||||
# This is the command to be ran.
|
# This is the command to be ran.
|
||||||
cmd="${exe} --problem=${pb} --seed=${seed} ${algo}"
|
cmd="${exe} --problem=${pb} --seed=${seed} ${algo}"
|
||||||
# echo ${cmd} # Print the command.
|
echo ${cmd} # Print the command.
|
||||||
|
|
||||||
# Progress print.
|
# Progress print.
|
||||||
echo -n "problem ${pb}, run ${seed}"
|
echo -n "problem ${pb}, run ${seed}"
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
algos=(
|
|
||||||
"--crossover-rate=0 --cross-selector=0 --crossover=0 --mutation-rate=0 --mut-selector=0 --mutation=0 --replacement=0"
|
|
||||||
"--crossover-rate=1 --cross-selector=0 --crossover=0 --mutation-rate=0 --mut-selector=0 --mutation=0 --replacement=0"
|
|
||||||
"--crossover-rate=2 --cross-selector=0 --crossover=0 --mutation-rate=0 --mut-selector=0 --mutation=0 --replacement=0"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
i=1 # Loop counter.
|
|
||||||
for algo in "${algos[@]}" ; do
|
|
||||||
echo "${algo}"
|
|
||||||
|
|
||||||
name="$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
|
|
||||||
./run_algo.sh ${algo} &> "expe_${name}.log"
|
|
||||||
|
|
||||||
perc=$(echo "scale=2;${i}/${#algos[@]}*100" | bc)
|
|
||||||
echo -e "${perc}%\n"
|
|
||||||
i=$((i+1))
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Done"
|
|
||||||
|
|
@ -1,19 +1,27 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if [[ $# != 1 ]] ; then
|
outdir="$(date --iso-8601=minutes)_results_irace"
|
||||||
echo "ERROR: build dir not indicated"
|
mkdir ${outdir}
|
||||||
exit 1
|
cd ${outdir}
|
||||||
fi
|
|
||||||
|
|
||||||
cd $1
|
for p in $(seq 0 18) ; do
|
||||||
pwd
|
echo -n "Problem ${p}... "
|
||||||
|
res="results_problem_${p}"
|
||||||
|
mkdir ${res}
|
||||||
|
cd ${res}
|
||||||
|
|
||||||
# Fore some reason, irace absolutely need those files...
|
# Fore some reason, irace absolutely need those files...
|
||||||
cp ../irace-config/example.scen .
|
cp ../../irace-config/example.scen .
|
||||||
cp ../irace-config/target-runner .
|
cp ../../irace-config/default.instances .
|
||||||
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.
|
# Generate the parameter list file.
|
||||||
./fastga -h > fastga.param 2>/dev/null
|
./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 2>&1 | tee irace.log
|
||||||
|
/usr/lib/R/site-library/irace/bin/irace --scenario example.scen &> irace.log
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
echo " done"
|
||||||
|
done
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue