Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
17   96   5   2,43
6   50   0,65   7
7     1,57  
1    
 
  MaxSatDecorator       Line # 35 17 5 0% 0.0
 
No Tests
 
1    /*
2    * SAT4J: a SATisfiability library for Java Copyright (C) 2004-2006 Daniel Le Berre
3    *
4    * Based on the original minisat specification from:
5    *
6    * An extensible SAT solver. Niklas E?n and Niklas S?rensson. Proceedings of the
7    * Sixth International Conference on Theory and Applications of Satisfiability
8    * Testing, LNCS 2919, pp 502-518, 2003.
9    *
10    * This library is free software; you can redistribute it and/or modify it under
11    * the terms of the GNU Lesser General Public License as published by the Free
12    * Software Foundation; either version 2.1 of the License, or (at your option)
13    * any later version.
14    *
15    * This library is distributed in the hope that it will be useful, but WITHOUT
16    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17    * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
18    * details.
19    *
20    * You should have received a copy of the GNU Lesser General Public License
21    * along with this library; if not, write to the Free Software Foundation, Inc.,
22    * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23    *
24    */
25   
26    package org.sat4j.opt;
27   
28    import org.sat4j.core.VecInt;
29    import org.sat4j.specs.ContradictionException;
30    import org.sat4j.specs.IConstr;
31    import org.sat4j.specs.IOptimizationProblem;
32    import org.sat4j.specs.ISolver;
33    import org.sat4j.specs.IVecInt;
34   
 
35    public class MaxSatDecorator extends AbstractSelectorVariablesDecorator
36    implements IOptimizationProblem {
37   
38    /**
39    *
40    */
41    private static final long serialVersionUID = 1L;
42   
43    // private IConstr prevconstr=null;
44   
 
45  0 toggle public MaxSatDecorator(ISolver solver) {
46  0 super(solver);
47    }
48   
 
49  0 toggle @Override
50    public IConstr addClause(IVecInt literals) throws ContradictionException {
51  0 literals.push(nborigvars + ++nbnewvar);
52  0 return super.addClause(literals);
53    }
54   
 
55  0 toggle @Override
56    public void reset() {
57  0 nbnewvar = 0;
58  0 vec.clear();
59  0 super.reset();
60    }
61   
 
62  0 toggle public boolean hasNoObjectiveFunction() {
63  0 return false;
64    }
65   
 
66  0 toggle public boolean nonOptimalMeansSatisfiable() {
67  0 return false;
68    }
69   
 
70  0 toggle public Number calculateObjective() {
71  0 counter = 0;
72  0 for (int q : prevfullmodel) {
73  0 if (q > nborigvars) {
74  0 counter++;
75    }
76    }
77  0 return counter;
78    }
79   
80    private final IVecInt vec = new VecInt();
81   
82    private int counter;
83   
 
84  0 toggle public void discard() throws ContradictionException {
85  0 if (vec.isEmpty()) {
86  0 for (int i = nborigvars + 1; i <= nVars(); i++) {
87  0 vec.push(i);
88    }
89    }
90    // if (prevconstr!=null)
91    // super.removeConstr(prevconstr);
92    // prevconstr =
93  0 super.addAtMost(vec, counter - 1);
94    }
95   
96    }