Cooperative co-evolution (CC) is an evolutionary algorithm that adopts the divide-and-conquer strategy to solve large-scale optimization problems. It is difficult for CC to specify a suitable subpopulation size to solve different subproblems. The population diversity may be insufficient to search for the global optimum during subpopulations' evolution. In this paper, an adaptive method for enhancing population diversity is embedded in a contribution-based CC. In CC, there are two kinds of subpopulation: the convergent or stagnant subpopulations and the non-convergent and non-stagnant subpopulations. A method is proposed in the paper to evaluate the convergent and stagnant subpopulations' contributions to improving the best overall objective value, which is different from the contribution evaluation on the non-convergent and non-stagnant subpopulations. In each co-evolutionary cycle, the new CC adaptively determines to select a subpopulation, which can make a greater contribution to improving the best overall objective value, between the above two kinds of subpopulation to undergo evolution. When a convergent or stagnant subpopulation is selected to undergo evolution, the subpopulation is re-diversified to enhance its global search capability. Our experimental results and analysis suggest that the new CC algorithm can improve the performance of CC and serves as a competitive solver for large-scale optimization problems. © 2005-2012 IEEE.