<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Germinal Centre Artificial Immune System for Software Test Suite Reduction</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lukas Rosenbauer</string-name>
          <email>lukas.rosenbauer@bshg.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Anthony Stein</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jo¨ rg Ha¨hner</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Artificial Intelligence in Agricultural Engineering, University of Hohenheim</institution>
          ,
          <addr-line>Garbenstr. 9, Stuttgart</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>BSH Home Appliances</institution>
          ,
          <addr-line>Im Gewerbepark B35, Regensburg</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Organic Computing Group, University of Augsburg</institution>
          ,
          <addr-line>Eichleitnerstr. 30, Augsburg</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Testing is a crucial part in the development of a new product. If too little testing is done, customers might discover previously undetected failures. A common approach to avoid this is to define a test suite that contains at least one test for every requirement. As the execution of manual tests and the implementation of automated ones is timeintensive, it is a profitable goal to reduce the amount of tests during the specification of the test suite whilst still covering all requirements. In this work we provide an artificial immune system to detect redundant tests. Our new approach achieves optimal results for our industrial data sets and further we are able to reduce its runtime and memory usage drastically compared to the existing germinal centre artificial immune system (GCAIS).</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Testing is a timeintensive but nevertheless important part of
product development. The verification of new products
becomes even more essential as the complexity of software is
increasing rapidly. Several studies confirm that the size of
the specified test suite has a major impact on the total
development cost
        <xref ref-type="bibr" rid="ref13 ref26 ref9">(Fraser and Wotawa, 2007; Yu et al., 2008;
Hsu and Orso, 2009)</xref>
        . Thus it is a worthy goal to reduce the
size of a test suite whilst maintaining its quality, such as its
coverage or its capability to find errors.
      </p>
      <p>
        Several approaches are already available to reduce the size
of the test suite for certain stages of testing. For example
        <xref ref-type="bibr" rid="ref23">Spieker et al. (2018)</xref>
        determine a test suite based on the
history of individual tests (e. g. how often did a test fail or how
long does its execution take) using a reinforcement learning
agent. The agent selects tests that are more likely to fail and
its suite has bounded execution time.
        <xref ref-type="bibr" rid="ref11">Gotlieb and Marijan
(2014)</xref>
        try to reduce the size of the test suite before any test is
executed or implemented. In contrast to
        <xref ref-type="bibr" rid="ref23">Spieker et al. (2018)</xref>
        they maintain the coverage of the original test suite because
a testing history is not available yet. Each test covers a set of
requirements and their goal is to determine the minimal set
of tests that covers all requirements. In mathematics and
computer science this problem is known as the minimum
set cover problem (MSCP)
        <xref ref-type="bibr" rid="ref24">(Williamson and Shmoys, 2011)</xref>
        .
The MSCP is a NP-hard optimization problem and thus an
optimal solution is hard to find within a reasonable amount
of time.
      </p>
      <p>
        During this work we also intend to reduce the size of the
test suite during its specification, similar to
        <xref ref-type="bibr" rid="ref11">Gotlieb and
Marijan (2014)</xref>
        . However,
        <xref ref-type="bibr" rid="ref11">Gotlieb and Marijan (2014)</xref>
        used a
branch and bound approach that has worst case exponential
runtime. On the other hand evolutionary algorithms tend
to be computational lightweights that may not offer optimal
solutions but approximations with reasonable quality and
especially the MSCP has undergone heavy research from the
evolutionary computation community
        <xref ref-type="bibr" rid="ref18 ref2 ref25 ref27">(Li et al., 2009; Yu
et al., 2010; Yu et al., 2014; Balaji and Revathi, 2016)</xref>
        .
      </p>
      <p>
        The immune system has been used an inspiration for both
computational intelligence and rule based machine learning
        <xref ref-type="bibr" rid="ref1">(Azuaje, 2003)</xref>
        . The latter is closely related to learning
classifier systems (LCS) which are frequently used in organic
computing systems. Organic computing (OC) seeks to
design systems that have self-x properties
        <xref ref-type="bibr" rid="ref20 ref8">(Mu¨ller-Schloer and
Tomforde, 2017)</xref>
        which can be found in LCS and in the
immune system. The former has lead to a rather new
evolutionary metaheuristic called germinal centre artificial immune
system (GCAIS)
        <xref ref-type="bibr" rid="ref15">(Joshi et al., 2014)</xref>
        . The approach
maintains a population that takes an analogy to self-reacting cells
that create antibodies to eradicate pathogens. GCAIS has
already been successfully applied to the MSCP on Beasley’s
OR library
        <xref ref-type="bibr" rid="ref14">Joshi (2017)</xref>
        and often had optimal or close to
optimal results. However, it turns out that GCAIS has a few
downsides that we want to tackle in this paper.
      </p>
      <p>
        The main contributions of this paper are:
GCAIS maintains a population of non-dominated
elements which is updated every iteration. The
corresponding computation is also known as the calculation of the
skyline
        <xref ref-type="bibr" rid="ref3">(Bo¨rzso¨nyi et al., 2001)</xref>
        . Several methods exist to
calculate the skyline but they usually have higher than
linear cost. We explicitly exploit the structure of GCAIS and
the MSCP and provide an approach that has linear cost in
terms of the population size and the problem size.
The size of GCAIS’ population may explode. We
introduce simple population boundaries and a deletion
mechanism similar to genetic algorithms (GA) to avoid this
issue
        <xref ref-type="bibr" rid="ref12">(Holland, 1992)</xref>
        . In our experiments we show that this
does not harm GCAIS’ capability to find close to optimal
solutions. In most cases our adapted version even is able
to find an optimal one.
      </p>
      <p>We show on two industrial data sets that GCAIS can
drastical reduce the size of the specified test suite. Further we
can observe that the structure of test specifications differs
from the more theoretical MSCP instances of Beasley’s
OR library.</p>
      <p>In Section 2 we introduce the MSCP in a formal way,
discuss its approximability, and briefly introduce related work.
Afterwards we present GCAIS and show how to reduce its
runtime and how we keep the population in bounds (Section
3). In Section 4 we perform experiments on two industrial
data sets as well as on Beasley’s OR library and examine
memory usage, runtime and approximation quality. Further
future work is discussed in Section 5. We close the paper
with a conclusion (Section 6).</p>
    </sec>
    <sec id="sec-2">
      <title>Minimum Set Cover Problem</title>
      <p>Here we first intend to describe the MSCP in a more formal
way. Let n be the number of sets (the test cases) and m be the
number of elements (the requirements) to cover. We denote
the sets as T1, T2,...,Tn. Thus the problem to be solved can
be described as follows:
min jTS j</p>
      <p>m
s:t: [ Ti = [ Ti
i2TS</p>
      <p>i=1
TS</p>
      <p>
        Ti
f1; 2; :::; mg
f1; 2; :::; ng
(1)
Thus we want to determine the minmal number of tests that
still cover all requirements. A set of tests is called test suite
and thus the problem is coined test suite reduction if the
undelying MSCP instance corresponds to tests
        <xref ref-type="bibr" rid="ref11 ref5">(Gotlieb and
Marijan, 2014)</xref>
        . If redundant tests can already be identified
during specification then their implementation as automated
ones or their manual execution can be avoided.
      </p>
      <p>
        From a mathematical perspective the MSCP is one of the
more difficult NP-hard problems to solve as its worst case
approximation ratio grows logarithmically in terms of the
problem size for algorithms with polynomial runtime
        <xref ref-type="bibr" rid="ref11 ref5">(Dinur
and Steurer, 2014)</xref>
        . However, as this result concerns the
worst case there is still research ongoing to find a method
that performs well on average.
      </p>
      <p>
        <xref ref-type="bibr" rid="ref19">Minotra (2008)</xref>
        gives an overview about genetic
algorithms and simulated annealing methods.
        <xref ref-type="bibr" rid="ref2">Balaji and Revathi
(2016)</xref>
        designed a particle swarm optimization method,
        <xref ref-type="bibr" rid="ref25">Yu
et al. (2014)</xref>
        used chemical reaction optimization, and
        <xref ref-type="bibr" rid="ref22">Ren
et al. (2010)</xref>
        developed an algorithm based on ant colony
optimization.
      </p>
      <p>
        There are several pure mathematical approaches for
solving the MSCP such as greedy algorithms, integer linear
programs and rounding techniques which are guaranteed to
converge
        <xref ref-type="bibr" rid="ref24">(Williamson and Shmoys, 2011)</xref>
        .
        <xref ref-type="bibr" rid="ref11">Gotlieb and
Marijan (2014)</xref>
        designed an algorithm called FLOWER that
combines a branch and bound approach with flow networks.
FLOWER always delivers an optimal solution, but on the
other hand may have exponential runtime (depending on the
problem instance).
      </p>
    </sec>
    <sec id="sec-3">
      <title>Germinal Center Artificial Immune System</title>
      <p>In this section we introduce the base version of GCAIS.
Further, we identify its critical parts and show how the
corresponding runtime and memory issues are avoided.</p>
      <sec id="sec-3-1">
        <title>Base algorithm</title>
        <p>
          GCAIS is a population-based, randomised search heuristic
that is based on the immune system of vertebrates. The
heuristic has been influenced by recent insights about
germinal centre reaction
          <xref ref-type="bibr" rid="ref15">(Joshi et al., 2014)</xref>
          . Germinal centres
(GC) are regions where the invading antigen (Ag) is
presented to immune cells. If an invasion occurs, the cells
produce antibodies (Ab) that try to bind the pathogen and
eradicate it. The GCs start to grow and try to find the best Abs.
GCs communicate with each other in order to exchange their
Abs. The latter can be improved by proliferation, mutation
and selection of immune cells.
        </p>
        <p>We encode solutions as binary vectors of length m. If
the entry i is one then Ti belongs to the solution and a zero
indicates that Ti is not a part of the cover. Furthermore let
jxj be the L1-norm of x (corresponds to the number of sets
used).</p>
        <p>The metaheuristic maintains a population of non-dominated
solutions and also allows unfeasible solutions. A solution x
is said to dominate another solution y if one of the following
two condition holds:
i) jxj
jyj ^ j i2x Tij &gt; j Si2y Tij</p>
        <p>S</p>
        <p>S
ii) jxj &lt; jyj ^ j i2x Tij</p>
        <p>
          S
j i2y Tij
We denote this relation as x &gt;p y. This relation is also
known as pareto dominance
          <xref ref-type="bibr" rid="ref3">(Bo¨rzso¨nyi et al., 2001)</xref>
          .
        </p>
        <p>The initial population P consists out of the zero vector 0
(no set at all is used). In every iteration the entire
population is mutated (flipping individual bits with a probability
of m1 ) and merged with the original one. During the merge
step every solution is eliminated that is either dominated by
a mutated solution or a solution that is already in the
population. This is repeated until a stopping criteria is met. We
summarized the method in Algorithm 1.</p>
        <p>The for loop (line 4-7) costs O(jPjm) and can easily be
parallelized using for example OpenMP or other standard
parallelization libraries.</p>
        <p>Algorithm 1: Germinal centre artificial immune
system (GCAIS).</p>
        <p>
          We decided to go for such a population based approach
as usually throughout a project the requirements (and thus
the tests) may change
          <xref ref-type="bibr" rid="ref21">(Nurmuliani et al., 2004)</xref>
          . With
previous approaches this would require a complete recalculation.
However, GCAIS allows infeasible solutions in its
population and would enable us to translate the previous population
to the updated problem. We hope that this self-improving
approach might reduce the runtime in the future.
        </p>
        <p>
          GCAIS is similar to the global simple evolutionary
multiobjective optimiser (GSEMO)
          <xref ref-type="bibr" rid="ref10">(Giel and Wegener, 2003)</xref>
          which is another population-based approach. It differs from
GCAIS as it has several populations and only mutates one
solution per iteration and population instead of all.
Further it sends a new solution with a probability p to all other
populations. GSEMO’s populations also consist out of
nondominated solutions.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Skyline</title>
        <p>
          The for loop of Algorithm 1 is not the only costly step of
an iteration. The recalculation of P is also computationally
intense. In data engineering the calculation of the set of
nondominated solutions is also known as the computation of the
skyline
          <xref ref-type="bibr" rid="ref3">(Bo¨rzso¨nyi et al., 2001)</xref>
          . It is coined skyline as in
the two-dimensional case its solutions are ”above” the others
(see Figure 1). A side effect of this visualization is that it can
be used to track the search process of GCAIS or GSEMO
during runtime. The advantage is that a series of these plots
displays the development of the population (in terms of its
diversity) and the convergence behaviour. Note, that in other
research areas the skyline is named pareto-frontier.
        </p>
        <p>Several algorithms exist in order to calculate the skyline
(complexities adapted to this use case):</p>
        <p>
          Block nested loop (BNL) is the straightforward approach
that compares each solution x with all other solutions in
order to determine the skyline. It is trivial to see that this
costs O(jPj2)
          <xref ref-type="bibr" rid="ref3">(Bo¨rzso¨nyi et al., 2001)</xref>
          .
        </p>
        <p>
          Sort filter skyline (SFS) sorts the considered solutions
according to their entropy and exploits that subsequent
solutions cannot dominate preceeding ones. The method has
a cost of O(jPjlog(jPj))
          <xref ref-type="bibr" rid="ref4">(Chomicki et al., 2003)</xref>
          .
Divide and conquer (D&amp;Q) approaches split the solutions
into chunks and calculate skyline recursively. This also
costs O(jPjlog(jPj))
          <xref ref-type="bibr" rid="ref3">(Bo¨rzso¨nyi et al., 2001)</xref>
          .
        </p>
        <p>
          There are further approaches especially designed to handle
high-dimensional data or memory issues
          <xref ref-type="bibr" rid="ref20 ref6 ref6 ref7 ref7 ref8">(Endres and
Weichmann, 2017; Endres and Kießling, 2015; Endres et al.,
2015)</xref>
          ; however, as this is out of the scope of this paper, we
will not further discuss them.
        </p>
        <p>The optimization problem that we try to solve is
twodimensional (covered requirements, used tests), both
dimensions are discrete, and P is always a non-dominated set. We
exploit these facts to provide a skyline calculation that costs
O(n + jPj).</p>
        <p>We maintain a look-up table which holds an entry for
every i 2 f0; 1; 2; ::; ng. The i-th entry holds all solutions of
the population that use i tests. It further holds how many
requirements are covered by the solutions (they all cover the
same number of requirements, otherwise a solution would
be dominated). Whenever we consider to insert a mutated
solution x for insertion we check the entry jxj. If the entry
covers more elements then x is not inserted, if it covers the
same amount of elements then we append the solution to the
entry. If it covers more elements then we overwrite the entry
with x and update the covered elements of the entry. Thus
an insertion costs O(1) and the insertion of the mutated
population costs O(jPj).</p>
        <p>After the insertion of a solution the table may contain
dominated solutions as only the entry of its cost is checked.
An inserted solution could also dominate entries of higher
cost. Thus we also need to introduce a repair method that is
called at the end of every iteration of GCAIS. We traverse
the table exactly once. We start by saving the index 1 into
a variable i and check if the current entry to look at covers
more entries. If so, we update i by its index and if not, we
delete the entry and proceed. Thus the repair method costs
O(n) and the calculation of the skyline O(n + jPj).</p>
        <p>We describe our skyline algorithm in Algorithm 2. The
variable table denotes the look-up table and table[i]:cov is
the number of requirements covered by the solutions using i
tests. The number of requirements covered and the number
of tests used by a solution x can easily be retrieved during
the creation of the mutated population and thus does not
affect the cost of that method. The table should be initialized
before the main loop is entered and should be kept
throughout the search.</p>
        <p>Algorithm 2: Skyline procedure for GCAIS using
a look-up table.</p>
        <p>input : mutated solutions P’
1 // insertion
2 for x in P’ do
3 covered x = requirements covered by x
4 if table has no entry jxj then
5 table[jxj].cov = covered x
6 set the solutions of table[jxj] to x
7 else if table[jxj].cov == covered x then
8 append x to the solutions of table[jxj]
9 else if table[jxj].cov &lt; covered x then
10 table[jxj].cov = covered x
11 set the solutions of table[jxj] to x
12 end
13 // repair the table
14 i = 1
15 for k in f2; :::ng do
16 if table[k].cov table[i].cov then
17 delete table[k]
18 else if table[k].cov &gt; table[i].cov then
19 i = k
20 end</p>
      </sec>
      <sec id="sec-3-3">
        <title>Avoiding huge populations</title>
        <p>A difference between GCAIS and for example genetic
algorithms is that its population is unbounded. GCAIS keeps
the non-dominated solutions it encounters throughout its
search. The idea is that a mutated solution based on a
nondominated solution has a higher likelihood to be an optimal
or close to optimal solution. However, this has the downside
that the population may grow rapidly. For example if all tests
cover the same amount of requirements and no requirement
is covered by more than one test, then the population even
grows exponentially.</p>
        <p>In order to avoid an explosion of the population size, we
introduce simple population boundaries for each entry of
the look-up table. Whenever the capacity of an entry is
exceeded then we delete a random solution from the entry to
make space for a new one. Unlike the skyline computation,
this may change the convergence behaviour of the algorithm
which we examine in our experimental evaluation.</p>
        <p>
          There is also another approach to keep GCAIS’
population from growing too fast.
          <xref ref-type="bibr" rid="ref16">Joshi et al. (2015)</xref>
          used
edominance instead of pareto-dominance. For the former, the
space is separated in squares of side length e (for spaces of
higher dimensions it is separated into hypercubes). For two
solutions from different squares the e-dominace relation is
the same as the pareto-dominance relation. If two solutions
x and y are in the same square then x e-dominates y if and
only if:
jyj jxj + j [ Tij j [ Tij &gt; 0 (2)
        </p>
        <p>i2x i2y
If this approach is used then GCAIS keeps a population of
non-e-dominated solutions instead of non-pareto-dominated
solutions. e-dominance is more strict than pareto-dominance
and thus it makes it harder for a solution to be inserted.
However, this no guarantee that the population does not grow
unrestricted.</p>
        <p>Both approaches can easily be integrated into Algorithm
2. The boundary check and deletion of a random solution
can be incorporated into the insertion part. In order to use
e-dominance we have to extend our repair method by
incorporating a check if the table entries are in the same square
and deleting e-dominated entries. This updated version has
the same worst case complexity as Algorithm 2. We describe
the new repair method in Algorithm 3.</p>
        <p>Algorithm 3: Updated repair method if epsilon
dominance is used.</p>
        <p>
          input : look-up table, e
1 i = 1
2 for k in f2; :::ng do
3 if b ke i c == 0 then
4 // both entries are in the same square
5 d = k-i+table[i].cov - table[k].cov
6 if d &gt; 0 then
7 // i dominates k
8 delete table[k]
9 else if d &lt; 0 then
10 // k dominates i
11 delete table[k]
12 i = k
13 else if table[k].cov table[i].cov then
14 delete table[k]
15 else if table[k].cov &gt; table[i].cov then
16 i = k
17 end
In our experiments we want to evaluate how much
execution time we save due to our look-up table. Further, we
investigate if the introduction of e-dominance and population
boundaries limits the capability of GCAIS to find close to
optimal or optimal solutions. To our knowledge the former
has yet only been applied to the multiobjective Knapsack
problem
          <xref ref-type="bibr" rid="ref16">(Joshi et al., 2015)</xref>
          .
        </p>
        <p>In our experiments we first focus on the main goal of this
paper: the reduction of the amount of tests. For this we
acquired two data sets from BSH Home Appliances which
is a german company that develops and produces various
home appliances such as ovens or dishwashers. Our data
sets are for two different fridge projects. In our experiments
we use cleaned versions of the data sets. We removed tests
that exclusively cover a single requirement (these tests must
be in a test suite that covers all requirements). We call these
data sets Fridge-1 and Fridge-2.</p>
        <p>
          As we deem two datasets as too little, we additionally
perform evaluations on the scpe instances of Beasley’s OR
library which is frequently used for benchmarking MSCP
algorithms
          <xref ref-type="bibr" rid="ref15 ref2">(Balaji and Revathi, 2016; Joshi et al., 2014)</xref>
          .
        </p>
        <p>
          During our evaluation we consider the various variants of
GCAIS next to the GSEMO algorithm. We follow the
variant of
          <xref ref-type="bibr" rid="ref15">Joshi et al. (2014)</xref>
          which was adapted to the MSCP.
We examined several parameterizations for GSEMO and
concluded that a population size of 30 and a send
probability of n3m0 are suitable choices. We also performed a fine
tuning of the hyperparameters of the artificial immune systems
which we will not discuss here (due to space restrictions).
We achieved reasonable results with a population boundary
of 200. For e we consider 0, 5, 10 and 15. The base variant
of GCAIS (Algorithm 1) is parameterfree.
        </p>
        <p>We repeat every experiment 100 times. Our
implementation1 is in Python and we used a Dell Precision 3520 for our
experiments (Intel i7-6820HQ processor with 4 Cores and
an individual clock rate of 2:7 Ghz, 32 GB RAM).</p>
        <p>Every algorithm is given a time budget of ten minutes.
Further, if there is no improvement in terms of the solutions
quality for 100 iterations then we interpret this as
convergence.</p>
      </sec>
      <sec id="sec-3-4">
        <title>Quality Criteria</title>
        <p>During our experiments we intend to measure the
approximation quality, memory usage, and runtime. Thus we
introduce the following key performance indicators (KPIs):
mem save(alg) =
speed up(alg) =</p>
        <p>P(GCAIS BASE)</p>
        <p>P(alg)
r(GCAIS BASE)
r(alg)
(3)
(4)
1Source code and data are available here: https://github.
com/LagLukas/gcais_test_suite_reduction
approx rate(alg) =
(5)
o(alg)
OPT
where alg denotes any considered algorithm (and its
corresponding hyperparameters). GCAIS BASE is the standard
variant of GCAIS described in Algorithm 1 and for the
calculation of its non-dominated population we use the BNL
method. P(alg) is the maximum size of an algorithm’s
population during a run and r(alg) is its total runtime (until
convergence is reached). OPT is the optimal value and o(alg)
is the algorithm’s output. The optimal values for the
considered data sets of Beasley’s OR library are known and for the
industrial data sets we determined them via brute force.</p>
        <p>The mem save key performance indicator (Equation 3)
measures the relative size of an algorithm’s population with
regards to GCAIS BASE. We use the standard variant as all
other GCAIS variants intend to either bound the population
or to increase the likelihood of deleting solutions (e. g.
edominance). Thus we have a common baseline for all
methods. Further, the population size is the main factor for
memory usage of the considered algorithms.</p>
        <p>
          Our speed up KPI (Equation 4) is an analogy to
parallel computing. There the speed up is the quotient of a
parallel program’s runtime and the runtime of the sequential
one
          <xref ref-type="bibr" rid="ref17">(Kumar, 2002)</xref>
          . Thus it measures how fast the
parallel method is compared to the sequential one. Instead we
evaluate how much faster an algorithm is compared to the
standard GCAIS version.
        </p>
        <p>Our third KPI is the approximation rate (Equation 5)
which indicates how close the produced solution is to
being optimal and a value of one corresponds to an optimal
solution.</p>
        <p>All three KPIs should be seen in context to each other. For
example a brute force search always leads to an optimal
solution but will have an exponential runtime and on the other
hand an algorithm that just takes all tests has the worst
approximation ratio but the best speed up and memory usage.
Hence the goal is to find an approach that leads to reasonable
values in all three categories.</p>
      </sec>
      <sec id="sec-3-5">
        <title>Industrial Datasets</title>
        <p>The results of our experiments are displayed in Table 1. Our
first dataset (Fridge-1) is rather easy to solve for the
considered methods compared to our second one. The epsilon
dominance variants, the bounded variant and the base variant
of GCAIS always achieve optimal results. Also, GSEMO
has close to optimal results. However the combination of a
bounded population and epsilon dominance is rather
detrimental as these versions produce worse solutions than the
version without it. We can see certain differences in the
memory usage and the speed up. The bounded version of
GCAIS only uses about a tenth of the memory of its base
variant and is about fourteen times faster. Yet GESMO is
even faster but only achieves close to optimal results and
requires more memory.
(a) GCAIS base variant
(b) GCAIS with epsilon dominance
(a) GCAIS base variant
(b) GCAIS with epsilon dominance
s for the Fridge-2 dataset.</p>
        <p>(d) GSEMO</p>
        <p>KPI
mem save
mem save
speed up
speed up
approx rate
approx rate
approx rate
algorithm</p>
        <p>GSEMO
bounded GCAIS</p>
        <p>GSEMO
bounded GCAIS</p>
        <p>GSEMO
bounded GCAIS
GCAIS BASE</p>
        <p>Our other dataset (Fridge-2) is tougher to solve for the
considered metaheuristics as only the bounded GCAIS
variant without epsilon dominance always achieves optimal
results. Once more the results show that this variant can
drastically cut down memory usage and runtime. GSEMO
has an even shorter runtime and memory usage but on the
other hand only achieves approximation rates of about three.
These differences between GSEMO and our bounded
version of GCAIS are due to GSEMO’s convergence to an
inferior solution. GCAIS does not get stuck (as it always finds
optimal solutions) and thus the population continues to grow
as does the runtime.</p>
        <p>
          On both datasets we could observe that in our case the
epsilon dominance has a detrimental effect on the
population size and therefore on the runtime. Combined with a
bounded population these effects disappear but the method
is unable to find optimal solutions. Hence we could not
observe the same positive effects of the usage of epsilon
dominance as
          <xref ref-type="bibr" rid="ref16">Joshi et al. (2015)</xref>
          did for the Knapsack problem.
The pure bounded version always achieved optimal results
and achieved high values in our other KPIs as well.
        </p>
        <p>Most of the observed differences can be explained by
taking a look at the population growth and size which we
visualized in Figures 2 and 3. The base variant and pure epsilon
dominance variants of GCAIS show an exponential growth
for Fridge-1 and on the other dataset we can observe a
similar observation for epsilon equal to 5. For the other two
variants the runtime ran out and thus we do not fully see an
exponential growth. GSEMO’s population size grows linearly
for Fridge-1 and more or less logarithmically for Fridge-2.
Our bounded GCAIS version has, as expected, a constant
population size (after several iterations). The jumps in the
graphs are due to newly found solutions that dominate other
solutions in the population which get deleted. These
different growths are one of the causes for the differences in speed
up as all of the considered algorithms have a runtime which
depends on this magnitude.</p>
        <p>The growths in terms of population size can be explained
by taking a look at the structure of our datasets and the
problem itself. Our test specifications consist out of test cases
that have similar sizes and only slightly overlap in terms
of the requirements which they cover. Also, the two
dimensions (covered requirements and used tests) are integers
and there are only limited valid values. Thus there can be
many solutions that cover the same amount of requirements
and use the same tests and it is hard to find solutions which
dominate large portions of the population. If the tests would
highly differ in their size then it would be easier to find
dominating solutions which would lead to smaller populations.</p>
        <p>Next to our visual evaluation and the discussion of the
raw values of Table 1, we perform additional statistical
testing to confirm our observations. We test each KPI and each
dataset individually. Our null hypothesis is that the
algorithms do not differ on one dataset regarding one KPI. This
can be verified using a Friedman test. On all different null
hypotheses we observed p-values below 10 10 which we
regard as significant. Thus we conclude that the algorithms
differ in terms of the KPIs.</p>
        <p>Overall we are able to reduce the size of original test
suites by over 30 percent.</p>
      </sec>
      <sec id="sec-3-6">
        <title>Beasley’s OR Library</title>
        <p>Due to the results on the industrial datasets and the spatial
restrictions we focus solely on the base variant of GCAIS, the
bounded variant without epsilon dominance, and GSEMO
during this experiment. We evaluate the scpe1 to scpe5
instances of Beasley’s OR library.</p>
        <p>We displayed the experimental results in Table 2. Once
more the population boundaries for GCAIS lead to a cut
down in terms of memory and runtime. Further, they reveal
that our adapted version of GCAIS did not lose its capability
to find close to optimal or optimal solutions on these more
theoretical instances. In all cases our version was even
superior to the base variant. However, in three out of five cases
GSEMO was once more faster than our bounded version as
it once more converged towards a suboptimal solution.</p>
        <p>We verified our observations about the bounded GCAIS’
superiority in terms of memory usage and approximation
quality using one-sided Wilcoxon signed-rank tests. The
pvalues were below 0:05 which we regard as significant.</p>
        <p>Further, on these datasets the population of the base
variant of GCAIS does not grow as much as during our
evaluation of the industrial datasets. This explains why the
memory savings are lower. The smaller populations thus lead to
a smaller runtime which unfolds in smaller speed ups for
the other algorithms. The reason for the smaller
populations is that GCAIS detects dominating solutions more
easily, which keep the population in bounds. Hence we think
that the problem structure of test specifications differs from
these more theoretical MSCP instances.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Future Work</title>
      <p>From an engineering perspective we intend to roll out our
version of GCAIS in the company. We further want to gather
more datasets from different test levels to verify our
approach. We take special interest in the evolution of the
requirements and tests over the lifetime of a project. Thus we
could examine if the reuse of past populations is an
advantage.</p>
      <p>
        Our next scientific goal is to apply the GCAIS approach
to the adaptive test case selection problem (ATCS)
        <xref ref-type="bibr" rid="ref23">(Spieker
et al., 2018)</xref>
        . Its goal is to find a test suite that maximizes a
test metric such as coverage whilst maintaining a test suite
that has a bounded duration (for its execution). In the case
of coverage, the problem becomes a variant of the weighted
MSCP and GCAIS could be applied. In this case the
problem landscape varies even more over time as newly written
test cases are being added and their duration might change
over time (as the software to be tested might be changed).
A reuse of GCAIS’ population might lead in this case to a
self-improving system as it is continuously adapted and
optimised towards the new testing environment.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>We introduced a test suite reduction problem which is a
variant of minimum set cover problem (MSCP). Its goal is to find
a test suite of minimal size that still covers all requirements.
A state of the art approach for the MSCP is the germinal
centre artificial immune systems (GCAIS) which has been
heavily benchmarked on rather theoretical instances.</p>
      <p>GCAIS maintains a population of non-dominated
solutions whose calculation cost is quadratic. We apply a
simple datastructure and an incremental update approach that
allows us to reduce the cost to a linear one.</p>
      <p>Our experiments revealed that on our test specifications,
the populations of the standard variant of GCAIS explode
which leads to a high memory consumption and longer
runtimes. Thus we adapted GCAIS by applying fixed
population capacities. Our improved variant could not only cut
down runtime and memory usage compared to the standard
variant, it was also able to find optimal or close to optimal
solutions on our industrial data as well as on the more
theoretical instances of Beasley’s OR library.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgement</title>
      <p>We would like to thank Oliver Banf who helped us acquiring
the industrial data.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Azuaje</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          (
          <year>2003</year>
          ).
          <article-title>Review of “artificial immune systems: A new computational intelligence approach” by l</article-title>
          .n. de castro and j. timmis (eds) springer, london,
          <year>2002</year>
          .
          <string-name>
            <given-names>Neural</given-names>
            <surname>Netw</surname>
          </string-name>
          .,
          <volume>16</volume>
          (
          <issue>8</issue>
          ):
          <fpage>1229</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Balaji</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Revathi</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>A new approach for solving set covering problem using jumping particle swarm optimization method</article-title>
          .
          <volume>15</volume>
          (
          <issue>3</issue>
          ):
          <fpage>503</fpage>
          -
          <lpage>517</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <article-title>Bo¨rzso¨nyi, S.,</article-title>
          <string-name>
            <surname>Kossmann</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Stocker</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          (
          <year>2001</year>
          ).
          <article-title>The skyline operator</article-title>
          .
          <source>In Proceedings of the 17th International Conference on Data Engineering, page 421-430</source>
          , USA. IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Chomicki</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gryz</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Liang</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2003</year>
          ).
          <article-title>Skyline with presorting</article-title>
          . pages
          <fpage>717</fpage>
          -
          <lpage>719</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Dinur</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Steurer</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Analytical approach to parallel repetition</article-title>
          .
          <source>In Proceedings of the Forty-sixth Annual ACM Symposium on Theory of Computing</source>
          , STOC '
          <volume>14</volume>
          , pages
          <fpage>624</fpage>
          -
          <lpage>633</lpage>
          , New York, NY, USA. ACM.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Endres</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Kießling</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          (
          <year>2015</year>
          ).
          <article-title>Parallel skyline computation exploiting the lattice structure</article-title>
          .
          <source>Journal of Database Management</source>
          ,
          <volume>26</volume>
          :
          <fpage>18</fpage>
          -
          <lpage>43</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>Endres</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roocks</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kießling</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          (
          <year>2015</year>
          ).
          <article-title>Scalagon: An efficient skyline algorithm for all seasons</article-title>
          .
          <source>In Database Systems for Advanced Applications</source>
          , pages
          <fpage>292</fpage>
          -
          <lpage>308</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Endres</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Weichmann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          (
          <year>2017</year>
          ).
          <article-title>Index structures for preference database queries</article-title>
          .
          <source>In Flexible Query Answering Systems</source>
          , pages
          <fpage>137</fpage>
          -
          <lpage>149</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Fraser</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Wotawa</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          (
          <year>2007</year>
          ).
          <article-title>Redundancy based test-suite reduction</article-title>
          . In Dwyer, M. B. and
          <string-name>
            <surname>Lopes</surname>
          </string-name>
          , A., editors, Fundamental Approaches to Software Engineering, pages
          <fpage>291</fpage>
          -
          <lpage>305</lpage>
          , Berlin, Heidelberg. Springer Berlin Heidelberg.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Giel</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Wegener</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          (
          <year>2003</year>
          ).
          <article-title>Evolutionary algorithms and the maximum matching problem</article-title>
          .
          <source>In Proceedings of the 20th Annual Symposium on Theoretical Aspects of Computer Science, STACS '03, page 415-426</source>
          , Berlin, Heidelberg. SpringerVerlag.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Gotlieb</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Marijan</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Flower: Optimal test suite reduction as a network maximum flow</article-title>
          .
          <source>In Proceedings of the 2014 International Symposium on Software Testing and Analysis</source>
          ,
          <source>ISSTA 2014</source>
          , pages
          <fpage>171</fpage>
          -
          <lpage>180</lpage>
          , New York, NY, USA. ACM.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>Holland</surname>
            ,
            <given-names>J. H.</given-names>
          </string-name>
          (
          <year>1992</year>
          ).
          <article-title>Genetic algorithms</article-title>
          .
          <source>Scientific American</source>
          ,
          <volume>267</volume>
          (
          <issue>1</issue>
          ):
          <fpage>66</fpage>
          -
          <lpage>73</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <surname>Hsu</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <article-title>and</article-title>
          <string-name>
            <surname>Orso</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2009</year>
          ).
          <article-title>Mints: A general framework and tool for supporting test-suite minimization</article-title>
          .
          <source>In 2009 IEEE 31st International Conference on Software Engineering</source>
          , pages
          <fpage>419</fpage>
          -
          <lpage>429</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <surname>Joshi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2017</year>
          ).
          <article-title>The germinal centre artificial immune system</article-title>
          . University of Birmingham.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <surname>Joshi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rowe</surname>
            ,
            <given-names>J. E.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Zarges</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>An immune-inspired algorithm for the set cover problem</article-title>
          . In Bartz-Beielstein,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Branke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Filipicˇ</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            , and
            <surname>Smith</surname>
          </string-name>
          , J., editors,
          <source>Parallel Problem Solving from Nature - PPSN XIII</source>
          , pages
          <fpage>243</fpage>
          -
          <lpage>251</lpage>
          , Cham. Springer International Publishing.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <surname>Joshi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rowe</surname>
            ,
            <given-names>J. E.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Zarges</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          (
          <year>2015</year>
          ).
          <article-title>Improving the performance of the germinal center artificial immune system using epsilon-dominance: A multi-objective knapsack problem case study</article-title>
          . In Ochoa, G. and
          <string-name>
            <surname>Chicano</surname>
          </string-name>
          , F., editors,
          <source>Evolutionary Computation in Combinatorial Optimization</source>
          , pages
          <fpage>114</fpage>
          -
          <lpage>125</lpage>
          , Cham. Springer International Publishing.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>Kumar</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          (
          <year>2002</year>
          ).
          <article-title>Introduction to Parallel Computing</article-title>
          . AddisonWesley Longman Publishing Co., Inc., USA, 2nd edition.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          , and Zhang, J. (
          <year>2009</year>
          ).
          <article-title>A new genetic algorithm for the set k-cover problem in wireless sensor networks</article-title>
          .
          <source>In 2009 IEEE International Conference on Systems, Man and Cybernetics</source>
          , pages
          <fpage>1405</fpage>
          -
          <lpage>1410</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <string-name>
            <surname>Minotra</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2008</year>
          ). covering problems.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <article-title>Mu¨ller-</article-title>
          <string-name>
            <surname>Schloer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Tomforde</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>2017</year>
          ).
          <article-title>Organic computing - technical systems for survival in the real world</article-title>
          .
          <source>In Autonomic Systems.</source>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <string-name>
            <surname>Nurmuliani</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zowghi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Powell</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>2004</year>
          ).
          <article-title>Analysis of requirements volatility during software development life cycle</article-title>
          .
          <source>In 2004 Australian Software Engineering Conference. Proceedings.</source>
          , pages
          <fpage>28</fpage>
          -
          <lpage>37</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          <string-name>
            <surname>Ren</surname>
            ,
            <given-names>Z.-G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Feng</surname>
            ,
            <given-names>Z.-R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ke</surname>
          </string-name>
          , L.-J., and
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>Z.-J.</given-names>
          </string-name>
          (
          <year>2010</year>
          ).
          <article-title>New ideas for applying ant colony optimization to the set covering problem</article-title>
          .
          <source>Computers &amp; Industrial Engineering</source>
          ,
          <volume>58</volume>
          (
          <issue>4</issue>
          ):
          <fpage>774</fpage>
          -
          <lpage>784</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <string-name>
            <surname>Spieker</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gotlieb</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marijan</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Mossige</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          (
          <year>2018</year>
          ).
          <article-title>Reinforcement learning for automatic test case prioritization and selection in continuous integration</article-title>
          .
          <source>CoRR</source>
          , abs/
          <year>1811</year>
          .04122.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <string-name>
            <surname>Williamson</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Shmoys</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>The design of approximation algorithms</article-title>
          .
          <source>The Design of Approximation Algorithms.</source>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>J. J. Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lam</surname>
            ,
            <given-names>A. Y. S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>V. O. K.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Chemical reaction optimization for the set covering problem</article-title>
          .
          <source>In 2014 IEEE Congress on Evolutionary Computation (CEC)</source>
          , pages
          <fpage>512</fpage>
          -
          <lpage>519</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jones</surname>
            ,
            <given-names>J. A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Harrold</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          (
          <year>2008</year>
          ).
          <article-title>An empirical study of the effects of test-suite reduction on fault localization</article-title>
          .
          <source>In Proceedings of the 30th International Conference on Software Engineering, ICSE '08, page 201-210</source>
          , New York, NY, USA. Association for Computing Machinery.
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yao</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>Z.-H.</given-names>
          </string-name>
          (
          <year>2010</year>
          ).
          <article-title>On the approximation ability of evolutionary optimization with application to minimum set cover</article-title>
          .
          <source>Artificial Intelligence, s 180-181.</source>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>