File size: 5,815 Bytes
0ea5594
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
#!/bin/bash
#SBATCH --job-name=eval_all
#SBATCH --partition=<your-partition>
#SBATCH --nodelist=<your-node>
#SBATCH --gpus=1
#SBATCH --cpus-per-task=32
#SBATCH --ntasks=1
#SBATCH --time=72:00:00
#SBATCH --mem=64G
#SBATCH --output=slurm_logs/%j_%x.out
#SBATCH --error=slurm_logs/%j_%x.err

mkdir -p slurm_logs

source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate direct-d3il

cd "$(dirname "$0")"

echo "============================================"
echo "Eval All Methods (dynamics always on) - $(date)"
echo "============================================"

# ============================================================
# Shared parameters
# ============================================================
CP=10 # Diffusion checkpoint
EXP=x0pred
SEED=0
REPEAT=100
BATCH=1
STEPS=32        # Sampling freq.
STEPS_LONG=256
REPLAN=4        # Replan freq.
MARGIN=0.025
RELAXATION=0 # No relaxation (equality constraints)
KP=0.0  # No pdi tracker (open loop over executed horizon) 
KD=0.0 
KI=0.0

COMMON="--diffusion-exp-name $EXP --diffusion-cp $CP --seed $SEED \
  --random-repeat $REPEAT --batch-size $BATCH --replan-steps $REPLAN \
  --n-sampling-steps $STEPS --obstacle-margin $MARGIN \
  --pd-kp $KP --pd-kd $KD --pd-ki $KI --no-early-stop"

# ============================================================
# 1. Unconditional (baseline)
# ============================================================
echo "=== Unconditional ==="
python eval.py $COMMON \
  --guidance-method no \
  --exp-name uncond

# ============================================================
# 2. Gradient Guidance (DPS)
# ============================================================
echo "=== Gradient Guidance ==="
python eval.py $COMMON \
  --guidance-method gradient \
  --constraints \
  --guidance-lr 0.05 \
  --guidance-steps 5 \
  --gradient-start 0.0 \
  --obstacle-weight 100.0 \
  --dynamics-weight 10.0 \
  --exp-name gradient

# ============================================================
# 3. Classifier Guidance
# ============================================================
echo "=== Classifier Guidance ==="
python eval.py $COMMON \
  --guidance-method classifier \
  --constraints \
  --n-sampling-steps $STEPS \
  --guidance-lr 0.05 \
  --gradient-start 0.0 \
  --obstacle-weight 100.0 \
  --dynamics-weight 10.0 \
  --exp-name classifier

# ============================================================
# 4. SafeDiffuser RoS
# ============================================================
echo "=== SafeDiffuser RoS ==="
python eval.py $COMMON \
  --guidance-method safediffuser \
  --constraints \
  --n-sampling-steps $STEPS_LONG \
  --cbf-algorithm RoS \
  --cbf-coefficient 1.0 \
  --exp-name safediffuser_ros

# ============================================================
# 5. SafeDiffuser ReS
# ============================================================
echo "=== SafeDiffuser ReS ==="
python eval.py $COMMON \
  --guidance-method safediffuser \
  --constraints \
  --n-sampling-steps $STEPS_LONG \
  --cbf-algorithm ReS \
  --cbf-coefficient 1.0 \
  --cbf-slack-weight 1000.0 \
  --cbf-relaxation-end 0.9 \
  --exp-name safediffuser_res

# ============================================================
# 6. SafeDiffuser TVS
# ============================================================
echo "=== SafeDiffuser TVS ==="
python eval.py $COMMON \
  --guidance-method safediffuser \
  --constraints \
  --n-sampling-steps $STEPS_LONG \
  --cbf-algorithm TVS \
  --cbf-coefficient 1.0 \
  --cbf-sigmoid-bias 0.9 \
  --cbf-sigmoid-input 256.0 \
  --cbf-sigmoid-output 1.0 \
  --exp-name safediffuser_tvs

# ============================================================
# 7. Primal-Dual
# ============================================================
echo "=== Primal-Dual ==="
python eval.py $COMMON \
  --guidance-method primal-dual \
  --constraints \
  --n-sampling-steps $STEPS_LONG \
  --pd-learning-rate 0.456 \        # Rescaled vals
  --no-pd-use-cbfs \
  --exp-name primal_dual

# ============================================================
# 8. Augmented Lagrangian
# ============================================================
echo "=== Augmented Lagrangian ==="
python eval.py $COMMON \
  --guidance-method augmented-lagrangian \
  --constraints \
  --n-sampling-steps $STEPS_LONG \
  --pd-learning-rate 0.456 \          # Rescaled vals
  --pd-initial-penalty 1e-6 \
  --pd-final-penalty 1e-5 \
  --no-pd-use-cbfs \
  --exp-name augmented_lagrangian

# ============================================================
# 9. Projection (IPOPT in noisy space)
# ============================================================
echo "=== Projection ==="
python eval.py $COMMON \
  --guidance-method projection \
  --constraints \
  --dynamics-relaxation $RELAXATION \
  --projection-start 0.5 \
  --exp-name projection

# ============================================================
# 10. DiRecT (IPOPT in clean space)
# ============================================================
echo "=== DiRecT ==="
python eval.py $COMMON \
  --guidance-method direct \
  --constraints \
  --dynamics-relaxation $RELAXATION \
  --pred-control-weight 1.0 \         # Cost seeking behavior lambda=0.028
  --pred-objective "" \
  --pred-objective-scale 10.0 \
  --guidance-last-steps 16 \
  --exp-name direct

# echo "=== DiRecT + distance objective ==="
# python eval.py $COMMON \
#   --guidance-method direct \
#   --constraints \
#   --dynamics-relaxation $RELAXATION \
#   --pred-control-weight 1.0 \         # Cost seeking behavior lambda=0.028
#   --pred-objective distance \
#   --pred-objective-scale 10.0 \
#   --guidance-last-steps 16 \
#   --exp-name direct_distance

echo "============================================"
echo "All evaluations complete - $(date)"
echo "============================================"