Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
11   86   2   1,38
2   43   0,82   8
8     1,12  
1    
 
  PseudoOptDecorator       Line # 37 11 2 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 java.math.BigInteger;
29   
30    import org.sat4j.reader.ObjectiveFunction;
31    import org.sat4j.specs.ContradictionException;
32    import org.sat4j.specs.IOptimizationProblem;
33    import org.sat4j.specs.ISolver;
34    import org.sat4j.specs.TimeoutException;
35    import org.sat4j.tools.SolverDecorator;
36   
 
37    public class PseudoOptDecorator extends SolverDecorator implements
38    IOptimizationProblem {
39   
40    /**
41    *
42    */
43    private static final long serialVersionUID = 1L;
44   
45    private ObjectiveFunction objfct;
46   
47    private int[] prevmodel;
48   
 
49  0 toggle public PseudoOptDecorator(ISolver solver) {
50  0 super(solver);
51    }
52   
 
53  0 toggle public void setObjectTiveFunction(ObjectiveFunction objf) {
54  0 objfct = objf;
55    }
56   
 
57  0 toggle public boolean admitABetterSolution() throws TimeoutException {
58  0 boolean result = super.isSatisfiable();
59  0 if (result)
60  0 prevmodel = super.model();
61  0 return result;
62    }
63   
 
64  0 toggle public boolean hasNoObjectiveFunction() {
65  0 return objfct == null;
66    }
67   
 
68  0 toggle public boolean nonOptimalMeansSatisfiable() {
69  0 return true;
70    }
71   
 
72  0 toggle public Number calculateObjective() {
73  0 return objfct.calculateDegree(prevmodel);
74    }
75   
 
76  0 toggle public void discard() throws ContradictionException {
77  0 super.addPseudoBoolean(objfct.getVars(), objfct.getCoeffs(), false,
78    objfct.calculateDegree(prevmodel).subtract(BigInteger.ONE));
79    }
80   
 
81  0 toggle @Override
82    public int[] model() {
83  0 return prevmodel;
84    }
85   
86    }