Hello Nicolas, What you may want is a constant that is in a range, but you don't know it's value. In ECLiPSe D = 1.99__2.00, X is 1+D. ?- D = 1.99__2.0, X is 1 + D. D = 1.99__2.0 X = 2.9899999999999998__3.0 Yes (0.00s cpu) When you use maths (is/2) or lib(ic) this range will be taken into account in the computation. D in this case is a ground value that will never change. Its not a variable at all. Cheers Stefano > -----Original Message----- > From: > eclipse-users-bounces+snovello=cisco.com_at_...2... > [mailto:eclipse-users-bounces+snovello=cisco.com_at_...64... > om] On Behalf Of Nicolas BERGER > Sent: Friday, June 15, 2007 1:43 PM > To: Marco Gavanelli > Cc: eclipse-users_at_...2... > Subject: Re: [eclipse-users] declaring constants > > > Nicolas BERGER wrote: > >> Hi everyone > >> > >> Is it possible to declare constants i.e. variable that are > not reduced ? > >> For example, in the following problem, not reducing the > domain of D > >> but only the domains of X and Y : > >> > >> [X,Y] $:: [-1.1..0.72], > >> D :: [1,4,7], > >> X + D #< 3, > >> Y + D #< 1. > > > > Hi Nicolas, > > > > What exactly do you mean with this? > > Maybe you mean that for each value in the domain of D, > there exists a > > value in the domain of X such that the constraint X+D #< 3 > is satisfied. > > > > If this is the case, you probably need a quantified CSP > solver (QCSP). > > > > > Have a look at the following *real-life* (robot arm movement) CSP : > > Tx is 10.0, > Ty is 6.0, > X0 is 8, > Y0 is 4, > D $:: [1.99..2.01], > > A $:: [2.0..8.0], > B $:: [2.0..8.0], > Alpha $:: [0.. pi], > Beta $:: [0.. pi], > X $:: [0..Tx], > Y $:: [0..Ty], > I :: [2..5], > J :: [2..5] ; > > A * sin(Alpha) $= B * sin(Beta - Alpha) + Y, > A * cos(Alpha) $= X - (B * cos(Beta - Alpha)), > A * cos(Alpha) $=< Tx, > X $=< Tx, > A * sin(Alpha) $=< Ty, > Y $=< Ty, > (X - X0)^2 + (Y - Y0)^2 $=< 4, > A $= (I - 1) * D, > B $= (J - 1) * D. > > > D here is a constant term, it doesn't have to be reduced, it > is just some feature of the problem : 1.99 $=< D $=< 2.01. > Actually, this problem comes from a C++ constraint solving > library (ELISA) where D can be declared as of type > "IntervalConstant"... > > Here what I have first thought of is excluding it from the > "locate" var list : > locate([A,B,Alpha,Beta,X,Y,I,J], > [A,B,Alpha,Beta,X,Y,I,J],1e-6,lin). > > > I suppose it means D is excluded from the search procedure > (i.e. won't be > splitted) but I don't know if it excludes it from the > propagation of domain reductions raised by the constraints... > > > > Nicolas. > > > _______________________________________________ > ECLiPSe-Users mailing list > ECLiPSe-Users_at_...2... > http://www.crosscoreop.com/mailman/listinfo/eclipse-users >Received on Fri Jun 15 2007 - 13:34:02 CEST
This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:20 CEST