1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package org.sat4j.tools;
31
32 import org.sat4j.specs.IConstr;
33 import org.sat4j.specs.ISolverService;
34 import org.sat4j.specs.Lbool;
35
36
37
38
39 public class ConflictDepthTracing extends SearchListenerAdapter<ISolverService> {
40
41
42
43
44 private static final long serialVersionUID = 1L;
45
46 private int counter;
47 private int nVar;
48
49 private final IVisualizationTool conflictDepthVisu;
50 private final IVisualizationTool conflictDepthRestartVisu;
51 private final IVisualizationTool conflictDepthCleanVisu;
52
53 public ConflictDepthTracing(IVisualizationTool conflictDepthVisu,
54 IVisualizationTool conflictDepthRestartVisu,
55 IVisualizationTool conflictDepthCleanVisu) {
56 this.conflictDepthVisu = conflictDepthVisu;
57 this.conflictDepthRestartVisu = conflictDepthRestartVisu;
58 this.conflictDepthCleanVisu = conflictDepthCleanVisu;
59 this.counter = 0;
60 }
61
62 @Override
63 public void conflictFound(IConstr confl, int dlevel, int trailLevel) {
64 this.conflictDepthVisu.addPoint(this.counter, trailLevel);
65 this.conflictDepthRestartVisu.addInvisiblePoint(this.counter,
66 trailLevel);
67 this.conflictDepthCleanVisu.addInvisiblePoint(this.counter, trailLevel);
68 this.counter++;
69 }
70
71 @Override
72 public void end(Lbool result) {
73 this.conflictDepthVisu.end();
74 this.conflictDepthRestartVisu.end();
75 this.conflictDepthCleanVisu.end();
76 }
77
78 @Override
79 public void start() {
80 this.conflictDepthVisu.init();
81 this.conflictDepthRestartVisu.init();
82 this.conflictDepthCleanVisu.init();
83 this.counter = 0;
84 }
85
86 @Override
87 public void restarting() {
88 this.conflictDepthRestartVisu.addPoint(this.counter, this.nVar);
89 this.conflictDepthCleanVisu.addPoint(this.counter, 0);
90 this.conflictDepthVisu.addInvisiblePoint(this.counter, this.nVar);
91 }
92
93 @Override
94 public void init(ISolverService solverService) {
95 this.nVar = solverService.nVars();
96 }
97
98 @Override
99 public void cleaning() {
100 this.conflictDepthRestartVisu.addPoint(this.counter, 0);
101 this.conflictDepthCleanVisu.addPoint(this.counter, this.nVar);
102 this.conflictDepthVisu.addInvisiblePoint(this.counter, this.nVar);
103 }
104 }