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.maxsat;
31
32 import org.junit.Test;
33 import org.sat4j.core.VecInt;
34 import org.sat4j.pb.PseudoOptDecorator;
35 import org.sat4j.specs.ContradictionException;
36 import org.sat4j.specs.TimeoutException;
37 import org.sat4j.tools.ModelIterator;
38 import org.sat4j.tools.OptToSatAdapter;
39
40 public class BugFatih2 {
41
42 @Test
43 public void testBugReport() throws ContradictionException, TimeoutException {
44
45
46 WeightedMaxSatDecorator maxSatSolver = new WeightedMaxSatDecorator(
47 org.sat4j.maxsat.SolverFactory.newDefault());
48 ModelIterator solver = new ModelIterator(new OptToSatAdapter(
49 new PseudoOptDecorator(maxSatSolver)));
50 System.out.println("Taille de voc : " + solver.nVars());
51 solver.newVar(13);
52 solver.setExpectedNumberOfClauses(24);
53 maxSatSolver.addHardClause(new VecInt(new int[] { -1 }));
54 maxSatSolver.addHardClause(new VecInt(new int[] { -2 }));
55 maxSatSolver.addHardClause(new VecInt(new int[] { -3, 4 }));
56 maxSatSolver.addHardClause(new VecInt(new int[] { -3, 5 }));
57 maxSatSolver.addHardClause(new VecInt(new int[] { -3, 6 }));
58 maxSatSolver.addHardClause(new VecInt(new int[] { -1, 7 }));
59 maxSatSolver.addHardClause(new VecInt(new int[] { -2, 6 }));
60 maxSatSolver.addHardClause(new VecInt(new int[] { -4, 3 }));
61 maxSatSolver.addHardClause(new VecInt(new int[] { -5, 3 }));
62 maxSatSolver.addHardClause(new VecInt(new int[] { -6, 3, 2 }));
63 maxSatSolver.addHardClause(new VecInt(new int[] { -7, 1 }));
64 maxSatSolver.addHardClause(new VecInt(new int[] { 3, -1, 8 }));
65 maxSatSolver.addHardClause(new VecInt(new int[] { -3, 1, 8 }));
66 maxSatSolver.addHardClause(new VecInt(new int[] { -3, -1, 9 }));
67 maxSatSolver.addHardClause(new VecInt(new int[] { -9 }));
68 maxSatSolver.addHardClause(new VecInt(new int[] { 1, -2, 10 }));
69 maxSatSolver.addHardClause(new VecInt(new int[] { -1, 2, 10 }));
70 maxSatSolver.addHardClause(new VecInt(new int[] { -1, -2, 11 }));
71 maxSatSolver.addHardClause(new VecInt(new int[] { -10 }));
72 maxSatSolver.addHardClause(new VecInt(new int[] { -11 }));
73 maxSatSolver.addHardClause(new VecInt(new int[] { 3, -1, 12 }));
74 maxSatSolver.addHardClause(new VecInt(new int[] { -3, 1, 12 }));
75 maxSatSolver.addHardClause(new VecInt(new int[] { -3, -1, 13 }));
76 maxSatSolver.addHardClause(new VecInt(new int[] { -13 }));
77 System.out.println("Taille de voc : " + solver.nVars());
78 while (solver.isSatisfiable()) {
79 System.out.println("Taille du modèle : " + solver.model().length);
80 for (int i = 1; i <= solver.model().length; i++) {
81 System.out.print(solver.model(i) + " ");
82 }
83 System.out.println();
84 }
85 }
86 }