BDD Based Configuration Henrik Hulgaard, CTO. Configit: Interactive Configuration Tools Configit is...

Preview:

Citation preview

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

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 henrik@configit.com

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.