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
[email protected]
https://www.gecode.org/mailman/listinfo/gecode-users