<!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>Solving Configuration Problems with ASP and 1 Declarative Domain-Specific Heuristics</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Richard Taupe</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gerhard Friedrich</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Antonius Weinzierl</string-name>
          <email>w@l</email>
        </contrib>
      </contrib-group>
      <abstract>
        <p>Domain-specific heuristics are an essential technique for solving configuration problems efficiently. Current approaches to integrate domain-specific heuristics with Answer Set Programming (ASP) are unsatisfactory when dealing with heuristics that are specified non-monotonically on the basis of partial assignments. Such heuristics frequently occur in practice, for example, when picking a component that has not yet been placed in a configuration problem. Therefore, we present novel syntax and semantics for declarative specifications of domain-specific heuristics in ASP. Our approach supports heuristic statements that depend on the partial assignment maintained during solving, which has not been possible before. We provide an implementation in ALPHA that makes ALPHA the first lazy-grounding ASP system to support declaratively specified domain-specific heuristics. Two well-known configuration problems are used to demonstrate the benefits of our proposal. The experiments confirm that combining lazy-grounding ASP solving and our novel heuristics can be vital for solving industrial-size configuration problems.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>INTRODUCTION</title>
      <p>
        Answer Set Programming (ASP) [
        <xref ref-type="bibr" rid="ref14 ref2 ref20 ref25">2, 14, 20, 25</xref>
        ] is a declarative
programming approach that has successfully been applied to product
configuration [
        <xref ref-type="bibr" rid="ref11 ref12 ref19 ref21 ref27">11, 12, 19, 21, 27</xref>
        ].
      </p>
      <p>
        However, large-scale industrial problems are challenging for ASP.
One issue is the so-called grounding bottleneck: Large problem
instances often cannot be grounded by modern grounders like GRINGO
[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] or I-DLV [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] in adequate time and space [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Another issue is
that, even if the problem can be grounded, computation of answer
sets may take considerable time, as indicated by the ASP
Competitions [
        <xref ref-type="bibr" rid="ref18 ref5">5, 18</xref>
        ].
      </p>
      <p>
        Lazy grounding is a technique that tackles the grounding
bottleneck. The approach presented in this paper is implemented in the
lazy-grounding system ALPHA [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ]. Thus we can handle large-scale
problem instances.
      </p>
      <p>
        The main topic of this work concerns domain-specific heuristics,
an essential technique for improving solving performance by
equipping the solver with hints on how to solve a problem efficiently.
Several approaches to integrate domain-specific heuristics with ASP
1 This paper contains extracts from a journal paper [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] that extends an earlier
conference paper [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] and is currently under review.
2 Siemens AG O¨sterreich and Alpen-Adria-Universita¨t Klagenfurt, Austria,
email: richard.taupe@siemens.com (Richard Taupe is the main author of
this paper; other authors contributed equally and are listed in the
alphabetical order.)
3 Alpen-Adria-Universita¨t Klagenfurt, Austria
4 TU Wien, Vienna, Austria
solving have already been proposed: a procedural approach for the
WASP system [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and a declarative approach for CLINGO [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>Both existing approaches to integrate domain-specific heuristics
with ASP solving are unsatisfactory: Procedural heuristics
counteract the declarative nature of ASP, and the existing declarative
approach does not permit dynamic heuristics reasoning about partial
assignments. Dynamically evaluating heuristics w.r.t. a partial
assignment can be an essential feature for practical domains. For example,
heuristics in product configuration may need to compute the amount
of space left after placing a component.</p>
      <p>We tackle the challenge of finding a satisfying solution to integrate
declarative domain-specific heuristics with ASP programs. To this
end, we extend CLINGO’s approach. Our extension supports dynamic
heuristics while at the same time keeping the language simple and
easy to use.</p>
      <p>We implemented our approach as an extension to the
lazygrounding ASP system ALPHA. Two well-known configuration
problems – the House Reconfiguration Problem (HRP) and the
Partner Units Problem (PUP) – are used to demonstrate our approach and
to obtain experimental results. The experiments confirm that
combining lazy-grounding ASP solving and our novel heuristics can be vital
for solving industrial-size configuration problems.</p>
      <p>After briefly covering preliminaries in Section 2, we introduce the
state of the art of domain-specific heuristics in ASP in Section 3.
Our novel approach is presented in Section 4. Section 5 describes
applications and experimental results, and Section 6 concludes this
paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>PRELIMINARIES</title>
      <p>The declarative programming approach of ASP allows a programmer
to formulate the problem as a logic program specifying the search
space and the properties of solutions instead of stating how to solve
a problem. An ASP solver then finds models (so-called answer sets)
for this logic program, which correspond to solutions for the original
problem.</p>
      <p>
        Most state-of-the-art ASP systems implement “ground and solve”,
i.e., they first produce the full grounding (i.e., variable-free
equivalent) of the input program, which is then solved. This results in the
so-called grounding bottleneck: As soon as the grounding exceeds
all available memory, the problem cannot be solved anymore. Lazy
grounding avoids the grounding bottleneck by interleaving
grounding and solving. This approach is implemented by ASP systems such
as ALPHA [
        <xref ref-type="bibr" rid="ref24 ref35">24, 35</xref>
        ].
      </p>
      <p>
        Due to space constraints, we assume familiarity with syntax and
semantics of ASP, and refer to [
        <xref ref-type="bibr" rid="ref13 ref27 ref3">3, 13, 27</xref>
        ] for details.
      </p>
      <p>In the remainder of this section, we introduce the notation that will
be used later in the article.</p>
      <p>An assignment A is a set of signed literals Ta, Fa, or Ma, where
Ta and Fa express that an atom a is true and false, respectively, and
Ma indicates that a “must-be-true”. M signifies that an atom must
eventually become true by derivation in a correct solution extending
the current partial assignment, but no derivation has yet been found
that would make the atom true. Let As = fa j s a 2 Ag for s 2
fF; M; Tg denote the set of atoms occurring with a specific sign
in assignment A. We assume assignments to be consistent, i.e., no
negative literal may also occur positively (AF \ (AM [ AT) = ;),
and every positive literal must also occur with must-be-true (AT
AM).</p>
      <p>An assignment A is complete if every atom is assigned true or
false. An assignment that is not complete is partial.</p>
      <p>The function truthA for a (partial) assignment A maps an atom
to the truth value that the atom is currently assigned in the given
assignment, or to U if the atom is currently unassigned:
truthA(a) =
8F
&gt;
&gt;&gt;&lt;M
&gt;T
&gt;
&gt;:U
a 2 AF;
a 2 AM n AT;
a 2 AT;
otherwise.
3</p>
      <p>
        DOMAIN-SPECIFIC HEURISTICS IN ASP
State-of-the-art ASP solvers are well suited to solve a wide range
of problems, as shown in ASP competitions, experiments, and
(industrial) applications reported in the literature [
        <xref ref-type="bibr" rid="ref11 ref18 ref23 ref9">9, 11, 18, 23</xref>
        ].
However, domain-specific heuristics are needed to achieve breakthroughs
in solving industrial configuration problems with ASP. Several
approaches have implemented embedding heuristic knowledge into the
ASP solving process.
      </p>
      <p>
        HWASP [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] facilitates external procedural heuristics that are
consulted at specific points during the solving process via an API. As
a result, HWASP can find solutions for all published instances of the
Partner Units Problem (PUP) by exploiting external heuristics
formulated in C++ or Python.
      </p>
      <p>
        The CLINGO system supports a declarative approach to
formulating domain-specific heuristics in ASP in the form of #heuristic
directives [
        <xref ref-type="bibr" rid="ref13 ref17">13, 17</xref>
        ]. Heuristics extend the ASP language to allow for
declarative specification of atom weights and signs for the solver’s
internal heuristics. An atom’s weight influences the order in which
atoms are considered by the solver when making a decision. A sign
modifier instructs whether the selected atom must be assigned true or
false. Atoms with a higher weight are assigned a value before atoms
with a lower weight.
      </p>
      <p>
        CLINGO’s semantics for heuristic directives seem to introduce
some limitations for formulating heuristics that require to reason
about the absence of truth-values for atoms, e.g. the absence of
decisions in a search state. For example, in configuring technical
systems, we might prefer to assign, in the current search state, the most
relevant yet unplaced electronic component to a free slot of a
motherboard. These limitations are discussed in detail in our other
publications [
        <xref ref-type="bibr" rid="ref28 ref29">28, 29</xref>
        ].
      </p>
      <p>To overcome this issue we propose, in the following section, to
evaluate negation as failure (i.e., not) in heuristic statements w.r.t.
the current partial assignment in the solver. This partial assignment
represents the search state. As a consequence, not X is true if X is
false or unassigned in a partial assignment.</p>
      <p>DYNAMIC DECLARATIVE HEURISTICS
Declaratively specifying domain-specific heuristics in ASP plays a
vital role in enabling ASP to solve large-scale industrial problems.
CLINGO has been the only ASP system to support such heuristics
so far. Although language and semantics of heuristic directives in
CLINGO have shown to be beneficial in many cases, dynamic aspects
of negation as failure in heuristic conditions have not been addressed
satisfactorily.</p>
      <p>
        We present novel syntax and semantics for heuristic directives
in ASP that improve this situation. We assume that the underlying
solver can assign one of three values to any atom: true (denoted with
T), false (F), and must-be-true (M) (cf. [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ]). The following
definitions can be used without modification for solvers that do not use the
third truth value M. The set of atoms assigned must-be-true will be
empty in this case.
      </p>
      <p>Definition 1 (Heuristic Directive) A heuristic directive is of the
form h1i, where hai (0 i n) are heuristic atoms of the form
si ai, in which s0 2 ffFg; fTgg and si fF; M; Tg are sets of
sign symbols and ai is an atom, and w and l are integer terms.
#heuristic ha0 : ha1; : : : ; hak;
h1i
The heuristics’ head is given by ha0 and its condition by
fha1; : : : ; hak, not hak+1, . . . , not hang, which is similar to a rule
body.</p>
      <p>Where the meaning is clear from the context, we may omit all
symbols except sign symbols themselves in a set of sign symbols, e.g.,
we write TM instead of fT; Mg.</p>
      <p>Example 1 Consider the following heuristic directive h:
#heuristic Fa : TMb; Tc; not TMFd:
This directive means that the atom a shall be assigned F if b is
assigned T or M, c is assigned T, and d is not assigned.</p>
      <p>We now introduce some notation that will be used in further
definitions. The function atm maps a heuristic atom hai to ai by removing
the sign, and a set of heuristic atoms to the set of atoms occurring in
them (e.g., atm(Ma) = a, atm(fMa; Tbg) = fa; bg). The
function signs maps a heuristic atom hai to si by removing the atom
(e.g., signs(Ma) = fMg).</p>
      <p>The head of a heuristic directive h of the form h1i is denoted by
head(h) = ha0, its weight by weight(h) = w if given, else 0, and
its level by level(h) = l if given, else 0. The (heuristic) condition
of a heuristic directive h is denoted by cond(h) := fha1; : : : ; hak;
not hak+1, : : : , not hang, the positive condition is cond+(h) :=
fha1; : : : ; hakg and the negative condition is cond (h) := fhak+1,
: : : , hang.</p>
      <p>Let HA be a set of heuristic atoms. Then, for s fF; M; Tg,
HAjs = fa j s a 2 HAg denotes the set of atoms in HA whose set
of sign symbols equals s.</p>
      <p>Example 2 Consider the heuristic directive h from Example 1
again. Here, cond+(h)jMT = fbg; cond+(h)jT = fcg; and
cond+(h)jF = ;. Furthermore, cond (h)jFMT = fdg; note that
the order of sign symbols does not matter due to set semantics.
The distinguishing features of our approach are as follows:
Each heuristic atom contains a set of sign symbols. Each sign
symbol represents one of the truth values F (false), T (true), and M
(must-be-true).</p>
      <p>In the condition, sign symbols provide a richer way of controlling
when the condition is satisfied. A positive literal in the condition
is satisfied if the truth value currently assigned to its atom is
contained in its set of sign symbols (which is fM; Tg by default if
not explicitly given). A negative literal in the condition is satisfied
if the truth value currently assigned to its atom is not contained in
its set of sign symbols or if its atom is currently not assigned any
truth value.</p>
      <p>
        In the heuristic head, the sign symbol is used to determine the
truth value to be chosen by the heuristics. If s0 is T or empty, the
heuristics makes the solver guess a0 to be true; if s0 is F, a0 will
be made false.5
Terms w and l denote weight and level as familiar from
optimizestatements in ASP-Core-2 [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] or weak constraints in DLV [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
The level is more important than the weight; both default to 0, and
together they are called priority.
      </p>
      <p>We now describe our semantics more formally, beginning with the
condition under which a heuristic atom is satisfied.</p>
      <p>Definition 2 (Satisfying a Heuristic Atom) Given a ground
heuristic atom ha and a partial assignment A, ha is satisfied w.r.t. A iff:
truthA(atm(ha)) 2 signs(ha), i.e., if its atom is assigned a truth
value that is included in the heuristic atom’s sign set.6
Whether a heuristic directive is satisfied depends on whether the
atoms occurring in the directive are satisfied.</p>
      <p>Definition 3 (Satisfying a Heuristic Directive) Given a ground
heuristic directive h and a partial assignment A, cond(h) is
satisfied w.r.t. A iff: every ha 2 cond+(h) is satisfied and no
ha 2 cond (ha) is satisfied.</p>
      <p>Intuitively, a heuristic condition is satisfied iff its positive part is fully
satisfied and none of its default-negated literals is contradicted.
Definition 4 (Applicability of a Heuristic Directive) A ground
heuristic directive h is applicable w.r.t. a partial assignment A iff:
cond(h) is satisfied, and truthA(atm(head(h))) 2 fU; Mg.
Intuitively, a heuristic directive is applicable iff its condition is
satisfied and the atom in its head is assigned neither T nor F. If the
atom in the head is assigned M, the heuristic directive may still be
applicable, because any atom with the non-final truth value M must
be either T or F in any answer set.</p>
      <p>Definitions 2 to 4 reveal the distinguishing features of the newly
proposed semantics: In our approach, heuristic signs composed of
truth values T, M, and F can be used in heuristic conditions to
reason about atoms that are already assigned specific truth values in a
partial assignment. Furthermore, default negation can be used to
reason about atoms that are assigned or still unassigned. Our semantics
truly means default negation in the current partial assignment, while
the one implemented by CLINGO amounts to strong negation in the
current search state. This difference is crucial since reasoning about
incomplete information is essential in many cases. An example is a
5 In the head, we only support truth values T and F because, from a user’s
point of view, it does not make sense to assign M to an atom heuristically.
6 Note that the function truth maps to only one truth value even though Ta 2
A implies Ma 2 A, so truthA(a) = M iff Ma 2 A and Ta 2= A.
heuristic for a configuration problem that only applies to components
not yet placed.</p>
      <p>
        What remains to be defined is the semantics of weight and level.
Given a set of applicable heuristic directives, one directive with the
highest weight will be chosen from the highest level. Suppose there
are several with the same maximum priority (i.e., weight and level).
In that case, the solver can use domain-independent heuristics like
VSIDS [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] as a fallback to break the tie.
      </p>
      <p>Definition 5 (Heuristics Eligible for Immediate Choice) Given a
set H of applicable ground heuristic directives, the subset eligible
for immediate choice is defined as maxpriority(H) in two steps:
maxlevel(H) :=
maxpriority(H) :=
fh jh 2 H and level(h) = max level(h)g</p>
      <p>h2H
fh jh 2 maxlevel(H) and
weight(h) =</p>
      <p>max
h2maxlevel(H)
weight(h)g</p>
      <p>After choosing a heuristic using maxpriority, a solver makes a
decision on the directive’s head atom. Note that heuristics only choose
between atoms derivable by currently applicable rules. Other solving
procedures, e.g., deterministic propagation, are unaffected by
processing heuristics.</p>
      <p>Example 3 Consider the following program.</p>
      <p>
        f a(2) ; a(4) ; a(6) ; a(8) ; a(5) g
:
#sum f X : a(X) g = S; Sn2 6= 0:
#heuristic a(5): [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
#heuristic a(4) : not a(5): [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
#heuristic Fa(5) : a(4): [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
#heuristic a(6) : Fa(5); Ta(4): [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
h2i
h3i
h4i
h5i
      </p>
      <p>Intuitively, directive h2i unconditionally prefers to make a(5) true
with weight 1. All other directives have a higher weight, 2, but they
become applicable at different times. Directive h3i prefers to make
a(4) true if a(5) is neither true nor must-be-true, directive h4i prefers
to make a(5) false if a(4) is true or must-be-true, and h5i prefers to
make a(6) true if a(5) is false and a(4) is true.</p>
      <p>Let A0 = ; be the empty partial assignment before any
decision has been made. W.r.t. A0, h2i is applicable because its
condition is empty and its head is still unassigned. Directive h3i is also
applicable because a(5) is still unassigned. Directives h4i and h5i
are not applicable w.r.t. A0. Directive h3i is chosen because it has
the highest priority among applicable directives. Thus, a(4) is
assigned T, updating our assignment to A1 = fMa(4); Ta(4)g. This
makes h4i applicable, a(5) is assigned F and our assignment is
A2 = fMa(4); Ta(4); Fa(5)g. Note that the condition of h3i was
still satisfied at this point, but it was not applicable because its head
was already assigned. Now, h2i is also not applicable anymore, and
the only directive that remains is h5i. Since h5i is applicable, a(6)
is made true and added to the assignment. Next, the atoms that
remained unassigned are guessed by the default heuristics until an
answer set is found.
5</p>
      <p>APPLICATIONS AND EXPERIMENTS
In this section, we present an application of our approach on two
configuration problems. Experimental results are also included,
using an implementation of our approach in the lazy-grounding ASP
system ALPHA. Instance sets include instances that were
challenging to ground and solve.
5.1
Encodings (including heuristics) and instances, and the ALPHA
binaries used for our experiments, are available on our website.7 Details
on the sources of the encodings are mentioned in the sections
describing the domains. Optimisation statements were not used since
ALPHA does not support them yet. However, heuristic directives can
be written in a way that optimal or near-optimal solutions are
preferably found.</p>
      <p>Problem instances were selected by first defining an
instancegenerating algorithm and then exploring instance sizes to find a set
in which all systems could solve some instances under consideration
within a time limit of 10 minutes, and some instances could be solved
by none (or very few) of these systems.</p>
      <p>
        The ASP systems used for the experiments were ALPHA8,
CLINGO9 [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] version 5.4.0 and DLV210 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] version 2.1.0.
      </p>
      <p>
        ALPHA is used in two configurations, grounding constraints either
strictly or permissively [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]. Traditionally in lazy grounding, rules
are grounded when their positive body is fully satisfied (strict lazy
grounding). Permissive grounding, on the other hand, enables rules
to be grounded if their positive body is not fully satisfied, as long as
all variables can be bound by positive body literals that are already
satisfied. For example, consider the following non-ground constraint:
a(X; Y ); b(X):
      </p>
      <p>Under the partial assignment A = fMa(1; 2); Ta(1; 2)g, the
ground constraint a(1; 2); b(1): will only be produced if
permissive grounding of constraints is enabled.</p>
      <p>
        All solvers were configured to search for the first answer set of
each problem instance. Finding one or only a few solutions is often
sufficient in industrial use cases since solving large instances can be
challenging [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Therefore, the domain-specific heuristics used in
the experiments are designed to help the solver find one answer set
that is “good enough”, even though it may not be optimal.
5.2
      </p>
      <p>
        The House Reconfiguration Problem (HRP)
The House Reconfiguration Problem [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] is an abstracted version of
industrial (re)configuration problems, e.g., rack configuration.
      </p>
      <p>Formally, HRP is defined as a modification of the House
Configuration Problem (HCP).</p>
      <p>Definition 6 (HCP) The input for the House Configuration Problem
(HCP) is given by four sets of constants P , T , C, and R representing
persons, things, cabinets, and rooms, respectively, and an ownership
relation PT P T between persons and things.</p>
      <p>The task is to find an assignment of things to cabinets TC
T C and cabinets to rooms CR C R, such that: (1) each
thing is stored in a cabinet; (2) a cabinet contains at most five things;
(3) every cabinet is placed in a room; (4) a room contains at most
four cabinets; and (5) a room may only contain cabinets storing
things of one person.</p>
      <p>Definition 7 (HRP) The input for the House Reconfiguration
Problem (HRP) is given by an HCP instance H = hP; T ; C; R; P T i, a
legacy configuration hTC 0; CR0i, and a set of things T 0 T that
are defined as “long” (all other things are “short”).
7 https://ainf.aau.at/dynacon
8 https://github.com/alpha-asp/Alpha
9 https://potassco.org/clingo/
10 https://dlv.demacs.unical.it/</p>
      <p>The task is then to find an assignment of things to cabinets TC
T C and cabinets to rooms CR C R, that satisfies all
requirements of HCP as well as the following ones: (1) a cabinet is
either small or high; (2) a long thing can only be put into a high
cabinet; (3) a small cabinet occupies 1 and a high cabinet 2 of 4 slots
available in a room; (4) all legacy cabinets are small.</p>
      <p>The sample HRP instance shown in Fig. 1 comprises two cabinets,
two rooms, five things that belong to person p1, and one thing that
belongs to person p2. A legacy configuration is empty, and all things
are small. In a solution, the first person’s things are placed in cabinet
c1 in the first room, and the thing of the second person is the cabinet
c2 in the second room. For this sample instance, a solution of HRP
corresponds to a solution of HCP.</p>
      <p>
        In the problem encoding [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], two main choice rules are
responsible for guessing the assignment of things to cabinets and the
assignment of cabinets to rooms:
f cabinetTOthing(C; T ) g
f roomTOcabinet(R; C) g
cabinetDomain(C); thing(T ):
roomDomain(R); cabinet(C)
      </p>
      <p>Instances consist of facts over the following predicates:
cabinetDomain=1 defines potential cabinets and roomDomain=1
defines potential rooms; thingLong=1 defines which things are long;
and legacy=1 defines all the other data in the legacy configuration,
e.g., legacy(personTOthing(p1; t1)) defines that person p1 owns
thing t1, and legacy(roomTOcabinet(r1; c1)) specifies one tuple
in the legacy assignment of cabinets to rooms.</p>
      <p>The domain-specific heuristics for HRP implemented in our novel
approach works by (1) first trying to re-use the legacy configuration;
(2) then filling cabinets with things; (3) then filling rooms with
cabinets; (4) and finally closing remaining choices. Long things are
always assigned before short things.</p>
      <p>By “closing remaining choices” we mean assigning F to choice
points not yet assigned by the heuristics. The purpose of this is to
avoid the default heuristics (e.g., VSIDS) from causing conflicts by
choosing the wrong truth values.</p>
      <p>We now present some selected heuristic directives. The directives
use some intermediate predicates whose meaning should become
evident from their names. The full encoding is available online. The
following heuristics re-use the legacy assignment of cabinets to things
and of rooms to cabinets (1):
#heuristic reuse(cabinetTOthing(C; T )) :</p>
      <p>legacy(cabinetTOthing(C; T )); thingLong(T ): [4@4]
#heuristic reuse(cabinetTOthing(C; T )) :
legacy(cabinetTOthing(C; T )); not thingLong(T ): [3@4]
#heuristic reuse(roomTOcabinet(R; C)) :</p>
      <p>legacy(roomTOcabinet(R; C)): [2@4]</p>
      <p>The following heuristic assigns things to cabinets, preferring long
over short things (2):
#heuristic cabinetTOthing(C; T ) :
cabinetDomain(C); not fullCabinet(C);
not T assignedThing(T ); personTOthing(P; T );
not otherPersonTOcabinet(P; C);
maxCabinet(MC ); thingLong(T ): [(MC C)@3]
#heuristic cabinetTOthing(C; T ) :
cabinetDomain(C); not fullCabinet(C);
not T assignedThing(T ); personTOthing(P; T )
not otherPersonTOcabinet(P; C);
maxCabinet(MC ); not thingLong(T ): [(MC C)@2]
The heuristics we created for ALPHA cannot be used with CLINGO
due to the usage of T and default negation. An alternative encoding
containing faithfully adapted heuristic directives for CLINGO has also
been created.</p>
      <p>Figure 2 shows performance data for experiments with HRP.
Cactus plots were created in the usual way. In Fig. 2b, the x-axis gives the
number of instances solved within real (i.e., wall-clock) time, given
on the y-axis. Time is accumulated over all solved instances. Memory
consumption is given on the y-axis of Fig. 2c, where data points are
sorted by y-values, which are not accumulated. Figure 2a contains a
legend with all solver configurations. The number of instances solved
by each system is shown next to its name (in parentheses).</p>
      <p>One curve was drawn for each solver configuration: ALPHA
without domain-specific heuristics, with strict (kco = 0) and
permissive (kco = 1) grounding of constraints; ALPHA with
domainspecific heuristics (H-ALPHA), with strict and permissive
grounding of constraints; DLV2; CLINGO with (H-CLINGO) and without
domain-specific heuristics.</p>
      <p>Substantial differences can be observed. The curves for H-ALPHA
(kco = 0) reach farthest to the right, meaning that ALPHA with
domain-specific heuristics solved the highest number of instances
(59 out of 94) when grounding constraints strictly. Surprisingly, with
permissive grounding of constraints, ALPHA with domain-specific
heuristics exhibited relatively low time and space performance.</p>
      <p>No curves are visible at all for ALPHA without domain-specific
heuristics because, in this configuration, the system could solve at
most one instance only. The other solvers’ performance was
somewhere in between the ALPHA configurations at both ends of the
spectrum. Notably, H-CLINGO with domain-specific heuristics solved
more instances in less time compared to CLINGO without
domainspecific heuristics, but consumed slightly more memory. The largest
instance solved by H-ALPHA contained 600 things, which is over
30% more than the size of the largest instance solved by H-CLINGO
(455). Recall that the time limit for solving each instance was 10
minutes.
5.3</p>
    </sec>
    <sec id="sec-3">
      <title>The Partner Units Problem (PUP)</title>
      <p>
        Like HRP, the Partner Units Problem (PUP) [
        <xref ref-type="bibr" rid="ref31 ref34">31, 34</xref>
        ] is an abstracted
version of industrial (re)configuration problems.
      </p>
      <p>Definition 8 (PUP) The input to the Partner Units Problem (PUP) is
given by a set of units U and a bipartite graph G = (S; Z; E), where
S is a set of sensors, Z is a set of zones, and E is a relation between
S and Z.
UCAP = 2
IUCAP = 2
27
24
21
)
iB18
(15
G
y
ro12
e 9
m
M6
3
0
140
The task is to find a partition of vertices v 2 S [ Z into bags ui 2
U such that for each bag the following requirements hold: (1) the bag
contains at most UCAP vertices from S and at most UCAP vertices
from Z; and (2) the bag has at most IUCAP adjacent bags, where
the bags u1 and u2 are adjacent whenever vi 2 u1 and vj 2 u2 for
some (vi; vj ) 2 E.</p>
      <p>
        QuickPup is a heuristic for PUP that successfully solves many
hard problem instances [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ]. Our approach supports implementing
large parts of the originally procedural algorithm for QuickPup. Our
encoding uses rules to derive a topological order of the zones and
sensors (cf. [
        <xref ref-type="bibr" rid="ref31 ref32">31, 32</xref>
        ]). Heuristic directives subsequently use this
topological order.
11 In the instances used for our experiments, both UCAP and IUCAP are
fixed at the value 2.
      </p>
      <p>First, a start zone is determined and denoted by startZone=1. In
our encoding, the start zone is always the first one and instances are
designed so that solutions can easily be found when starting with this
zone. QuickPup should actually try to use each zone as the start zone
one after the other and abort search after a certain amount of time has
passed. This part of the algorithm cannot currently be represented in
our framework.</p>
      <p>QuickPup assigns zones and sensors to units in a
breadth-firstorder, called “topological order” because the graph is traversed level
by level. First, the start zone is assigned, then the sensors connected
to the start zone, then the zones connected to those sensors and so on.
A helper predicate layer=3 is introduced to compute the topological
order. In an atom layer(T ; X; L), T denotes the type of element (“s”
for sensor and “z” for zone), X is the element’s identifier, and L is
its layer in the computed breadth-first order.</p>
      <p>A realisation of QuickPup in our framework requires several
heuristic directives. These directives use the level term in the annotation
to process the zones and sensors according to the topological order.
The weight term in the annotation is used to assign the units in the
right order. The directives use some intermediate predicates whose
meaning should become evident from their names. The full encoding
is available online.</p>
      <p>QuickPup first tries to assign an element to the first unit:
#heuristic assign(U; T ; X) : comUnit(U ); elem(T ; X);
maxLayer(ML); layer(T ; X; L);
not full(U; T ); not assigned(T ; X); not T used(U );
nUnits(NU ); U = 1: [NU @(ML L)]</p>
      <p>If one unit cannot be assigned, QuickPup tries preceding units in
decreasing order next:
#heuristic assign(U; T ; X) : comUnit(U ); elem(T ; X);
maxLayer(ML); layer(T ; X; L);
not full(U; T ); not assigned(T ; X);</p>
      <p>T used(U ): [U @(ML L)]
A fresh unit is only touched if all preceding units have been tried:
#heuristic assign(U; T ; X) : comUnit(U ); elem(T ; X);
maxLayer(ML); layer(T ; X; L);
not full(U; T ); not assigned(T ; X);
not T used(U ); comUnit(U 1); T used(U 1);</p>
      <p>F assign(U 1; T ; X): [U @(ML L)]</p>
      <p>Note the condition F assign(U 1; T; X) in the last heuristic
directive. Due to this condition, the heuristic is only applicable if the
same element could not be assigned to the preceding unit U 1. This
situation may be caused by backtracking or by the following heuristic
avoiding assignments to units that are already full:
#heuristic F assign(U; T ; X) : comUnit(U ); elem(T ; X);
maxLayer(ML); full(U; T );
not assign(U; T ; X): [1@ML]</p>
      <p>Choice points not assigned by any of these heuristics are finally
assigned false by a dedicated heuristic directive, similarly as shown
for HRP in Section 5.2.</p>
      <p>The heuristics we created for ALPHA cannot be used with CLINGO
due to the usage of T, F, and default negation. An alternative
encoding containing heuristic directives for CLINGO has been created that
is similar to the QuickPup*-like heuristics created for ALPHA.</p>
      <p>Cactus plots for PUP (Fig. 4) were generated in the same way as
for HRP (cf. Section 5.2).</p>
      <p>Again, ALPHA with domain-specific heuristics solved the highest
number of instances (all 100). The curves for H-ALPHA (kco = 0)
and H-ALPHA (kco = 1) are almost indistinguishable, meaning that
it did not make a difference in the PUP domain whether constraints
were grounded strictly or permissively.</p>
      <p>At the other extreme, ALPHA without domain-specific heuristic
could solve only 7 of the 100 instances.</p>
      <p>The systems DLV2, CLINGO, and H-CLINGO performed
somewhere between those extremes. H-CLINGO with domain-specific
heuristics solved many more instances than CLINGO without
domainspecific heuristics.</p>
      <p>The largest instance in our instance set contained 300 units.
HALPHA was able to solve all these instances. In contrast, the size of
the largest instance that could be solved by any other system,
using the given encoding, was only 105. Recall that the time limit for
solving each instance was 10 minutes. For 11 instances, H-CLINGO
returned an error (“Id out of range”).
5.4</p>
    </sec>
    <sec id="sec-4">
      <title>Discussion</title>
      <p>Our results show that we have extended the application area of ASP.
By combining our novel approach to domain-specific heuristics with
lazy-grounding answer set solving, we could solve large-scale
problem instances that are out of reach for conventional ASP systems.
This finding supports our initial hypothesis that both lazy
grounding and domain-specific heuristics are crucial for solving large-scale
industrial problems.</p>
      <p>
        Our approach extends an earlier extension of ASP’s input language
by a declarative framework for domain-specific heuristics [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Our
advancement consists of novel syntax and semantics for heuristic
directives that make it possible to reason about the current partial
assignment, facilitating heuristics based on what has or has not yet been
decided by the solver. Although the earlier approach has worked very
well on planning problems, it seems that more flexibility in the
definition of heuristics, supported by the novel features of our approach,
is necessary to represent heuristics for other kinds of problems.
      </p>
      <p>Our results undeniably show that domain-specific heuristics
improve solving performance for the domains under consideration. This
is not only true for ALPHA but also for CLINGO. However,
domainspecific heuristics usually increase CLINGO’s memory consumption,
thus exacerbating the grounding bottleneck from which
ground-andsolve systems such as CLINGO are suffering. Domain-specific
heuristics for DLV2 were out of scope because DLV2 does not support the
declarative specification of heuristics.</p>
      <p>Solution quality is another aspect to keep in mind. Since
domainspecific heuristics lead the solver towards “better” solutions, the
quality of answer sets computed by H-ALPHA or H-CLINGO is higher
than the quality of answer sets computed by ALPHA, CLINGO, or
DLV2.</p>
      <p>However, we do not claim that heuristics based on partial
assignments are always beneficial. Our findings cannot reject the possibility
that H-CLINGO might outperform H-ALPHA when other encodings
or other heuristics are used since there might be encoding
optimisations that we have not thought of. Still, we are confident that our
approach’s novel features make the specification of practical
heuristics more intuitive and effortless.</p>
      <p>
        Results for HRP (Fig. 2) indicate that permissive grounding (cf.
[
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]), i.e., providing the solver with more nogoods representing
ground constraints than necessary, can be counterproductive when
domain-specific heuristics are used. We conjecture the reason for
this to be that suitable domain-specific heuristics can assist the solver
even better than additional constraints while avoiding the overhead of
additional nogoods (in terms of space consumption and propagation
efforts). This assumption is supported by the considerable increase
in ALPHA’s memory consumption when grounding constraints
permissively in this domain.
      </p>
      <p>To sum up, domain-specific heuristics implemented in our novel
framework, combined with strict lazy grounding by ALPHA,
outperformed all other tested systems when applied to large instances of
the House Reconfiguration Problem and the Partner Units Problem.
Applications to other domains should be easy to put into practice and
belong to future work.12
6</p>
    </sec>
    <sec id="sec-5">
      <title>CONCLUSION</title>
      <p>We have proposed novel syntax and semantics for
declarative domain-specific heuristics in ASP that can depend
nonmonotonically on the partial assignment maintained during solving.
Furthermore, we have presented experimental results obtained with
an implementation of our approach within the lazy-grounding solver
ALPHA.</p>
      <p>
        Our semantics has proven beneficial for several practical
application domains, advancing CLINGO’s previous approach [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. In
experiments, our implementation exhibited convincing time and memory
consumption behaviour. Thus, we extended the application area of
ASP by solving large configuration problem instances that
conventional ASP systems could not solve.
      </p>
      <p>
        Our approach’s suitability to implement heuristics for other
practical (configuration) problems should be assessed by the community.
12 One other domain, A* search, is investigated in our journal paper [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
Some real-world domain-specific heuristics will require extensions
of our approach, such as by supporting randomness and restarts.
      </p>
      <p>Thinking more broadly, the question of how to generate
domainspecific heuristics automatically is of great importance since,
currently, such heuristics have to be invented by humans familiar with
the domain (and partly also with solving technology).</p>
    </sec>
    <sec id="sec-6">
      <title>ACKNOWLEDGEMENTS</title>
      <p>This work has been conducted in the scope of the research project
DynaCon (FFG-PNr.: 861263), which was funded by the Austrian
Federal Ministry of Transport, Innovation and Technology (BMVIT)
under the program “ICT of the Future” between 2017 and 2020.13
This research was also supported by the Academy of Finland, project
251170, and by EU ECSEL Joint Undertaking under grant agreement
no. 737459 (project Productive4.0).</p>
      <p>We are thankful to Peter Schu¨ller for his contributions to our
earlier conference paper on this topic, and Stephen Cummings for
language editing.
13 See https://iktderzukunft.at/en/ for more information.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Mario</given-names>
            <surname>Alviano</surname>
          </string-name>
          , Francesco Calimeri, Carmine Dodaro, Davide Fusca`,
          <string-name>
            <surname>Nicola</surname>
            <given-names>Leone</given-names>
          </string-name>
          , Simona Perri, Francesco Ricca, Pierfrancesco Veltri, and Jessica Zangari, '
          <article-title>The ASP system DLV2'</article-title>
          ,
          <string-name>
            <surname>in</surname>
            <given-names>LPNMR</given-names>
          </string-name>
          , volume
          <volume>10377</volume>
          <source>of LNCS</source>
          , pp.
          <fpage>215</fpage>
          -
          <lpage>221</lpage>
          . Springer, (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Chitta</given-names>
            <surname>Baral</surname>
          </string-name>
          ,
          <source>Knowledge Representation, Reasoning and Declarative Problem Solving</source>
          , Cambridge University Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Francesco</given-names>
            <surname>Calimeri</surname>
          </string-name>
          , Wolfgang Faber, Martin Gebser, Giovambattista Ianni, Roland Kaminski, Thomas Krennwallner, Nicola Leone, Marco Maratea, Francesco Ricca, and Torsten Schaub, '
          <article-title>ASP-Core-2 input language format'</article-title>
          ,
          <source>TPLP</source>
          ,
          <volume>20</volume>
          (
          <issue>2</issue>
          ),
          <fpage>294</fpage>
          -
          <lpage>309</lpage>
          , (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Francesco</given-names>
            <surname>Calimeri</surname>
          </string-name>
          , Davide Fusca`,
          <string-name>
            <given-names>Simona</given-names>
            <surname>Perri</surname>
          </string-name>
          , and Jessica Zangari, '
          <article-title>I-DLV: the new intelligent grounder of DLV'</article-title>
          , Intelligenza Artificiale,
          <volume>11</volume>
          (
          <issue>1</issue>
          ),
          <fpage>5</fpage>
          -
          <lpage>20</lpage>
          , (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Francesco</given-names>
            <surname>Calimeri</surname>
          </string-name>
          , Martin Gebser, Marco Maratea, and Francesco Ricca, '
          <article-title>Design and results of the fifth answer set programming competition', Artif</article-title>
          . Intell.,
          <volume>231</volume>
          ,
          <fpage>151</fpage>
          -
          <lpage>181</lpage>
          , (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Francesco</given-names>
            <surname>Calimeri</surname>
          </string-name>
          , Giovambattista Ianni, and Francesco Ricca, '
          <article-title>The third open answer set programming competition'</article-title>
          ,
          <source>TPLP</source>
          ,
          <volume>14</volume>
          (
          <issue>1</issue>
          ),
          <fpage>117</fpage>
          -
          <lpage>135</lpage>
          , (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Carmine</given-names>
            <surname>Dodaro</surname>
          </string-name>
          , Philip Gasteiger, Nicola Leone, Benjamin Musitsch, Francesco Ricca, and Konstantin Schekotihin, '
          <article-title>Combining answer set programming and domain heuristics for solving hard industrial problems (application paper)'</article-title>
          , TPLP,
          <volume>16</volume>
          (
          <issue>5-6</issue>
          ),
          <fpage>653</fpage>
          -
          <lpage>669</lpage>
          , (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Eiter</surname>
          </string-name>
          , Wolfgang Faber,
          <string-name>
            <given-names>Michael</given-names>
            <surname>Fink</surname>
          </string-name>
          , and Stefan Woltran, '
          <article-title>Complexity results for answer set programming with bounded predicate arities and implications'</article-title>
          , Ann. Math. Artif. Intell.,
          <volume>51</volume>
          (
          <issue>2-4</issue>
          ),
          <fpage>123</fpage>
          -
          <lpage>165</lpage>
          , (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Esra</given-names>
            <surname>Erdem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Michael</given-names>
            <surname>Gelfond</surname>
          </string-name>
          , and Nicola Leone, '
          <article-title>Applications of answer set programming'</article-title>
          ,
          <source>AI Magazine</source>
          ,
          <volume>37</volume>
          (
          <issue>3</issue>
          ),
          <fpage>53</fpage>
          -
          <lpage>68</lpage>
          , (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Andreas</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Falkner</surname>
          </string-name>
          , Gerhard Friedrich, Alois Haselbo¨ck, Gottfried Schenner, and Herwig Schreiner, '
          <article-title>Twenty-five years of successful application of constraint technologies at Siemens'</article-title>
          ,
          <source>AI Magazine</source>
          ,
          <volume>37</volume>
          (
          <issue>4</issue>
          ),
          <fpage>67</fpage>
          -
          <lpage>80</lpage>
          , (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Andreas</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Falkner</surname>
          </string-name>
          , Gerhard Friedrich, Konstantin Schekotihin, Richard Taupe, and Erich Christian Teppan, '
          <article-title>Industrial applications of answer set programming'</article-title>
          ,
          <source>KI</source>
          ,
          <volume>32</volume>
          (
          <issue>2-3</issue>
          ),
          <fpage>165</fpage>
          -
          <lpage>176</lpage>
          , (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Gerhard</surname>
            <given-names>Friedrich</given-names>
          </string-name>
          , Anna Ryabokon, Andreas A.
          <string-name>
            <surname>Falkner</surname>
          </string-name>
          , Alois Haselbo¨ck, Gottfried Schenner, and Herwig Schreiner, '
          <article-title>(Re)configuration using answer set programming'</article-title>
          ,
          <source>in IJCAI 2011 Workshop on Configuration</source>
          , volume
          <volume>755</volume>
          <source>of CEUR Workshop Proceedings</source>
          , pp.
          <fpage>17</fpage>
          -
          <lpage>24</lpage>
          , (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Roland Kaminski, Benjamin Kaufmann, Marius Lindauer, Max Ostrowski, Javier Romero, Torsten Schaub, Sven Thiele, and Philipp Wanko,
          <source>Potassco guide version 2.2.0</source>
          ,
          <year>2019</year>
          . Retrieved from https://github.com/potassco/guide/releases/ tag/v2.2.0.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Roland Kaminski, Benjamin Kaufmann, and Torsten Schaub, Answer Set Solving in Practice, Morgan and Claypool Publishers,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Roland Kaminski, Benjamin Kaufmann, and Torsten Schaub, '
          <article-title>Clingo = ASP + control: Preliminary report'</article-title>
          , CoRR, abs/1405.3694, (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Roland Kaminski, Arne Ko¨nig, and Torsten Schaub, 'Advances in gringo series 3', in
          <string-name>
            <surname>LPNMR</surname>
          </string-name>
          , volume
          <volume>6645</volume>
          <source>of LNCS</source>
          , pp.
          <fpage>345</fpage>
          -
          <lpage>351</lpage>
          . Springer, (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Benjamin Kaufmann, Javier Romero, Ramo´n Otero, Torsten Schaub, and Philipp Wanko, '
          <article-title>Domain-specific heuristics in answer set programming', in AAAI</article-title>
          . AAAI Press, (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Marco Maratea, and Francesco Ricca, '
          <article-title>The seventh answer set programming competition: Design and results'</article-title>
          ,
          <source>TPLP</source>
          ,
          <volume>20</volume>
          (
          <issue>2</issue>
          ),
          <fpage>176</fpage>
          -
          <lpage>204</lpage>
          , (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Martin</surname>
            <given-names>Gebser</given-names>
          </string-name>
          , Anna Ryabokon, and Gottfried Schenner, '
          <article-title>Combining heuristics for configuration problems using answer set programming'</article-title>
          ,
          <string-name>
            <surname>in</surname>
            <given-names>LPNMR</given-names>
          </string-name>
          , volume
          <volume>9345</volume>
          <source>of LNCS</source>
          , pp.
          <fpage>384</fpage>
          -
          <lpage>397</lpage>
          . Springer, (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>Michael</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>Yulia</given-names>
            <surname>Kahl</surname>
          </string-name>
          ,
          <article-title>Knowledge Representation, Reasoning, and the Design of Intelligent Agents: The Answer-Set Programming Approach</article-title>
          , Cambridge University Press,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Lothar</surname>
            <given-names>Hotz</given-names>
          </string-name>
          , Alexander Felfernig, Markus Stumptner, Anna Ryabokon, Claire Bagley, and Katharina Wolter, 'Chapter 6
          <article-title>- Configuration Knowledge Representation and Reasoning'</article-title>
          ,
          <source>in Knowledge-Based Configuration</source>
          ,
          <fpage>41</fpage>
          -
          <lpage>72</lpage>
          , Morgan Kaufmann, (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Nicola</surname>
            <given-names>Leone</given-names>
          </string-name>
          , Gerald Pfeifer, Wolfgang Faber, Thomas Eiter, Georg Gottlob, Simona Perri, and Francesco Scarcello, '
          <article-title>The DLV system for knowledge representation and reasoning'</article-title>
          ,
          <source>ACM Trans. Comput. Log.</source>
          ,
          <volume>7</volume>
          (
          <issue>3</issue>
          ),
          <fpage>499</fpage>
          -
          <lpage>562</lpage>
          , (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>Nicola</given-names>
            <surname>Leone</surname>
          </string-name>
          and Francesco Ricca, '
          <article-title>Answer set programming: A tour from the basics to advanced development tools and industrial applications'</article-title>
          , in Reasoning Web, eds.,
          <source>Wolfgang Faber and Adrian Paschke</source>
          , volume
          <volume>9203</volume>
          <source>of LNCS</source>
          , pp.
          <fpage>308</fpage>
          -
          <lpage>326</lpage>
          . Springer, (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>Lorenz</given-names>
            <surname>Leutgeb</surname>
          </string-name>
          and Antonius Weinzierl, '
          <article-title>Techniques for efficient lazygrounding ASP solving'</article-title>
          ,
          <string-name>
            <surname>in</surname>
            <given-names>DECLARE</given-names>
          </string-name>
          , volume
          <volume>10997</volume>
          <source>of LNCS</source>
          , pp.
          <fpage>132</fpage>
          -
          <lpage>148</lpage>
          . Springer, (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Vladimir</surname>
            <given-names>Lifschitz</given-names>
          </string-name>
          ,
          <source>Answer Set Programming</source>
          , Springer,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Matthew</surname>
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Moskewicz</surname>
            , Conor F. Madigan,
            <given-names>Ying</given-names>
          </string-name>
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>Lintao</given-names>
          </string-name>
          <string-name>
            <surname>Zhang</surname>
          </string-name>
          , and Sharad Malik, 'Chaff:
          <article-title>Engineering an efficient SAT solver'</article-title>
          ,
          <source>in 38th Design Automation Conference (DAC)</source>
          , pp.
          <fpage>530</fpage>
          -
          <lpage>535</lpage>
          . ACM, (
          <year>2001</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>Gottfried</given-names>
            <surname>Schenner</surname>
          </string-name>
          and Richard Taupe, '
          <article-title>Techniques for solving largescale product configuration problems with ASP'</article-title>
          ,
          <source>in Proceedings of the 19th International Configuration Workshop</source>
          , eds., Linda L. Zhang and Albert Haag, pp.
          <fpage>12</fpage>
          -
          <lpage>19</lpage>
          , La De´fense, France, (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Richard</surname>
            <given-names>Taupe</given-names>
          </string-name>
          , Gerhard Friedrich, Konstantin Schekotihin, and Antonius Weinzierl, '
          <article-title>Domain-specific heuristics in answer set programming: A declarative non-monotonic approach'</article-title>
          .
          <source>Under review.</source>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Richard</surname>
            <given-names>Taupe</given-names>
          </string-name>
          , Konstantin Schekotihin, Peter Schu¨ller, Antonius Weinzierl, and Gerhard Friedrich, '
          <article-title>Exploiting partial knowledge in declarative domain-specific heuristics for ASP'</article-title>
          ,
          <source>in ICLP Technical Communications</source>
          , volume
          <volume>306</volume>
          <source>of EPTCS</source>
          , pp.
          <fpage>22</fpage>
          -
          <lpage>35</lpage>
          , (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Richard</surname>
            <given-names>Taupe</given-names>
          </string-name>
          , Antonius Weinzierl, and Gerhard Friedrich, '
          <article-title>Degrees of laziness in grounding - effects of lazy-grounding strategies on ASP solving'</article-title>
          ,
          <string-name>
            <surname>in</surname>
            <given-names>LPNMR</given-names>
          </string-name>
          , volume
          <volume>11481</volume>
          <source>of LNCS</source>
          , pp.
          <fpage>298</fpage>
          -
          <lpage>311</lpage>
          , (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Erich</surname>
            <given-names>C Teppan</given-names>
          </string-name>
          , '
          <article-title>Solving the partner units configuration problem with heuristic constraint answer set programming'</article-title>
          ,
          <source>in Configuration Workshop</source>
          , pp.
          <fpage>61</fpage>
          -
          <lpage>68</lpage>
          , (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <article-title>Erich Christian Teppan and Gerhard Friedrich, 'Heuristic constraint answer set programming'</article-title>
          ,
          <string-name>
            <surname>in</surname>
            <given-names>ECAI</given-names>
          </string-name>
          , volume
          <volume>285</volume>
          <source>of Frontiers in Artificial Intelligence and Applications</source>
          , pp.
          <fpage>1692</fpage>
          -
          <lpage>1693</lpage>
          . IOS Press, (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>Erich</given-names>
            <surname>Christian</surname>
          </string-name>
          <string-name>
            <given-names>Teppan</given-names>
            , Gerhard Friedrich, and
            <surname>Andreas</surname>
          </string-name>
          <string-name>
            <given-names>A.</given-names>
            <surname>Falkner</surname>
          </string-name>
          , '
          <article-title>QuickPup: A heuristic backtracking algorithm for the partner units configuration problem', in IAAI</article-title>
          . AAAI, (
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>Erich</given-names>
            <surname>Christian</surname>
          </string-name>
          <string-name>
            <surname>Teppan</surname>
          </string-name>
          , Gerhard Friedrich, and Georg Gottlob, '
          <article-title>Tractability frontiers of the partner units configuration problem'</article-title>
          ,
          <source>J. Comput. Syst. Sci.</source>
          ,
          <volume>82</volume>
          (
          <issue>5</issue>
          ),
          <fpage>739</fpage>
          -
          <lpage>755</lpage>
          , (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Antonius</surname>
            <given-names>Weinzierl</given-names>
          </string-name>
          , '
          <article-title>Blending lazy-grounding and CDNL search for answer-set solving'</article-title>
          ,
          <string-name>
            <surname>in</surname>
            <given-names>LPNMR</given-names>
          </string-name>
          , volume
          <volume>10377</volume>
          <source>of LNCS</source>
          , pp.
          <fpage>191</fpage>
          -
          <lpage>204</lpage>
          . Springer, (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>