## 4 Methods for Generating a Near-Optimal Subset of Pareto Optimal Solutions
### Basic \(\epsilon\)-Constraint Method  
The basic \(\epsilon\)-constraint method treats one objective function as a constraint and optimizes the other objective function. In addition, the basic \(\epsilon\)-constraint method can generate nonsupported Pareto optimal solutions, which are dominated by the convex combination of two or more other efficient solutions. A detailed introduction to the basic \(\epsilon\)-constraint method is as follows.  
Based on the bi-objective optimization model (1), let \(f_{1}^{\min}:=\min_{\mathbf{x}\in X}f_{1}(\mathbf{x})\) and \(f_{2}^{\min}:=\min_{\mathbf{x}\in X}f_{2}(\mathbf{x})\). Let \(f_{1}^{\max}:=\min f_{1}(\mathbf{x})\) subject to \(f_{2}(\mathbf{x})\leq f_{2}^{\min},\mathbf{x}\in X\). Let \(\epsilon\) be a small positive number representing the tolerance specified by the decision makers. For ease of exposition, suppose \(f_{1}^{\max}-f_{1}^{\min}\) is an integer multiple of \(\epsilon\). We solve the following single-objective optimization model by varying \(k\) from 0, 1,..., all the way to \((f_{1}^{\max}-f_{1}^{\min})/\epsilon\):  
\[[\text{M1}(k)]\text{: }\min f_{2}(\mathbf{x}) \tag{2}\]  
subject to  
\[f_{1}(\mathbf{x}) \leq f_{1}^{\min}+k\epsilon \tag{3}\] \[\mathbf{x} \in X. \tag{4}\]  
Solutions with the same objective vector should be discarded and only one of them should be retained. Then, we are able to obtain an approximate Pareto frontier.  
It is important to note that a deficiency of the basic \(\epsilon\)-constraint method is that a large number of weakly efficient solutions may be generated. A weakly efficient solution is one whose objective functions cannot be improved simultaneously. Specifically, weakly efficient solutions that allow one objective function to be improved while keeping the other objective functions unaffected are non-Pareto optimal solutions. Thus, a weakly efficient solution is not necessarily Pareto optimal. To address this, additional steps are required to remove weakly efficient solutions that are non-Pareto optimal, through pairwise comparison of the obtained solutions. The pseudocode for the basic \(\epsilon\)-constraint method is shown in Algorithm 1.  
```
1:\(f_{1}^{\min}\leftarrow\min_{x\in X}f_{1}(\mathbf{x})\) // \(f_{1}^{\min}\) represents the minimum objective value of the first dimension.
2:\(f_{2}^{\min}\leftarrow\min_{x\in X}f_{2}(\mathbf{x})\) // \(f_{2}^{\min}\) represents the minimum objective value of the second dimension.
3:\(f_{1}^{\max}\leftarrow\min f_{1}(\mathbf{x})\) subject to \(f_{2}(\mathbf{x})\leq f_{2}^{\min},\mathbf{x}\in X\) // \(f_{1}^{\max}\) represents the minimum objective value of the first dimension when the second dimension achieves its minimum objective value.
4:\(\epsilon\leftarrow\) a small positive number such that \(f_{1}^{\max}-f_{1}^{\min}\) is an integer multiple of \(\epsilon\) // \(\epsilon\) represents the tolerance.
5:\(\mathbf{x}(k)\leftarrow\) null, \(k\in\{0,1,\ldots,(f_{1}^{\max}-f_{1}^{\min})/\epsilon\}\) // \(\mathbf{x}(k)\) represents an optimal solution obtained by the model [M1(\(k\))].
6:for\(k\in\{0,1,\ldots,(f_{1}^{\max}-f_{1}^{\min})/\epsilon\}\)do
7: Solve the model [M1(\(k\))], and obtain an optimal solution \(\mathbf{x}(k)\).
8:endfor
9: Discard solutions \(\mathbf{x}(k)\) for \(k\in\{0,1,\ldots,(f_{1}^{\max}-f_{1}^{\min})/\epsilon\}\) with the same objective vector and retain only one of them.
10: Remove weakly efficient solutions that are non-Pareto optimal through pairwise comparison of the obtained solutions.
```  
**Algorithm 1** Basic \(\epsilon\)-constraint method  
However, if a weakly efficient solution that is non-Pareto optimal cannot be dominated by other solutions in the obtained solution set, this weakly efficient solution cannot be eliminated. Therefore, the solutions obtained by the basic \(\epsilon\)-constraint method may be non-Pareto optimal, which is another deficiency of the basic \(\epsilon\)-constraint method.