In this paper, we study different methods of solving joint redundancy-availability optimization for series-parallel systems with multi-state components. We analyzed various effective factors on system availability in order to determine the optimum number and version of components in each sub-system and consider the effects of improving failure rates of each component in each sub-system and improving reliability of each sub-system. The target is to determine optimum values of all variables for improving the availability level and decreasing the total cost of the system. At first, the exact values of variables are determined using a mathematical model, then, the results of SAParallel, VDO-Parallel and genetic algorithms are compared with the exact solution.