"What is the best way?" is a very difficult question to answer. What are your objectives? Are you running into performance problems? Do you want to generalize? I really don't think there's any way to answer your question without a lot of guesswork.
As for feedback on your Mathematica code, I think your SolveInnerLoop function could be simplified to this:
SolveInnerLoop[S_, \[CapitalGamma]m_, \[Beta]_] :=
Sum[Log[astar[s[[1, n, 1]], \[Beta], s[[1, n, 2]], \[CapitalGamma]m]], {n, 10}]