private CCAtMostOne bestAMO ( int n ) { if ( n <= 10 ) { if ( this . amoPure == null ) this . amoPure = new CCAMOPure ( ) ; return this . amoPure ; } else { if ( this . amoProduct == null ) this . amoProduct = new CCAMOProduct ( this . config ( ) . productRecursiveBound ) ; return this . amoProduct ; } }
Returns the best at - most - one encoder for a given number of variables . The valuation is based on theoretical and practical observations . For < = 10 the pure encoding without introduction of new variables is used otherwise the product encoding is chosen .