## 3 Linear Regression Prediction-Based DMOEA
```
0: Objective functions \(F\); domain/solution space \(D\);
0:\(PS\) and \(PF\);
1: Randomly initialize a population;
2: Initialize the time or environment;
3: Evaluate the objective function values;
4: Find the current \(PS\) and \(PF\);
5: Randomly initialize parameters of LR model in Equations (9), \(A_{k}\), \(B\);
6:while not reach termination condition do
7: Store the last key points, \(X_{k}^{(l)}\), \(k=1,\dots,11\);
8: if environment is changed then
9: Update LR model with stored key points by decreasing gradient algorithm (Algorithm 2);
10: Predict new positions of key points by the LR model, \(\widetilde{X_{k}^{(l+1)}}\);
11: Build a sub-population with \(\widetilde{X_{k}^{(l+1)}}\);
12: Generate a sub-population with the idea of DNSGA-II-B
13: Update the population with random replacements
14:else
15: Evolve the population and update \(PS\) and \(PF\) by NSGA-II;
16:endif
17: Re-evaluate the objective function values
18: Update the current \(PS\) and \(PF\)
19: Go to the next time tick;
20:endwhile
21:return\(PS\) and \(PF\);
```  
**Algorithm 1** LR-based DMOEA  
Within the environment of a DMOP, the DMOEA first updates parameters of the LR-based prediction model based on the stored locations of \(PF\) key points (line 9 in Algorithm 1). The parameter update method for the LR model is outlined in Algorithm 2, and will be talked about later. Then, with the updated LR model, the DMOEA predicts the new locations of key points \(\widehat{(X_{k}^{(l+1)})}\) from their last locations \((X_{k}^{(l)})\) by Equation (9) (line 10 in Algorithm 1). Given the predicted new locations, we generate a set of new individuals with the quantity of a certain proportion of the population size, which constitutes a sub-population (line 11 in Algorithm 1). These new individuals are generated by introducing a Gaussian noise into the predicted key points in every dimension, as formulated by Equation (17). \(P\) represents the location of a newly generated individual. \(N(0,\sigma^{2})\) is the Gaussian distribution with zero mean and the standard deviation of \(\sigma\). \[\widetilde{X_{k}^{(t+1)}}=\sum_{k\in[0,11]}A_{k}\cdot X_{k}^{(t)}+B,k\in[0,11]. \tag{9}\]1  
By the introduction of Gaussian noises, the generalization of the prediction method can be improved, as the generated new individuals are more likely to be close to the \(PF\) of the new environment, when the predicted locations of key points are near the new \(PF\) instead of on it. This is a frequent occurrence because the prediction method is not perfect for precisely predicting the \(PF\) movements in the real world. Next, for improving the population diversity, we employ the population re-initialization method of DNSGA-II-B to generate another sub-population (line 12 in Algorithm 1). When the environment is changed, DNSGA-II-B randomly selects a certain percentage of individuals from the current population, and performs the mutation operator on them to generate new individuals. Given the above two generated sub-populations, our proposed DMOEA re-initializes the population by randomly replacing part of its individuals with generated ones (line 13 in Algorithm 1). For new individuals that are generated above by the evolutionary strategy, the prediction method, and the mutation operator of DNSGA-II-B, the proposed DMOEA evaluatestheir fitness function values (line 17 in Algorithm 1), and updates the current \(PS\) and \(PF\) (line 18 in Algorithm 1) as some individuals in \(PS\) may be dominated by new individuals and there may be new individuals that cannot be dominated by the current \(PS\)'s members. After this, the proposed DMOEA enters the next tick for the next population re-initialization or evolution (line 19 in Algorithm 1). The parameters of the LR model used for location predictions of key points are updated at the beginning of every environment change (line 9 in Algorithm 1). In this paper, we employ the decreasing gradient algorithm to learn the LR model based on the historical key points stored in line 7 of Algorithm 1.