## Abstract

In this paper, we propose a procedure for designing controlled test problems for single-objective bilevel optimization. The construction procedure is flexible and allows its user to control the different complexities that are to be included in the test problems independently of each other. In addition to properties that control the difficulty in convergence, the procedure also allows the user to introduce difficulties caused by interaction of the two levels. As a companion to the test problem construction framework, the paper presents a standard test suite of 12 problems, which includes eight unconstrained and four constrained problems. Most of the problems are scalable in terms of variables and constraints. To provide baseline results, we have solved the proposed test problems using a nested bilevel evolutionary algorithm. The results can be used for comparison, while evaluating the performance of any other bilevel optimization algorithm. The code related to the paper may be accessed from the website http://bilevel.org.

## 1 Introduction

Bilevel optimization constitutes a challenging class of optimization problems, where one optimization task is nested within the other. A large number of studies have been conducted in the field of bilevel programming (Colson et al., 2007; Vicente and Calamai, 2004; Dempe et al., 2006; Deb and Sinha, 2010), and on its practical applications (Dempe, 2002). Classical approaches commonly used to handle bilevel problems include the Karush-Kuhn-Tucker approach (Bianco et al., 2009; Herskovits et al., 2000), branch-and-bound techniques (Bard and Falk, 1982) and the use of penalty functions (Aiyoshi and Shimizu, 1981). Despite significant progress made in classical optimization toward solving bilevel optimization problems, most of these approaches are rendered inapplicable for bilevel problems with higher levels of complexity. Over the last two decades, technological advances and availability of enormous computing resources have given rise to heuristic approaches for solving difficult optimization problems. Heuristics such as evolutionary algorithms are recognized as potent tools for handling challenging classes of optimization problems. A number of studies have been performed toward using evolutionary algorithms (Yin, 2000; Wang et al., 2008; Deb and Sinha, 2010) for solving bilevel problems. However, the research on evolutionary algorithms for bilevel problems is still in a nascent stage, and significant improvement in the existing approaches is required. Most of the heuristic approaches lack a finite time convergence proof for optimization problems. Therefore, it is common practice among researchers to demonstrate the convergence of their algorithms on a testbed constituting problems with various complexities. To the best of our knowledge, no systematic framework exists for constructing single-objective bilevel test problems with controlled difficulties. Test problems, which offer various difficulties found in practical application problems, are often required during the construction and evaluation of algorithms.

Past studies (Mitsos and Barton, 2006) on bilevel optimization have introduced a number of simple test problems. However, the levels of difficulty cannot be controlled in these test problems. In most of the studies, the problems are either linear (Moshirvaziri et al., 1996), or quadratic (Calamai and Vicente, 1992, 1994), or nonscalable with a fixed number of decision variables. Application problems in transportation (network design, optimal pricing) (Migdalas, 1995; Constantin and Florian, 1995; Brotcorne et al., 2001), economics (Stackelberg games, principal-agent problem, taxation, policy decisions; Fudenberg and Tirole, 1993; Wang and Periaux, 2001; Sinha et al., 2014, 2013), management (network facility location, coordination of multidivisional firms; Sun et al., 2008; Bard, 1983), engineering (optimal design, optimal chemical equilibria; Kirjner-Neto et al., 1998; Smith and Missen, 1982) have also been used to demonstrate the efficiency of algorithms. For most real-world problems, the true optimal solution is unknown. Therefore, it is hard to identify whether a particular solution obtained using an existing approach is close to the optimum. Under these uncertainties, it is not possible to systematically evaluate solution procedures on practical problems. These drawbacks pose hurdles in algorithm development, as the performance of the algorithms cannot be evaluated on various difficulty frontiers. A test suite with a controllable level of difficulties helps in understanding the bilevel algorithms better. It gives information on what properties of bilevel problems are handled efficiently by the algorithm and what are not. An algorithm which performs well on the test problem by effectively tackling most of the challenges offered by the test suite is expected to perform well on other simpler problems as well. Therefore, controlled test problems are necessary to advance the research on bilevel optimization using evolutionary algorithms.

In this paper, we identify the challenges that are commonly encountered in bilevel optimization problems. Based on these findings, we propose a procedure for constructing test problems that mimic these difficulties in a controllable manner. Using the construction procedure, we propose a collection of bilevel test problems that are scalable in terms of variables and constraints. The proposed scheme allows the user to control the difficulties at the two levels independently of each other. At the same time, it also allows the control of the extent of difficulty arising due to interaction of the two levels. To make algorithm evaluation easier, the problems generated using the framework are such that the optimal solution of the bilevel problem is known. Moreover, the induced set of the bilevel problem is known as a function of the upper level variables. Such information helps the algorithm developers to debug their procedures during the development phase, and also allows them to evaluate the convergence properties of the approach.

The paper is organized as follows. In the next section, we explain the structure of a general bilevel optimization problem and introduce the notation used in the paper. Section 3 presents our framework for constructing scalable test problems for bilevel programming. Thereafter, following the guidelines of the construction procedure, we suggest a set of 12 scalable test problems in Section 4. To create a benchmark for evaluating different solution algorithms, the problems are solved using a simple nested bilevel evolutionary algorithm which is a nested scheme described in Section 5. The results for the baseline algorithm are discussed in Section 6.

## 2 Description of a Bilevel Problem

A bilevel optimization problem involves two levels of optimization tasks, where one level is nested within the other. The outer optimization task is usually called the upper level optimization task, and the inner optimization task is called the lower level optimization task. The hierarchical structure of the problem requires that only the optimal solutions of the inner optimization task are acceptable as feasible members for the outer optimization task. The problem contains two types of variables; namely, the upper level variables **x**_{u}, and the lower level variables **x**_{l}. The lower level is optimized with respect to the lower level variables **x**_{l}, and the upper level variables **x**_{u} act as parameters. An optimal lower level vector and the corresponding upper level vector **x**_{u} constitute a feasible upper level solution, provided the upper level constraints are also satisfied. The upper level problem involves all variables **x**=(**x**_{u}, **x**_{l}), and the optimization is to be performed with respect to both **x**_{u} and **x**_{l}. In the following, we provide two equivalent formulations for a general bilevel optimization problem with one objective at both levels:

*Let denote the product of the upper-level decision space*

*X*and the lower-level decision space_{U}*X*, that is, , if and . For upper-level objective function and lower-level objective function , a general bilevel optimization problem is given by_{L}*where the functions , , represent lower-level constraints and , , is the collection of upper-level constraints*.

In the above formulation, a vector **x**^{(0)}=(**x**^{(0)}_{u}, **x**^{(0)}_{l}) is considered feasible at the upper level, if it satisfies all the upper level constraints, and vector **x**^{(0)}_{l} is optimal at the lower level for the given **x**^{(0)}_{u}. We observe in this formulation that the lower-level problem is a parameterized constraint to the upper-level problem. An equivalent formulation of the bilevel optimization problem is obtained by replacing the lower-level optimization problem with a set value function which maps the given upper-level decision vector to the corresponding set of optimal lower-level solutions. In the domain of Stackelberg games, such a mapping is referred to as the rational reaction of the follower to the leader's choice **x**_{u}.

*Let set-valued function , denote the optimal-solution set mapping of the lower level problem, that is*

*A general BLOP is then given by*where the function

*may be a single-vector valued or a multi-vector valued function depending on whether the lower level function has multiple global optimal solutions or not*.

In the test problem construction procedure, the function provides a convenient description of the relationship between the upper and lower level problems. Figures 1 and 2 illustrate two scenarios, where can be a single-vector valued function or a multi-vector valued function. In Figure 1, the lower level problem is shown to be a paraboloid with a single minimum function value corresponding to the set of upper level variables **x**_{u}. Figure 2 represents a scenario where the lower level function is a paraboloid sliced from the bottom with a horizontal plane. This leads to multiple minimum values for the lower level problem, and therefore, multiple lower level solutions correspond to the set of upper level variables **x**_{u}.

*Q*is the quantity demanded,

*P*(

*q*,

_{l}*q*) is the price of the goods sold, and is the cost of production of the respective firm. The variables in this model are the production levels of each firm

_{f}*q*,

_{l}*q*and demand

_{f}*Q*. The leader sets its production level first, and then the follower chooses its production level based on the leader's decision. This simple model assumes homogeneity of the products manufactured by the firms. Additionally, the constraint in Equation (5) ensures that all demand is satisfied. By assuming that the firms produce and sell homogeneous goods, we specify a single linear price function for both firms as an inverse demand function of the form where are constants. Since costs often tend to increase with the amount of production, we assume convex quadratic cost functions for both firms to be of the form where

*c*denote the fixed costs of the respective firm, and and are positive constants. It is possible to solve this bilevel problem analytically. The optimal strategies of the leader and follower, , in this simple linear-quadratic model can be found by using simple differentiation. For brevity, we avoid the steps and directly provide the analytical optimum for the problem. Equations (10) and (11) are the strategies of the leader and follower at Stackelberg equilibrium. These depend only on the constant parameters of the model. Given these values, the leader will choose the production level given by Equation (10), and the follower will react optimally by choosing its production level using Equation (11). At the optimum, the constraint in Equation (5) holds as a strict equality, which provides us the optimal demand . In the presence of linear and quadratic functions, it is possible to solve the model analytically. However, as soon as the functions get complicated, it becomes difficult to find the optimum using analytical or numerical approaches. Next, we provide a test problem construction framework that allows us to create scalable bilevel test problems with a variety of difficulties commonly encountered in bilevel optimization.

_{i}## 3 Test Problem Construction Procedure

The presence of an additional optimization task within the constraints of the upper level optimization task leads to a significant increase in complexity, as compared to any single level optimization problem. In this section, we describe various kinds of complexities that a bilevel optimization problem can offer, and provide a test problem construction procedure that can induce these difficulties in a controllable manner. In order to create realistic test problems, the construction procedure should be able to control the scale of difficulties at both levels independently and collectively, such that the performance of algorithms in handling the two levels is evaluated. The test problems created using the construction procedure are expected to be scalable in terms of number of decision variables and constraints, such that the performance of the algorithms can be evaluated against an increasing number of variables and constraints. The construction procedure should be able to generate test problems with the following properties.

**Necessary Properties**

The optimal solution of the bilevel optimization should be known.

Clear identification of a relationship between the lower level optimal solutions and the upper level variables.

**Properties for Inducing Difficulties**

Controlled difficulty in convergence at upper and lower levels.

Controlled difficulty caused by interaction of the two levels.

Multiple global solutions at the lower level for a given set of upper level variables.

Possibility to have either conflict or cooperation between the two levels.

Scalability to any number of decision variables at upper and lower levels.

Constraints (preferably scalable) at upper and lower levels.

Next, we provide the bilevel test problem construction procedure, which is able to induce most of the difficulties suggested above.

### 3.1 Objective Functions in the Test-Problem Framework

In the above equations, each of the levels contains three terms. A summary on the roles of different terms is provided in Table 1. The upper level and lower level variables have been broken into two smaller vectors (see Panel A in Table 1). The vectors **x**_{u1} and **x**_{l1} are used to induce complexities at the upper and lower levels independently. The vectors **x**_{u2} and **x**_{l2} are responsible for inducing complexities because of interaction. In a similar fashion, we decompose the upper and lower level functions such that each of the components is specialized for a certain purpose only (see Panel B in Table 1). At the upper level, the term *F*_{1}(**x**_{u1}) is responsible for inducing difficulty in convergence solely at the upper level. Similarly, at the lower level, the term *f*_{2}(**x**_{l1}) is responsible for inducing difficulty in convergence solely at the lower level. The term *f*_{2}(**x**_{l1}) decides if there is a conflict or a cooperation between the upper and lower levels. The terms *F*_{3}(**x**_{l2}, **x**_{u2}) and *F*_{3}(**x**_{l2}, **x**_{u2}) are interaction terms which can be used to induce difficulties because of interaction at the two levels. Term *F*_{3}(**x**_{l2}, **x**_{u2}) may also induce a cooperation or a conflict. Finally, *f*_{1}(**x**_{u1}, **x**_{u2}) is a fixed term for the lower level optimization problem and does not induce any convergence difficulties. It is used along with the lower level interaction term to create a functional dependence between lower level optimal solution(s) and the upper level variables. The difficulties related to constraints are handled separately.

Panel A: Decomposition of decision variables . | |||
---|---|---|---|

Upper-level variables . | Lower-level variables . | ||

Vector | Purpose | Vector | Purpose |

x_{u1} | Complexity on upper level | x_{l1} | Complexity on lower level |

x_{u2} | Interaction with lower level | x_{l2} | Interaction with upper level |

Panel B: Decomposition of objective functions | |||

Upper-level objective function | Lower-level objective function | ||

Component | Purpose | Component | Purpose |

F_{1}(x_{u1}) | Difficulty in convergence | f_{1}(x_{u1}, x_{u2}) | Functional dependence |

f_{2}(x_{l1}) | Conflict/cooperation | f_{2}(x_{l1}) | Difficulty in convergence |

F_{3}(x_{u2}, x_{l2}) | Difficulty in interaction | F_{3}(x_{u2}, x_{l2}) | Difficulty in interaction |

Panel A: Decomposition of decision variables . | |||
---|---|---|---|

Upper-level variables . | Lower-level variables . | ||

Vector | Purpose | Vector | Purpose |

x_{u1} | Complexity on upper level | x_{l1} | Complexity on lower level |

x_{u2} | Interaction with lower level | x_{l2} | Interaction with upper level |

Panel B: Decomposition of objective functions | |||

Upper-level objective function | Lower-level objective function | ||

Component | Purpose | Component | Purpose |

F_{1}(x_{u1}) | Difficulty in convergence | f_{1}(x_{u1}, x_{u2}) | Functional dependence |

f_{2}(x_{l1}) | Conflict/cooperation | f_{2}(x_{l1}) | Difficulty in convergence |

F_{3}(x_{u2}, x_{l2}) | Difficulty in interaction | F_{3}(x_{u2}, x_{l2}) | Difficulty in interaction |

#### 3.1.1 Controlled Difficulty in Convergence

**x**

_{u}=(

**x**

_{u1},

**x**

_{u2}), the lower level minimization problem is written as where the upper level variables (

**x**

_{u1},

**x**

_{u2}) act as parameters for the optimization problem. The corresponding optimal-set mapping is given by where

*f*

_{1}does not appear due to its independence from

**x**

_{l}. Since all of the terms are independent of each other, we note that the optimal value of the function

*f*can be recovered by optimizing the functions

*f*

_{2}and

*f*

_{3}individually. Function

*f*

_{2}contains only lower level variables

**x**

_{l1}, which do not interact with upper level variables. It introduces convergence difficulties at the lower level without affecting the upper level optimization task. Function

*f*

_{3}contains both lower level variables

**x**

_{l2}, and upper level variables

**x**

_{u2}. The optimal value of this function depends on

**x**

_{u2}.

The following example shows that the calibration of the desired difficulty level for the lower level problem boils down to the choice of functions *f*_{2} and *f*_{3} such that their optima are known.

*dim*(

**x**

_{u1})=

*U*1,

*dim*(

**x**

_{u2})=

*U*2,

*dim*(

**x**

_{l1})=

*L*1 and

*dim*(

**x**

_{l2})=

*L*2. Consider a special case where

*L*2=

*U*2, then the three functions could be defined as follows where

*f*

_{1}affects only the value of the function without inducing any convergence difficulties. The corresponding optimal set mapping is reduced to an ordinary vector valued function

As discussed above, other functions can be chosen with desired complexities to induce difficulties at the lower level and come up with a variety of lower level functions. Similarly, *F*_{1} is a function of **x**_{u1}, which does not interact with any lower level variables. It causes convergence difficulties at the upper level without introducing any other form of complexity in the bilevel problem.

#### 3.1.2 Controlled Difficulty in Interaction

*F*(

**x**

_{u},

**x**

_{l})=

*F*

_{1}(

**x**

_{u1})+

*F*

_{2}(

**x**

_{l1})+

*F*

_{3}(

**x**

_{u2},

**x**

_{l2}) is the sum of three independent terms. Our primary interest is on the last two terms

*f*

_{2}(

**x**

_{l1}) and

*F*

_{3}(

**x**

_{u2},

**x**

_{l2}), which determine the type of interaction there is going to be between the optimization problems. This can be done in two different ways, depending on whether a cooperation or a conflict is desired between the upper and lower level problems.

*A bilevel optimization problem is said to be cooperative if in the vicinity of for a particular x_{u}, an improvement in the lower level function value leads to an improvement in the upper level function value. Within our test problem framework, the independence of terms in the upper level objective function F implies that the cooperative condition is satisfied when for any upper level decision x_{u} the corresponding lower level decision x_{l}=(x_{l1}, x_{l2}) is such that*

*and*.

*A bilevel optimization problem is said to be conflicting if in the vicinity of for a particular x_{u}, an improvement in the lower-level function value leads to an adverse effect on the upper level function value. In our framework, a conflicting test problem is obtained when for any upper level decision x_{u} the corresponding lower level decision x_{l}=(x_{l1}, x_{l2}) is such that*

*and*.

In the above general form, the functions *f*_{2} and *f*_{3} may have multiple optimal solutions for any given upper level decision **x**_{u}. However, in order to create test problems with tractable interaction patterns, we would like to define them such that each problem has only a single lower level optimum for a given **x**_{u}. To ensure the existence of a single lower level optimum, and to enable realistic interactions between the two levels, we consider imposing the following simple restrictions on the objective functions.

**Case 2**. Creating Conflicting Interaction:

*f*

_{2}and

*f*

_{3}on the right-hand side in Equation (13) The choice of

*F*

_{2}and

*F*

_{3}suggested here is a special case, and there can be many other ways to achieve conflict or cooperation using the two functions.

*F*

_{4}(

**x**

_{u2})=0. The final optimal solution of the bilevel problem is

*F*(

**x**

_{u},

**x**

_{l})=0 for (

**x**

_{u},

**x**

_{l})=

**0**.

#### 3.1.3 Multiple Global Solutions at Lower Level

**x**

_{u}, such that . Then we ensure that out of all these possible lower level optimal solutions one of them () corresponds to the best upper level function value, that is,

To incorporate this difficulty in the problem, we choose the second functions at the upper and lower levels. Given that the term *f*_{2}(**x**_{l1}) is responsible for causing complexities only at the lower level, we can freely formulate it such that it has multiple lower level optimal solutions. From this it necessarily follows that the entire lower level function has multiple optimal solutions.

*dim*(

**x**

_{l2})=2, and the lower level function is defined as follows Here, we observe that

*f*

_{2}(

**x**

_{l1}) induces multiple optimal solutions, as its minimum value is 0 for all

*x*

^{1}

_{l1}=

*x*

^{2}

_{l1}. At the minimum

*F*

_{3}(

**x**

_{u2},

**x**

_{l2}) fixes the values of

*x*

^{1}

_{l2}and

*x*

^{2}

_{l2}to

*x*

^{1}

_{u2}and

*x*

^{2}

_{u2}, respectively. Next, we write the upper level function, ensuring that out of the set

*x*

^{1}

_{l1}=

*x*

^{2}

_{l1}, one of the solutions is best at the upper level, The formulation of

*f*

_{2}(

**x**

_{l1}), as the sum of squared terms ensures that

*x*

^{1}

_{l1}=

*x*

^{2}

_{l1}=0 provides the best solution at the upper level for any given (

**x**

_{u1},

**x**

_{u2}).

### 3.2 Difficulties Induced by Constraints

In this section, we discuss the types of constraints that can be encountered in a bilevel optimization problem. We only consider inequality constraints in this bilevel test problem construction framework. Considering that the bilevel problems have the possibility to have constraints at both levels, and each constraint could be a function of two different kinds of variables, the constrained set at both levels can be further broken down into smaller subsets as shown in Table 2.

Level . | Constraint set . | Subsets . | Dependence . |
---|---|---|---|

Upper | G_{a} depends on x_{u} | ||

G_{b} depends on x_{l} | |||

G_{c} depends on x_{u} and x_{l} | |||

Lower | G_{a} depends on x_{u} | ||

G_{b} depends on x_{l} | |||

G_{c} depends on x_{u} and x_{l} |

Level . | Constraint set . | Subsets . | Dependence . |
---|---|---|---|

Upper | G_{a} depends on x_{u} | ||

G_{b} depends on x_{l} | |||

G_{c} depends on x_{u} and x_{l} | |||

Lower | G_{a} depends on x_{u} | ||

G_{b} depends on x_{l} | |||

G_{c} depends on x_{u} and x_{l} |

In Table 2, **G** and **G** denote the set of constraints at the upper and lower level, respectively. Each of the constraint sets can be broken into three smaller subsets, as shown in the table. The first subset represents constraints that are a function of the upper level variables only; the second subset represents constraints that are a function of the lower level variables only; and the third subset represents constraints that are functions of both upper and lower level variables. The reason for splitting the constraints into smaller subsets is to develop an insight for solving these kinds of problems using an evolutionary approach. If the first constraint subset (**G**_{a} or **G**_{a}) is nonempty at either of the two levels, then for any given **x**_{u} we should check the feasibility of constraints in the sets **G**_{a} and **G**_{a}, before solving the lower level optimization problem. In case there is one or more infeasible constraints in **G**_{a}, then the lower level optimization problem does not contain an optimal lower level solution () for the given **x**_{u}. However, if one or more constraints are infeasible within **G**_{b}, then a lower level optimal solution () may exist for the given **x**_{u}, but the pair () will be infeasible for the bilevel problem. Based on this property, a decision can be made, whether it is useful to solve the lower level optimization problem at all for a given **x**_{u}.

The upper level constraint subsets, **G**_{b} depends on **x**_{l}, and **G**_{c} depends on **x**_{u} and **x**_{l}. The values of these constraints are meaningful only when the lower level vector is an optimal solution to the lower level optimization problem. Based on the various constraints which may be functions of **x**_{u} or **x**_{l}, or both, a bilevel problem introduces different kinds of difficulties in the optimization task. In this paper, we aim to construct such examples of constrained bilevel test problems that incorporate some of these complexities. We have proposed four constrained bilevel problems, each of which has at least one of the following properties.

Constraints exist but are not active at the optimum.

A subset of constraints or all the constraints are active at the optimum.

Upper level constraints are functions of only upper level variables, and lower level constraints are functions of only lower level variables.

Both upper and lower level constraints are functions of upper as well as lower level variables.

Lower level constraints lead to multiple global solutions at the lower level.

Constraints are scalable at both levels.

While describing the test problems in the next section, we discuss the construction procedure for the individual constrained test problems.

## 4 SMD Test Problems

By adhering to the design principles introduced in the previous section, we now propose a set of twelve problems which we call as the SMD^{1} test problems. Each problem represents a different difficulty level in terms of convergence at the two levels, complexity of interaction between two levels, and multimodalities at each of the levels. The first eight problems are unconstrained and the remaining four are constrained.

### 4.1 SMD1

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum.

Figure 3 shows the contours of the upper and lower level functions with respect to the upper and lower level variables for a four-variable test problem. The problem has two upper level variables and two lower level variables, such that the dimensions of **x**_{u1}, **x**_{u2}, **x**_{l1}, and **x**_{u2} are all one. In Figure 3, the central subfigure P shows the upper level function contours with respect to the upper level variables, assuming that the lower level variables are at the optima. Fixing the upper level variables (**x**_{u1}, **x**_{u2}) at five different locations (2, 2), (−2, 2), (2, −2), (−2, −2), and (0, 0), the lower level function contours are shown with respect to the lower level variables. This shows that the contours of the lower level optimization problem may be different for different upper level vectors.

Figure 4 shows the contours of the upper level function with respect to the upper and lower level variables. Subfigure P of Figure 3 once again shows the upper level function contours with respect to the upper level variables. However, subfigures Q, R, S, T, and V now represent the upper level function contours at different (**x**_{u1}, **x**_{u2}), that is, (2, 2), (−2, 2), (2, −2), (−2, −2), and (0, 0). From subfigures Q, R, S, T, and V, we observe that if the lower level variables move away from its optimal location, the upper level function value deteriorates. This means that the upper level function and the lower level functions are cooperative.

### 4.2 SMD2

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum.

Figure 5 shows the contours of the upper and lower level functions with respect to the upper and lower level variables for a four-variable test problem. The problem has two upper level variables and two lower level variables, such that the dimension of **x**_{u1}, **x**_{u2}, **x**_{l1}, and **x**_{u2} are all one. The figure provides the same information about SMD2 as Figure 3 provides about SMD1. However, the shape of the contours differ, which is caused by the use of different *F*_{3} and *f*_{3} functions.

Figure 6 shows the contours of the upper level function with respect to the upper and lower level variables, and provides the same information as Figure 4 provides about SMD1. This figure shows the conflicting nature of the problem caused by using a negative sign in *F*_{2}. The conflicting nature can be observed in the subfigures Q, R, S, T, and U. For a given **x**_{u}, as one moves away from the lower level optimal solution, the upper level function value is further reduced. On the other hand, in Figure 5 we observe that moving away from the lower level optimal solution causes an increase in lower level function value.

### 4.3 SMD3

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum. Rastrigin's function used in

*f*

_{2}has multiple local optima around the global optimum, which introduces convergence difficulties at the lower level.

Subfigure P in Figure 7 shows the contours of the upper level function with respect to the upper level variables, assuming the lower level variables to be optimal at each **x**_{u}. Subfigures Q, R, S, T, and U show the behavior of the lower level function at five different locations of **x**_{u}, which are (2, 2), (−2, 2), (2, −2), (−2, −2), and (0, 0). The problem is once again assumed to have two upper level variables and two lower level variables, such that the dimensions of **x**_{u1}, **x**_{u2}, **x**_{l1}, and **x**_{l2} are all one. The figure shows that there is a different lower level optimization problem at each **x**_{u} which is required to be solved in order to achieve a feasible solution at the upper level. The contours of the lower level optimization problem differ based on the location of the upper level vector. It can be observed that the Rastrigin's function at the lower level introduces multiple local optima into the problem. The contours of the lower level are further distorted because of the presence of the function at the lower level.

In spite of multiple local optima at the lower level, this problem is easier to solve because of the cooperating nature of the functions at the two levels. If a lower level optimization problem is stuck at a local optimum for a particular **x**_{u} (say **x**^{(0)}_{u}), it will have a poorer objective function value at the upper level. However, as soon as another lower level optimization problem is solved in the vicinity of **x**^{(0)}_{u}, which attains a global lower level optimum, then it will have a better objective function value at the upper level and will dominate the previous inaccurate solution. Therefore, a method that is able to handle multimodality at the lower level at least in a few of its lower level optimization runs will be able to successfully solve this problem.

### 4.4 SMD4

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum.

Figure 8 represents the same information as in Figure 7 for a four-variable bilevel problem. However, this problem involves conflict between the two levels, which makes it significantly more difficult to solve than the previous test problem. If a lower level optimization problem is stuck at a local optimum for a particular **x**_{u}, it will end up having a better objective function value at the upper level than what it will attain at the true global lower level optimum. Therefore, even if another lower level optimization problem is successfully solved in the vicinity of **x**_{u}, the previous inaccurate solution will dominate the new solution at the upper level. This problem can be handled only by those methods that are able to efficiently handle lower level multimodality without getting stuck in a local basin.

### 4.5 SMD5

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum.

### 4.6 SMD6

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum.

Figure 9 shows the second term ((*x ^{i}*

_{l1}−

*x*

^{j}_{l1})

^{2}, for

*s*=2) for function

*f*

_{2}, and its contours at the lower level. It can be observed from the figure that all the points along

**x**

^{j}

_{l1}=

**x**

^{i}

_{l2}have a value 0 for the function

*f*

_{2}. All these points are responsible for introducing multiple global optimal solutions at the lower level for any given upper level variable vector. However, out of all the global optimal solutions at the lower level, the solution

**x**

^{j}

_{l1}=

**x**

^{i}

_{l2}=0 provides the best function value at the upper level for any given upper level variable vector.

### 4.7 SMD7

*F*

_{1}at the upper level represents a slightly modified Griewank function. The constituent functions are chosen as The range of variables is as follows: The relationship between the upper level variables and the lower level optimal variables is given as follows: The values of the variables at the optimum are

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum.

### 4.8 SMD8

**x**

_{u}=0 and

**x**

_{l}is obtained by the relationship given above. Both upper and lower level functions are equal to zero at the optimum.

### 4.9 SMD9

*a*= 1 and

*b*=1. The range of variables is as follows: The relationship between the upper level variables (feasible with respect to upper level constraints) and the lower level optimal variables is given as follows: Figure 10 shows the restricted search space for the upper level optimization task when it is a function of two upper level variables, that is,

*p*=1 and

*r*=1. The search space looks similar at the lower level when

*q*=1 and

*r*=1. For higher numbers of variables, the annular rings transform into spherical shells. The values of the variables at the optimum are

**x**

_{u}=0 and

**x**

_{l}=0. Both the upper and lower level functions are equal to zero at the optimum.

### 4.10 SMD10

**x**

_{l}is obtained by the relationship given above.

Figure 11 shows the feasible region of the search space for the upper level optimization task, when the upper level objective is a function of two upper variables, that is, *p*=1, *r*=1. The shaded part in the figure shows the feasible region, and the dotted lines show the contours of the upper level objective function. For the given two-variable upper level objective function, the optimum lies at one of the intersections ((**x**_{u1}, **x**_{u2})=(1, 1)) of the constraints shown in the figure.

### 4.11 SMD11

**x**

_{u1}=0,

**x**

_{u2}=0,

**x**

_{l1}=0, and . The upper level function value is −1 and the lower level function value is +1 at the optimum.

Figure 12 shows the constraints at the upper as well as the lower level when *r*=2. In this example, there is one constraint at the lower level and there are two constraints at the upper level. All the solutions on the lower level constraint represent optimal solutions to the lower level *f*_{3}. When **x**_{l1}=0, such that the function *f*_{2} is also optimal, the solutions on the constraint are optimal solutions to the lower level problem for a given **x**_{u}. It can be observed that the two constraints at the upper level eliminate all the lower level optimal solutions except one. The figure shows the feasible region with respect to upper level constraints for the upper level problem. However, only point **p** represents a feasible solution for the upper level problem for a given **x**_{u}, as the lower level optimal solution lies in the upper level constraint feasible region. This problem differs from SMD6, which also contained multiple global solutions at the lower level, in two ways. First, multiple global solutions at the lower level are introduced by lower level constraints in this problem, whereas in the previous problem the lower level objective function was entirely responsible for introducing multiple global solutions. Second, out of the multiple global solutions from the lower level, a single solution is selected based on upper level constraints, whereas in the previous problem all the lower level global solutions were feasible but only one of those solutions had the best upper level objective value.

### 4.12 SMD12

### 4.13 Summary and Precautions

The properties of the SMD test problems are summarized in Table 3. In the table, N denotes No and Y denotes Yes. It can be observed that the 12 test problems are a good mix of various difficulties that we discussed in the prior sections. We have tried to put the problems in order of increasing difficulty. The last test problem can be observed to contain most of the difficulties except for multimodalities. This table will be helpful in testing algorithms for bilevel optimization. For example, if a new algorithm is able to solve SMD1 but not SMD2, one readily concludes that the algorithm is unable to handle a conflict. Similarly, if the algorithm is able to solve SMD1 and SMD2 but not SMD3 and SMD4, one would infer that the algorithm is unable to handle lower level multimodality. This information will be useful for an algorithm developer, as it aids in identifying the specific weaknesses in an approach that need to be improved.

. | Upper level . | Lower level . | . | |||||||
---|---|---|---|---|---|---|---|---|---|---|

. | . | Scalability . | . | . | Scalability . | . | Multiple . | . | ||

SMD . | Constrained . | Variables . | Constraints . | Multimodality . | Constrained . | Variables . | Constraints . | Multimodality . | Global Solutions . | Conflict . |

1 | N | Y | — | N | N | Y | — | N | N | N |

2 | N | Y | — | N | N | Y | — | N | N | Y |

3 | N | Y | — | N | N | Y | — | Y | N | N |

4 | N | Y | — | N | N | Y | — | Y | N | Y |

5 | N | Y | — | N | N | Y | — | Y | N | Y |

6 | N | Y | — | N | N | Y | — | N | Y | Y |

7 | N | Y | — | Y | N | Y | — | N | N | Y |

8 | N | Y | — | Y | N | Y | — | Y | N | Y |

9 | Y | Y | N | N | Y | Y | N | N | N | Y |

10 | Y | Y | Y | N | Y | Y | Y | N | N | Y |

11 | Y | Y | Y | N | Y | Y | N | N | Y | Y |

12 | Y | Y | Y | N | Y | Y | Y | N | Y | Y |

. | Upper level . | Lower level . | . | |||||||
---|---|---|---|---|---|---|---|---|---|---|

. | . | Scalability . | . | . | Scalability . | . | Multiple . | . | ||

SMD . | Constrained . | Variables . | Constraints . | Multimodality . | Constrained . | Variables . | Constraints . | Multimodality . | Global Solutions . | Conflict . |

1 | N | Y | — | N | N | Y | — | N | N | N |

2 | N | Y | — | N | N | Y | — | N | N | Y |

3 | N | Y | — | N | N | Y | — | Y | N | N |

4 | N | Y | — | N | N | Y | — | Y | N | Y |

5 | N | Y | — | N | N | Y | — | Y | N | Y |

6 | N | Y | — | N | N | Y | — | N | Y | Y |

7 | N | Y | — | Y | N | Y | — | N | N | Y |

8 | N | Y | — | Y | N | Y | — | Y | N | Y |

9 | Y | Y | N | N | Y | Y | N | N | N | Y |

10 | Y | Y | Y | N | Y | Y | Y | N | N | Y |

11 | Y | Y | Y | N | Y | Y | N | N | Y | Y |

12 | Y | Y | Y | N | Y | Y | Y | N | Y | Y |

We would like to caution the developers against heavily relying on test problems alone to draw conclusions about the performance of the algorithm. The test problems are useful at the initial stages of algorithm development to evaluate the performance of an algorithm across various difficulty frontiers. However, it might not always be possible for a test suite to provide difficulties that can be offered by complex real-world problems. Therefore, it is very important to note that the suggested test problems are not a replacement for realistic problems. It is important for researchers to focus on real-world problems as well, along with the test suites, to evaluate their procedures.

In the field of evolutionary multiobjective optimization, the test suites have been quite famous and the developers are often found to draw strong conclusions based on the performance of algorithms on these test suites. One of the caveats is to exploit the structured nature of these test suites to report better performance for their approaches. For example, in the proposed test suite, many of the test problems contain variable separable functions. These test problems would certainly be relatively easier to solve if an algorithm exploits this property of the test problems. Such algorithms would deteriorate drastically if these functions are rotated by multiplying the variables with a transformation matrix. On the other hand, an algorithm that does not exploit this property will be indifferent between the variable separable function and the rotated test problems. It is important to utilize this knowledge about the test problems rather constructively to evaluate the extent to which an algorithm is exploiting the variable separability of the test problems. The authors would like the users to be careful about knowingly or unknowingly exploiting any such structure of the proposed test problems.

## 5 Baseline Solution Methodology

In this section, we describe the solution methodology used to solve the constructed test problems. The suggested procedure is a nested bilevel evolutionary algorithm, and requires that a lower level optimization task be solved for every new set of upper level variables produced using the genetic operators. The method relies on a steady state single objective real coded genetic algorithm to solve the problems at both levels. We have implemented a modified version of the procedures (Sinha et al., 2005, 2006) with two levels, which is used to handle the bilevel test problems. A step-by-step procedure for the algorithm is described in the next section.

### 5.1 Upper Level Optimization Procedure

**Step 1. Initialization Scheme.** Initialize a random population (*N _{p}*) of upper level variables. For each upper level population member, execute a lower level optimization procedure to determine the corresponding optimal lower level variables. Assign upper level fitness based on the upper level function value and constraints.

**Step 2. Selection of Upper Level Parents.** Choose population members from the previous population and conduct a tournament selection to determine parents.

**Step 3. Evolution at the Upper Level.** Perform a crossover (refer to Section 5.4) and a polynomial mutation to create offspring. This provides the upper level variables for each offspring.

**Step 4. Lower Level Optimization.** Solve the lower level optimization problem (refer to Section 5.2) for each offspring. This provides the lower level variables for each offspring.

**Step 5. Evaluate Offspring.** Combine the upper level variables with the corresponding optimal lower level variables for each offspring. Evaluate all the offspring based on upper level function value and constraints.

**Step 6. Population Update.** Choose *r* random members from the parent population and pool them with the offspring. The best *r* members from the pool replace the chosen *r* members from the population.

**Step 7. Termination Check.** Proceed to the next generation (Step 2) if the termination check is false (refer to Section 5.6).

### 5.2 Lower Level Optimization Procedure

The lower level optimization procedure is similar to the upper level procedure except for the initialization step, which differs slightly. In the following, we provide the steps involved in the lower level optimization task. Let the lower level population size be *n _{p}*, and the upper level member being optimized be

**x**

^{0}

_{u}.

**Step 1.** If the execution is transferred from Step 1 of the upper level optimization task, then go to Step 1a, otherwise go to Step 1b.

**Step 1a.** Initialize *n _{p}* lower level members randomly, and assign lower level fitness based on the lower level function value and constraints. Go to Step 2.

**Step 1b.** Initialize *n _{p}*−1 lower level members randomly. Determine the member closest to

**x**

^{0}

_{u}in the upper level population. The lower level optimal variables from the closest upper level member becomes the

*n*th member in the lower level population. Assign lower level fitness based on the lower level function value and constraints. Go to Step 2.

_{p}**Step 2.** Choose members randomly from the lower level population. Perform a tournament selection with respect to lower level fitness to generate parents.

**Step 3.** Perform crossover and mutation to generate offspring.

**Step 4.** Evaluate each offspring with respect to lower level function and constraints.

**Step 5.** Choose *r* members randomly from the lower level population and pool them with the lower level offspring. The best *r* members with respect to lower level fitness replace the chosen *r* members from the lower level population.

**Step 6.** Proceed to the next generation (Step 2) if the termination check (refer to Section 5.6) is false.

### 5.3 Parameters

The parameters in the algorithm were fixed at , , and *r*=2. The probability of crossover was fixed at 0.9 and the probability of mutation was fixed at 0.1. The crossover operator requires two parameters and , which are fixed as suggested in the next section.

### 5.4 Crossover Operator

**x**is the_{p}*index*parent**d**=**x**−_{p}**w**, where**w**is the mean of parents**p**and_{1}**p**are the other two parents_{2}and are the two parameters, where such that

*m*is the number of variables at the upper level and_{u}*m*is the number of variables at the lower level._{l}

### 5.5 Constraint Handling

We define the constraint violation as the sum of violations of all the constraints at the respective levels. If a member at a particular level has a smaller constraint violation, then it is always preferred over a member with a higher constraint violation at the same level. A member with no constraint violation is deemed to be feasible, and is considered better than any of the other infeasible members. While comparing two feasible members, the member with a smaller function value at the level is preferred.

### 5.6 Termination Check

*j*for each lower level variable

*i*be

*v*. If the number of lower level variables is

^{i}_{j}*m*, then is computed as, The value of usually lies between 0 and 1 in Equation (62). In the above equation,

_{l}*v*

^{i}_{0}denotes the variance for the variable

*i*in the initial lower level population. For the lower level, the value of is set as 10

^{-5}, and for the upper level the value of is set as 10

^{-4}.

## 6 Results

In this section, we provide the results obtained from solving the proposed test problems using the bilevel evolutionary algorithm. The described nested bilevel evolutionary algorithm is a naive scheme, and any intelligent bilevel approach should be expected to produce better results with a lesser computational expense. The results are intended as a benchmark, and the performance of other schemes may be compared in terms of percentage of savings obtained when compared to the proposed nested scheme. We performed 11 runs for each of the test problems with 5, 10, and 20 dimensions. In the case with five dimensions, for SMD1 to SMD5 and SMD7 to SMD12 we chose *p*=1, *q*=2, and *r*=1, and for SMD6 we chose *p*=1, *q*=0, *r*=1, and *s*=2. In the case with 10 dimensions, for SMD1 to SMD5 and SMD7 to SMD12 we chose *p*=3, *q*=3, and *r*=2, and for SMD6 we chose *p*=3, *q*=1, *r*=2, and *s*=2. The upper level population size *N _{p}* and the lower level population size

*n*were chosen as 30 for the five-dimensional case. Both population sizes were chosen as 50 and 100 for the 10- and 20-dimensional cases, respectively.

_{p}The results for the five-dimensional test problems are reported in Tables 4 and 5. Table 4 provides the best, median, and worst number of function evaluations at upper and lower levels. The accuracy achieved and the number of times lower level optimization was performed in a single execution of the bilevel optimization run are reported in Table 5. Similar results for the 10-dimensional test problems are reported in Tables 6 and 7. For 20-dimensional test problems, we report only the best, median, and worst function evaluations in Table 8.

. | Best . | Median . | Worst . | |||
---|---|---|---|---|---|---|

. | Total LL . | Total UL . | Total LL . | Total UL . | Total LL . | Total UL . |

Test problem number . | FE . | FE . | FE . | FE . | FE . | FE . |

SMD1 | 256,858 | 438 | 375,488 | 668 | 582,770 | 1,008 |

SMD2 | 196,744 | 380 | 332,197 | 628 | 613,221 | 1,102 |

SMD3 | 262,703 | 488 | 315,598 | 604 | 439,316 | 844 |

SMD4 | 259,486 | 420 | 366,294 | 608 | 480,675 | 796 |

SMD5 | 222,078 | 444 | 457,265 | 930 | 610,108 | 1,232 |

SMD6 | 334,763 | 540 | 427,114 | 696 | 585,358 | 936 |

SMD7 | 246,375 | 468 | 333,629 | 652 | 685,029 | 1,342 |

SMD8 | 443,430 | 812 | 582,583 | 1,008 | 1,218,196 | 2,076 |

SMD9 | 183,231 | 330 | 284,648 | 514 | 395,735 | 696 |

SMD10 | 179,986 | 480 | 277,696 | 758 | 501,639 | 1,316 |

SMD11 | 11,489,609 | 4,348 | 13,408,524 | 5,086 | 20,540,610 | 7,764 |

SMD12 | 6,211,173 | 354 | 12,950,512 | 738 | 20,983,708 | 1,196 |

. | Best . | Median . | Worst . | |||
---|---|---|---|---|---|---|

. | Total LL . | Total UL . | Total LL . | Total UL . | Total LL . | Total UL . |

Test problem number . | FE . | FE . | FE . | FE . | FE . | FE . |

SMD1 | 256,858 | 438 | 375,488 | 668 | 582,770 | 1,008 |

SMD2 | 196,744 | 380 | 332,197 | 628 | 613,221 | 1,102 |

SMD3 | 262,703 | 488 | 315,598 | 604 | 439,316 | 844 |

SMD4 | 259,486 | 420 | 366,294 | 608 | 480,675 | 796 |

SMD5 | 222,078 | 444 | 457,265 | 930 | 610,108 | 1,232 |

SMD6 | 334,763 | 540 | 427,114 | 696 | 585,358 | 936 |

SMD7 | 246,375 | 468 | 333,629 | 652 | 685,029 | 1,342 |

SMD8 | 443,430 | 812 | 582,583 | 1,008 | 1,218,196 | 2,076 |

SMD9 | 183,231 | 330 | 284,648 | 514 | 395,735 | 696 |

SMD10 | 179,986 | 480 | 277,696 | 758 | 501,639 | 1,316 |

SMD11 | 11,489,609 | 4,348 | 13,408,524 | 5,086 | 20,540,610 | 7,764 |

SMD12 | 6,211,173 | 354 | 12,950,512 | 738 | 20,983,708 | 1,196 |

. | Median . | Median . | Median . | LL evals . |
---|---|---|---|---|

Test problem number . | UL accuracy . | LL accuracy . | LL calls . | LL calls . |

SMD1 | 0.000114 | 0.000087 | 668 | 563.89 |

SMD2 | 0.000073 | 0.000016 | 628 | 533.01 |

SMD3 | 0.000054 | 0.000055 | 604 | 536.47 |

SMD4 | 0.000023 | 0.000057 | 608 | 607.80 |

SMD5 | 0.000002 | 0.000009 | 930 | 507.82 |

SMD6 | 0.000108 | 0.000061 | 696 | 604.64 |

SMD7 | 0.000016 | 0.000177 | 652 | 533.84 |

SMD8 | 0.000174 | 0.000027 | 562.69 | |

SMD9 | 0.000017 | 0.000054 | 514 | 553.54 |

SMD10 | 0.034759 | 0.018510 | 758 | 367.04 |

SMD11 | 0.0131643 | 0.0129893 | ||

SMD12 | 0.032372 | 0.000206 | 738 |

. | Median . | Median . | Median . | LL evals . |
---|---|---|---|---|

Test problem number . | UL accuracy . | LL accuracy . | LL calls . | LL calls . |

SMD1 | 0.000114 | 0.000087 | 668 | 563.89 |

SMD2 | 0.000073 | 0.000016 | 628 | 533.01 |

SMD3 | 0.000054 | 0.000055 | 604 | 536.47 |

SMD4 | 0.000023 | 0.000057 | 608 | 607.80 |

SMD5 | 0.000002 | 0.000009 | 930 | 507.82 |

SMD6 | 0.000108 | 0.000061 | 696 | 604.64 |

SMD7 | 0.000016 | 0.000177 | 652 | 533.84 |

SMD8 | 0.000174 | 0.000027 | 562.69 | |

SMD9 | 0.000017 | 0.000054 | 514 | 553.54 |

SMD10 | 0.034759 | 0.018510 | 758 | 367.04 |

SMD11 | 0.0131643 | 0.0129893 | ||

SMD12 | 0.032372 | 0.000206 | 738 |

. | Best . | Median . | Worst . | |||
---|---|---|---|---|---|---|

. | Total LL . | Total UL . | Total LL . | Total UL . | Total LL . | Total UL . |

Test problem number . | FE . | FE . | FE . | FE . | FE . | FE . |

SMD1 | 862,653 | 1,080 | 1,623,356 | 2,534 | 2,074,334 | 3,488 |

SMD2 | 1,055,976 | 1,398 | 1,467,246 | 2,366 | 2,114,442 | 3,418 |

SMD3 | 900,358 | 1,210 | 1,383,632 | 2,278 | 1,805,562 | 2,862 |

SMD4 | 566,344 | 678 | 1,087,632 | 1,598 | 1,314,986 | 2,028 |

SMD5 | 1,226,344 | 1,620 | 1,993,124 | 2,890 | 2,483,442 | 3,492 |

SMD6 | 1,225,742 | 1,502 | 2,224,450 | 2,936 | 3,786,498 (x) | 4,278 (x) |

SMD7 | 932,460 | 1,382 | 1,566,481 | 2,394 | 2,435,994 (x) | 3,858(x) |

SMD8 | 1,457,480 | 2,116 | 2,710,132 | 4,188 | 5,294,734 (x) | 5,986 (x) |

SMD9 | — | — | — | — | — | — |

SMD10 | — | — | — | — | — | — |

SMD11 | — | — | — | — | — | — |

SMD12 | — | — | — | — | — | — |

. | Best . | Median . | Worst . | |||
---|---|---|---|---|---|---|

. | Total LL . | Total UL . | Total LL . | Total UL . | Total LL . | Total UL . |

Test problem number . | FE . | FE . | FE . | FE . | FE . | FE . |

SMD1 | 862,653 | 1,080 | 1,623,356 | 2,534 | 2,074,334 | 3,488 |

SMD2 | 1,055,976 | 1,398 | 1,467,246 | 2,366 | 2,114,442 | 3,418 |

SMD3 | 900,358 | 1,210 | 1,383,632 | 2,278 | 1,805,562 | 2,862 |

SMD4 | 566,344 | 678 | 1,087,632 | 1,598 | 1,314,986 | 2,028 |

SMD5 | 1,226,344 | 1,620 | 1,993,124 | 2,890 | 2,483,442 | 3,492 |

SMD6 | 1,225,742 | 1,502 | 2,224,450 | 2,936 | 3,786,498 (x) | 4,278 (x) |

SMD7 | 932,460 | 1,382 | 1,566,481 | 2,394 | 2,435,994 (x) | 3,858(x) |

SMD8 | 1,457,480 | 2,116 | 2,710,132 | 4,188 | 5,294,734 (x) | 5,986 (x) |

SMD9 | — | — | — | — | — | — |

SMD10 | — | — | — | — | — | — |

SMD11 | — | — | — | — | — | — |

SMD12 | — | — | — | — | — | — |

. | Median . | Median . | Median . | LL evals . |
---|---|---|---|---|

Test problem number . | UL accuracy . | LL accuracy . | LL calls . | LL calls . |

SMD1 | 0.000332 | 0.000018 | 2,534 | 644.54 |

SMD2 | 0.000066 | 0.000011 | 2,366 | 653.36 |

SMD3 | 0.000359 | 0.000033 | 2,278 | 655.76 |

SMD4 | 0.000286 | 0.000027 | 1,598 | 685.43 |

SMD5 | 0.000052 | 0.000009 | 2,890 | 716.82 |

SMD6 | 0.001435 | 0.000082 | 2,936 | 768.34 |

SMD7 | 0.006263 | 0.000127 | 2,394 | 654.34 |

SMD8 | 0.003122 | 0.000157 | 4,188 | 647.12 |

SMD9 | — | — | — | — |

SMD10 | — | — | — | — |

SMD11 | — | — | — | — |

SMD12 | — | — | — | — |

. | Median . | Median . | Median . | LL evals . |
---|---|---|---|---|

Test problem number . | UL accuracy . | LL accuracy . | LL calls . | LL calls . |

SMD1 | 0.000332 | 0.000018 | 2,534 | 644.54 |

SMD2 | 0.000066 | 0.000011 | 2,366 | 653.36 |

SMD3 | 0.000359 | 0.000033 | 2,278 | 655.76 |

SMD4 | 0.000286 | 0.000027 | 1,598 | 685.43 |

SMD5 | 0.000052 | 0.000009 | 2,890 | 716.82 |

SMD6 | 0.001435 | 0.000082 | 2,936 | 768.34 |

SMD7 | 0.006263 | 0.000127 | 2,394 | 654.34 |

SMD8 | 0.003122 | 0.000157 | 4,188 | 647.12 |

SMD9 | — | — | — | — |

SMD10 | — | — | — | — |

SMD11 | — | — | — | — |

SMD12 | — | — | — | — |

. | Best . | Median . | Worst . | |||
---|---|---|---|---|---|---|

. | Total LL . | Total UL . | Total LL . | Total UL . | Total LL . | Total UL . |

Test problem number . | FE . | FE . | FE . | FE . | FE . | FE . |

SMD1 | 3,105,178 | 3,210 | 5,262,456 | 5,248 | 6,868,944 | 7,378 |

SMD2 | 2,166,384 | 3,326 | 4,102,678 | 4,052 | 5,803,812 | 7,076 |

SMD3 | 3,696,032 | 3,220 | 4,814,112 | 4,282 | 7,015,724 | 6,314 |

SMD4 | 2,017,734 | 2,454 | 2,755,534 | 3,110 | 4,364,876 | 5,296 |

SMD5 | 4,574,482 | 4,488 | 8,800,232 | 7,004 | 12,064,566 | 9,290 |

SMD6 | 5,026,522 | 3,530 | 8,448,154 | 6,962 | 12,448,922 (x) | 9,978 (x) |

SMD7 | — | — | — | — | — | — |

SMD8 | — | — | — | — | — | — |

SMD9 | — | — | — | — | — | — |

SMD10 | — | — | — | — | — | — |

SMD11 | — | — | — | — | — | — |

SMD12 | — | — | — | — | — | — |

. | Best . | Median . | Worst . | |||
---|---|---|---|---|---|---|

. | Total LL . | Total UL . | Total LL . | Total UL . | Total LL . | Total UL . |

Test problem number . | FE . | FE . | FE . | FE . | FE . | FE . |

SMD1 | 3,105,178 | 3,210 | 5,262,456 | 5,248 | 6,868,944 | 7,378 |

SMD2 | 2,166,384 | 3,326 | 4,102,678 | 4,052 | 5,803,812 | 7,076 |

SMD3 | 3,696,032 | 3,220 | 4,814,112 | 4,282 | 7,015,724 | 6,314 |

SMD4 | 2,017,734 | 2,454 | 2,755,534 | 3,110 | 4,364,876 | 5,296 |

SMD5 | 4,574,482 | 4,488 | 8,800,232 | 7,004 | 12,064,566 | 9,290 |

SMD6 | 5,026,522 | 3,530 | 8,448,154 | 6,962 | 12,448,922 (x) | 9,978 (x) |

SMD7 | — | — | — | — | — | — |

SMD8 | — | — | — | — | — | — |

SMD9 | — | — | — | — | — | — |

SMD10 | — | — | — | — | — | — |

SMD11 | — | — | — | — | — | — |

SMD12 | — | — | — | — | — | — |

The nested bilevel evolutionary algorithm was able to solve all the test problems with five dimensions. We consider a test problem solved if the difference between the function value achieved by the algorithm and the optimal function value is no more than 0.1. However, the number of function evaluations required to obtain the optimal solutions in each of the test problems is large. The function evaluations at the upper level are much smaller, as compared to the function evaluations at the lower level. A large number of lower level function evaluations are required, as a lower level optimization task is executed for each upper level vector. For every newly created upper level vector, we first find the lower level optimal solution and then evaluate the upper level function value. Therefore, the number of function evaluations at the upper level is the same as the number of times the lower level optimization task is executed. When the size of the test problems is increased to 10, we observe that the number of function evaluations increases significantly. The nested approach is able to successfully solve the first five test problems in all the runs. For test problems SMD6, SMD7, and SMD8, the nested approach is unable to solve the problems in all the runs; rather, it arrives at the optimal solutions for more than 50% of the runs. For SMD6 the success rate was 82%, for SMD7 it was 73%, and for SMD8 it was 63%. The nested approach fails to handle the constrained test problems for the chosen algorithm parameters. The lower level problems could not be completely solved for SMD9 to SMD12, which introduced infeasible members at the upper level. In the case of 20-dimensional test problems, the nested approach is able to solve SMD1 to SMD5 for all the runs. It is able to handle SMD6 in 63% of the runs, but fails to handle SMD7 to SMD12.

The results demonstrate that a high number of function evaluations is required to solve bilevel problems. With an increase in the number of dimensions, the complexity increases significantly and the available computational resources quickly become insufficient to solve larger versions of the problems. In this paper, we utilize a global optimizer at both levels, which successfully solved smaller versions of the test problems, but failed for constrained test problems with high dimensions. Given the complex nature of bilevel optimization problems, evolutionary algorithms might be a useful approach to follow. However, using evolutionary algorithms alone would demand a large number of function evaluations to solve even simple bilevel problems. Therefore, an intelligent approach which utilizes results from the classical literature within an evolutionary algorithm might be a feasible direction for handling such problems. The set of test problems proposed in this paper would be useful to evaluate such algorithms across various difficulties that a bilevel optimization problem could offer.

## 7 Conclusions

In this paper we have provided a test problem construction procedure for unconstrained as well as constrained bilevel optimization. The procedure offers the flexibility to control the difficulties at the two levels individually as well as collectively. To demonstrate the framework, we have created a testbed of 12 bilevel optimization problems, out of which 8 are unconstrained and four are constrained. The test suite contains problems that are scalable in terms of number of variables as well as constraints. Moreover, the optimal solutions for all the test problems are clearly identified, which would be useful in testing and evaluating bilevel optimization algorithms. The test problem construction procedure should allow researchers to create additional test problems by varying the basic functions used in different test problems. As a benchmark for comparison, we have provided results from a nested bilevel evolutionary scheme, which utilizes a global optimizer at both levels. Five- and 10-variable instances of all the test problems have been solved that demonstrate the high computational requirement of bilevel problems even for smaller instances. This amply indicates that the solution of bilevel problems, even with an evolutionary algorithm, is a challenging task and more attention must be devoted to develop computationally faster algorithms.

## Acknowledgments

Authors A. Sinha and P. Malo wish to thank the Wallenberg Foundation and Liikesivistysrahasto for supporting this study. P. Malo acknowledges the support provided by the Emil Aaltonen foundation. K. Deb acknowledges the start-up grant from the Department of Electrical and Computer Engineering and College of Engineering at Michigan State University, East Lansing, USA.

## References

## Note

^{1}

The first six test problems were proposed through a conference publication (Sinha et al., 2012).

## Author notes

*Also Visiting Professor at Aalto University School of Business, Helsinki, 00076 Aalto, Finland.