I'm currently working on a CP-model for a project that involves geometric 
operations on vectors, points in R^3, etc.. 
I would like to know if there is a way to obtain the min/max value of a float 
variable that is constrained in a float expression or relation as in the 
following example.

/// Note:  FloatVarArray& T
/// First we constrain the float vars of the array T to be equal to some 
rescaled integer values...
FloatVar float_x (  home, -255.0, +255.0 );
FloatVar float_y (  home, -255.0, +255.0 );
channel (  home, int_x, float_x  );
channel (  home, int_y, float_y  );
...
FloatVar div_var (  home,  100,  100  );
div (  home, float_x, div_var, T[ 0 ]  );
div (  home, float_y, div_var, T[ 1 ]  );
...

///  Then we perform some operations (e.g., subtracting two vectors of points 
in R^3)...
FloatVarArray p1 ( home, 3, -255.0, +255.0 );
FloatVarArray p2 ( home, 3, -255.0, +255.0 );
FloatVarArgs  p3 ( home, 3, -255.0, +255.0 );

for ( int i = 0; i < 3; i++)  {
        rel ( home, p1[ i ] == T[ i ] );
        rel ( home, p2[ i ] == T[ i ] );
}

rel ( home, v[0] ==  p2[0] - p1[0] );
rel ( home, v[1] ==  p2[1] - p1[1] );
rel ( home, v[2] ==  p2[2] - p1[2] );
…

/// Note: FloatVarArgs x, FloatVarArgs temp( prot, 3,  MIN, MAX )
///           FloatVar sum ( home, MIN, MAX ), FloatVar sqr_rt ( prot, MIN, MAX 
),
sqr ( home, x[ 0 ], temp[ 0 ] );
sqr ( home, x[ 1 ], temp[ 1 ] );
sqr ( home, x[ 2 ], temp[ 2 ] );
rel ( home, sum == temp[ 0 ] + temp[ 1 ] + temp[ 2 ] );
sqrt ( home, sum, sqr_rt );

If we finally print the values for the variables in the vectors v and x we 
obtain restricted ranges.  
Eventually we would like to calculate some real values obtained from such 
vectors (e.g., the value of
a certain physics formula given by the current labeling).
Is there a way to obtain the current min,max or the mean value of such 
restricted domains?
It is also possible to set such current min, max, mean value to another real 
variable?

Thanks,
Federico Campeotto



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

Reply via email to