Keywords

1 Introduction

We consider a competitive facility location problem in which two decision makers, a leader and a follower, compete for market share. They choose given numbers of facility locations from a finite set of possible positions in order to satisfy clients, whereas the leader starts by placing all of his facilities. Each customer has a fixed demand which is assumed to be fulfilled by all opened facilities together inversely proportional to their distance. In this respect the considered model is for many real-world scenarios more precise than simpler leader-follower location problems where a customer’s whole demand is assumed to be satisfied by its closest facility only. Demands correspond to the buying power of the customers, so the turnover of the competing firms increases with the amount of fulfilled demand.

We propose an evolutionary algorithm (EA) that tries to find best possible facility locations for the leader so that his turnover is maximized with respect to a follower who is assumed to place his facilities optimally, i.e., aiming at lowering the leader’s revenue. Therefore, for a given set of facility locations of the leader we have to find an optimal set of facility locations of the follower in order to obtain an accurate revenue value the leader can achieve. This makes the problem a bi-level optimization problem. Finding the optimal locations for the follower, which can be seen as evaluating a candidate leader solution, unfortunately is a time-consuming procedure so we want to avoid unnecessary computations. Consequently, we employ a complete solution archive which is a data structure that stores all generated candidate solutions and converts created duplicates into guaranteed not yet considered solutions. Using this archive together with a tabu-search for locally improving solutions within the EA, we are able to reduce premature convergence, loss of diversity and, as already mentioned before, costly re-evaluations of duplicates.

In Sect. 2 we define the problem more formally. Related work is presented in Sect. 3, which is followed by a description of a mathematical model for the leader-follower facility location problem with proportional customer behavior in Sect. 4. Section 5 introduces our evolutionary algorithm and its extensions. Section 6 discusses our computational results and compares our method to an approach from the literature. Finally, we draw conclusions in Sect. 7 and give an outlook on further promising research questions.

2 Problem Definition

In the following we will formally define the leader-follower facility location problem with proportional customer behavior. Given are the numbers \(r \ge 1\) and \(p \ge 1\) of facilities to be opened by the leader and follower, respectively, and a weighted complete bipartite graph \(G=(I,J,E)\) where \(I=\{1,\dots , m\}\) represents the set of potential facility locations, \(J=\{1,\dots , n\}\) represents the set of customers, and \(E=I\times J\), is the set of edges indicating corresponding assignments. Let \(w_j>0, \forall j\in J\), be the demand of each customer, which corresponds to the turnover to be earned by the serving facilities, and \(d_{ij} \ge 0, \forall (i,j)\in E\), be the distances between customers and potential facility locations. The goal for the leader is to choose exactly \(p\) locations from \(I\) for opening facilities in order to maximize her turnover under the assumption that the follower in turn chooses \(r\) locations for his facilities optimally maximizing his turnover.

Each customer \(j\) splits her demand over all opened facilities. The amount of demand that a facility fulfills is inversely proportional to its distance to the customer. In the following we give a formal definition of a candidate solution and the turnover computation. Let \((X,Y)\) be a candidate solution to our leader-follower facility location problem, where \(X \subseteq I, |X|=r\), is the set of locations chosen by the leader and \(Y \subseteq I, |Y|=p\), is the associated set of follower locations. Furthermore, let \(x_i=1\) if \(i\in X\) and \(x_i=0\) otherwise, and \(y_i=1\) if \(i\in Y\) and \(y_i=0\) otherwise, \(\forall i\in I\). Then, the turnover of the follower is

$$p^\mathrm {f}=\sum \limits _{j\in J}{w_j\frac{\sum \limits _{i\in I}\frac{1}{d_{ij} + 1}x_i}{\sum \limits _{i\in I}{\frac{1}{d_{ij} + 1}x_i} + \sum \limits _{i\in I}{\frac{1}{d_{ij} + 1}y_i}}}$$

and the turnover of the leader is

$$p^\mathrm {l}=\sum \limits _{j\in J}{w_j}-p^\mathrm {f}.$$

Note that one is added to the original distances \(d_{ij}\) just to avoid numerical problems with zero distances which might occur when considering the same locations for facilities and customers.

3 Related Work

Competitive facility location problems are an old type of problem introduced by Hotelling [8] in 1929. He considers two sellers placing one facility each on a line. In the last years many variations were considered that differ in the way the competitors can open their facilities and in the behavior of the customers. Kress and Pesch give an overview of competitive location problems in networks in [11].

The discrete \((r|p)\)-centroid problem is a competitive facility location problem introduced by Hakimi [7]. In this problem two decision makers can place given numbers of facilities on specific locations and each customer’s demand is always fulfilled by the closest facility. Alekseeva et al. [13] present several heuristic and exact solution approaches. Laporte and Benati [13] developed a tabu search and Roboredo and Pessoa [17] describe a branch-and-cut algorithm.

The leader-follower facility location problem with proportional customer behavior which we consider here differs only in the way how customer demands are satisfied. For this frequently more realistic problem variant not much previous work exists, and unfortunately it is not trivial to extend existing approaches for the \((r|p)\)-centroid problem. Kochetov et al. [10] developed a matheuristic for a more general problem variant that contains our problem as a special case. They assume that for each location several so-called design scenarios are possible. All of a location’s design scenarios have different fixed costs and different attractiveness for the customers. Both competitors have a fixed budget and must choose the facility locations and the design scenarios for these locations in order to maximize their profit. In their work the customers split their demand proportionally to the attractiveness of a facility and inversely proportional to the distance to each facility. The authors suggest an alternating heuristic to solve this problem which is derived from an alternating heuristic developed for the \((r|p)\)-centroid problem with continuous facility locations in [4]. Based on a starting solution for the leader they find the optimal facility locations for the follower. This follower solution is subsequently chosen as leader solution and the optimal follower solution is found again. This procedure is repeated until a solution is obtained which has already been generated. In Sect. 6 we compare our approach to their algorithm.

Vega et al. [21] give an overview on the different customer choice rules of competitive multifacility location problems. They consider six different scenarios of customer behavior, including binary, partially binary, proportional as well as essential and unessential goods. The authors assume that the facilities can be placed anywhere on the plane and give discretization results for several customer choice rules.

Fernández and Hendrix [5] study recent insights in Huff-like competitive facility location and design problems. In their survey article they compared three different articles [12, 19, 20] describing all the same basic model. In all three papers, for each facility a quality level has to be determined similar to the design scenarios used in Kochetov [10] and fixed costs for opening facilities incur. Küçükaydin et al. [12] and Saidani et al. [19] assume that the competitor is already in the market and in Sáiz et al. [20] focus on finding a nash equilibrium of two competitors entering a new market opening only one facility each.

4 Mathematical Model

We present a mathematical non-linear bi-level model for our problem which is derived from Kochetov et al. [10]. Let \(v_{ij}=\frac{1}{d_{ij} + 1}\) be the attractiveness of location \(i\) for customer \(j\). The upper level problem (leader’s problem) is:

$$\begin{aligned}&\max ~ \sum \limits _{j\in J}{w_j\frac{\sum \limits _{i\in I}{v_{ij}x_i}}{\sum \limits _{i\in I}{v_{ij}x_i} + \sum \limits _{i\in I}{v_{ij}y^*_i}}} \end{aligned}$$
(1)
$$\begin{aligned} \text{ s.t. } \quad&\nonumber \\&\sum _{i\in I}x_i = p \end{aligned}$$
(2)
$$\begin{aligned}&x_i\in \{0,1\}&\forall i\in I \end{aligned}$$
(3)

where \((y^*_1, \dots , y^*_m)\) is an optimal solution to the lower level problem (follower’s problem):

$$\begin{aligned}&\max ~ \sum \limits _{j\in J}{w_j\frac{\sum \limits _{i\in I}{v_{ij}y_i}}{\sum \limits _{i\in I}{v_{ij}x_i} + \sum \limits _{i\in I}{v_{ij}y_i}}} \end{aligned}$$
(4)
$$\begin{aligned} \text{ s.t. } \quad&\nonumber \\&\sum _{i\in I}y_i = r \end{aligned}$$
(5)
$$\begin{aligned}&y_i\in \{0,1\}&\forall i\in I \end{aligned}$$
(6)

The objective functions (1) and (4) maximize the sum of the fulfilled demand by the leader and the follower, respectively, considering the splitting over the facilities inversely proportional to their distances. Constraint (2) ensures that the leader opens exactly \(p\) facilities and, similarly, constraint (5) guarantees that the follower places exactly \(r\) facilities. Note that the follower in principle is allowed to open facilities at the same locations as the leader. All of the \(x_i\) variables are considered constants in the follower’s problem.

In order to be able to solve the follower’s problem more efficiently Kochetov et al. [10] suggest a linear transformation of this model, which is as follows. First, we introduce two new kinds of variables:

$$\begin{aligned} z_j=\frac{1}{\sum \limits _{i\in I}{v_{ij}x_i} + \sum \limits _{i\in I}{v_{ij}y_i}} \quad \quad&\forall j\in J \end{aligned}$$
(7)

and

$$\begin{aligned} y_{ij}=w_jz_jv_{ij}y_i&\quad \qquad \forall i\in I, j\in J. \end{aligned}$$
(8)

Variables \(y_{ij}\) have the intuitive meaning that they are the demand of customer \(j\) that is supplied by the follower facility at location \(i\). It is obvious that if we are able to model the non-linear equation (8) in a linear way such that equation (7) is valid we get a model that is equivalent to (46). This is realized by the following mixed integer linear program (MIP):

$$\begin{aligned}&\max ~ \sum \limits _{j\in J}{\sum \limits _{i\in I}{y_{ij}}} \\ \text{ s.t. } \quad&\text{(5), } \text{(6) } \text{ and } \nonumber \end{aligned}$$
(9)
$$\begin{aligned}&\sum \limits _{i\in I}{y_{ij}} + w_jz_j\sum \limits _{i\in I}{v_{ij}x_i} \le w_j&\forall j\in J \end{aligned}$$
(10)
$$\begin{aligned}&y_{ij}\le w_jy_i&\forall i\in I, j\in J \end{aligned}$$
(11)
$$\begin{aligned}&y_{ij} \le w_jv_{ij}z_j \le y_{ij} + W(1-y_i)&\forall i\in I, j\in J \end{aligned}$$
(12)
$$\begin{aligned}&y_{ij}\ge 0, z_j\ge 0&\forall i\in I, j\in J \end{aligned}$$
(13)

Objective function (9) maximizes the turnover obtained by the follower. Constraints (10) set the variables \(y_{ij}\) by restricting them not exceed the total demand of customer \(j\) minus the demand captured by the leader. The fact that a facility location \(i\) can only get some turnover from customer \(j\) when the follower opens a facility there is ensured by constraints (11). Finally, equation (8) is fulfilled because of constraints (12).

Constant \(W\) is chosen large enough, so that an optimal solution to this model satisfies equations (7), i.e., \(W=\max \limits _{j\in J}{(w_j)}\cdot \max \limits _{i\in I, j\in J}{(v_{ij})}\cdot \max \limits _{j\in J}{(z_j)}\), where \(\max \limits _{j\in J}{(z_j)}\le \max \limits _{j\in J}{(1/\sum \limits _{i\in I}{v_{ij}x_i})}\) because of constraints (10). Due to constraint (12) with its \(W\), the linear programming (LP) relaxation of this model unfortunately is relatively weak, therefore finding an optimal solution to this model using a general purpose mixed integer programming solver like CPLEX is time-consuming even for small instances. Nevertheless, this model is still easier to solve than (46) directly.

5 Evolutionary Algorithm

In this section we present an EA that aims to find the optimal solution to the leader’s problem. We use an incomplete solution representation only storing the facilities of the leader indicated by the binary vector \(x = (x_1, \dots ,x_m)\). For augmenting the incomplete leader solution, which can also be seen as the evaluation of a candidate leader solution, the follower’s problem has to be solved. As solving this problem exactly is time-consuming, a greedy evaluation procedure is used for approximating the quality of intermediate leader solution candidates, which is described in the next section. Only at the end of the EA the best solution found is evaluated using the MIP of Sect. 4 to get an exact objective value. After explaining the greedy solution evaluation we will introduce the EA with its variation operators, the complete solution archive, and finally the embedded tabu-search-based local improvement method.

5.1 Greedy Solution Evaluation

The greedy evaluation procedure tries to find a near-optimal solution to the follower’s problem in short time. It performs by iteratively selecting a locally best possible position for opening a facility, until all \(r\) follower facilities are placed. A currently best possible location is determined by computing the turnover of the follower for all possible locations using a function similar to the objective function of the leader’s problem (4):

$$\begin{aligned} p^\mathrm {f}(y)=\sum \limits _{j\in J}{w_j\frac{\sum \limits _{i\in I}{v_{ij}y_i}}{\sum \limits _{i\in I}{v_{ij}x_i} + \sum \limits _{i\in I}{v_{ij}y_i}}}, \end{aligned}$$
(14)

where \(y = (y_1, \dots y_m)\) is the partial solution vector of the follower containing all so far opened facilities and additionally the candidate location. Then, a location with the highest turnover is chosen; ties are broken randomly. The value obtained from this procedure is a lower bound to the follower’s problem and therefore \(\sum \limits _{j\in J}{w_j}-p^\mathrm {f}(y)\) is an upper bound to the objective value of the leader’s solution.

5.2 Initial Population/EA Framework and Variation Operators

The EA’s initial population is created by choosing \(p\) different facility locations uniformly at random to ensure a high diversity at the beginning. We employ a steady-state genetic algorithm in which exactly one new candidate solution is derived in each iteration. It always replaces the worst individual of the population. Binary tournament selection with replacement is used to choose two candidate solutions for recombination. Offsprings further undergo mutation.

Recombination works as follows. Suppose that we have two candidate solutions \(X^1 \subset I\) and \(X^2 \subset I\). Then an offspring \(X'\) of \(X^1\) and \(X^2\) is derived by adopting all locations from \(S = X^1 \cap X^2\) and adding \(p-|X^1 \cap X^2|\) further locations from \((X^1 \cup X^2) \setminus S\) chosen uniformly at random.

Mutation is based on the swap neighborhood structure, which is also known from the \(p\)-Median problem [22]. A swap move closes a facility and re-opens it at a different, so far unoccupied position. Our mutation applies \(\mu \) random swap moves, where \(\mu \) is determined anew at each EA-iteration by a random sample from a Poisson distribution with mean value one.

5.3 Solution Archive

Several methods for duplicate detection in genetic algorithms have been proposed in the literature [14, 15, 18]. In contrast to simple hashing-based approaches, there exist a few works where the archive is not just used to recognize duplicates, but more importantly to also efficiently convert them into similar not yet considered solutions. Such an operation can also be considered as “intelligent mutation”. Yuen and Chow [23] present such an approach for continuous optimization problems. For the application to our problem a variation of the trie-based complete solution we proposed in [16] is most suitable. Tests on benchmark problems with binary solution representations, including NK landscapes and Royal Road functions as well as the Generalized Minimum Spanning Tree Problem [9] proved that such an archive is able to boost an EAs performance substantially, especially when the solution evaluation is costly.

A complete solution archive is a data structure that stores all generated candidate solutions in a compact way. An evolutionary algorithm can benefit from such an archive because an on-the-fly conversion of already visited solutions increases diversity in the population, reduces the danger of premature convergence and re-evaluations of already visited solutions are avoided completely. Another rather theoretical property of such an archive-enhanced EA is that in principle it is a complete optimization approach yielding a guaranteed optimal solution in bounded time after considering all solutions of the search space. In practice, however, such an EA usually will be terminated earlier, still yielding only a heuristic solution.

For the underlying data structure we use an indexed trie, which is a tree data structure often applied in dictionary applications [6]. For the performance of a solution archive it is important that inserting, searching and converting a solution can be performed efficiently. A trie is exceptionally good for this purpose because all these operations can be implemented in \(\mathcal {O}(m)\) time, where \(m\) is the length of the solution representation, i.e., independent of the number of solutions it contains. In general each trie node consists of \(|\mathcal {A}|\) pointers to successor nodes, indexed by the elements of \(\mathcal {A}\), where \(\mathcal {A}\) is the domain of a solution vectors elements, i.e., \(\mathcal {A}=\{0,1\}\) in our case. The maximum height of the trie is determined by the length of the solution vector \(m\).

We combine the EA and the solution archive as follows: Each time a candidate solution is created, we check if this solution is already contained in the archive. In case it is a duplicate it is converted on-the-fly into a not yet considered solution. Then the new solution is inserted into the archive and transferred back to the EA, where it is integrated into the population.

Trie Operations. We now describe the problem-specific trie operations which are based on the general methods described in [16]. For inserting a solution into the trie we start at the root node of the trie with the first element \(x_1\) of the solution vector. On each level \(i = 1, \dots , m-1\) of the trie we follow the pointer indexed by \(x_i\). At the lowest level \(m-1\), a special constant pointer “C”, also called complete, is stored to finally represent the solution. Intermediate nodes are always only created when needed and null-pointers (“/”) indicate empty subtries. Note that such a trie also has a strong relationship to an explicitly stored branch-and-bound tree, as each node divides the search space into two subspaces. Additionally, a subtrie can be pruned if it contains only solutions that have already been visited, i.e., if both of its children are complete then this node is deleted and the corresponding entry in the parent node is set to complete. On the lefthand side of Fig. 1 a sample trie for a small instance with \(m=7\) and \(p=3\) is shown. This trie contains the solutions \((0,0,1,1,0,0,1)\), \((0,1,0,1,1,0,0)\), and \((0,0,1,0,1,1,0)\). The crossed out trie node is pruned by invalidity, which is explained in the next paragraph.

Fig. 1.
figure 1

Solution archive with some inserted solutions on the lefthand side and a sample conversion of \((0,0,1,1,0,0,1)\) into the new solution \((0,1,1,1,0,0,0)\) on the righthand side.

Apart from this basic insertion procedure we use some modifications for our type of problem, exploiting the fact that exactly \(p\) variables must be set to one in any feasible solution. First, we can stop the insertion procedure already when encountering the \(p\)-th one by storing a “C”. All remaining elements of the solution must be set to zero. This explains the different depths of the branches in Fig. 1. The second adjustment is that we prune the trie by cutting off subtries containing only invalid solutions. Whenever a one is considered for a solution to be inserted, we check if enough facilities would still fit if instead a zero would be chosen. If this is not the case, a corresponding pointer indexed by zero is set to complete to indicate that there are no valid solutions in that subtrie. In Fig. 1 this is done at the crossed out trie node. These modifications ensure that the trie always is as compact as possible.

The search procedure is similar to the insertion described above because we also start at the root and follow the child nodes corresponding to the solution vector but we are not modifying any trie node. Instead, we conclude that the solution is contained in the trie when we encounter a complete pointer and that the solution is new if we reach a null-pointer, respectively.

For converting a contained solution \((x_1, \dots , x_m)\) into a similar but not yet stored one we first choose a position where we will alter the solution. This is done by first determining all feasible deviation positions \(i \in I\), for which the corresponding trie nodes at the search path do not contain complete for \(1-x_i\). From these possibilities, one deviation position is then selected uniformly at random. Should no feasible deviation position exist anymore, we know that the whole search space has been covered and we can stop the whole optimization with the so far best solution being an optimum. In this case the whole trie has been reduced to a single complete pointer. Otherwise, we change the element at the deviation position from one to zero or the other way around which corresponds to closing or opening a facility at location \(i\), respectively. In contrast to previous trie-based solution archives, we have to make another change at a later position for ensuring that \(p\) variables are set to one again. There are two possible cases depending on the pointer at the deviation position.

  • If it is a null-pointer, we know that the corresponding subspace has not been explored yet, which means that any feasible solution from this point on is a new one. Therefore, if we have to close a facility, we choose randomly from the set of open facilities with an index greater than \(i\), set the corresponding variable \(x_i\) to zero, and insert the remaining solution as usual into the new trie branch. The case when we have to open a facility is handled analogously.

  • If the pointer at the deviation position points towards a successive trie node, we go to this node and consider its pointers. If one of them is complete, we have no choice but to follow the other one. Otherwise, we prefer the pointer corresponding to the original solution’s variable value, i.e., we follow at level \(j\) the pointer indexed by \(x_j\), and repeat the process until we end up in a null-pointer. From there we proceed analogously as in the first case and apply the remaining necessary modification(s) randomly to the remaining solution elements. This procedure is guaranteed to terminate with a feasible solution because there must be at least one null-pointer in each subtrie.

On the righthand side of Fig. 1 an example of a conversion is illustrated. Suppose that the already existing solution \(x=(0,0,1,1,0,0,1)\) shall be converted and inserted. Upon reaching the complete pointer, a deviation point is chosen randomly – in this case \(i=2\). Since the alternative entry at \(1-x_2\) points to another trie node, we follow it to the corresponding branch. There we replace the null pointer at position one by inserting a new subtrie branch because the element of the original solution \(x_3=1\). Then we close a random facility with an index greater than 3 – in this case facility at location 7 is chosen – which results in the new solution \((0,1,1,1,0,0,0)\).

Since the conversion procedure can only change solution elements from the deviation position on, it might induce an undesirable bias, i.e., positions with higher indices tend to be changed more often than elements with lower indices. In order to handle this problem, a technique called trie randomization is employed, which was already used in [16] and is described in detail there. Instead of dividing the search space at level \(i\in \{1,\dots ,m\}\) according to the value of element \(x_i\), we decide randomly for each trie-node which remaining element is used for this purpose. The elements’ index is then stored along with the trie node. Figure 2 shows an example of a randomized trie. Although this technique does not avoid biasing completely, it is substantially reduced.

Fig. 2.
figure 2

A randomized trie

5.4 Local Improvement

Each new candidate solution derived in the EA via recombination and mutation whose objective value lies within a certain distance from the so far best solution value further undergoes a local improvement step. It is based on a local search applying the swap neighborhood structure already used for mutation. The best improvement step function is used, so all neighbors of a solution that are reachable via one swap move are considered and evaluated and the best one is selected for the next iteration. This procedure terminates when no superior neighbor can be found.

In cooperation with the solution archive this basic local improvement procedure is extended to a tabu search variant where the solution archive acts as tabu list. When enumerating the swap neighborhood of a candidate solution, we check for each neighbor solution if it has already been visited before, i.e., is contained in the solution archive. Only so far unvisited solutions are evaluated and the best one is selected for the next iteration, even if it is worse than the original solution; ties are broken randomly. This process is repeated for \(\alpha \) iterations without improving the objective value or until there is no more unvisited neighbor solution. Note that our approach differs from classical tabu search implementations since we do not consider move attributes to be black-listed in a tabu list of limited length but are using the solution archive instead.

6 Computational Results

In this section we present computational results of our approach and compare them to results from the literature. We consider instances from the Discrete Location Problems libraryFootnote 1 which are also used by Kochetov et al. [10]. In these instances each customer location corresponds to a possible facility location, i.e., \(I=J\). There are 50 such locations and they are chosen randomly on an Euclidean plane of size \(100\times 100\). The demand of each customer is randomly drawn from \(\{1,\dots ,10\}\) and the number of facilities to be opened is taken from \(\{2,\dots ,5\}\) for the follower and \(\{2,\dots ,10\}\) for the leader. We further generated larger instancesFootnote 2 with same properties but 100 locations, i.e., \(m=n=100\). In total we considered 72 test instances.

The EA has a population size of 100 and has been terminated after 3000 iterations without improvement or after 300 seconds. The termination parameter \(\alpha \) for the tabu-search-based local search is set to five. Local search/tabu search is called for each candidate solution whose objective value lies within \(1\,\%\) of the best solution found so far. After the EA finishes, the final best solution is evaluated exactly by solving the MIP from Sect. 4 and using the best greedy solution as starting solution with CPLEX 12.5. All tests are performed on a single core of an Intel Xeon Quadcore with 2.54 GHz.

First we evaluate the impact of the solution archive on the results in Table 1. We compare following algorithms:

  • The EA variant where the final best solution is not evaluated with the MIP. This means that the corresponding objective values are not exact, but only approximate values from the greedy evaluation method.

  • The Alternating Heuristic (AH) by Kochetov et al. [10].

  • The EA variant (EA+MIP) that does not employ the archive and utilizes the basic local search only; the final best solution is evaluated with MIP.

  • The EA variant (EA+SA+MIP) that uses the solution archive and the tabu search as local improvement method; the final best solution is evaluated with MIP.

In this table we use small instances with 50 locations and customers where \(r\) and \(p\) are chosen from \(\{2,\dots ,5\}\). Mean objective values of 30 independent runs are given in columns \(\overline{obj}\) and corresponding standard deviations in columns \(sd\). Times until termination are listed under \(t[s]\) in seconds. For the variant where no MIP is used, \(\overline{obj}\) \('\) denotes approximate objective values.

Table 1. Results on small instances with \(m=n=50\) locations. We compare the EA before the exact evaluation (EA), the Alternating Heuristic (AH), the EA with exact evaluation (EA+MIP) and the EA with exact evaluation and solution archive (EA+SA+MIP).

We observe that although the run-time of the EA without archive is in many cases slightly higher, on all instances the EA with archive performs better or as good as the EA without archive. Furthermore, AH produces the same results as our EA with solution archive but requires much more time. The low standard deviations of the EA indicate that our approach is robust at least for small instances.

Apart from the short run-times we notice that the objective values obtained by evaluating the best solution found by the EA using the greedy evaluation are very close to those obtained by the exact evaluation. The run-time of all configurations that incorporate the exact evaluation increases steadily with \(r\) because of the quickly growing complexity of the MIP. For larger \(r\) this evaluation is the dominant part of the algorithm, which takes more than five hours in case of \(r=5\) and \(p=2\), while the actual EA usually terminates within one minute. On this instance and on the instance with \(r=2\) and \(p=5\), AH is not even able to terminate after 10 hours, therefore we show the objective value obtained so far in parentheses. Note that the solution space of instances with \(p=2\) is relatively small, so by using the solution archive we are able to enumerate all possible solutions in the archive.

Table 2. Results on the full set of instances. We compare the modified Alternating Heuristic (MAH) with our EA with solution archive (EA+SA).

In order to get a more meaningful comparison between AH and our EA with solution archive, we compare results on the full instance set with up to \(n= 100\) locations in Table 2. For these tests, we use a modified AH algorithm (MAH) which solves the follower’s problem with the greedy solution evaluation procedure and only evaluates the final best solution exactly via MIP in the end. This speeds up the algorithm significantly so that it is applicable for larger instances and the run-times become comparable. On small instances with \(n=50\) and \(p \le 5\) we observe that this modification has no negative effects on the results of the algorithm at all, therefore we assume that this is a viable approach. On instances with \(n=100, r \ge 4\), even this simplification is not enough since a single exact solution evaluation using MIP does not terminate within 10 hours. Therefore we rely on approximations again by using the greedy evaluation method for MAH and EA and put the objective values in parentheses. In these cases MAH runs faster than the EA but produces worse results on almost all instances. We also observe that for small \(n,r\) and \(p\) values the standard deviations of the EA are zero, which confirms that our approach is very robust even for larger instances.

7 Conclusions and Future Work

In this work we developed an evolutionary algorithm for the leader-follower facility location problem with proportional customer behavior incorporating a complete solution archive. We used an incomplete solution representation based on the leader facilities only and described a MIP and a greedy procedure to evaluate a candidate solution. Both of the methods are used in our algorithm. The solution archive is able to significantly improve the results of the otherwise rather simple EA. Furthermore, we observed the alternating heuristic of Kochetov et al. is very time-consuming when the follower’s problem is solved exactly. The run-time can be decreased by using the greedy procedure instead which does not have a significant negative impact on the results. However, our EA is able to find solutions that are equally good or even better than those of the Alternating Heuristic for most of the instances.

Here we considered only the variant where customers split their demand proportionally among all facilities. There exist several other variants with respect to customer behaviors in the literature including binary and partially binary choice. It would be interesting to examine the performance of our approach when applied to different customer behavior. Another approach for such discrete competitive facility location problems is to only solve the linear programming (LP) relaxation of the follower’s problem, which results in a lower bound on the turnover for a leader solution. When combined with a greedy evaluation, which yields an upper bound to a leader solution, it is possible to omit some exact or LP evaluations if the greedy value is lower than the exact or LP solution value of the best solution found so far.