The primary goal of a reliability design is to improve the system reliability. One of the most common methods in system reliability optimization is using redundant components which is called Redundancy Allocation Problem (RAP). While there are many forms of the RAP problem, this problem generally involves the selection of components type and redundancy level for each subsystem in order to maximize the system reliability under some linear constraints. Previous studies in k-out-of-n systems assume that the type of redundancy strategy for each subsystem is pre-determined. In this paper a k-out-of-n system with a choice of redundancy strategies is considered for the first time. This thesis proposes a redundancy allocation problem in a k-out-of-n series-parallel system when the redundancy strategy can be chosen for each subsystem. In other words, in the proposed model, the redundancy strategy is considered as an additional decision variable and an exact method based on integer programming is used to obtain the optimal solution of the problem. As the optimization of RAP belongs to the NP-hard class of problems, meta-heuristic algorithms such as GA and NSGA-II is also developed. The exact method and the proposed GA are implemented on a well-known test problem and the results demonstrate the efficiency of this methodology compared to previous studies.