[gecode-users] Re: Var indexes-help
penche
penche21 at hotmail.com
Mon Jan 8 21:43:02 CET 2007
<pekczynski at ...> writes:
>
> Hi there,
> I think using the element constraint is the correct choice.
> Maybe the little example I attached will help you out.
> At least you can use the element constraint to model
>
> B[C[i-1]]=A[i]
>
> and indeed the alg also does
>
> A[i]=B[C[i-1]]
>
> see http://www.gecode.org/gecode-doc-latest/group__TaskIntIntElement.html
>
> > 2) I also tried 'element' to express this constraint
> >
> > Int Var x;
> > element(this, B, C.get(i - 1), x);
> > rel(this,A.get(i),IRT_EQ,x);
>
> So this was quite right, but you can directly use
>
> element(this, B, C[i - 1], A[i]);
>
> so you don't need the rel constraint.
>
> If there are any further questions, let us know.
> :-D
> Cheers
> Patrick
>
>
> Attachment (arrayex.cc): application/octet-stream, 1932 bytes
>
> _______________________________________________
> Gecode users mailing list
> users at ...
> https://www.gecode.org/mailman/listinfo/gecode-users
>
Thank you, I now see rel is useless and element is just enough.
But one point is; we will need Var indexes inevitable when the relations
get nested.
For example; A[i] = B [ C [A[j]] ]
1) obviously rel does not work.
rel(this, A.get(i), IRT_EQ, B.get(C.get(A.get(j))))
2) I tried to introduce new Vars, but below did not work also.
IntVar intermediate1= new IntVar(this,min,max);
IntVar intermediate2= new IntVar(this,min, max);
element(this, C, A.get(j), intermediate1);
element(this, B, intermediate1, intermediate2);
rel(this, A.get(i), IRT_EQ, intermediate2);
3) Any way to write this constraint?
Thanks!
More information about the gecode-users
mailing list