The dilemma: periods of high activity also entail high frequency of 'Show HN' posts.
'Best' is defined as that, which will result in the most views. Ultimately, I'd go for user retention, but determining when is the highest saturation of my target audience on a given network is next to impossible, so I'm going with best = biggest number of views.
With this, a simplified approach would be something like: bestTime = fn(currentNumberOfUsers, probOfSeeingPost). probOfSeeingPost in turn would be dependent on the frequency of similar posts, which itself is dependent on the currentNumberOfUsers. So, when one argument (currentNumberOfUsers) is increased, the other (probOfSeeingPost) gets decreased.
Or are there more important factors I'm missing.