This is why there are optimization tools provided. Use them, instead of brute force search.
But really, this is a combinatorial problem, where you want to solve for combinations of variables that solve an underdetermined linear system of 5 equations in 8 unknowns. Is there a good reason you are doing this?
One idea might be to choose any 3 of those variables, fixing tham at some arbitrary set of values. Now use an INTEGER linear programming tool to find a solution to those 5 equations.
But first, you need to convert this to an integer problem, recognizing that as Walter said, you are doing this completely the wrong way. So multiply EVERYTHING by 1000. Now the variables are integers in the interval [0,1000].
Pick some integer values for aa2, aa3, aa4. Substitute them into the equations. Now you will be left with a set of Linear Diophantine equations in the remaining 5 variables. But intlinprog can handle exactly that problem, and do so efficiently. If a purely integer solution is found, it will be unique. Now continue with a new set of values for the first three variables.
Essentially, this shows there will never be more than 1001^3 possible solutions, but likely far fewer than that, since much of the time intlinprog may not produce any solution at all. Of course, if you allowed the variables to be continuous, then there would likely be an infinite 5-manifold of solutions, embedded in the 8 dimensional search space of your problem set. But you have chosen to limit the set by quantizing the problem.
Even at that, I still debate why you are doing all of this, a huge computation to solve a rather trivial problem, when likely the entire reason you are doing this computation in a brute force form is one that would be better handled by a simple constrained optimization. But that is your problem to resolve, not mine.