Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
19   92   5   3,8
8   42   0,47   5
5     1,8  
1    
 
  ObjectiveFunction       Line # 43 19 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    package org.sat4j.reader;
26   
27    import java.io.Serializable;
28    import java.math.BigInteger;
29   
30    import org.sat4j.core.Vec;
31    import org.sat4j.core.VecInt;
32    import org.sat4j.specs.IVec;
33    import org.sat4j.specs.IVecInt;
34   
35    /**
36    * Abstraction for an Objective Function for Pseudo Boolean Optimization.
37    *
38    * May be generalized in the future to deal with other optimization functions.
39    *
40    * @author leberre
41    *
42    */
 
43    public class ObjectiveFunction implements Serializable {
44   
45    /**
46    *
47    */
48    private static final long serialVersionUID = 1L;
49   
50    // contains the coeffs of the objective function for each variable
51    private final IVec<BigInteger> coeffs;
52   
53    private final IVecInt vars;
54   
 
55  0 toggle public ObjectiveFunction(IVecInt vars, IVec<BigInteger> coeffs) {
56  0 this.vars = new VecInt(vars.size());
57  0 vars.copyTo(this.vars);
58  0 this.coeffs = new Vec<BigInteger>(coeffs.size());
59  0 coeffs.copyTo(this.coeffs);
60    }
61   
62    // calculate the degree of the objectif function
 
63  0 toggle public BigInteger calculateDegree(int[] model) {
64  0 BigInteger tempDegree = BigInteger.ZERO;
65   
66  0 for (int i = 0; i < vars.size(); i++) {
67  0 if (varInModel(vars.get(i), model))
68  0 tempDegree = tempDegree.add(coeffs.get(i));
69    }
70  0 return tempDegree;
71    }
72   
 
73  0 toggle private boolean varInModel(int var, int[] model) {
74  0 for (int i = 0; i < model.length; i++)
75  0 if (var == model[i])
76  0 return true;
77  0 return false;
78    }
79   
 
80  0 toggle public IVec<BigInteger> getCoeffs() {
81  0 IVec<BigInteger> coefbis = new Vec<BigInteger>(coeffs.size());
82  0 coeffs.copyTo(coefbis);
83  0 return coefbis;
84    }
85   
 
86  0 toggle public IVecInt getVars() {
87  0 IVecInt varbis = new VecInt(vars.size());
88  0 vars.copyTo(varbis);
89  0 return varbis;
90    }
91   
92    }