Neng-Fa Zhou at TUWIEN 1
BPSolver’s Winning Solutions to ASP Competition Problems
Neng-Fa Zhou
The City University of New [email protected]
Outline
Overview of the ASP competition B-Prolog’s features BPSolver’s winning solutions BPSolver’s hopeful solutions BPSolver’s losing solutions Observations
Neng-Fa Zhou at TUWIEN 2
Overview of ASP Competition (Model & Solve) Principles
– To foster open comparison of ASP with any other declarative paradigm
– To foster development of new language constructs
– To foster development of new heuristics and/or algorithms
Neng-Fa Zhou at TUWIEN 3
Overview of ASP Competition (Model & Solve) Participants
– Aclasp (Gringo + Clasp + Gecode)– BPSolver (B-Prolog)– EZCSP (Gringo + Clasp + B-Prolog)– Fastdownward (PDDL)– IDP (grounder Gidl + MinisatID) – Potassco (Gringo + Clasp + Gecode)
Neng-Fa Zhou at TUWIEN 4
Overview of ASP Competition (Model & Solve) Benchmarks (34)
– P-problems (7)– NP-problems (19)– Beyond NP problems (2)– Optimization problems (6)
Neng-Fa Zhou at TUWIEN 5
Another View of the Results(Clasp Vs. B-Prolog)
Neng-Fa Zhou at TUWIEN 6
Overview of the ASP competition B-Prolog’s features BPSolver’s winning solutions BPSolver’s hopeful solutions BPSolver’s losing solutions Observations
Outline
Neng-Fa Zhou at TUWIEN 7
Neng-Fa Zhou at TUWIEN 8
B-Prolog =Prolog + Tabling + CLP(FD) Prolog enhanced with
– Array subscripts
– Loop constructs
Tabling– Memorize and reuse intermediate results
• Suitable for dynamic programming problems
CLP(FD)– Constraint Logic Programming over Finite Domains
• Suitable for constraint satisfaction problems (NP-complete)
9
Array Subscripts in B-Prolog
In arithmetic expressions
In arithmetic constraints
In calls to @= and @:=
In any other context, X[I1,…,In] is the same as X^[I1,…,In]
S is X[1]+X[2]+X[3]
X[1]+X[2] #= X[3]
X[1,2] @= 100X[1,2] @:= 100
Neng-Fa Zhou at TUWIEN
Loop Constructs in B-Prolog
foreach– foreach(E1 in D1, . . ., En in Dn, LVars, Goal)
– Example:• foreach(A in [a,b], I in 1..2, writeln((A,I))
List comprehension– [T : E1 in D1, . . ., En in Dn, LVars, Goal]
– Examples:• L @= [(A,I): A in [a,b], I in 1..2].• sum([A[I,J] : I in 1..N, J in 1..N]) #= N*N
Neng-Fa Zhou at TUWIEN 10
Neng-Fa Zhou at TUWIEN 11
Tabling in B-Prolog
Eliminate infinite loops
Reduce redundant computations
:-table path/2.path(X,Y):-edge(X,Y).path(X,Y):-edge(X,Z),path(Z,Y).
:-table fib/2.fib(0,1).fib(1,1).fib(N,F):-
N>1, N1 is N-1,fib(N1,F1),
N2 is N-2,fib(N2,F2),F is F1+F2.
The Table-All Approach
Characteristics– All the arguments of a tabled subgoal are used in
variant checking– All answers are tabled
Problems– The number of answers may be too large or even
infinite for DP and ML problems– When computing aggregates, tabling
noncontributing answers is a waste
Neng-Fa Zhou at TUWIEN 12
Neng-Fa Zhou at TUWIEN 13
Mode-Directed Tabling in B-Prolog Table mode declaration
– C: Cardinality limit
– Modes• + : input• - : output• min: minimized• max: maximized
:-table p(M1,...,Mn):C.
Neng-Fa Zhou at TUWIEN 14
Example: Shortest Path Problem
sp(X,Y,P,W)– P is a shortest path between X and Y with
minimal weight W.
:-table sp(+,+,-,min). sp(X,Y,[(X,Y)],W) :- edge(X,Y,W). sp(X,Y,[(X,Z)|Path],W) :- edge(X,Z,W1), sp(Z,Y,Path,W2), W is W1+W2.
Neng-Fa Zhou at TUWIEN 15
CLP(FD) in B-Prolog
A rich set of built-in constraints – Unification and arithmetic constraints (#=, #\=, #>,
#>=, #<, #=<)– Global constraints
A glass-box approach to the implementation– All propagators are described in Action Rules
(TPLP’06)– Action Rules is open to the user for describing
problem-specific propagators A rich set of labeling options
Global Constraints in B-Prolog all_different(L) & all_distinct(L)
– post_neqs(L)
circuit(L) count(V,L,RelOp,N)
– exactly(N,L,V)– atleast(N,L,V)– atmost(N,L,V)
cumulative(Starts,Durations,Resources,Limit)– serialized(Starts,Durations)
diffn(L) element(I,L,V) path_from_to(From,To,L)& path_from_to(From,To,L,Lab)
Neng-Fa Zhou at TUWIEN 16
Overview of the ASP competition B-Prolog’s features BPSolver’s winning solutions BPSolver’s hopeful solutions BPSolver’s losing solutions Observations
Outline
Neng-Fa Zhou at TUWIEN 17
BPSolver’s Winning Solutions
Neng-Fa Zhou at TUWIEN 18
Winning Solutions in Prolog
Grammar-Based Information Extraction– Parsing
Labyrinth– State space search
Tomography– Set covering
Neng-Fa Zhou at TUWIEN 19
Winning Solutions With Tabling
Reachability Hydraulic Planning Hydraulic Leaking Airport Pickup Hanoi Tower
Neng-Fa Zhou at TUWIEN 20
Reachability
Neng-Fa Zhou at TUWIEN 21
:-table reach/1.reach(X):- start(X).reach(Y):- reach(X), edge(X,Y).
Hydraulic Planning
Neng-Fa Zhou at TUWIEN 22
:-table pressurize(+,-,min).pressurize(Node,Plan,Len):- full(Node),!, Plan=[],Len=0.pressurize(Node,[Valve|Plan],Len):- link(AnotherNode,Node,Valve), \+ stuck(Valve), pressurize(AnotherNode,Plan,Len1), Len is Len1+1.
Hydraulic Leaking
Neng-Fa Zhou at TUWIEN 23
:-table pressurize(+,-,min).pressurize(Node,Plan,(Leaks,Len)):- full(Node),!, Plan=[],Leaks=0,Len=0.pressurize(Node,[Valve|Plan],(Leaks,Len)):- link(AnotherNode,Node,Valve), \+ stuck(Valve), pressurize(AnotherNode,Plan,(Leaks1,Len1)), Len is Len1+1, (leaking(Valve)-> Leaks is Leaks1+1 ; Leaks is Leaks1 ).
Airport Pickup
Passengers at Airport #1 want to move to Airport #2 and vice versa
A certain number of vehicles are available Some of the locations are gas stations
Neng-Fa Zhou at TUWIEN 24
CITY MAP
Solution to Airport Pickup
Neng-Fa Zhou at TUWIEN 25
:-table move_vehicle(+,+,+,+,max,-).move_vehicle(X,X,_Cap,GasLevel,Objective,Steps):- Objective=(GasLevel,0),Steps=[].move_vehicle(X,Y,Cap,GasLevel,Objective,[drive(Z)|Steps]):- (driveway(X,Z,GasNeeded);driveway(Z,X,GasNeeded)), GasLevel>=GasNeeded, GasLevel1 is GasLevel-GasNeeded, move_vehicle(Z,Y,Cap,GasLevel1,Objective1,Steps), Objective1=(AfterGasLevel,MLen), MLen1 is MLen-1, Objective=(AfterGasLevel,MLen1).move_vehicle(X,Y,Cap,GasLevel,Objective,[refuel|Steps]):- gasstation(X), GasLevel<Cap, move_vehicle(X,Y,Cap,Cap,Objective1,Steps), Objective1=(AfterGasLevel,MLen), MLen1 is MLen-1, Objective=(AfterGasLevel,MLen1).
Hanoi Tower (4-Pegs)
Neng-Fa Zhou at TUWIEN 26
A B C D A B C D
Two snapshots from the sequence by the Frame-Stewart algorithm
Problem Reduction
If the largest disk is in its final position, remove it.
Neng-Fa Zhou at TUWIEN 27
A B C D A B C D
Create an Intermediate State
Subproblems
Neng-Fa Zhou at TUWIEN 28
A B C D A B C D
A B C D A B C D
Sub-prob-1
Sub-prob-2
The Solution(4-Peg Hanoi Tower)
Neng-Fa Zhou at TUWIEN 29
:-table plan4(+,+,+,-,min).plan4(N,_CState,_GState,Plan,Len):-N=:=0,!,Plan=[],Len=0.plan4(N,CState,GState,Plan,Len):- reduce_prob(N,CState,GState,CState1,GState1),!, N1 is N-1, plan4(N1,CState1,GState1,Plan,Len).plan4(N,CState,GState,Plan,Len):- partition_disks(N,CState,GState,ItState,Mid,Peg), remove_larger_disks(CState,Mid,CState1), plan4(Mid,CState1,ItState,Plan1,Len1), % sub-prob1 remove_smaller_or_equal_disks(CState,Mid,CState2), remove_smaller_or_equal_disks(GState,Mid,GState2), N1 is N-Mid, plan3(N1,CState2,GState2,Peg,Plan2,Len2), % sub-prob2 remove_larger_disks(GState,Mid,GState1), plan4(Mid,ItState,GState1,Plan3,Len3), % sub-prob3 append(Plan1,Plan2,Plan3,Plan), Len is Len1+Len2+Len3.
Winning Solutions in CLP(FD)
Tangram Magic Square Sets (all_different) Weight-Assignment Tree (element) Knight Tour (circuit) Disjunctive Scheduling (post_disjunctive_tasks) Maximal Clique
Neng-Fa Zhou at TUWIEN 30
Magic Square Sets
Neng-Fa Zhou at TUWIEN 31
semi(Board,N,Magic):- foreach(I in 1..N, sum([Board[I,J] : J in 1..N])#=Magic), foreach(J in 1..N, sum([Board[I,J] : I in 1..N])#=Magic).
normal(Board,N,Magic):- sum([Board[I,I] : I in 1..N]) #= Magic, sum([Board[I,N-I+1] : I in 1..N]) #= Magic.
Overview of the ASP competition B-Prolog’s features BPSolver’s winning solutions BPSolver’s hopeful solutions BPSolver’s losing solutions Observations
Outline
Neng-Fa Zhou at TUWIEN 32
BPSolver’s Hopeful Solutions
Graph Coloring (Ranking = 5) Sokoban Optimization (Ranking = 4)
Neng-Fa Zhou at TUWIEN 33
Graph Coloring
Model-1 (neq)• For each two neighbors i and j, CiCj
Model-2 (all_distinct)• For each complete subgraph (clique) {i1,i2,…,ik},
all_distinct([Ci1, Ci2,…, Cik])
• post_neqs(Neqs) in B-Prolog
Model-3 (Model-2 + symmetry breaking)– Allen Van Gelder: Another look at graph coloring via
propositional satisfiabilityNeng-Fa Zhou at TUWIEN 34
Graph Coloring in B-Prolog
Neng-Fa Zhou at TUWIEN 35
Go:- create_vars(Vars), generate_neqs(Vars,Neqs), post_neqs(Neqs,Cliques), % new built-in largest_clique(Cliques,LClique), (labeling(LClique)-> labeling_ffc(Vars),!;fail), output(Vars).
Performance Comparison(Model-2 Vs. Model-3)
Neng-Fa Zhou at TUWIEN 36
BPSolver’s Solution to Sokoban
Neng-Fa Zhou at TUWIEN 37
The Competition Results
Neng-Fa Zhou at TUWIEN 38
BPSolver’s Losing Solutions(Score) Partner Units (0) Reverse Folding (0) Solitaire (0) Strategic Companies (0) Company Controls Optimize (0) Stable Marriage (5) Maze Generation (49)
Neng-Fa Zhou at TUWIEN 39
Observations
Neng-Fa Zhou at TUWIEN 40