In OGD, introduced by Paschos et al. [1]} for online caching, the cache is initialized with a feasible state \(\mathbf {x}_1\in \mathcal {X}\)  and updated as follows. Upon receiving a request batch \(\mathbf {r}_t\) , the cost \(f_{\mathbf {r}_t}(\mathbf {x}_t)\)  is incurred and the next state becomes:
\( \mathbf {x}_{t+1} = \Pi _\mathcal {X} (\mathbf {x}_t - \eta \nabla f_{\mathbf {r}_t}(\mathbf {x}_t)), \quad \text{for all}~t \in \lbrace 1, \dots , T-1\rbrace ,\) 
