Kayler Yao wrote:
> 1. the difference bettween IntVarArray and IntVarArgs ,and how to  
> use them
>    As explained in the manual of Gecode,  IntVarArgs is Argument  
> array which is just good enough for passing arguments with automatic  
> memory management. IntVarArray is Variable array which can store  
> variables and be used for storing the variables being part of a  
> solution (script).
>  From these description,i can see that IntVarArgs can be used when i  
> need automatic memory management.But When i need automatic memory  
> management, i don't know. If you give me an simple example, i maybe  
> can understand it.

Take sudoku as an example.  It has 81 variables, one for each field,  
so you have an IntVarArray x for these variables.  Now you want to  
post the constraint that the first row, x[0],...,x[8] must be  
distinct.  So you create an IntVarArgs containing those variables and  
pass it to the distinct constraint.  You don't have to worry about  
memory management for that array.

>  2. how to post the constraint ----multiplication of two variable?
>    For instance ,
>              IntVarArry  x;
>               x(*this,4,1,6);
>           I want to have a constraint " x[0] * x[1] = x[2] ".when i  
> write " post(*this, x[0] * x[1]   ==  x[2],o pt.icl( ) );" in my  
> test program, errors come out.  I began to doubt that whether you  
> can use the sign of " * ".  After testing " post(*this, 2 * x[1]    
> ==  x[2],o pt.icl( )  );", i have know that i can use " * ". So, I  
> doubt that we can't multiply two variable with the sign " * ". Who  
> can tell me how to add this constraint ?

The minimodel library (which contains the post(...) functions) only  
supports linear expressions, i.e. multiplication with constants.  To  
multiply two variables, use the mult constraint.

Cheers,
        Guido


_______________________________________________
Gecode users mailing list
us...@gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users

Reply via email to