Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
17   84   3   2,12
6   43   0,59   8
8     1,25  
1    
 
  LubyRestarts       Line # 33 17 3 83,9% 0.83870965
 
No Tests
 
1    package org.sat4j.minisat.restarts;
2   
3    import org.sat4j.minisat.core.RestartStrategy;
4    import org.sat4j.minisat.core.SearchParams;
5   
6    /**
7    * Luby series code taken from SATZ_rand 5.0 from Henry Kautz
8    * http://www.cs.rochester.edu/u/kautz/satz-rand/satz-rand-v5.0.tgz
9    *
10    * <pre>
11    * Luby's series
12    * long luby_super(int i)
13    * {
14    * long power;
15    * int k;
16    *
17    * if (i&lt;=0){
18    * fprintf(stderr, &quot;bad argument super(%d)\n&quot;, i);
19    * exit(1);
20    * }
21    * /* let 2&circ;k be the least power of 2 &gt;= (i+1)
22    * k = 1;
23    * power = 2;
24    * while (power &lt; (i+1)){
25    * k += 1;
26    * power *= 2;
27    * }
28    * if (power == (i+1)) return (power/2);
29    * return (luby_super(i - (power/2) + 1));
30    * }
31    * </pre>
32    */
 
33    public class LubyRestarts implements RestartStrategy {
34   
 
35  135165 toggle static final long luby_super(long i) {
36  135165 long power;
37  135165 long k;
38   
39  135165 assert i > 0;
40    /* let 2^k be the least power of 2 >= (i+1) */
41  135165 k = 1;
42  135165 power = 2;
43  1014230 while (power < (i + 1)) {
44  879065 k += 1;
45  879065 power *= 2;
46    }
47  135165 if (power == (i + 1))
48  19453 return (power / 2);
49  115712 return (luby_super(i - (power / 2) + 1));
50    }
51   
52    private int factor;
53    private int count;
54   
 
55  1 toggle public LubyRestarts() {
56  1 setFactor(32); // uses TiniSAT default
57    }
58   
 
59  1 toggle public void setFactor(int factor) {
60  1 this.factor = factor;
61    }
62   
 
63  0 toggle public int getFactor() {
64  0 return factor;
65    }
66   
 
67  1 toggle public void init(SearchParams params) {
68  1 count = 1;
69    }
70   
 
71  19453 toggle public long nextRestartNumberOfConflict() {
72  19453 return luby_super(count)*factor;
73    }
74   
 
75  19453 toggle public void onRestart() {
76  19453 count++;
77    }
78   
 
79  0 toggle @Override
80    public String toString() {
81  0 return "luby style (SATZ_rand, TiniSAT) restarts strategy with factor "+factor;
82    }
83   
84    }