trictrac/bot/scripts/train.sh

51 lines
1.2 KiB
Bash
Raw Permalink Normal View History

2025-08-21 17:39:45 +02:00
#!/usr/bin/env bash
2025-08-10 15:32:41 +02:00
ROOT="$(cd "$(dirname "$0")" && pwd)/../.."
LOGS_DIR="$ROOT/bot/models/logs"
2025-08-21 14:35:25 +02:00
CFG_SIZE=17
2025-08-21 11:30:25 +02:00
BINBOT=burn_train
2025-08-19 21:39:55 +02:00
# BINBOT=train_ppo_burn
2025-08-19 17:46:22 +02:00
# BINBOT=train_dqn_burn
2025-08-17 17:42:59 +02:00
# BINBOT=train_dqn_burn_big
2025-08-13 18:16:30 +02:00
# BINBOT=train_dqn_burn_before
2025-08-10 15:32:41 +02:00
OPPONENT="random"
PLOT_EXT="png"
train() {
2025-08-21 17:39:45 +02:00
ALGO=$1
2025-08-13 18:16:30 +02:00
cargo build --release --bin=$BINBOT
2025-08-17 17:42:59 +02:00
NAME="$(date +%Y-%m-%d_%H:%M:%S)"
2025-08-21 11:30:25 +02:00
LOGS="$LOGS_DIR/$ALGO/$NAME.out"
mkdir -p "$LOGS_DIR/$ALGO"
LD_LIBRARY_PATH="$ROOT/target/release" "$ROOT/target/release/$BINBOT" $ALGO | tee "$LOGS"
2025-08-10 15:32:41 +02:00
}
plot() {
2025-08-21 17:39:45 +02:00
ALGO=$1
2025-08-26 17:12:13 +02:00
NAME=$(ls -rt "$LOGS_DIR/$ALGO" | grep -v png | tail -n 1)
2025-08-21 11:30:25 +02:00
LOGS="$LOGS_DIR/$ALGO/$NAME"
2025-08-26 17:12:13 +02:00
cfgs=$(grep -v "info:" "$LOGS" | head -n $CFG_SIZE)
2025-08-10 15:32:41 +02:00
for cfg in $cfgs; do
eval "$cfg"
done
tail -n +$((CFG_SIZE + 2)) "$LOGS" |
grep -v "info:" |
awk -F '[ ,]' '{print $5}' |
2025-08-21 11:30:25 +02:00
feedgnuplot --lines --points --unset grid --title "adv = $OPPONENT ; density = $dense_size ; decay = $eps_decay ; max steps = $max_steps" --terminal $PLOT_EXT >"$LOGS_DIR/$ALGO/$NAME.$PLOT_EXT"
2025-08-10 15:32:41 +02:00
}
2025-08-21 17:39:45 +02:00
if [[ -z "$1" ]]; then
echo "Usage : train [plot] <algo>"
elif [ "$1" = "plot" ]; then
if [[ -z "$2" ]]; then
echo "Usage : train [plot] <algo>"
else
plot $2
fi
2025-08-10 15:32:41 +02:00
else
2025-08-21 17:39:45 +02:00
train $1
2025-08-10 15:32:41 +02:00
fi