[lines=2]The set covering problem (SCP) is one of the representative combinatorial optimization problems. It has many real-world applications, e.g. bus, railway and airline crew scheduling, vehicle routing, facility location, and political districting . More recent applications of SCP are on sensor lifetime maximization  and phasor measurement unit placement .
SCP is formally defined as follows. We have a set of elements and a collection of subsets , each of which is associated with a cost , denoted as . We say a collection of subsets is a cover of if holds. is a prime cover of if there is no redundant subset in , i.e., will not cover if any subset is removed from . The goal of SCP is to find an with the minimum cost.
SCP is usually formulated as a binary integer programming problem as follows:
where if and otherwise. The decision variable is set to one if subset is selected in the cover .
It is also common to formulate SCP into matrix form. In this formulation, SCP is the problem of covering the rows of an matrix by a subset of the columns at a minimal cost. We use to represent the matrix, and we say the -th element is covered by the -th subset if . We use
as the cost coefficient vector. Then SCP is defined as follows:
where is the solution vector and is the unit vector of length . The constraint ensures that each row is covered by at least one column. If the costs for all subsets are identical, then the SCP is named unicost SCP. Otherwise, it is called weighted or non-unicost SCP.
SCP is known to be an NP-hard optimization problem , and metaheuristics have been shown to be effective in solving complex problems. Chemical reaction optimization (CRO) is one of the general-purpose metaheuristics which has shown its capability in solving similar NP-hard combinatorial problems, e.g. the quadratic assignment problem . CRO is inspired by chemical reactions, where reactant molecules collide with container walls or with each other. During the collision, the structure of these molecules may change and the energy hold by these molecules may be transferred to other molecules or transformed into other energy forms. The changes made by the collision follow a natural tendency that the potential energy of product molecules is smaller than that of reactant molecules macroscopically . CRO utilizes this tendency to perform optimization.
In this paper, we propose a heuristic-based CRO algorithm to solve SCP, named hCRO. We perform a series of simulations to test its performance. This paper is organized as follows. We perform a brief survey on previously proposed approaches to solve SCP, and some prior efforts on CRO in Section II. Section III presents the design and implementation of our proposed hCRO algorithm. The performance of our proposed algorithm is illustrated with the help of a series of benchmark problems in Section IV. Finally we conclude our work and propose some potential future work in Section V.
SCP is a classical NP-hard combinatorial optimization problem, and has attracted the interests of researchers for several decades. Many exact algorithms, heuristic, and metaheuristic approaches have been proposed and reported in the literature.
Existing exact algorithms to solve SCP is mainly based on the branch-and-bound and branch-and-cut search algorithms . Fisher and Kedia proposed an exact branch-and-bound algorithm based on a dual heuristic . This algorithm is capable of solving SCP instances with up to 200 elements and 2000 subsets (200
2000). Beasley combined a Lagrangian-based heuristic, sub-gradient optimization, and linear programming to improve the branching strategy. He then enhanced this algorithm using feasible solution exclusion constraints and Gomory’s f-cut in . The algorithm is tested on instances with matrices up to the order of 4004000. Harche and Thompson developed a column subtraction exact algorithm to solve sparse instances of SCP up to the order of 9008000 . All the above exact algorithms are based on the tree-search algorithm, which has limitations such as extremely high computational complexity, very large searching space, and relatively poor performance . Due to these drawbacks, researchers resorted to approximate algorithms to meet the requirement of less stringent computation with satisfactory solution quality.
Greedy algorithms are one of the heuristic approaches to quickly solve large combinatorial problems. Chvatal proposed the very first greedy algorithm to solve SCP in 1979 . However, due to its deterministic and myopic feature, this algorithm can rarely generate good solutions despite it is fast and simple. In order to improve the performance of the canonical greedy algorithm, researchers have tried to introduce some stochastic features into it  . Generally, greedy algorithms with stochastic features can generate better solutions than the canonical greedy ones. There are also some non-greedy-based heuristics. Caprara’s work  is an example which gives good solutions. This work introduced variable fixing and pricing techniques into a Lagrangian heuristics.
The research on employing metaheuristic algorithms, especially evolutionary algorithms, to solve SCP has been intensely investigated in the last decade. A wide range of metaheuristics have been utilized, including genetic algorithm , ant colony optimization , simulated annealing 
, and artificial neural networks. The high adaptability and superior performance of metaheuristic make it a competitive approach to solve SCP. Moreover, due to the characteristics of unicost SCP, researchers have proposed some algorithms to solve this special kind of SCP. Grossman and Wool designed an artificial neural network framework to solve unicost SCP . However, the existing algorithms to solve SCP have two drawbacks in general. Firstly, most algorithms are designed to solve non-unicost SCP. Beasley and Chu pointed out that their algorithms based on Lagrangian relaxation and genetic algorithm were not recommended for unicost problems . From the literature, very few algorithms are found to work effectively for both unicost and non-unicost problem. Secondly, most algorithms which can generate satisfactory results are difficult to implement, while the simple algorithms, e.g., greedy algorithms, are less competitive in performance.
In order to overcome these two drawbacks, the goal of this work is to design a robust and simple metaheuristic based on CRO that can generate good results for both unicost and non-unicost SCP. CRO is a recently proposed general-purpose metaheuristic, which has been developed intensely in the past few years. CRO was proposed by Lam et al. in 2010 , and was originally designed for solving combinatorial optimization problems. They solved some classical problems, e.g., quadratic assignment problem and channel assignment problem. CRO is also applied to solve some real world applications like real-time monitoring  and smart grid . For continuous problems, Lam et al. also proposed a variant of CRO, i.e., real-coded CRO, which has demonstrated superior performance in many real-world applications, e.g., training artificial neural networks  and optimal power flow problem in power grid .
Iii Algorithm Design
In this section we will first introduce CRO. Then the implementation of operators used in CRO will be presented.
Iii-a Chemical Reaction Optimization
We consider a number of molecules in a closed container with an attached energy buffer. Molecules are the basic operating agents of CRO. CRO manipulates and controls a collection of molecules to explore the solution space of an optimization problem. CRO considers the molecular structure as the feasible solution of the optimization problem. Besides the molecular structure, a molecule also has some other attributes that help the algorithm to perform optimization. Typically each molecule possesses two different kinds of energy, namely, potential energy (PE) and kinetic energy (KE). We use PE to represent the solution quality, or objective function value, of the corresponding molecular structure. The solution space is decribed by the potential energy surface (PES). The molecules can move freely on the PES. Every position on the PES is associated with a PE value. The lower the PE (for objective function minimization), the better is the solution. KE quantifies the ability of the molecule to move towards an area on the PES with higher values. The larger a molecule’s KE, the higher it can position itself on the PES, which means that this molecule can accept worse solutions. This feature is very important for the cases when CRO tries to manipulate the molecules to jump out of a local optimum in the solution space.
CRO controls and manipulates the molecules with four different elementary reactions, namely, on-wall ineffective collision (on-wall), decomposition (dec), inter-molecular ineffective collision (inter), and synthesis (syn), each of which is described by an operator. Each operator modifies the molecular structures of some molecules, performing stochastic exploration or exploitation in the solution space. The four elementary reactions have different energy handling schemes and molecular structure operations. Meanwhile, they share a feature, which distinguishes CRO from other metaheuristics. All the operations in CRO must comply with the energy conservation law, which states that although energy is allowed to transform between types, the total energy in an isolated system (i.e. the container in CRO) shall remain constant. In CRO, the total energy of the system before and after an elementary reaction is constant. Interested reader can refer to  for the detailed implementation of CRO.
Iii-B Encoding Scheme
There are two major encoding schemes to solve SCP in the literature. The first one is the natural encoding scheme. This scheme uses a binary vector of length for a solution. Each element in the vector represents the status of one particular subset. In other words, this encoding scheme uses the in (2) as the solution for optimization. This encoding scheme is easy to implement, but a random solution generated from this scheme is not guaranteed to be a cover of . In order to overcome this drawback, a second type of encoding scheme is developed for SCP.
The second encoding scheme, which we adopt to solve SCP with CRO, has each value in the solution vector representing a subset index. The values are selected from the indices of those subsets that cover the corresponding element. For example, consider a solution vector . This solution uses the second subset to cover the first and fourth elements in , and the sixth subset to cover the second element and so forth. Solutions in the second scheme have shorter length than those in the first in general (for most non-unicost SCP, is smaller than ). Moreover, all the solutions generated by this encoding scheme satisfy the constraints of SCP naturally .
Iii-C Algorithm Design
CRO defines four different types of elementary reactions, which possess different functionalities. So we design a corresponding operator for each of them. We also design an initial solution generator to generate the solution structures of new molecules. We generate all random numbers uniformly in the solution space, unless stated otherwise.
Iii-C1 Initial Solution Generator
This operator is applied whenever a new molecule is generated. Instead of randomly assigning subset indices (this is common when we solve other optimization problems), we use a reverse cumulative scheme to select a random subset to cover this element. The scheme is stated in Algorithm 1.
In Algorithm 1, the variables are calculated by
This scheme renders the initial solution more likely to include those subsets with lower cost, while ensuring the solution complies with all constraints. This scheme assigns the subsets with lower cost a larger possibility of being selected by (3) and (4). For example, the first element in can be covered by Subsets 1, 3, and 6, whose costs are 2, 4, and 5, respectively. Then the reverse cumulative value of Subset 1 is calculated by , and that for Subsets 3 and 6 are 3 and 2. Thus the probability of being selected are 0.5, 0.3, and 0.2, respectively.
Iii-C2 Neighborhood Search Operator
This operator is applied to the two ineffective elementary reactions, namely, on-wall and inter. This operator modifies the input solution slightly to perform a local search. We employ a perturbation heuristic to act as the neighborhood search operator in CRO. The algorithm is stated in Algorithm 2.
In Algorithm 2, the variables are calculated by
where is the occurrence of in the solution, and
where is the number of blanks that Subset can cover in the solution, and
This perturbation heuristic can be divided into two major parts: remove and repair. In the remove phase (Lines 1 to 5 of Algorithm 2), the least efficient subset is removed from the solution. Its cost efficiency value is calculated by (5). Assume a Subset 2 with cost 10. If it covers two elements in the solution, its cost efficiency value is 5. At the end of the remove phase, we have an incomplete solution with one or several blank positions. Then in the repair phase, we select a most efficient subset to fill in the blank(s). This repair efficiency value is calculated by (6). With the repair efficiency values, we can calculate the probability of being selected for repairing using (7). For example, assume we have an incomplete solution where the underline positions are blank positions. Subset 3 can cover two blanks with a cost 20, and Subset 5 can cover three blanks with a cost 40. So the repair efficiency values of Subsets 3 and 5 are 0.1 and 0.075, respectively. If there are no other subsets, the probabilities of selecting Subsets 3 and 5 are 57% and 43%, respectively. If the algorithm chooses Subset 3 for repairing, the two blanks which can be covered by Subset 3 is filled with 3. This completes one iteration of the repairing phase and this process iterates until all blanks are filled.
For on-wall, we directly employ this perturbation scheme to the molecule, while for inter, we apply the scheme to the two input molecules simultaneously.
|Set||Instances||Size ()||Costs||Density||Opt. Solution|
Iii-C3 Dec and Syn Operators
The main purpose of dec and syn is to help the molecules jump out of local optimum. So we usually impose severe changes to the input molecule(s). For dec operator, we first copy the input molecule to the two output molecules, then perform the neighborhood search operator on each molecule for 10 times separately. The resultant molecules are regarded as the final output molecules. For the syn operator, we introduce a probabilistic combination scheme to combine the two input molecules and create a new one. Assume the two input solutions are and , and their costs are and , respectively. Each element in the output new solution is drawn from the same position of either or with the probability of and , respectively.
Iv Simulation Results
In this section we will first introduce the benchmark instances used to evaluate the performance of our proposed hCRO algorithm. Then the detailed simulation parameter settings, results, and comparisons are presented.
Iv-a Benchmark Instances
|Set||Instances||Size ()||Density||Opt. Solution|
|Initial population size||10|
|Initial molecular kinetic energy||1000|
|Initial central energy buffer size||10000|
|Energy loss rate||0.1|
We will test the performance of our proposed hCRO using 65 non-unicost SCP test instances from Beasley’s OR Library . We note that almost all SCP algorithms developed in the past two decades were tested using these problems. The instances are divided into 11 different sets, as listed in Table I, where the density is the percentage of non-zero entries in the SCP matrix .
We also test the performance of hCRO with the unicost instances in Beasley’s OR Library and the information about these instances are listed in Table II.
Iv-B Parameter Tuning and Simulation Environment
When applying hCRO to perform simulation, several parameters must be set. Coy et al. note that it is often very difficult to find appropriate parameter settings for metaheuristics, and common procedures of generating proper parameter values have ranged from simple trial-and-error to complicated sensitivity analysis . In this work, we use the trial-and-error method to tune the hCRO parameters, as in some previous CRO efforts  . The first instances in the SCP problem set 4, 5, 6, A, B, C, and D are selected as representative instance for parameter tuning and we perform a series of test runs on these instances, using the methodology described in . The final parameters used for all test instances are listed in Table III.
Our proposed approach was implemented in C++ on a computer with an Intel Core i5 3.1-GHz processor and MinGW compiler. In our experimental study, 100 trials of hCRO were conducted for each of these test problems. The maximum function evaluation limit is set to , which is smaller or equal to that in all the metaheuristics we compare with.
Iv-C Simulation Results and Comparison with Other Algorithms
The simulation results are presented in Table IV. In this table, “Inst.” is the instance index, “BKS” is the optimum solution or the best known value, “Opt.” is the number of trials that hCRO is able to find the optimum solution or the best known value. We also present the mean, best, and worst objective function values of the 100 trials, and their respective percentages above the optimal value. The results of hCRO on unicost SCP instances are also presented in Table V.
From Tables IV and V, we can see that hCRO has excellent performance in non-unicost instances, and all 65 optimum solutions are generated in every run for all instances. For unicost-SCP instances, hCRO obtains 12 optimums out of 15. For the remaining instances, hCRO can also generate a satisfactory result (error percentage around 1% of best results).
In order to further demonstrate the performance of hCRO, we also compare hCRO with other algorithms proposed in the recent literature. We compare the performance on non-unicost instances of hCRO with the Lagrangian heuristic by Beasley (Be) , the genetic algorithm by Beasley and Chu (BeCh) , the Lagrangian heuristic by Caprara et al. (CFT) , a probabilistic greedy search heuristic by Haouari and Chaouachi (PROG) , an indirect genetic algorithm by Aickelin (IGA) , a metaheuristic for randomized priority search by Lan et al. (RaPS) , and a metaheuristic algorithm based on gravity by Balachandar and Kannan (GRA) . The comparison is presented in Table VI, where the row of “Opt. Found” is the number of instances in which the corresponding algorithm finds the optimal value or the best known solution out of the all 65 instances. The table shows the average gap of the global optimal found by the algorithm and BKS. For example, an algorithm generates an optimal value of 52 on a problem instance with a best known value of 50, the gap is defined as . From the table we can see, hCRO is one of the best four algorithms that can find the optimal value or best known solution 100% of the time.
We further demonstrate the performance of hCRO by comparing the simulation results on unicost instances with other algorithms. These algorithms include the heuristic random approximation by Peleg et al. (RR) , a greedy heuristic by Chvatal (Gr) , three algorithms proposed by Grossman and Wool in  (Alt-Gr, NN, and R-Gr), and a mean-field approach by Ohlsson et al. (MF) . The results are presented in Table VII. From the comparison we can see hCRO again outperforms all other algorithms dramatically. Therefore, hCRO is an effective algorithm in solving both non-unicost and unicost set covering problems.
Iv-D Analysis on Performance Contribution of the Proposed Heuristic Schemes and CRO Framework
In order to analyze the contribution of different proposed heuristic schemes and the CRO framework to the outstanding performance of hCRO, we also construct different hCRO variations and a heuristic-based Genetic Algorithm (hGA).
To determine the impact of our initialization operator (Algorithm 1) and our neighborhood search operator (Algorithm 2), we create alternative operators for these two schemes and construct two new hCRO variations:
hCRO/IR: This variation of hCRO utilizes our previously proposed perturbation heuristic as the neighborhood search operator, with a “random pick scheme” as the initial population generator. In the “random pick scheme”, we first construct a permutation vector of all elements in . We then start from the first element in this permutation vector and find all subsets that cover . Then we randomly select one such subset and go on to the next element . If is not covered yet, we repeat the previous step, i.e. find all subsets that cover and randomly select one. If is already covered, we go to the next element. This process repeats until all elements are covered by at least one subset.
hCRO/NR: This variation of hCRO utilizes our previously proposed reverse cumulative scheme as the initial population generator, with a “remove-repair scheme” as the neighborhood search operator. In the “remove-repair scheme”, we first randomly remove one subset in the solution. Then we determine all elements not yet covered by any subsets. The remaining part is similar to the “random pick scheme”, where we build a permutation vector, find all subsets that cover the current element and randomly select one such subset.
Besides hCRO/IR and hCRO/NR, we also develop hGA to solve SCP in order to reveal the contribution of the CRO framework in hCRO:
hGA: We utilize our previously proposed reverse cumulative scheme as the initial population generator. We use the inter-molecular ineffective collision operator in hCRO as the crossover operator in hGA, i.e., two perturbation heuristics are executed simultaneously. As for the mutation operator, we adopt the decomposition operator in hCRO and select the better-performing solution as the mutated chromosome. We set the population size the same with hCRO. The crossover rate and mutation rate are set at 0.8 and 0.2, respectively, which is a commonly used combination of parameters for GA.
We perform simulations of hCRO, hCRO/IR, hCRO/NR, and hGA on both unicost and non-unicost instances. The simulation results are presented in Table VIII.
From the results we can see that hCRO always performs the best. While hCRO/IR can generate similar results as hCRO, there is still a small gap between the performance of the two algorithms. This demonstrates the superiority of the reverse cumulative scheme. hCRO/NR performs much worse than all other algorithms, and this observation underlines the importance of the perturbation heuristic in generating good results. The results also show that the CRO framework is superior to conventional problem solver frameworks like GA. This is probably due to the unique energy conservation design in CRO as well as its tolerant, energy-related individual selection pattern .
In this paper we develop a heuristic-based CRO algorithm to solve non-unicost and unicost SCP. This algorithm introduces two heuristics into the operators of CRO. We study the performance of hCRO with a series of benchmark test instances from the Beasley’s OR Library and show that hCRO enjoys superior performance in terms of the solution quality when compared with other algorithms. hCRO is able to find all 65 optimal solutions in non-unicost instances and it demonstrates outstanding performance when applied to unicost SCP. We also perform a series of test over different variations of hCRO as well as a heuristic-based GA to demonstrate the contribution of these two heuristics and the CRO framework on the final performance.
Further research includes the improvement of the performance for huge SCP problems. We can also introduce some implementation techniques that are commonly used by other SCP algorithms, e.g., group memory between iterations, to CRO. Some of the heuristics developed in our proposed algorithm can also be applied to solve other applications of CRO, such as the bin packing problem and the multi-dimensional knapsack problem. Last but not least, we can use the proposed algorithm to solve real-world applications of SCP.
This research is supported in part by the University of Hong Kong Strategic Research Theme on Computation and Information. A.Y.S. Lam is supported in part by the Faculty Research Grant of Hong Kong Baptist University, under Grant No. FRG2/13-14/045.
-  E. Balas and M. W. Padberg, “Set partitioning: A survey,” SIAM Review, vol. 18, no. 4, pp. 710–761, 1976.
-  X.-M. Hu, J. Zhang, Y. Yu, H.-H. Chung, Y.-L. Li, Y.-H. Shi, and X.-N. Luo, “Hybrid genetic algorithm using a forward encoding scheme for lifetime maximization of wireless sensor networks,” IEEE Trans. Evol. Comput., vol. 14, no. 5, pp. 766–781, 2010.
-  J. Xu, M. H. F. Wen, K.-C. Leung, and V. O. K. Li, “Optimal PMU placement using chemical reaction optimization,” in Proc. IEEE Innovative Smart Grid Technologies Conference (ISGT), Washington DC, U.S., Feb. 2013, pp. 1–6.
-  M. R. Garey and D. S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, 1979.
-  A. Y. S. Lam and V. O. K. Li, “Chemical-reaction-inspired metaheuristic for optimization,” IEEE Trans. Evol. Comput., vol. 14, no. 3, pp. 381–399, 2010.
-  S. R. Balachandar and K. Kannan, “A meta-heuristic algorithm for set covering problem based on gravity,” International Journal of Computational and Mathematical Sciences, vol. 4, no. 5, pp. 223–228, 2010.
-  M. L. Fisher and P. Kedia, “Optimal solution of set covering/partitioning problems using dual heuristics,” Management Science, vol. 36, no. 6, pp. 674–688, 1990.
-  J. E. Beasley, “An algorithm for set covering problem,” Eur. J. Oper. Res., vol. 31, no. 1, pp. 85–93, 1987.
-  J. E. Beasley and K. Jornsten, “Enhancing an algorithm for set covering problems,” Eur. J. Oper. Res., vol. 58, no. 2, pp. 293–300, 1992.
-  F. Harche and G. L. Thompson, “The column subtraction algorithm: An exact method for solving weighted set covering, packing and partitioning problems,” Computers and Operations Research, vol. 21, no. 6, pp. 689–705, 1994.
-  V. Chvatal, “A greedy heuristic for the set-covering problem,” Mathematics of Operations Research, vol. 4, no. 3, pp. 233–235, 1979.
-  T. A. Feo and M. G. C. Resende, “A probabilistic heuristic for a computationally difficult set covering problem,” Operations Research Letters, vol. 8, no. 2, pp. 67–71, 1989.
-  M. Haouari and J. S. Chaouachi, “A probabilistic greedy search algorithm for combinatorial optimization with application to the set covering problem,” Journal of the Operational Research Society, vol. 53, pp. 792–799, 2002.
-  A. Caprara, M. Fischetti, and P. Toth, “A heuristic method for the set covering problem,” Operations Research, vol. 47, pp. 730–743, 1999.
-  J. E. Beasley and P. C. Chu, “A genetic algorithm for the set covering problem,” Eur. J. Oper. Res., vol. 94, no. 2, pp. 392–404, 1996.
-  U. Aickelin, “An indirect genetic algorithm for set covering problems,” Journal of the Operational Research Society, vol. 53, no. 10, pp. 1118–1126, 2002.
-  L. Lessing, I. Dumitrescu, and T. Stutzle, “A comparison between ACO algorithms for the set covering problem,” Ant Colony Optimization and Swarm Intelligence, vol. 3172, pp. 1–12, 2004.
-  L. W. Jacobs and M. J. Brusco, “Note: A local-search heuristic for large set-covering problems,” Naval Research Logistics, vol. 42, no. 7, pp. 1129 C–1140, 1995.
-  M. Ohlsson, C. Peterson, and B. Soderberg, “An efficient mean field approach to the set covering problem,” Eur. J. Oper. Res., vol. 133, no. 3, pp. 583 C–595, 2001.
-  T. Grossman and A. Wool, “Computational experience with approximation algorithms for the set covering problem,” Eur. J. Oper. Res., vol. 101, no. 1, pp. 81–92, 1997.
J. J. Q. Yu, V. O. K. Li, and A. Y. S. Lam, “Sensor deployment for air
pollution monitoring using public transportation system,” in
Proc. IEEE Congress on Evolutionary Computation (CEC), Brisbane, Australia, Jun. 2012, pp. 1–7.
-  ——, “Optimal V2G scheduling of electric vehicles and unit commitment using chemical reaction optimization,” in Proc. IEEE Congress on Evolutionary Computation (CEC), Cancun, Mexico, Jun. 2013, pp. 392–399.
-  J. J. Q. Yu, A. Y. S. Lam, and V. O. K. Li, “Evolutionary artificial neural network based on chemical reaction optimization,” in Proc. IEEE Congress on Evolutionary Computation (CEC), New Orleans, LA, U.S., Jun. 2011, pp. 2083–2090.
-  Y. Sun, A. Y. S. Lam, V. O. K. Li, J. Xu, and J. J. Q. Yu, “Chemical reaction optimization for the optimal power flow problem,” in Proc. IEEE Congress on Evolutionary Computation (CEC), Brisbane, Australia, Jun. 2012, pp. 1–8.
-  A. Y. S. Lam and V. O. K. Li, “Chemical reaction optimization: A tutorial,” Memetic Computing, vol. 4, no. 1, pp. 3–17, 2012.
-  J. E. Beasley, “A lagrangian heuristic for set-covering problems,” Naval Research Logistics, vol. 37, no. 1, pp. 151–164, 1990.
-  S. P. Coy, B. L. Golden, G. C. Runger, and E. A. Wasil, “Using experimental design to find effective parameter settings for heuristics,” Journal of Heuristics, vol. 7, pp. 77–97, 2001.
-  J. J. Q. Yu, A. Y. S. Lam, and V. O. K. Li, “Real-coded chemical reaction optimization with different perturbation functions,” in Proc. IEEE Congress on Evolutionary Computation (CEC), Brisbane, Australia, Jun. 2012, pp. 1–8.
-  G. Lan, G. W. DePuy, and G. E. Whitehouse, “An effective and simple heuristic for the set covering problem,” Eur. J. Oper. Res., vol. 176, pp. 1387–1403, 2007.
-  D. Peleg, G. Schechtman, and A. Wool, “Randomized approximation of bounded multicovering problems,” Algorithmica, vol. 18, no. 1, pp. 44–66, 1997.