[gecode-users] posting of expressions

Guido Tack tack at gecode.org
Tue Jul 13 17:01:42 CEST 2010


Kish Shen wrote:
> As I have mentioned in my previous posts, I have been rewriting the code for handling expressions for the ECLiPSe interface to Gecode. I am wondering if there are any performance advantages in different ways of handling certain special cases of expressions, like sum.
> 
> I had some special code that handled summation of variables using linear:
> 
> linear(*solver, vars, rel, sum)
> 
> where vars in IntVarArgs, sum is int (although I guess it could be generalised to IntVar as well), and rel is IntRelType.
> 
> This code does not seem to be used at the moment, I assumed I had it to handle some specific ECLiPSe code that I wanted to run quickly with the interface.
> 
> Instead, such summed expressions are now handled through the general expression handling code, and passed to Gecode as a LinRel through minimodel. The sum is passed as a series of +, e.g. A+B+C rather than using sum of a IntVarArg, because the code was written for Gecode 3.0.2, which I don't think supported sum.
> 
> Is it more efficient to use the more specialised linear to post such expressions, and is it more efficient to use sum in LinExpr rahter than a series of +?

The minimodel layer will combine such expressions automatically, and post the same propagators as when you call linear directly.  Of course, there's a small overhead for the preprocessing of the LinExprs if you use a series of +, but that should be hardly noticeable in practice.

Cheers,
	Guido

-- 
Guido Tack, http://people.cs.kuleuven.be/~guido.tack/







More information about the users mailing list