Learning in open-ended environments: Distributed learning and incremental learning