Clustering condition-based maintenance for manufacturing systems with both perfect and imperfect maintenance actions