Finding all soldier wins
In the case $n\leq s&lt;2n,dpw\geq n, 2n&lt;dpw+s&lt;(\phi+1)n$, a possible way of finding all soldiers wins is following this approach:


Have the soldiers attack only the castle in the first 2 days, then
once destroyed attack the defenders on the subsequent days. This
gives you the minimum number of days solution.
Have the soldiers attack the castle on the first day, then have
$n-1$ of the soldiers attack the castle on the second day and $1$ of
the soldiers attack the defenders on that second day. Finally
destroy the castle on the third day and let the soldiers battle it
out in the remainder of the days. This gives you the minimum number
of days solution+1 (if there is one).
Have the soldiers attack the castle on the first day, then have
$n-2$ of the soldiers attack the castle on the second day and $2$ of
the soldiers attack the defenders on that second day. On the third
day, the remaining soldiers but 1 attack the castle and the rest
attack the defenders. Finally on the fourth day the remaining
soldiers destroy the castle and let the soldiers battle it out in
the remainder of the days. This gives you the minimum number of days
solution+2 (if there is one).
etc
The basic idea of this approach is to consider the cases where the castle is destroyed on day 2, on day 3, on day 4, etc


For this to work well it would be useful to know not just the minimum number of days it takes for the soldiers to win but also the maximum number of days it takes. It might be possible to find this mathematically.

Also note that there are cases like this

solution 1 (3 rounds)


  start:'soldiers': 10, 'defenders': 0, 'castle-strength': 14
  
  round1:'soldiers': 10, 'defenders': 10, 'castle-strength': 4
  
  round2:'soldiers': 6, 'defenders': 4, 'castle-strength': 0
  
  round3:'soldiers': 6, 'defenders': 0, 'castle-strength': 0


solution 2 (5 rounds)


  start:'soldiers': 10, 'defenders': 0, 'castle-strength': 14
  
  round1:'soldiers': 10, 'defenders': 10, 'castle-strength': 4
  
  round2:'soldiers': 9, 'defenders': 11, 'castle-strength': 3
  
  round3:'soldiers': 4, 'defenders': 5, 'castle-strength': 0
  
  round4:'soldiers': 3, 'defenders': 1, 'castle-strength': 0
  
  round5:'soldiers': 3, 'defenders': 0, 'castle-strength': 0


i.e. there might be gaps (there is no solution in 4 rounds)