The main goal of this project is to explore the use of stochastic simulation, genetic algorithms, fuzzy decision making and other tools for solving complex maintenance planning optimization problems. We use two different maintenance activities, corrective maintenance and preventive maintenance. Since the evaluation of specifc candidate maintenance policies can take a long time to execute and the problem of finding the optimal policy is both non-linear and non-convex, we propose the use of genetic algorithms (GA) for the optimization. The main task of the GA is to find the optimal maintenance policy, which involves: (1) the probability of breakdown, (2) calculation of the cost of corrective maintenance, (3) calculation of the cost of preventive maintenance and (4) calculation of ROI (Return On Investment). Another goal of this project is to create a decision making model for multi-criteria systems. To find a near-optimal maintenance policy, we need to have an overview over the health status of the system components. To model the health of a component we should find all the operational criteria that affect it. We also need to analyze alternative maintenance activities in order to make the best maintenance decisions. In order to do that, the TOPSIS method and fuzzy decision making has been used. To evaluate the proposed methodology, internal combustion engine cooling of a typical Scania truck was used as a case study.