Why \(c_0\) Matters
Too low \(c_0\): the algorithm behaves like greedy local search from the start — essentially no exploration, high risk of trapping in the first local minimum encountered.
Too high \(c_0\): wastes many iterations on a random walk, accepting essentially everything; exploration is redundant until \(c\) drops to a useful range.
Goal: set \(c_0\) so that the initial acceptance rate \(\chi(c_0)\) equals a target value (typically 0.8), ensuring nearly all transitions are accepted at the start.
Polynomial-time initialization formula (Eq. 2, Delahaye et al.):
Let \(m_1\) = number of improving transitions and \(m_2\) = number of worsening transitions observed in a random walk sample. Let \(\bar{\Delta f}^{(+)}\) be the average cost increase over worsening moves. Then:
\[c_0 = \frac{\bar{\Delta f}^{(+)}}{\ln\!\left(\dfrac{m_2}{m_2 \, \chi(c_0) - m_1\,(1-\chi(c_0))}\right)}\]
Simplified form used in KSL (when \(m_1 \ll m_2\), which is typical for a random walk): \(c_0 = \frac{-\bar{\Delta f}^{(+)}}{\ln(\chi_0)}\) where \(\chi_0\) is the target initial acceptance probability.