Re: [eclipse-clp-users] ECLiPSe - Real variables domain propagation problem

From: Wayne Mac Adams <waynemacadams_at_...6...>
Date: Wed, 22 Jul 2009 15:28:07 +0100
Or even just a simpler way to represent it is to just focus on the following
query(assuming the ic librarby is loaded)

?- A :: 0.0 .. 0.5, [B, C] :: 0.0 .. 1.0, A $= eval(B + C - B * C).
A = A{0.0 .. 0.5}
B = B{0.0 .. 1.0}
C = C{0.0 .. 1.0}
There are 4 delayed goals.
Yes (0.00s cpu)

If i had
?- A :: 0.0 .. 0.5, [B, C] :: 0.0 .. 1.0, A $= eval(B + C).
A = A{0.0 .. 0.5}
B = B{0.0 .. 0.5}
C = C{0.0 .. 0.5}
There is 1 delayed goal.
Yes (0.00s cpu)

it propagates correctly.

I have been told( by Helmut Simonis, and I hope I paraphrase this
correctly!) it is because ECLiPSe treats B+C and B*C as seperate and not
foesn't see the it as as the same terms being used.

Again any help is appreciated,
Thanks,
Wayne

On Wed, Jul 22, 2009 at 11:52 AM, Wayne Mac Adams
<waynemacadams_at_...6...>wrote:

> Hi,
> Hopefully someone can help me with my problem, I have been advised to send
> an email to this mailing list.
>
>
> I have the following predictate
>
> prob_sum([],Sum,Sum).
> prob_sum([E | Tail], Sum,End):-
>     prob_sum(Tail,Sum+E-Sum*E,End).
>
> It take a list of Variables and gets the probabilistic sum fo them.
> Somewhere else the sum is then constrained to be less than or equal to some
> other variable.
> However when the list has more than one element the domains of the
> variables in the list don't seem to propagate correctly.
> For example consider this query
>
> N::0.0..0.5, NA::0.0..1.0, NC::0.0..1.0,
> prob_sum([NA,NC],0,M),N1::0.0..1.0, eval(M) $=N1, N1 $=<N.
>
> It gives the result
>
> ?- N::0.0..0.5, NA::0.0..1.0, NC::0.0..1.0,
> prob_sum([NA,NC],0,M),N1::0.0..1.0, eval(M) $=N1, N1 $=<N.
> N = N{0.0 .. 0.5}
> NA = NA{0.0 .. 1.0}
> NC = NC{0.0 .. 1.0}
> M = 0 + NA{0.0 .. 1.0} - 0 * NA + NC{0.0 .. 1.0} - (0 + NA - 0 * NA) * NC
> N1 = N1{0.0 .. 0.5}
> There are 5 delayed goals.
> Yes (0.00s cpu)
>
> As you can see the domains for NA and NC remain from 0.0..1.0 when you
> would think they should be 0.0..0.5.
>
> Does anyone know how to solve this problem?
> It forms part of a larger problem in which I am getting an incorrect result
> because of the domains staying between 0.0..1.0.
>
> Any help is appreciated,
> Thanks,
> Wayne
>
Received on Wed Jul 22 2009 - 14:28:13 CEST

This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:20 CEST