An evolutionary computation approach to solving repairable multi-state multi-objective redundancy allocation problems