What does nnet minimise

The reprex is extremely helpful; it gives us something concrete to talk about.

When I ran your code I got two different results:

+                            Actual = red_test[, 12]))
               Actual
Predicted       low lower_middle higher_middle high
  low             1            1             0    0
  lower_middle   10           96            48    4
  higher_middle   3           34            69   18
  high            0            1             9   18

               Actual
Predicted       low lower_middle higher_middle high
  low             2            5             0    0
  lower_middle    7           97            40    2
  higher_middle   2           25            66   23
  high            0            2            13   24

Nothing in the argument or data changed. Just to be sure, is that what you mean by 'convergence'? (BTW: I'm a newbie in NN, but I'm an old hand at trouble shooting, once I understand the question, so bear with me.)