Clustering is the process of grouping a set of unlabelled data objects (usually represented as a vector of measurements in a multidimensional space) into a number of clusters. The general objective of clustering is to obtain a partitioning of the data objects such that data within the same cluster are more similar to each other compared to data in different clusters. In some applications, we not only want to obtain static clustering results for one time step, but we are also interested in clustering data objects for an extended period of time. We want to make use of the clustering information from previous time steps to help produce consistent clustering results for the current time step. Ideally, we aim to produce interpretable and efficient clustering results for a set of data objects that evolve over time.