Optimal Maintenance Policy for Multi-component Systems Based On Quantitative Risk Assessment and Non-Linear Programming Concept