<!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>Configuration as Diagnosis: Generating Configurations with Conflict-Directed A* - An Application to Training Plan Generation -</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Florian Grigoleit</string-name>
          <email>grigolei@in.tum.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Peter Struss</string-name>
          <email>struss@in.tum.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Technische Universität München</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>91</fpage>
      <lpage>98</lpage>
      <abstract>
        <p>Although many approaches to knowledge-based configuration have been developed, the generation of optimal configurations is still an open issue. This paper describes work that addresses this problem in a general way by exploiting an analogy between configuration and diagnosis. Based on a problem representation consisting of a set of ranked goals and a catalog of components, which can contribute in combination to their satisfaction, configuration is formulated as a finite constraintsatisfaction-problem. Configuration is then solved by state-search, in which a problem solver selects components to be included in an appropriate configuration. A variant of Conflict-Directed A* has been implemented to generate optimal configurations. To demonstrate its feasibility, the concept was applied, among other domains, to personalized automatic training plan generation for fitness studios.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Besides diagnosis, the task of configuration has been one
of the earliest application areas of work on
knowledgebased systems, initially in the form of rule-based “expert
systems”, for instance in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Today, systems for
automated configuration have reached maturity for practical
applications, as shown in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Despite this success,
developing algorithms for computing optimal or
optimized configurations with general applicability still
deserves more research efforts.
      </p>
      <p>Driven by a number of different configuration tasks, we
developed GECKO (Generic constraint-based
Konfiguration), a generic solution to the configuration problem that
can be specialized to different application domains and
that, among other objectives, aims at supporting the
generation of optimal configurations.</p>
      <p>In a nutshell, the solution exploits an analogy:
 The configuration task can be seen as searching
for an assignment of active or non-active to the
components in a given repository, representing
whether or not a component is included in the
configuration, such that it achieves some goals in
an optimal way
 Diagnosis has been formalized as a search for an
assignment of behavior modes (normal or fault_x)
to a set of system components such that it is
optimally compliant with a set of observations.</p>
      <p>
        Based on this analogy, we exploit a search technique that
has been developed as consistency-based diagnosis, see
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]), and as a generalization for optimal constraint
satisfaction, called conflict-directed A*, see [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
      </p>
      <p>In the following section, we discuss related work on
configuration systems. In section 3, we present some
examples of configuration problems that we tackled using
GECKO and that will serve for illustration purposes. Next,
we introduce our formalization of the configuration task
and the key concepts of GECKO. In section 5, we discuss
the analogy between diagnosis and configuration, the
application of CDA*, variants of utility functions and how
they relate to different types of configuration applications.
The results are shown in section 6. Finally, our current
work and some of the open issues are discussed.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Knowledge-based Configuration</title>
      <p>
        Applications of configuration are immensely diverse,
but they all share a number of common problems, such as
compliance with domain knowledge, size of the solution
space, and the resulting complexity of the problem solving
task. It requires knowledge-based approaches to support
the problem-solving activities, such as product
configuration or variability management see [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        Current research on configuration, especially for large
applications, tends to neglect global optimization, focusing
on local optimization, user interaction, or aiming at
producing “good” solutions, see [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        The focus of this paper is a generic, constraint-based
configurator (GECKO) for solving optimal configuration
problems. The core of GECKO is a variant of Brian
Williams’ Conflict-Directed A* (CDA*, [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]). The solution
works on a generic representation of configuration
knowledge and tasks. We consider the task of generating
configurations as similar to consistency-based diagnosis.
Instead of assigning modes for fault identification as in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
GECKO assigns the activity to components contributing to
goals. A configuration is consistent if all task-relevant
goals are satisfied. The quality of a configuration is given
by the level of goal satisfaction and the amount of resource
consumption. Our approach allows the arbitrary selection
of optimization criteria, like minimal resource
consumption or maximal goal contribution. In the presented case
study, our aim was to maximize the number of satisfied
goals under consideration of available resources.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Application Examples</title>
      <p>
        Configuration problems are almost ubiquitous in modern
life, with applications as different as creating a customized
computer as done by R1 in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and adapting the system
functions of a car, see [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. To illustrate the versatility of
GECKO, we present three applications.
      </p>
    </sec>
    <sec id="sec-4">
      <title>3.1 Car Configuration</title>
      <p>
        Today, car manufacturers offer a vast number of models,
model variants, and equipment options to their customer.
The resulting complexity does not only prohibit a
comprehensive exploration of the solution space, but is also likely
to provide customers with sub-optimal car variants. A
domain model for car configuration was created and mapped
to the GECKO concepts, which are presented in 4.2([
        <xref ref-type="bibr" rid="ref9">9</xref>
        ])
      </p>
    </sec>
    <sec id="sec-5">
      <title>3.2 User Interface Configuration</title>
      <p>
        The Beam Instrumentation group at CERN is responsible
for the design and implementation of particle beam
measurement systems. These systems are specifically built for
each case, resulting in extensive work on constructing
them. While the generation of the GUIs, that is the
implementation, is automated, the configuration is not. This task
currently requires an expert to select libraries, graphical
elements, and data sources and to parameterize them. Such
tasks are typical configuration tasks and thus enable the
automation of the configuration of the GUIs by GECKO
([
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]).
3.3
      </p>
    </sec>
    <sec id="sec-6">
      <title>Training Planning in Sport Science</title>
      <p>At a first glance, training planning may appear to be a
typical scheduling task, instead of a configuration problem.
Taking a closer look shows that it mainly involves
activities we consider the core of configuration: selecting,
parameterizing, and arranging components to satisfy goals,
whereas assigning time slots to the selected exercises is, in
general, fairly straightforward</p>
      <p>A trainer has to analyze the biometric state of his
trainee, such as fitness or age, to consider constraints on the
created training plan, for example duration or available
equipment, and to select and order appropriate exercises.</p>
      <p>The sheer number of existing exercises and the size of
the solution space show that training planning includes
optimization. In general, a trainer tries to maximize the
training effect within the available time and under
consideration of the trainee’s goal and abilities. The
specialization of GECKO to training planning is described in section
5.
4</p>
    </sec>
    <sec id="sec-7">
      <title>GECKO - Foundations</title>
    </sec>
    <sec id="sec-8">
      <title>4.1 Intuition</title>
      <p>With GECKO, we aim at developing a generic solution to
configuration problems, which can be tailored towards a
particular domain by specializing some basic classes and
creating a knowledge base in terms of domain-specific
constraints. Its design is driven by the following
objectives:

supporting both automatic and interactive
configuration;
 enabling the use of the system without deep
domain knowledge, esp. about how high-level goals
of the user break down to more detailed and
technical ones;
 handling also soft domain constraints and user
preferences, and
 offering support to the user by providing
explanations for generated parts of the configuration
and for unavailable options and by suggesting
revisions to resolve inconsistencies.</p>
      <p>However, this paper focuses on the basis, a generic
problem solver for (optimal) configuration. Determining
the solution – the configuration - means selecting a set of
instances of given types of elements - components -,
perhaps with certain attribute values and organized in a
particular structure. The configuration has to
1. satisfy a set of high-level user goals,
2. be compliant with particular attributes and
restrictions supplied by the user,
3. be realizable both in principle (i.e. not violating
domain-specific restrictions on valid
configurations),
4. under consideration of available resources, and
5. optimal (or near optimal) according a criterion
that reflects the degree of fulfilling the goals and
the amount of resources consumed.</p>
      <p>
        Configurations can be physical devices, such as
turbines, communication systems, and computers, abstract
ones like a curriculum or a company structure, or a
software system. In contrast to a design task involving the
creation of new types of components, configuration
assumes that all required Components are instances of
component types from a repository ([
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]). This leads to
different kinds of reasoning involved: innovative design has to
verify that its result satisfies the goals by inferring that
they achieved by the system behavior based on behavior
models of the components, whereas for a configuration
task, it is assumed that behavioral implications of
aggregated components have been compiled into explicit
interdependencies of Goals and Components. As a result,
software systems for configuration are typically based on
knowledge encoded as constraints or rules, as in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and do not require the exploitation of behavior models.
4.2
      </p>
    </sec>
    <sec id="sec-9">
      <title>Core Concepts</title>
      <p>The core concepts of GECKO are derived from the
description above, as depicted in Fig. 1:
 Goals express the achievements expected from a
specific configuration. They may have an
associated priority dependent on the task and
different criteria for goal satisfaction.
 Components are the building blocks of the
Configuration. They may be organized in a type
hierarchy (for example, Lithium battery is a voltage
source). In addition, there may be Components
that are aggregations of lower level components.
 A Task specifies the requirements on a
configuration from the user’s perspective. It is split into
three kinds of restrictions:</p>
      <sec id="sec-9-1">
        <title>Task</title>
        <p>= TaskGoals  TaskParameters  TaskRestrictions.
TaskGoals are a collection of Goals the user is aware of
and which can be (de)activated or prioritized by the user.
Each TaskGoaln is stated as a restriction
TaskGoaln.Satisfied=T in the Task description.</p>
        <p>While TaskGoals represent objectives a user requires,
TaskParameters associate values to properties of the
Task, hence have the form TaskParameterk=valuekj. For
instance, in vehicle configuration, the target country may
have an influence on daytime running lights being
mandatory. However, these implications are not drawn by the
user (who only provides the country information), but by
the domain knowledge represented in the system.</p>
        <p>In contrast, TaskRestrictions refer explicitly to the
choice of Components and their attributes, e.g. that for the
user, a convertible is not an option or that the engine
should be a Diesel engine.</p>
        <p>A specific, and often essential, TaskRestriction can be
included:
</p>
        <p>A ResourceConstraint limits the cost of the
configuration, which may be indeed money (car
configuration) or time (in training plan
configuration), but also computer memory etc. Components
have to have an attribute that allows calculating
the resources needed for the entire configuration
(often as the sum).</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>4.3 Constraints on Configurations</title>
      <p>The configuration knowledge of a particular application
comprises the domain-specific specialization and
instantiation of Goals, Components (possibly including component
attributes and their domains), and relevant TaskParameters
and their domains as well as constraints that capture
interdependencies among these instances. Dependent on which
kinds of objects are related, we distinguish between the
following (illustrated in Fig. 1):


</p>
      <sec id="sec-10-1">
        <title>TaskParameterGoalConstraints express that</title>
        <p>certain TaskParameter values may exclude or
require certain goals
GoalConstraints relate goals to each other, in
particular for refinement of higher-level (esp.
TaskGoals) to lower-level ones, such as goals
related to various muscle groups that should be
exercized, although the user is not aware of this
GoalComponentConstraints capture essential
configuration knowledge, namely whether and
how the available components contribute to the
achievements of goals</p>
        <p>ComponentConstraints establish
interdependencies among components (and their attributes): a
component may be dependent on or incompatible
with the presence of another component in the
configuration</p>
      </sec>
      <sec id="sec-10-2">
        <title>TaskParameterComponentConstraints may in</title>
        <p>clude or exclude certain components based on
TaskParameter values</p>
        <sec id="sec-10-2-1">
          <title>A fundamental constraint type is</title>
          <p>Requires (x, y)
which is defined by</p>
          <p>x.active=T  y.active=T
and used to express dependencies among goals (e.g.
refining a goal to a set of mandatory sub-goals) and
components (e.g. cruise control requires automatic transmission)
and as the fundamental coupling between goals and
components (to achieve high-speed driving, an engine of a
certain power is needed). Furthermore, in order to express that
several goals or components provide some partial
contributions that jointly result in the satisfaction of a goal (or
establish the preconditions of a component), we introduce
the concept of a choice, which can also fill the role of y in
a Requires-constraint. A choice is given by a relation</p>
          <p>GoalChoice  Goals  ContributionDom
or</p>
          <p>ComponentChoice  Components  ContributionDom,
where ContributionDom specifies a set of values for
quantifying how much a goal or component contributes to the
satisfaction of the choice and needs a zero element and an
operator  to add up contributions (e.g. addition of
integers). The idea behind choices is implemented by three
kinds of constraints. The degree of the satisfaction of a
(component) choice is given by the combined
contributions of the active components of the choice:</p>
          <p>Choice.satLevel =  Choice.goal.actContribution
and</p>
          <p>Choice.goal.actContribution =</p>
          <p>Choice.goal.contribution IF goal.active=T
zero IF goal.sctive=F .</p>
          <p>The choice is satisfied, if the satLevel lies in a specified
range, satThreshold:</p>
          <p>Choice.active = T </p>
          <p>Choice.satLevel  Choice.satThreshold .</p>
          <p>This allows implementing not only a minimum level as
a precondition for the satisfaction of a choice, but also a
maximum. Preventing “over-satisfaction” may not be a
common requirement, but in the fitness domain, one may
want to restrict the set of exercises that impose a load on a
particular muscle group.</p>
          <p>Another predefined general type of constraint is</p>
          <p>Excludes (x, y)
defined by</p>
          <p>x.active=T  y.active=F
to express conflicting goals, incompatible components, and
TaskParameterGoal/ComponentConstraints (e.g. high
body weight may rule out certain exercises).</p>
          <p>The application-specific configuration knowledge is,
thus, basically encoded as a set of the constraints explained
above. This, together with the domain-specific ontology
(as a specialization of the basic GECKO concepts,
including choices, and associated attributes) and, perhaps,
specific contribution domains and operators, establishes the
configuration knowledge base, called ConfigKB in the
following.</p>
          <p>We make some reasonable fundamental assumptions about
ConfigKB:
 Each potential TaskGoal is supported: it is the
starting node of a connected hyper graph of
Requires constraints that includes components, i.e. it
actually needs a (partial) configuration in order to
be satisfied (which does not mean it can actually
be satisfied).
 Closure assumption: the encoded
interdependencies, esp. the Requires constraints, are
complete. In other words, if all constraints Requires
(x, y) associated with x are satisfied by a
configuration, then x is satisfied.</p>
          <p> It is consistent.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-11">
      <title>4.4 Definition of the Configuration Task</title>
      <p>The goal is to select an appropriate subset of the available
components, which we call the active ones, and possibly
determine or restrict their attributes.</p>
      <sec id="sec-11-1">
        <title>Definition 1 (Complete Configuration)</title>
      </sec>
      <sec id="sec-11-2">
        <title>A configuration</title>
        <p>PARCONFIG = (ACTCOMPS, COMPATTR)
is complete if includes exactly the active components:
comp  ACTCOMPS  comp.Active = T.</p>
        <p>GECKO has to generate a configuration PARCONFIG that
satisfies the criteria stated in section 4.1.</p>
      </sec>
      <sec id="sec-11-3">
        <title>Definition 2 (Solution to a Configuration Task)</title>
      </sec>
      <sec id="sec-11-4">
        <title>A configuration task is a pair</title>
        <p>(ConfigKB, Task)
(as specified in sections 4.3 and 4.2, respectively), and a
complete configuration PARCONFIG is a solution to it, if
it is consistent with the ConfigKB and the Task,</p>
        <sec id="sec-11-4-1">
          <title>PARCONFIG  ConfigKB  Task ⊭ .</title>
          <p>This may seem too weak, because criterion 1 in section 4.1
requires the entailment of the satisfaction of the TaskGoals
in Task.</p>
        </sec>
      </sec>
      <sec id="sec-11-5">
        <title>Proposition 1</title>
        <p>If PARCONFIG is a solution to a configuration task
(ConfigKB, Task), then</p>
        <p>PARCONFIG  ConfigKB ⊨</p>
        <p> goalTaskGoals goal.Satisfied = T.</p>
        <p>This follows from the closure assumption: Since for the
chosen TaskGoals, Satisfied=T is explicitly introduced in
Task, it follows that all Requires constraints related to
them are satisfied, and, hence, they are not only consistent,
but entailed. As for the other criteria of section 4.1:
2. Compliance with specific application
requirements is guaranteed by consistency with the
TaskParameters under the
TaskParameterGoal/ComponentConstraints in ConfigKB and
with TaskRestrictions in Task
3. Realizability is established by consistency with</p>
        <p>ComponentConstraints
4. The ResourceConstraint is also consistent.</p>
        <p>Criteria 5, optimality, will be discussed in the following
section.
5</p>
      </sec>
    </sec>
    <sec id="sec-12">
      <title>Generating (Near) Optimal Configurations</title>
    </sec>
    <sec id="sec-13">
      <title>5.1 Configuration as Diagnosis</title>
      <p>The current version of GECKO is based on the assumption
that there exists a finite set of components, COMPS, as a
repository for all configurations. This means, no new
instances of components types are created during
configuration and, more specifically, a component will not be
duplicated if it is included in the configuration due to several
constraints. In this case, determining ACTCOMPS of a
complete configuration can be seen as an activity
assignment</p>
      <p>AA: COMPS  {active, inactive} ,
indicating the inclusion in or exclusion from the
configuration, and the consistency test of Definition 2 becomes</p>
      <p>AA  ConfigKB  Task ⊭ .</p>
      <p>This representation shows the analogy to the
consistencybased formalization of component-oriented diagnosis: an
assignment MA of modes (i.e. nominal or faulty behavior)
to a set of components,</p>
      <p>MA  {OK, fault1, fault2, …}
characterizes a diagnosis, if it is consistent with the
domain knowledge (a library of behavior models and a
structural description), called system description, SD, and a set
of observations, OBS:</p>
      <p>MA  SD  OBS ⊭ .</p>
      <sec id="sec-13-1">
        <title>In both cases, the assignments to the components</title>
        <p>AA  MA
are checked for consistency with a fixed set of constraints
representing the domain knowledge</p>
        <p>ConfigKB  SD ,
and a set of constraints representing a specific problem
instance</p>
        <p>Task  OBS .</p>
        <p>In consistency-based diagnosis, theories and algorithms
have been developed to determine diagnostic solutions,
which can be exploited for the configuration task based on
the analogy outlined above.</p>
      </sec>
    </sec>
    <sec id="sec-14">
      <title>5.2 Conflict-directed A*</title>
      <p>
        Based on the above formalization, many implementations
of consistency-based diagnosis exploit a best-first search
for consistent mode assignments, using probabilities of
individual behavior modes as a utility function (and
usually making the assumption that faults occur independently)
as SHERLOCK does([
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]). Classical A* search has been
extended and improved by pruning the search space based
on inconsistent partial mode assignments that have been
previously detected during the search (called conflicts),
exploiting a truth-maintenance system (TMS, such as the
assumption-based TMS [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]) as a dependency recording
mechanism that delivers conflicts. From the diagnostic
solutions, this approach has been generalized later as
conflict-directed A* search, see [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
Procedure CDASTAR
1) Terminate=F
2) Solutions=
3) Conflicts=
4) VA=VAinitial
5) DO WHILE Terminate=F
however, can be computationally expensive and may have
to be traded off against the computational cost of the
consistency test and/or the optimality of the solution. We will
get back to this issue below.
      </p>
      <p>The straightforward mapping of the configuration
problem to CDA* is obtained by representing configurations as
variable assignments:</p>
      <p>VARS={ Compi.active  CompiCOMPS}
DOM(Compi.active)={T, F} .</p>
      <p>To illustrate how the algorithm works using a simple
example, assume that goal G1 depends on a component
choice that involves 3 components, Ci, each with a
contribution of 1 in this choice, which has a
satisfactionThreshold (2,3), i.e. it is satisfied if at least two of the
components are active. Search starts with an empty configuration
(active=F for all components) which leads to an
inconsistency with the constraints related to the choice. Each
pair of inactive components establishes a (minimal)
conflict:
{ C1,active=F, C2,active=F },
{ C1,active=F, C3,active=F },
{ C2,active=F, C3,active=F }.</p>
      <p>Configurations resolving these conflicts are the ones with
active components</p>
      <p>{ C1, C2}, { C1, C2}, or { C2, C3},
and the best one would be checked further. If this is done
against another choice for a goal G2, which is based on
components C3, C4, C5 (again all with contribution 1) and a
threshold (1, 3), then a new conflict</p>
      <p>{ C3,active=F, C4,active=F, C5,active=F }
is detected, and the configurations resolving all include
active components are</p>
      <p>{ C1, C3}, { C2, C3}, { C1, C2, C4}, or { C1, C2, C5}.</p>
    </sec>
    <sec id="sec-15">
      <title>5.3 Diagnosis vs. Configuration</title>
      <p>Despite the mentioned basic commonality, there are some
important distinctions at a conceptual level, but with a
potentially strong impact on the computational complexity.</p>
      <sec id="sec-15-1">
        <title>Partial vs. complete assignments</title>
        <p>In diagnosis, it is possible to check partial mode
assignments to detect useful conflicts. In configuration, we
have to consider complete variable assignments, which, in
assigning T or F to activity variables of all components,
correspond to complete configurations. The reason is that,
as illustrated by the above trivial example, the constraints
related to a choice deliver important conflicts based on
components being not active. A partial configuration, e.g.
assigning active=T to, say, C1 only, is consistent with the
respective choice; that this configuration does not satisfy
G1 is detected only, if all other components are assumed to
be inactive (Of course, if the satThreshold has an upper
limit, we obtain conflicts involving too large sets of active
components, as well). This observation is related to
another difference:
(NON-)Locality of the Domain Theory
In diagnosis, the domain theory is as modular as the
device: it consists of constraints that represent the local
interaction of components and constraints that capture the local
behavior of components under certain modes. Checking
the consistency of a partial mode assignment requires
applying the directly related constraints only. In contrast,
constraints representing configuration knowledge are
almost by definition non-local: they are meant to relate many
components across the entire configuration, e.g. as choices.
If choices play a major role and are large, this can be a
source of severe problems.</p>
        <p>The training plan generation application forms an
extreme example: choices may involve in the order of 100
components, because many exercises may be related to a
particular muscle group, while only a handful of them
together satisfy the goal. In addition, exercises are
challenging several muscle groups. If the lower boundary of the
satisfactionThreshold of a choice is k and the size of the
choice is n, then (assuming a contribution 1 for each
component), the number of resulting minimal conflicts will be
(


− 1
)
– prohibitively large in the training application. This has
an impact on the algorithm, as discussed in section 5.5.
First, we have to introduce appropriate utility functions to
measure the quality of a configuration.</p>
      </sec>
    </sec>
    <sec id="sec-16">
      <title>5.4 Utility Functions</title>
      <p>The utility of a configuration should essentially reflect


the degree of fulfillment of the relevant goals
and
the amount of resources required.</p>
      <p>A measure of the former may also consider priorities of
goals. The same holds for individual components. Since
inactive components neither make contributions nor
consume resources, it is plausible to assume that the utility of
a configuration depends on its active components only.</p>
      <p>In the following, it is assumed that



the contribution of a configuration is obtained
solely as a combination of contributions of the
active components included in the configuration
and otherwise independent of the type of
properties of the components,
we can define a subtraction “-” of contributions,
the cost of the contribution is given as the sum of
the cost of the involved active components and
will usually be numerical,


we can define a ratio “/” of contributions and
resources,
there is a function that maps priority of goals to a
weight of the contributions and a kind of
multiplication,
*: DOM(weight)xDOM(contribution)</p>
      <p> DOM(contribution),
is defined.</p>
      <p>Then the following specifies a family of utility functions
(where we simplify the notation by writing
Goalj.SatThreshold instead of Choicej.SatThreshold etc.):</p>
      <p>For an active Goal Goalj, the TotalContribution of a
Configuration is</p>
      <p>Configuration.TotalContribution(Goalj):=
 CompiConfiguration.ACTCOMPS Compi.Contribution(Goalj)
where  denotes the Combine operation, the
ActualContribution is given as</p>
      <p>Configuration.ActualContribution(Goalj):=
max(Configuration.TotalContribution(Goalj),</p>
      <p>Goalj.Combine(Goalj</p>
      <p>SatThreshold,posTolerance)),
and a penalty (for over-satisfaction) as</p>
      <p>Configuration.Penalty(Goalj):=
max (0,</p>
      <p>Configuration.TotalContribution(Goalj)
- Goalj.Combine(Goalj SatThreshold,posTolerance).
Based on this, we define the utility function as</p>
      <p>Configuration.Utility(ACTGOALS):=
 Goalj Configuration.ACTGOALS
weight(Goalj.Priority)</p>
      <p>* Configuration.ActualUtility(Goalj)
+ f * Configuration.Penalty(Goalj) )
/  CompiConfiguration.ACTCOMPS Compi.Resource.</p>
      <p>The factor f determines whether or not excessive
contributions are penalized (by the excessive amount); the
weight can emphasize contributions to Goals with high
priority, and the tolerance interval can express how exactly
the intended SatThreshold has to be hit.</p>
    </sec>
    <sec id="sec-17">
      <title>5.5 GECKO Algorithm</title>
      <p>For the GECKO variant of CDA* we modified CDA* by
activating only the constraints needed at a specific stage,
thereby reducing the number of occurring conflicts
significantly.</p>
      <p>GECKO characterizes a stage in the problem solving
process and hence the criteria for constraint activation as a
pair</p>
      <p>S = (GOALS, configuration),
that is a set of goals that are considered and a configuration
to be checked for consistency. This allows for search
strategies that do not consider all active goals from the
beginning. Therefore, the constraints to be applied are not only
determined by the variable assignment, but also by the
goals. In our first application, goals are activated in a
descending order, according to their priority.</p>
      <p>
        To determine the hitting sets of the conflicts we use
different algorithms from [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], depending on the domain. In
BestCandidateResolvingConflicts, the next-best solution is
generated.
      </p>
      <p>Procedure GECKO Configuration Algorithm
1) ApplyConstraints(Constraints(Initial)
2) ActComps=ACTCOMPS0
3) Priority=max(actGoals.Priority)
4) DO WHILE Priority &gt;=1
5) ApplyConstraints(Constraints(</p>
      <p>GoalPriorityClass(Priority))
6) VA=VA(ActComps,COMPS\ActComps)
7) NewActComps=</p>
      <p>GECKO.CDASTAR(VA).ActComps
8) ActComps = NewActComps.Commit
9) END DO WHILE
10) RETURN ActComps</p>
      <p>In line 8, the algorithm fixes the components added to
satisfy the recently considered goals. This means, when
trying to satisfy further goals (with lower priority) they
will not be de-activated. This heuristic aims at satisfying as
many goals as possible with the given resources in the
order of their priority, but, obviously, may miss a globally
optimal solution.
6</p>
    </sec>
    <sec id="sec-18">
      <title>Case Study: Training Plan Generation</title>
      <p>We are working on the realization of the three applications
presented in section 3. To demonstrate the specialization of
GECKO concepts and the capabilities of the GECKO
algorithm, we selected the fitness training example. From the
three examples, fitness is best suited to illustrate the
advantages of CDA* in configuration.
6.1</p>
    </sec>
    <sec id="sec-19">
      <title>Domain Theory</title>
      <p>In fitness, trainees perform exercises, like push-ups or
running, to train body parts under certain aspects (endurance,
muscle gain). To train means to improve physical abilities,
like endurance, and to influence biometric parameters,
such as weight. In configuration terms: exercises
contribute to a set of fitness goals. Hence, we created the domain
theory for training planning using the concepts specified in
section 4.2. Table 1 contains an overview on the most
important specializations.</p>
      <p>The result may appear straightforward to outsiders, but it is
actually the result of several months of analyses carried out
jointly with experts from sports sciences, which took as to
several versions and revisions of the model.</p>
      <sec id="sec-19-1">
        <title>Task</title>
        <p>A GECKO Task in fitness is a trainee, or more precisely
the request of a training plan by a trainee. A trainee has
expectations regarding the result of the training,
represented by TraineeGoals. The Trainee also has a set of
TraineeProperties, like Fitnesslevel, and sets the
TrainingProperties. Furthermore, a trainee has to specify the desired
TrainingDuration.</p>
        <p>Special among the TraineeProperties are the
FitnessTargets and FitnessCategories. A FitnessTarget has to be
trained by an Exercise, such as legs. FitnessCategories are
the main abilities of a Trainee, such as strength.</p>
      </sec>
      <sec id="sec-19-2">
        <title>Goals</title>
        <p>The domain theory contains three types of goals:
 TraineeGoal: The only TaskGoal in fitness,
describing the expected effect of the fitness training
 TrainingGoal: Abstract goals, specifying the type
of physical ability to be improved e.g. strength
 TargetGoal: Body part the training has to
stimulate.</p>
        <p>To capture the structure of the human body and the
differences in fitness categories, we decompose the
TargetGoals into three levels:
o RegionGoal
o MuscleGroupGoal
o MuscleGoal</p>
        <p>Reflecting the FitnessTargets, TargetGoals are
structured in a goal tree. Because FitnessTargets are trained at
different levels, the tree is unbalanced. For example
Endurance is generally trained for the whole body, while
Strength is trained at a muscular level.</p>
      </sec>
      <sec id="sec-19-3">
        <title>Components</title>
        <p>All components in fitness are exercises. Each exercise is
related to a FitnessCategory, e.g, pushup is a
StrengthExercise. Exercises can contribute to multiple TargetGoals,
but only TargetGoals of their own FitnessCategory. For
example, a StrengthExercise can only contribute to
TargetGoals related to strength.</p>
        <p>Exercises comprise a set of fixed attributes, such as
requiredEquipment or requiredFitnesslevel, as well as a set
of unspecified attributes, like TrainingWeight or
Durations. The values of such volatile attributes depend on the
selected TraineeGoal, because they define how an exercise
effects a FitnessTarget – an increase in strength is achieved
by a small number of slow repetitions with very high
weight, while fat is burnt best with many fast repetitions
with little weight.</p>
      </sec>
      <sec id="sec-19-4">
        <title>Utility</title>
        <p>The utility of a configuration in SmartFit depends on the
contributions of the active components to required Choices
DOM(compi.contributioni) ={20,40,60,80,100}
The satThreshold of the Choices depends on the priority of
the associated goal
satThreshold = combine(Goali.Priority,normThreshold),
with DOM(Priority) ={1,2,3,4,5}.</p>
        <p>For the example in 6.2, we simply multiplied the
priorities with the normThreshold =80.</p>
        <p>The domain of the combined contribution is from 0 to 500
in steps of 20. In case of contributions larger than 500, the
overshoot is cut, and the value set to 500.</p>
        <p>The utility for fitness training is given by the following
equation:</p>
        <p>Config.Utility (ACTGOALS):=
 Goalj Config.ACTGOALS
weight (Goalj.Priority) * Config.ActualUtility (Goalj))
/  CompiConfig.ACTCOMPS Compi.Resource.</p>
      </sec>
    </sec>
    <sec id="sec-20">
      <title>6.2 Simplified Example</title>
      <p>To make the capabilities of GECKO more tangible, we
present a small experiment. For brevity and clarity, we use
a reduced knowledge-base, with three MuscleGoals( table
2), 12 exercises( table 3), and 2 TaskParameters, namely
Equipment and a general Fitnesslevel – thus omitting the
consideration of different Fitnesslevels related to the
specific FitnessTarget, as done in the application system.
Furthermore, we set the duration of all exercises to require 5
minutes.</p>
      <p>Using this reduced knowledge-base, we applied both the
basic GECKO algorithms and the goal-focused variant.
The results are described in the following subsection.</p>
      <p>To compare the results of different tasks, we conducted to
experiments with different TraineeGoals and
TaskParameter values. For the basic algorithm, we used the Tasks
shown in Table 4.
Partially
Satisfied
Satisfied
Satisfied</p>
      <p>Value B</p>
      <sec id="sec-20-1">
        <title>Application Evaluation</title>
        <p>The results indicate that the GECKO algorithms are
capable of generating optimal solutions to configuration
problems. In experiment B, it can be seen that GECKO was not
able to satisfy G3 completely, since there were not enough
consistent exercises available. Thus, the less important
goals were satisfied, but not the important one. In
experiment A on the other hand, the algorithm was able to fully
satisfy G3 but not G1, since the duration resource was only
sufficient for three exercises.</p>
      </sec>
    </sec>
    <sec id="sec-21">
      <title>6 Discussion and Outlook</title>
      <p>The results shown above indicate that treating
configuration as a diagnostic problem, and solving it with
techniques from consistency-based diagnosis is a promising
approach to user-oriented configurators for optimal
configuration problems.</p>
      <p>The analysis of different application domains, including
the ones mentioned in section 3, triggers the insight that
variations of the search algorithm may be required in order
to reflect the specific requirements and structure of the
problems. This is particularly true for applications that
involve a high level of interaction, such as leaving choices
to the user, providing explanations for system decisions,
and allowing him to modify his/her decisions in an
informed way. Retracting decisions and also generating
explanations can be supported by the ATMS, which also
produces conflicts.</p>
      <p>The conceptual and algorithmic solution to
configuration generation presented in this paper could certainly be
implemented using other techniques that have been
proposed and used for configuration. However, our choice of
an ATMS-based solution (and CDA*) was strongly
motivated by the overall objectives stated in section 4.1: we
intend to base explanation facilities (“which user inputs
and domain restriction prevent option x to be viable?”),
preferences and soft constraints, and the possibility to
retract input and explore several alternative solutions on
capabilities of the ATMS.</p>
      <p>A goal of our work is to extract features from the case
studies that can support a classification of configuration
applications as a basis for selection from a set of
predefined algorithm variants and strategies for man-machine
interaction.</p>
      <p>Other options, such as compiling (parts of) the
constraint network and moving search heuristics to a lower
technical level (the constraint system) will also be
explored.</p>
      <p>Furthermore, we are currently preparing an application
to configuration of automation systems for collaborative,
flexible manufacturing and modular multi-purpose
vehicles. This application of GECKO is likely to require
stronger spatial and also temporal constraints for
structuring a configuration.</p>
    </sec>
    <sec id="sec-22">
      <title>Acknowledgments</title>
      <p>We would like to thank our project partners for providing
their domain knowledge and their assistance, esp. Florian
Kreuzpointner and Florian Eibl. Special thanks to Oskar
Dressler (OCC’M Software) for proving the constraint
system (CS3 or Raz’r). The project was funded by the the
German Federal Ministry of Economics and Technology
under the ZIM program (KF2080209DB3).</p>
      <sec id="sec-22-1">
        <title>Multiple [6] BC William, R.J. Ragno, “Conflict-directed A* and its role in model-based embedded systems”, Discrete</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>JP</given-names>
            <surname>McDermott</surname>
          </string-name>
          , “
          <article-title>RI: an Expert in the Computer Systems Domain”</article-title>
          ,
          <source>Artificial Intelligence</source>
          ,
          <year>1980</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>U.</given-names>
            <surname>Junker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Mailharro</surname>
          </string-name>
          , “
          <article-title>The logic of ILOG(J) Configurator: Combining Constraint Programming with a Description Logic”</article-title>
          , IJCAI,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Felfernig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Hotz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bagley</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Tiihonen</surname>
          </string-name>
          , “
          <article-title>Knowledge-based Configuration: From Research to Business Cases</article-title>
          .”
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Sabin</surname>
          </string-name>
          , R. Weigel, “
          <article-title>Product configuration frameworks - a survey</article-title>
          .
          <source>” IEEE Intelligent System</source>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>J. de. Kleer</surname>
          </string-name>
          , BC Williams, “Diagnosing Faults,”
          <source>Artificial Intelligence</source>
          ,
          <year>1987</year>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>BC</given-names>
            <surname>William</surname>
          </string-name>
          , R.J. Ragno, “
          <string-name>
            <surname>Conflict-directed</surname>
            <given-names>A</given-names>
          </string-name>
          *
          <article-title>and its role in model-based embedded systems”</article-title>
          ,
          <source>Discrete Applied Mathematics</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Stumptner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Friedrich</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Haselböck, “
          <article-title>Generative constraint-based configuration of large technical systems“</article-title>
          ,
          <source>Artificial Intelligence for Engineering Design, Analysis and Manufacturing</source>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>G.</given-names>
            <surname>Weiß</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Grigoleit</surname>
          </string-name>
          , P. Struss, “
          <article-title>Context Modeling for Dynamic Configuration of Automotive Functions”</article-title>
          , ITSC,
          <year>2013</year>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C.</given-names>
            <surname>Richter</surname>
          </string-name>
          , “
          <article-title>Development of an interactive car configuration system”</article-title>
          ,
          <source>Master's Thesis</source>
          , Tech. Univ. of. Munich,
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Verikios</surname>
          </string-name>
          , “
          <article-title>A tool for the Configuration of CERN Particle Beam Measurement Systems”</article-title>
          ,
          <source>Master's Thesis</source>
          , Tech. Univ. of. Munich,
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>U.</given-names>
            <surname>Junker</surname>
          </string-name>
          , “Configuration.”
          <article-title>Handbook of Constraint Programming</article-title>
          , Configuration, p.
          <fpage>837</fpage>
          -
          <lpage>868</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>J. De</surname>
            <given-names>Kleer</given-names>
          </string-name>
          , BC Williams,”
          <article-title>Diagnosis with Behavioral Model”</article-title>
          , IJCAI,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J</given-names>
            <surname>De Kleer</surname>
          </string-name>
          ,
          <source>“An assumption-based TMS” Artificial intelligence</source>
          ,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J</given-names>
            <surname>De Kleer</surname>
          </string-name>
          , “
          <article-title>Hitting Set Algorithms for Model-based Diagnosis”</article-title>
          ,
          <source>Principles of Diagnosis</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>