BDD Based ConfigurationHenrik Hulgaard, CTO
Configit: Interactive Configuration Tools• Configit is an ITU spin-off company
• Currently employs 18 people, cand.it., computer scientists, PhDs
• Close relation to SAP
• Web: www.configit.com
Customer ExamplesArla Plast Lindab
B&G Fencing Logica
Brunata Netstal
CCI Europe Novenco
Danfoss Cooling Psion Teklogix
Danfoss District Heating Scalepoint Technologies
Danfoss Drives Scam Trucks
Dantherm Filtration Scancoin
Deif Schneider Electric Power Drives
DHI Water & Environment SEAS-NVE
Di Zio Skako Comessa
Dooria Tageksperten
Enalyzer UGS (Siemens PLM)
Enersys UkrSibbank
Erhvervsministeriet Uponor
Europæiske Rejseforsikring Vestas
Gemini Fashions Volvo Trucks
Grundfos Winnie Paper
LEGO
Sales configurator
Other configurator
SAP integrated
Consultancy
What’s Interactive Configuration?
A configuration problem C is a triple (X,D,F)
– X is a set of variables x1, x2, … ,xn
– D is the Cartesian product of their finite domainsD = D1 D2 … Dn
– F = {f1,f2,…,fm} is a set of propositional formulas over atomic propositions xi = v, where v Di, specifying the conditions that the variable assignments must satisfy. Each formula is inductively defined by
f xi = v | f g | f g | f
Configuration Problem
• An interactive configurator must:
1. Ensure that the user ends with a valid configuration
2. Guide the user towards the goal
Interactive Configuration
for all i < j:
c[i] <> c[j] // row
i+c[i] <> j+c[j] // NW-SE
i+c[j] <> j+c[i] // SW-NE
The 8 Queens Problem
7
6
5
4
3
2
1
0
c: array 8 of [0..7];
c[i] = "position of the queen in column i"
c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7]
• x1 {black, white, red, blue} : Color x2 {small, medium, large} : Sizex3 {“Men in black” – MIB, “Save the whales” -STW} : Print
• f1 (x3 = MIB) (x1 = black)f2 (x3 = STW) (x2 small)
• x1 x2 x3
black small MIBwhite medium STWred largeblue
T-Shirt Example1
1: Due to Erik van der Meer
• x1 {black, white, red, blue} : Color x2 {small, medium, large} : Sizex3 {“Men in black” – MIB, “Save the whales” -STW} : Print
• f1 (x3 = MIB) (x1 = black)f2 (x3 = STW) (x2 small)
• x1 x2 x3
black small MIBwhite medium STWred largeblue
T-Shirt Example1
1: Due to Erik van der Meer
• x1 {black, white, red, blue} : Color x2 {small, medium, large} : Sizex3 {“Men in black” – MIB, “Save the whales” -STW} : Print
• f1 (x3 = MIB) (x1 = black)f2 (x3 = STW) (x2 small)
• x1 x2 x3
black small MIBwhite medium STWred largeblue
T-Shirt Example1
1: Due to Erik van der Meer
• x1 {black, white, red, blue} : Color x2 {small, medium, large} : Sizex3 {“Men in black” – MIB, “Save the whales” -STW} : Print
• f1 (x3 = MIB) (x1 = black)f2 (x3 = STW) (x2 small)
• x1 x2 x3
black small MIBwhite medium STWred largeblue
T-Shirt Example1
1: Due to Erik van der Meer
• x1 {black, white, red, blue} : Color x2 {small, medium, large} : Sizex3 {“Men in black” – MIB, “Save the whales” -STW} : Print
• f1 (x3 = MIB) (x1 = black)f2 (x3 = STW) (x2 small)
• x1 x2 x3
black small MIBwhite medium STWred largeblue
T-Shirt Example1
1: Due to Erik van der Meer
Truth Table for T-shirt
black S StWblack S MiBblack M StWblack M MiBblack L StWblack L MiBwhite S StWwhite S MiBwhite M StWwhite M MiBwhite L StWwhite L MiB
red S StWred S MiBred M StWred M MiBred L StWred L MiBblue S StWblue S MiBblue M StWblue M MiBblue L StWblue L MiB
13
Truth Table for T-shirt
black S StWblack S MiBblack M StWblack M MiBblack L StWblack L MiBwhite S StWwhite S MiBwhite M StWwhite M MiBwhite L StWwhite L MiB
red S StWred S MiBred M StWred M MiBred L StWred L MiBblue S StWblue S MiBblue M StWblue M MiBblue L StWblue L MiB
14
Truth Table for T-shirt
black S StWblack S MiBblack M StWblack M MiBblack L StWblack L MiBwhite S StWwhite S MiBwhite M StWwhite M MiBwhite L StWwhite L MiB
red S StWred S MiBred M StWred M MiBred L StWred L MiBblue S StWblue S MiBblue M StWblue M MiBblue L StWblue L MiB
15
Truth Table for T-shirt
black S StWblack S MiBblack M StWblack M MiBblack L StWblack L MiBwhite S StWwhite S MiBwhite M StWwhite M MiBwhite L StWwhite L MiB
red S StWred S MiBred M StWred M MiBred L StWred L MiBblue S StWblue S MiBblue M StWblue M MiBblue L StWblue L MiB
16
T-shirt in Product Modeler
DEMO
T-shirts in Quote
DEMO
IPC(C)1. R COMPILE(C)2. while |R| > 1 do3. choose (xi = v) VALIDASSIGNMENTS(R)
4. R R (xi = v)
←Offline
←Online}
BDDBDD
Idea1. Use a BDD to represent R
2. Use a polynomial-time BDD algorithm to compute VALIDASSIGNMENTS(R)
BDD-based configuration
1. Define domains in binary:
00 : black, 01 : white, 10 : red, 11 : blue
00 : small, 01 : medium, 10 : large
0 : MIB, 1 : STW
2. Build a BDD of the rules:
Represent R by a BDD
01
11 , xx
02
12 , xx
03x
• Trace paths for each variable layer in the BDD
Compute VALIDASSIGNMENTS(R)
More info
• Take a look at www.configit.com
• Free trial SW download and numerous technical papers
• Student projects
• Ask [email protected]
Legal notes.This presentation is © Copyright Configit A/S and may not be distributed without permission from Configit.This presentation is strictly confidential and only intended for those receiving this directly from Configit.Configit, the Configit logo, Virtual Tabulation, Configit Product Modeler, Configit Runtime, Configit Quote for SAP and other
Configit product names are trademarks or registered trademarks of Configit A/S.All other product and service names mentioned and associated logos displayed are the trademarks of their respective
companies.