<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Enumeration of valid partial configurations</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Alexey</forename><surname>Voronov</surname></persName>
							<email>voronov@chalmers.se</email>
						</author>
						<author>
							<persName><forename type="first">Knut</forename><surname>Åkesson</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Fredrik</forename><surname>Ekstedt</surname></persName>
							<email>fredrik.ekstedt@fcc.chalmers.se</email>
						</author>
						<author>
							<affiliation key="aff0">
								<orgName type="institution">Chalmers University of Technology</orgName>
								<address>
									<settlement>Göteborg</settlement>
									<country key="SE">Sweden</country>
								</address>
							</affiliation>
						</author>
						<author>
							<affiliation key="aff1">
								<orgName type="department">Fraunhofer-Chalmers Research Centre for Industrial Mathematics</orgName>
								<address>
									<settlement>Göteborg</settlement>
									<country key="SE">Sweden</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Enumeration of valid partial configurations</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">F7E2FF43A2F79D4DFF1CE2D9421DC37B</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-19T15:48+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Models of configurable products can have hundreds of variables and thousands of configuration constraints. A product engineer usually has a limited responsibility area, and thus is interested in only a small subset of the variables that are relevant to the responsibility area. It is important for the engineer to have an overview of possible products with respect to the responsibility area, with all irrelevant information omitted. Configurations with some variables omitted we will call partial configurations, and we will call a partial configuration valid if it can be extended to a complete configuration satisfying all configuration constraints. In this paper we consider exact ways to compute valid partial configurations: we present two new algorithms based on Boolean satisfiability solvers, as well as ways to use knowledge compilation methods (Binary Decision Diagrams and Decomposable Negation Normal Form) to compute valid partial configurations. We also show that the proposed methods are feasible on configuration data from two automotive companies.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Within the automotive industry it is common to have a few general platforms where each platform are highly configurable to adapt to the needs on different markets but also to satisfy the needs of individual customers. Having highly configurable products put high demands on the engineering systems to support the engineers during the development of the platforms. While having a configurable product or platform it is inevitable to also have constraints that specify what can be allowed together and what is not allowed together. These constraints can, in many situations, be defined as a set of Boolean formulas defined over finite domain variables.</p><p>Development of complex products-like in the automotive industry-is done in large teams, where each engineer is working with only a limited part of the product. For the individual engineer only a small subset of the variables from those that describe the full product, are of immediate interest. However, an important problem for the engineer is to know which combinations of variable assignments for a subset of the variables might result in a product that satisfies all constraints, that is to know valid partial configurations. This is important because it helps the engineer to develop solutions only for those combinations that can actually be built and sold. Overestimation of these solutions will lead to engineer doing unnecessary designs. Underestimation can lead to costly delays if an overlooked configuration is requested by a customer afterwards.</p><p>Computing the exact set of valid partial configurations is generally hard. Simply taking configurations of the complete products and projecting them on relevant variables is not feasible, as practical problems can have 10 120 and more buildable complete products.</p><p>One of the ways to get exact set of valid partial configurations is to existentially quantify all irrelevant variables from the formula that represents the conjunction of all configuration constraints, for example using resolution inference rule <ref type="bibr" target="#b6">[Robinson, 1965;</ref><ref type="bibr" target="#b2">Davis and Putnam, 1960]</ref>, and then use a standard algorithm to enumerate all (complete) assignments of the new simplified formula. A simple enumeration of complete assignments searches for a satisfying assignment, adds it to the result, and also adds it to the current set of constraints as a blocking constraint, forbidding future search from returning it again. The disadvantage of this approach is that the formula size can grow significantly after quantification. In this paper we present a modification of this enumeration algorithm that does not require existential quantification of variables to enumerate partial configurations (Section 4.1). Similar algorithm can be found in <ref type="bibr" target="#b2">[Gebser et al., 2009]</ref>.</p><p>The problem of partial configurations can also be tackled by the widely used interactive configurators. In an interactive configurator a user selects values for variables one by one. The configurator should guide the user so that at any point there exist at least one way to complete the configuration without changing any of the earlier decisions, in this case a configurator is backtrack-free. Configurator should also be complete meaning that if a configuration is allowed according to the constraints, configurator should allow it. Having such complete and backtrack-free configurator, it is possible to automatically check all (partial) assignments of values to the relevant variables, and the configurator will show which of them are valid. If a configurator is not backtrack-free, it can overestimate allowed partial configurations. If it is not complete, it will underestimate them.</p><p>Previous work on methods for building interactive configurators started as extensions of Constraint Satisfaction Problem (CSP) with conditional and dynamic formulations <ref type="bibr" target="#b2">[Dechter and Dechter, 1988;</ref><ref type="bibr" target="#b6">Mittal and Falkenhainer, 1990;</ref><ref type="bibr">Soininen and Gelle, 1999;</ref><ref type="bibr" target="#b6">Sabin and Freuder, 1998;</ref><ref type="bibr" target="#b2">Gottlob et al., 2007]</ref>. However, supported implementations of these algorithms are not readily available. Binary Decision Diagrams (BDDs) <ref type="bibr" target="#b0">[Bryant, 1986]</ref> is a knowledge compilation method <ref type="bibr" target="#b0">[Darwiche and Marquis, 2002]</ref> successfully used for configuration <ref type="bibr" target="#b2">[Hadzic et al., 2004]</ref>, especially for real-time interactive configuration. However, BDDs suffer from memory explosion for many datasets of practical size. Other knowledge compilation methods used for configuration include automata representation <ref type="bibr" target="#b0">[Amilhastre et al., 2002]</ref>, Tree-of-BDDs <ref type="bibr">[Subbarayan, 2005]</ref>, Joint Matched CSP <ref type="bibr">[Subbarayan and Andersen, 2005]</ref>, Decomposable Negation Normal Form (DNNF) <ref type="bibr" target="#b0">[Darwiche and Marquis, 2002]</ref> (especially Deterministic DNNF for model counting <ref type="bibr" target="#b4">[Kübler et al., 2010]</ref>), as well as combinations of search and BDDs <ref type="bibr" target="#b6">[Norgaard et al., 2009]</ref>. Recently, Boolean Satisfiability Solvers (SAT-solvers) emerged as an alternative to work with configurations <ref type="bibr" target="#b6">[Sinz et al., 2003;</ref><ref type="bibr" target="#b4">Küchlin and Sinz, 2000;</ref><ref type="bibr" target="#b6">Sinz et al., 2006;</ref><ref type="bibr" target="#b3">Janota, 2008]</ref>, including interactive configurators <ref type="bibr" target="#b4">[Janota, 2010]</ref>.</p><p>In this paper we show how a SAT-solver can be used to enumerate partial configurations based on modification of standard enumeration algorithm, and based on checking every partial assignment inspired by interactive configuration. We also show how existing DNNF algorithms can be used to enumerate partial configurations. We show feasibility of a SATsolver based implementation on configuration data from two automotive companies.</p><p>The paper is organized as following. Section 2 covers formal preliminaries, Section 3 gives a motivating example, Section 4 presents the algorithms. Section 5 provides experimental results and discussion, and Section 6 concludes the paper.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Preliminaries</head><p>The configuration problem is a triple P = X, D, C , where</p><formula xml:id="formula_0">X = {x 1 , x 2 , . . . , x K } is a set of variables, D = {D 1 , D 2 , . . . , D K } is a set of corresponding finite domains, and C = {C 1 , C 2 , . . . , C J } is a set of propositional formulas over atomic propositions x k = v where v ∈ D k ,</formula><p>specifying conditions that the variable assignments have to satisfy.</p><p>A complete assignment to a configuration problem P is a function A : X → D which is defined for all x k ∈ X. A valid complete assignment (or solution) to P is a complete assignment A for which each C j is satisfied. A partial assignment to P is a partial function B : X → D defined for variables x k ∈ Y ⊆ X. We will write vars(B) = Y ⊆ X to denote the set of variables of B, or the scope of B. We will call a partial assignment valid iff it can be extended to a valid complete assignment. We will use P[B] to denote the simplified problem obtained by setting the variables defined in B.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Motivating example</head><p>Configuration problems describing complete products can have thousands of variables and hundreds of thousands constraints. An engineer, or a group of engineers, is usually responsible only for a subset of the variables. It could be that it is a requirement to design all possible solutions within the responsibility area, in case someone will order such a product. In such a case it can be expensive to have overestimated set of valid configurations, since engineers will spend time designing forbidden ones. Underestimations are also bad, since they lead to delays for designing a solution for ordered, but missed configuration.</p><p>The problem can be illustrated by the following example of a simple car configuration.</p><p>Let X = {body, engine, transmission} be the set of variables, and D = {{mini, sedan, suv}, {gasoline, diesel, electric}, {manual, auto, evt}} be the set of corresponding domains. Let the following be the set of constraints C:</p><formula xml:id="formula_1">• ¬((body = mini) ∧ (engine = gasoline)) • ¬((body = mini) ∧ (engine = diesel)) • ¬((body = sedan) ∧ (engine = electric)) • ¬((body = suv) ∧ (engine = gasoline)) • (engine = electric) → (transmission = evt) • (transmission = evt) → (engine = electric)</formula><p>Valid assignments of P = X, D, C can be presented, for example, in a tabular form, as shown in Table <ref type="table" target="#tab_0">1</ref>. Each row in the table corresponds to an assignment, and each column corresponds to a variable. Each cell contains a value assigned to the corresponding variable.</p><p>Let us suppose that there is a group of engineers that are interested only in connection between body and transmission, and they would like to disregard all information about engine. So they define the limited scope to be S = {body, transmission}. Valid partial assignments for S are presented in Table <ref type="table">2</ref>.</p><p>One way to get the partial assignments is to enumerate all complete assignments, project them onto the relevant variables (remove the irrelevant columns from the table), and remove duplicate partial assignments (rows). This approach is infeasible in practice, as some industrial examples from automotive industry have 10 120 allowed complete assignments. However, scopes of interest for the engineers may have less than a thousand valid partial assignments, which is computable using methods presented below. Approximations of this approach are found in practice, where instead of all valid assignments, only the ones that correspond to the products built during the last year (for example) are considered, which gives an underestimation of the answer. Clearly, there is a need for a better method.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Enumerating valid partial assignments</head><p>This sections presents two algorithms adopted to solve the problem based on satisfiability solvers. By a satisfiability solver we mean a tool that is able to answer whether an instance of a configuration problem has at least one valid complete assignment, and provides one if such exists. For example, tools for solving Constraint Satisfaction Problems (CSPsolvers) and Boolean Satisfiability Problems (SAT-solvers) can be used for this purpose. This section also shows how DNNF algorithms can be used to enumerate valid partial configurations.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Searching for complete, then forbidding partial</head><p>One way to enumerate all valid complete assignments is to iteratively search for any valid complete assignment, and in addition to adding it to the result, add a negation of it as a blocking constraint to the existing set of constraints. This algorithm can be modified to enumerate valid partial assignments, as shown in Algorithm 1. When a solver returns the first complete assignment, the assignment is projected onto the relevant scope. This partial assignment is returned as the first element of the result, and also added as a blocking constraint, ensuring that the solver will not return any (complete) assignment that will contain the partial one. Then this process is repeated.</p><p>The ability of the solver to incrementally add blocking constraints, while still keeping previously inferred information, is very important for the good performance of this algorithm. This is supported by, for example, Minisat-like solvers <ref type="bibr">[Een and Sörensson, 2004;</ref><ref type="bibr">Een and Sörensson, 2003]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Enumerating partial, then extending</head><p>In this approach it is necessary to enumerate all partial assignments, and try to extend each of them to a valid complete assignment using a solver. Just checking a partial assignment against each of the constraints in isolation is not enough, because there could be dependencies between variables that are not visible within the local scope, but are only visible within Algorithm 1 Search for complete, then forbid partial input: problem P = X, D, C , relevant variables S ⊆ X C ← C P ← P result ← {} while sat(P): / * ask solver * / A ← assignment(P) / * assignment from solver * / B ← A projected on S result ← result ∪B C ← C ∧ ¬(B as constraint) P ← X, D, C ) return result the complete scope. The solver can be used as following: each partial assignment is added as an extra constraint to the set of configuration constraints, and removed after the solver has returned an answer. The key to the good performance in this method is in the ability of the solver to cheaply add and retract constraints consisting of atomic propositions; again, Minisat-like solvers have this feature.</p><p>Algorithm 2 Enumerate partial, then extend input: problem P = X, D, C , relevant variables S ⊆ X output: valid partial assignments result ← {} for B in allAssignments(S):</p><p>if sat( P[B] ): result ← result ∪B return result An example illustrating this method is presented in Table <ref type="table" target="#tab_1">3</ref>. The columns for body and transmission contain all possible (not only valid) partial assignments for S. The table must be extended with the columns for variables (X \ S), in this case it is only one, engine. If there is at least one valid complete assignment that contains the partial one for the row, the values for all variables are written in the row. Otherwise, a "-" indicates that there is no such valid complete assignment, and the partial assignment is not valid. An advantage of Algorithm 1 compared to Algorithm 2 is that it builds upon heuristics of an underlying solver to skip checking many of the non-allowed assignments. A disadvantage is that to find the next partial assignment, it is necessary to process a larger (increased by one) set of constraints; this could be a problem when it is necessary to produce millions of partial assignments. But when there is a small number of valid partial assignments, or a user specifically asked for the first hundred of assignments as a sample, and there are many non-allowed configurations, Algorithm 1 can be beneficial.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3">Knowledge compilation: DNNF</head><p>Knowledge compilation is a family of approaches that addresses intractability of many Artificial Intelligence problems. A propositional model is compiled in an off-line phase in order to support some queries in polytime <ref type="bibr" target="#b0">[Darwiche and Marquis, 2002]</ref>. Binary Decision Diagrams (BDDs) <ref type="bibr" target="#b0">[Bryant, 1986]</ref> belong to this family and received substantial attention as a tool for configuration problems <ref type="bibr" target="#b2">[Hadzic et al., 2004]</ref>. Decomposable Negation Normal Form (DNNF) <ref type="bibr" target="#b2">[Darwiche, 2001]</ref> is a data structure used in knowledge compilation for which BDD is a special case. It is more succinct than BDDs and its compilation time is often shorter than that of BDDs <ref type="bibr" target="#b6">[Subbarayan et al., 2007]</ref>. DNNF supports smaller number of tractable operations than BDD, while still allowing polytime existential quantification (forgetting) and assignments enumeration, which together allow polytime partial assignments enumeration once DNNF is compiled.</p><p>Formally, a propositional formula a is in negation normal form (NNF) if and only if a is either a positive or negative atomic proposition (a literal); a conjunction ∧ i a i ; or a disjunction ∨ i a i where each a i is in negation normal form. A formula in NNF f is decomposable (DNNF) if and only if for any conjunction a = a 1 ∧ • • • ∧ a n no atomic propositions are shared by any conjuncts in a: ATOMS(a i ) ∩ ATOMS(a j ) = ∅ for every i = j. A formula in NNF is smooth if for every disjunction a = a 1 ∨ • • • ∨ a n , ATOMS(a) = ATOMS(a i ) for every i.</p><p>Existential quantification of variables from DNNF is presented in Algorithm 3 <ref type="bibr" target="#b2">[Darwiche, 2001]</ref>. Every occurence of irrelevant variable is replaced by true, and the formula is simplified accordingly. This procedure preserves decomposability, and its running time is linear in the DNNF size.</p><formula xml:id="formula_2">Algorithm 3 FORGET -existential quantification on DNNF input: relevant variables S ⊆ X, DNNF f output: DNNF with variables X \ S existentially quantified if f is a Literal l: if VAR(l) ∈ S: return f else return true else if f is a conjunction a 1 ∧ • • • ∧ a n : return FORGET(a 1 ) ∧ . . . ∧ FORGET(a n ) else if f is a disjunction a 1 ∨ • • • ∨ a n : return FORGET(a 1 ) ∨ . . . ∨ FORGET(a n )</formula><p>Enumeration of assignments of DNNFs is shown in Algorithm 4 <ref type="bibr" target="#b1">[Darwiche, 2000]</ref>, where each assignment is represented as a set of literals, and × is a Cartesian product on them:</p><formula xml:id="formula_3">{N 1 , . . . , N n }×{M 1 , . . . , M m } = {N 1 ∪M 1 , . . . , N n ∪M m }.</formula><p>The complexity of enumerating the models of a smooth DNNF f is O(mn 2 ), where m is the size of f and n = |MODELS(f )| <ref type="bibr" target="#b0">[Darwiche, 1998]</ref>.</p><p>Algorithm 4 MODELS -enumerating assignments of DNNF input: smooth DNNF f output: (complete) valid assignments of f , as sets of literals if f is a Literal l:</p><formula xml:id="formula_4">return {{l}}; else if f is a conjunction a 1 ∧ • • • ∧ a n : return MODELS(a 1 )× • • • × MODELS(a n ); else if f is a disjunction a 1 ∨ • • • ∨ a n : return MODELS(a 1 )∪ • • • ∪ MODELS(a n ).</formula><p>The overall process of using DNNF is shown in Algorithm 5. DNNF for the car example is shown on Figure <ref type="figure" target="#fig_2">1a</ref>. DNNF with variable engine forgotten is shown on Figure <ref type="figure" target="#fig_2">1b</ref>, and its valid partial assignments can be found in Table <ref type="table">2</ref>. Polynomial time guarantee for assignments enumeration operation is an advantage of DNNF. However, the compilation time of arbitrary constraints into DNNF is in general exponential. When the data changes rarely, this time is amortized among multiple queries, but when the data changes very often, this off-line stage does not pays off.</p><p>DNNF have an important advantage: if it is smooth and deterministic, it can be used to count the assignments <ref type="bibr" target="#b1">[Darwiche, 2000</ref>]. An NNF formula a is deterministic if for every disjunction a = a 1 ∨ • • • ∨ a n , every pair of disjuncts in a is logically inconsistent; that is, a i ∧ a j |= f alse for every i = j. Unfortunately, operation FORGET does not preserve determinism, and counting in such case will give overestimated answer. However, even overestimated answer can be useful in some cases. It is also possible to recompile the resulting DNNF again into a deterministic one. Some practical applications of counting for configuration using DNNF were considered in <ref type="bibr" target="#b4">[Kübler et al., 2010]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Experimental results</head><p>We analyzed the data from two automotive companies: three datasets from the first company, and one dataset from the sec-   <ref type="table" target="#tab_2">4</ref>.</p><p>We implemented Algorithms 2 and 1 on top of Sat4j solver [Le <ref type="bibr" target="#b5">Berre and Parrain, 2010]</ref>.</p><p>A knowledge compilation tool was developed based on BDD package BuDDy <ref type="bibr" target="#b6">[Lind-Nielsen, 2002]</ref>. The preordering algorithms from <ref type="bibr" target="#b6">[Narodytska and Walsh, 2007]</ref> were implemented for sorting variables and restrictions, using inflation parameter r = 1.5 in the clustering step. A simplified version of the MCL clustering algorithm <ref type="bibr">[van Dongen, 2000]</ref> was used, skipping the truncation heuristics and the sparse matrix multiplication tools. No post-ordering of the variables was included. The tool was able to handle only the smallest dataset.</p><p>Another attempt to use knowledge compilation involved c2d compiler <ref type="bibr" target="#b2">[Darwiche, 2004]</ref> that compiles propositional formulas to deterministic DNNF. Algorithms 3 (FORGET) and 4 (MODELS) were implemented to work with the DNNF output of c2d. Using another DNNF compiler sharpSAT <ref type="bibr" target="#b6">[Muise et al., 2010]</ref> resulted in segmentation faults on some of the datasets, and its debugging is underway. Sat4j and c2d require the input to be in Conjunctive Normal Form (CNF), that is it have to be a conjunction of clauses, and each clause is a disjunction of literals. Each literal is either a positive or negative atomic proposition. Constraints were converted to CNF using Tseitin encoding <ref type="bibr" target="#b8">[Tseitin, 1968]</ref>.</p><p>Two times were measured. The first time measured was preprocessing or off-line time. This included, for example, DNNF compilation, and initial constraint propagation. The results are presented in Table <ref type="table" target="#tab_3">5</ref>. BDD-based implementation was not able to complete the compilation process of larger instances. c2d compiler ran out of 2 GB memory limit (it is available only as a 32 bit application) compiling the largest dataset A.</p><p>The second time measured was the on-line time, or the time to actually compute the valid partial configurations for one given scope, while utilizing results from the off-line phase. The results are presented in Table <ref type="table" target="#tab_4">6</ref>. SAT-based solution is very robust on the datasets, even without having theoretical guarantees on running times. The BDD-based solution, when the BDD was successfully built, is the fastest. The reason why DNNF-based method appears to be slow could be a nonoptimal implementation of Algorithms 3 and 4.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusions</head><p>In this paper we looked at the problem of computing allowed partial combinations, which is important for engineers working with product development. We presented several algorithms, two of which are suitable for SAT-solvers, and one that is based on DNNF. Our experiments showed that SATbased implementation can handle large datasets from automotive industry quite efficiently. Preliminary experiments with knowledge compilation tools showed that available DNNF compilers cannot handle the largest dataset within the memory and time limits. However, DNNF-based method has the advantages of polynomial time guarantee on the on-line phase, and the ability to count the assignments when DNNF is determenistic.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Algorithm 5</head><label>5</label><figDesc>Knowledge compilation based approach input: problem P = X, D, C , relevant variables S ⊆ X output: valid partial assignments f 1 ← COMPILE(P ) f 2 ← FORGET(S, f 1 ) /* see Algorithm 3 * / m ← MODELS(f 2 ) /* see Algorithm 4 * / return m</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>DNNF with variable engine existentially quantified.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: DNNFs for the car example.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 :</head><label>1</label><figDesc>Valid complete assignments</figDesc><table><row><cell cols="2">body engine</cell><cell>transmission</cell></row><row><cell>mini</cell><cell>electric</cell><cell>evt</cell></row><row><cell cols="3">sedan gasoline manual</cell></row><row><cell cols="3">sedan gasoline automatic</cell></row><row><cell cols="2">sedan diesel</cell><cell>manual</cell></row><row><cell cols="2">sedan diesel</cell><cell>automatic</cell></row><row><cell>suv</cell><cell>diesel</cell><cell>manual</cell></row><row><cell>suv</cell><cell>diesel</cell><cell>automatic</cell></row><row><cell>suv</cell><cell>electric</cell><cell>evt</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 3 :</head><label>3</label><figDesc>Illustration of Algorithm 2 (Enumerate partial, then extend).</figDesc><table><row><cell cols="2">body transmission</cell><cell>engine</cell></row><row><cell>mini</cell><cell>manual</cell><cell>-</cell></row><row><cell>mini</cell><cell>autmatic</cell><cell>-</cell></row><row><cell>mini</cell><cell>evt</cell><cell>electric</cell></row><row><cell cols="2">sedan manual</cell><cell>gasoline</cell></row><row><cell cols="2">sedan automatic</cell><cell>gasoline</cell></row><row><cell cols="2">sedan evt</cell><cell>-</cell></row><row><cell>suv</cell><cell>manual</cell><cell>diesel</cell></row><row><cell>suv</cell><cell>automatic</cell><cell>diesel</cell></row><row><cell>suv</cell><cell>evt</cell><cell>electric</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 4 :</head><label>4</label><figDesc>Problem properties.</figDesc><table><row><cell>A</cell><cell>B</cell><cell>C</cell><cell>D</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>Table 5 :</head><label>5</label><figDesc>Time for compilation/initial clause learning, seconds.</figDesc><table><row><cell></cell><cell>A</cell><cell>B</cell><cell>C</cell><cell>D</cell></row><row><cell>Sat4j, Alg 1</cell><cell>2</cell><cell>2</cell><cell>1</cell><cell>2</cell></row><row><cell>BuDDy</cell><cell cols="4">timeout timeout 40 timeout</cell></row><row><cell>c2d</cell><cell>out-of-mem</cell><cell>240</cell><cell>2</cell><cell>20</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head>Table 6 :</head><label>6</label><figDesc>Time to compute valid partial assignments (FORGET+MODELS), seconds. DNNF from c2d n/a 681 * 0.15 * 22 * * Based on own, unoptimized implementation.</figDesc><table><row><cell></cell><cell>A</cell><cell>B</cell><cell>C</cell><cell>D</cell></row><row><cell>Sat4j, Alg 1</cell><cell>10</cell><cell>29</cell><cell>0.12</cell><cell>3</cell></row><row><cell>BuDDy</cell><cell>n/a</cell><cell>n/a</cell><cell cols="2">0.01 n/a</cell></row></table></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgements</head><p>This work was carried out at the Wingquist Laboratory VINN Excellence Centre within the Area of Advance -Production at Chalmers, supported by the Swedish Governmental Agency for Innovation Systems (VINNOVA). The support is gratefully acknowledged.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Consistency restoration and explanations in dynamic CSPs -Application to configuration</title>
		<author>
			<persName><forename type="first">Amilhastre</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Artificial Intelligence Research</title>
		<imprint>
			<biblScope unit="volume">135</biblScope>
			<biblScope unit="issue">8</biblScope>
			<biblScope unit="page" from="165" to="222" />
			<date type="published" when="1986-08">2002. 2002. 1986. August 1986. 2002. 2002. 1998. 1998</date>
		</imprint>
	</monogr>
	<note>Journal of Arti cial Intelligence Research</note>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">On the tractable counting of theory models and its application to belief revision and truth maintenance</title>
		<author>
			<persName><forename type="first">Adnan</forename><surname>Darwiche</surname></persName>
		</author>
		<author>
			<persName><surname>Darwiche</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Applied Non-Classical Logics</title>
		<imprint>
			<date type="published" when="2000">2000. 2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">New Advances in Compiling CNF to Decomposable Negation Normal Form</title>
		<author>
			<persName><forename type="first">Adnan</forename><surname>Darwiche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename><surname>Darwiche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Adnan</forename><surname>Darwiche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Martin</forename><surname>Darwiche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Hilary</forename><surname>Davis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rina</forename><surname>Putnam</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Avi</forename><surname>Dechter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename><surname>Dechter</surname></persName>
		</author>
		<author>
			<persName><surname>Gebser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Niklas Een and Niklas Sörensson. An Extensible SAT-solver. Theory and Applications of Satisfiability Testing</title>
				<editor>
			<persName><forename type="first">R</forename><forename type="middle">M</forename><surname>Jensen</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Henrik</forename><surname>Reif Andersen</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><surname>Mø</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">H</forename><surname>Hulgaard</surname></persName>
		</editor>
		<meeting><address><addrLine>Hyderabad, India</addrLine></address></meeting>
		<imprint>
			<publisher>PETO conference</publisher>
			<date type="published" when="1960-07">2001. July 2001. 2004. 2004. 1960. July 1960. 1988. 1988. 2003. 2003. 2004. 2919. 2004. 2004. 2009. 2009. 2007. January 2007. 2004. 2004</date>
			<biblScope unit="volume">48</biblScope>
			<biblScope unit="page" from="88" to="93" />
		</imprint>
	</monogr>
	<note>Fast backtrack-free product configuration using a precompiled solution space representation</note>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Do SAT solvers make good configurators?</title>
		<author>
			<persName><forename type="first">Mikolas</forename><surname>Janota</surname></persName>
		</author>
		<author>
			<persName><surname>Janota</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">First Workshop on Analyses of Software Product Lines</title>
				<imprint>
			<date type="published" when="2008">2008. 2008</date>
			<biblScope unit="page" from="1" to="5" />
		</imprint>
	</monogr>
	<note>12th International Software Product Line Conference</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Proving Consistency Assertions for Automotive Product Data Management</title>
		<author>
			<persName><forename type="first">Mikolas</forename><surname>Janota</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename><surname>Janota</surname></persName>
		</author>
		<author>
			<persName><surname>Kübler</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Model Counting in Product Configuration. Electronic Proceedings in Theoretical Computer Science</title>
				<meeting><address><addrLine>LoCoCo</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2000-02">2010. 2010. 2010. July 2010. 2000. February 2000</date>
			<biblScope unit="volume">29</biblScope>
			<biblScope unit="page" from="145" to="163" />
		</imprint>
		<respStmt>
			<orgName>University College Dublin</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">PhD thesis</note>
	<note>SAT Solving in Interactive Configuration</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">The Sat4j library , release 2.2 system description</title>
		<author>
			<persName><forename type="first">Le</forename><surname>Berre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Parrain</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal on Satisfiability, Boolean Modeling and Computation</title>
		<imprint>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="page" from="59" to="64" />
			<date type="published" when="2010">2010. 2010</date>
		</imprint>
	</monogr>
	<note>Daniel Le Berre and Anne Parrain</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Combining Binary Decision Diagrams and Backtracking Search for Scalable Backtrack-Free Interactive Product Configuration</title>
		<author>
			<persName><forename type="first">Lind-Nielsen ;</forename><surname>Jø Rn Lind-Nielsen ;</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sanjay</forename><surname>Mittal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Brian</forename><surname>Falkenhainer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">;</forename><surname>Muise</surname></persName>
		</author>
		<ptr target="http://buddy.sourceforge.net" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 21st International Joint Conferences on Artificial Intelligence(IJCAI-09) Workshop on Configuration</title>
				<editor>
			<persName><forename type="first">Timo</forename><surname>Soininen</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Esther</forename><surname>Gelle</surname></persName>
		</editor>
		<meeting>the 21st International Joint Conferences on Artificial Intelligence(IJCAI-09) Workshop on Configuration<address><addrLine>Hyderabad, India</addrLine></address></meeting>
		<imprint>
			<publisher>Subbarayan and Andersen</publisher>
			<date type="published" when="1965-01">2002. 2002. 1990. 1990. 2010. 2010. 2007. 2007. 2009. 2009. 1965. January 1965. 1998. 1998. 2003. August 2003. 2006. August 2006. 1999. 1999. 2005. 2005. 2007. 2007</date>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="page" from="502" to="507" />
		</imprint>
	</monogr>
	<note>AAAI 2007</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Integrating CSP Decomposition Techniques and BDDs for Compiling Configuration Problems</title>
		<author>
			<persName><forename type="first">Sathiamoorthy</forename><surname>Subbarayan</surname></persName>
		</author>
		<author>
			<persName><surname>Subbarayan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Integration of AI and OR Techniques in</title>
		<imprint>
			<biblScope unit="volume">3524</biblScope>
			<biblScope unit="page" from="351" to="365" />
			<date type="published" when="2005">2005. 2005. 2005</date>
		</imprint>
	</monogr>
	<note>Constraint Programming for Combinatorial Optimization Problems</note>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">On the complexity of derivation in propositional calculus</title>
		<author>
			<persName><forename type="first">Gregory</forename><forename type="middle">S</forename><surname>Tseitin</surname></persName>
		</author>
		<author>
			<persName><surname>Tseitin</surname></persName>
		</author>
		<idno>INS-R0010</idno>
	</analytic>
	<monogr>
		<title level="m">Structures in Constructive Mathematics and Mathematical Logic, Part II, Seminars in Mathematics (translated from Russian)</title>
				<editor>
			<persName><surname>Stijn Van Dongen</surname></persName>
		</editor>
		<imprint>
			<publisher>Steklov Mathematical Institute</publisher>
			<date type="published" when="1968">1968. 1968. 2000. 2000</date>
			<biblScope unit="page" from="234" to="259" />
		</imprint>
	</monogr>
	<note type="report_type">Technical Report</note>
	<note>A cluster algorithm for graphs</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
