Hey all,

I am working on a binary propagator which needs to know the position of the two 
variables
it receives within the domain of the problem (coded with an IntVarArray).

I am not sure whether this is possible (and if it should be possible!) to 
access this information, as I believe
a binary propagator should be able to propagate without knowing the context. 

Still, in my particular problem I don't see any other solution.

Here a code snippet:

                // in the model
                IntVarArray             domains;

                // in the propagator            
                ExecStatus
                BinaryPropagator::propagate(Space& home, const ModEventDelta& 
med) {
                
                        if (x0.assigned()) {
                                int val = x0.val();
                                
                                // need to know index of x0 within "domains" to 
access info that depends on position in domain + value on that position
                                // does x0 has some reference to this? or home?
                                int idx = ?
                        } 
                        else {
                                // same here but with x1
                        }
                }

A simple but rather dumb solution would be to encode the position within the 
values using 
some mathematical trick, but this will create unnecessary holes within the 
domain.

Thanks for any help on this! 

Peter


_______________________________________________
Gecode users mailing list
[email protected]
https://www.gecode.org/mailman/listinfo/gecode-users

Reply via email to