In this paper we propose a novel differential evolution algorithm based on self-learning, in order to improve the environment adaptive ability of the population in dynamic optimization. The proposed algorithm can monitor the environment changes using re-evaluation of individuals. We direct the population evolution based on the current best individual and another two random individuals, so that the convergence speed is faster and the diversity of the population is maintained. In this way we may reduce the influence from the frequent environment changes. Testing on six dynamic functions, we study the influences caused by period and dimensions. We also compared the proposed algorithm with existing algorithms, the experimental results show that our algorithm has a better environment adaptive ability and achieves better optimization result.