1 of 50

1

Recent Advances in Multi-Objective Search

Ariel Felner

ISE Department

Ben-Gurion University

ISRAEL

felner@bgu.ac.il

Ariel Felner

Ben-Gurion Univ.

Israel

Oren Slazman

Technion

Israel

Carlos Hernández 

Universidad San Sebastian

Chile

Sven Koenig

USC

USA

Han Zhang

USC

USA

2 of 50

  • Introduction: Ariel
  • Specific Algorithms: Ariel
  • Approximations: Han
  • Heuristics: Han
  • Summary and challenges: Sven

2

Overview

3 of 50

1�Introduction

3

4 of 50

Unidirectional search

Different costs functions:

f(n)=g(n) Breadth-First Search. AKA Dijkstra’s algorithm.

f(n)=g(n)+h(n) The A* algorithm (1968).

4

g(n)

h(n)

start

goal

n

Breadth

First

Search

A*

Adding heuristics to unidirectional search is very beneficial

5 of 50

Unidirectional search

f(n)=g(n)+h(n) The A* algorithm (1968).

Must-expand States: States with f(n)<C*

Maybe expand States: States with f(n)=C*

Never-expand States: States with f(n)>C*

5

start

Goal

C*

6 of 50

7 of 50

Start

Goal

S

G

8 of 50

 

Duration:

Cost:

S

G

(1,7)

1h

7k $

9 of 50

 

Duration:

Cost:

 

Duration:

Cost:

S

G

A

(2,1)

(1,1)

(1,7)

3h

1h

2k $

7k $

10 of 50

 

Duration:

Cost:

 

Duration:

Cost:

 

Duration:

Cost:

S

G

A

B

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

2h

3h

1h

5k $

2k $

7k $

11 of 50

 

Duration:

Cost:

 

Duration:

Cost:

 

Duration:

Cost:

 

Duration:

Cost:

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

5h

2h

3h

1h

4k $

5k $

2k $

7k $

12 of 50

 

Duration:

Cost:

 

Duration:

Cost:

 

Duration:

Cost:

 

Duration:

Cost:

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

5h

2h

3h

1h

4k $

5k $

2k $

7k $

13 of 50

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

 

Duration:

Cost:

5h

4k $

 

Duration:

Cost:

2h

5k $

 

Duration:

Cost:

3h

2k $

 

Duration:

Cost:

1h

7k $

?

7k $

5h

14 of 50

 

Duration:

Cost:

 

Duration:

Cost:

 

Duration:

Cost:

 

Duration:

Cost:

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

5h

2h

3h

1h

4k $

5k $

2k $

7k $

15 of 50

S

A

B

C

G

16 of 50

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

Duration (h)

Cost (x103)

17 of 50

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

(1,7)

(5,4)

(3,2)

Duration (h)

(2,5)

Cost (x103)

18 of 50

 

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

(1,7)

(5,4)

(3,2)

Duration (h)

(2,5)

Cost (x103)

19 of 50

 

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

(1,7)

Duration (h)

(2,5)

Cost (x103)

(3,2)

(5,4)

20 of 50

Pareto-Optimal Frontier (POF)

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

Duration (h)

Cost (x103)

(3,2)

(2,5)

(1,7)

21 of 50

Multi-Objective Search

 

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

22 of 50

Multi-Objective Search

 

S

G

A

B

C

(2,1)

(1,1)

(1,7)

(1,2)

(1,3)

(3,1)

(2,3)

(2,3) and (4,1)

Are mutually undominated

23 of 50

Must Expand Nodes

 

1

2

3

4

5

 

24 of 50

Must Expand Nodes

C

C

C

C

D

B

B

B

B

A

B

 

 

25 of 50

 

C

C

C

C

D

B

B

B

B

A

B

 

 

Area

Single-Objective

Multi Objective

C

26 of 50

 

C

C

C

C

D

B

B

B

B

A

B

 

 

Area

Single-Objective

Multi Objective

C

D

27 of 50

 

C

C

C

C

D

B

B

B

B

A

B

 

 

Area

Single-Objective

Multi Objective

A

C

D

28 of 50

 

C

C

C

C

D

B

B

B

B

A

 

 

B

Area

Single-Objective

Multi Objective

A

B

C

D

29 of 50

Must-Expand Nodes

Single-Objective

Multi Objective

C

C

C

C

D

B

B

B

A

 

 

B

B

30 of 50

Must Expand Nodes

Single-Objective

Area

Multi Objective

Must

A

B

Maybe

C

Maybe

Never

D

Never

A

D

C

 

C

C

C

C

D

B

B

B

B

A

B

 

 

31 of 50

A*

1 OPEN.insert(nroot);

2 while OPEN ≠ ∅ do {

3 n ← OPEN.pop() // according to minimal f-value

4 if duplicate-detection(n)

then continue

5 if (s(n) = goal) then

6 return(f(n))

7 for each s′ neighbour of s(n) do{

8 n′ ←new node at s′ with h(n′) = h(s′),

g(n′) = g(n) + c((s, s′))

9 if duplicate-detection(n′)

then continue // line 7

10 f(n′) = g(n′) + h((n′))

11 OPEN.insert(n′)

}

}

12 return POF

31

32 of 50

A*

1 OPEN.insert(nroot);

2 while OPEN ≠ ∅ do {

3 n ← OPEN.pop() // according to minimal f-value

4 if duplicate-detection(n)

then continue

5 if (s(n) = goal) then

6 return(f(n))

7 for each s′ neighbour of s(n) do{

8 n′ ←new node at s′ with h(n′) = h(s′),

g(n′) = g(n) + c((s, s′))

9 if duplicate-detection(n′)

then continue // line 7

10 f(n′) = g(n′) + h((n′))

11 OPEN.insert(n′)

}

}

12 return POF

32

33 of 50

General Algorithm: MOS-A*

1 OPEN.insert(nroot); POF ← ∅

2 while OPEN ≠ ∅ do {

3 n ← OPEN.pop() // according to un-domination

4 if domination-check-exp(n)

then continue

5 if (s(n) = goal) then

6 add n to POF and continue // line 2

7 for each s′ neighbour of s(n) do{

8 n′ ←new node at s′ with h(n′) = h(s′),

g(n′) = g(n) + c((s, s′))

9 if domination-check-gen(n′)

then continue // line 7

10 f(n′) = g(n′) + h((n′))

11 OPEN.insert(n′)

}

}

12 return POF

33

34 of 50

General Algorithm: MOS-A*

1 OPEN.insert(nroot); POF ← ∅

2 while OPEN ≠ ∅ do {

3 n ← OPEN.pop() // according to un-domination

4 if domination-check-exp(n)

then continue

5 if (s(n) = goal) then

6 add n to POF and continue // line 2

7 for each s′ neighbour of s(n) do{

8 n′ ←new node at s′ with h(n′) = h(s′),

g(n′) = g(n) + c((s, s′))

9 if domination-check-gen(n′)

then continue // line 7

10 f(n′) = g(n′) + h((n′))

11 OPEN.insert(n′)

}

}

12 return POF

34

35 of 50

Pop from open

Only pop undominated nodes

35

(1,7)

(2,5)

(3,2)

(5,4)

(3,6)

36 of 50

Domination checks

  • Path dominance check:
    • Only store nodes n(s) with undominated g(s)

36

start

S

5,6

3,7

4,5

S

S

5,6

3,7

OPEN

4,5

37 of 50

Domination checks

  • Path dominance check:
    • Only store nodes n(s) with undominated g(s)

37

start

S

5,6

3,7

4,5

S

S

5,6

3,7

OPEN

4,5

Path dominance check is optional

S

38 of 50

Domination checks

38

start

S1

f=(5,6)

  • Solution dominance check:
    • Prune nodes that are dominated by a solution in POF

POF= (7,7), (3,8)

39 of 50

Domination checks

39

start

S1

f=(5,6)

  • Solution dominance check:
    • Prune nodes that are dominated by a solution in POF

POF= (5,6), (3,8)

S2

f=(4,9)

Solution dominance check is mandatory

Like expanding nodes with f>C*

40 of 50

General Algorithm: MOS-A*

1 OPEN.insert(nroot); POF ← ∅

2 while OPEN ≠ ∅ do {

3 n ← OPEN.pop() // according to un-domination

4 if domination-check-exp(n)

then continue

5 if (s(n) = goal) then

6 add n to POF and continue // line 2

7 for each s′ neighbour of s(n) do{

8 n′ ←new node at s′ with h(n′) = h(s′),

g(n′) = g(n) + c((s, s′))

9 if domination-check-gen(n′)

then continue // line 7

10 OPEN.insert(n′)

}

}

11 return POF

40

Many variants exist

41 of 50

Pop from open

  • Only pop undominated nodes
  • How do we choose among them

41

(1,7)

(2,5)

(3,2)

(5,4)

(3,6)

 

  • Only pop undominated nodes
  • How do we choose among them

Other ordering functions exist: Max, Min, Ave and more

42 of 50

NAMOA*�Mandow and P´erez-de-la-Cruz 2010

  • Only pop undominated nodes
  • Choose the node that is lexicographically smallest
  • Perform dominance checks upon generation of a node.

42

NAMOAdr*

Pulido, Mandow, and P´erez-de-la-Cruz 2015

The idea of dimensionality reduction.

43 of 50

BOA*

  • With Lex: g1-values monotonically grow → for a path not to be dominated, it has to have smaller g2-value
  • g1 values go up so g2 values must go down to be undominated

43

start

S

1,10

2,8

3,9

g2min(n)=10

  • BOA* Dominance check in a constant time
  • For each state n we keep g2min(n)
  • New states must have larger g1 values.
  • We prune if g2(n)> g2min(n)

3,5

g2min(n)=8

g2min(n)=5

44 of 50

BOBA*

  • Bidirectional BOA*
  • Runs two searchers and tires to pass information between the two frontiers.

44

EMOA* and LTMOA*

  • Generalizes BOA* to multi-objective search
  • Parallel dominance checks (under review)

45 of 50

Heuristics

  • In A* a heuristic h(n) estimates the shortest distance from n to the goal.
  • h(n) is admissible if h(n) ≤ d(n,goal)
  • Then in A* we have f(n)=g(n)+h(n)

  • In MOS we have:
  • Single-value Heuristic – point heuristic
  • Multi-value Heuristic - Vector of heuristics

45

46 of 50

Single Valued Heuristic

46

 

 

4,6

8,3

0,0

3

4

h=4

h=3

f(n)=g(n)+h(n)=(g1,g2)+(4,3)

4,3

h(n)=(4,3)

47 of 50

Multiple Valued Heuristic

47

 

 

1,1

2

6

6,2

8,3

4,6

h=6

h=2

h(n)=(6,2)

48 of 50

Multiple Valued Heuristic

48

 

 

1,1

5

3

8,3

3,5

4,6

h=5

h(n)=(3,5)

h=3

49 of 50

Multiple Valued Heuristic

49

 

 

8,3

4,6

f(n)=g(n)+h(n)=(g1,g2)+(6,2)

h(n)=(6,2)

f(n)=g(n)+h(n)=(g1,g2)+(3,5)

h(n)=(3,5)

1,1

3

3,5

h=5

h=3

2

6

6,2

h=6

h=2

We need a list of vectors that together underesitmates the entire POF

50 of 50

50

Thank you!

Questions?