Optimal redundancy allocation in coherent systems with heterogeneous dependent components