In order to make the economic production quantity (EPQ) model more applicable to real-world production and inventory control problems, in this paper, we expand this model by assuming that some imperfect items of different product types are being produced such that reworks are allowed. In addition, we may have more than one product and supplier along with warehouse space and budget limitation. We show that the model of the problem is a constrained non-linear integer program and propose a genetic algorithm (GA) to solve it. Moreover, design of experiments is employed to calibrate the parameters of the algorithm for different problem sizes. At the end, a numerical example is presented to demonstrate the application of the proposed methodology.