[ library(tentative) | The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]
# cs_random_violated(+CS, -Cstr)

Get random violated constraints in the constraint set
*CS*
- Constraint set
*Cstr*
- A constraint term (output)

## Description

Returns a currently violated constraint from the constraint set,
i.e. all the constraints whose violation count is currently nonzero.
If there are several, a random one is returned.

If the constraints were added with aliases (see :~ /2),
the alias term is retrieved instead of the constraint goal.

### Modes and Determinism

- cs_random_violated(+, -) is semidet

### Fail Conditions

Fails if there is no violated constraint in the set
## Examples

?- [X, Y] tent_set [3, 4], CS :~ (X $= Y), CS :~ (X $\= Y),
cs_random_violated(CS, C).
X = X{3 -> 0}
Y = Y{4 -> 0}
CS = constraint_set(TotalVio{1 -> 0}, ...)
C = X{3 -> 0} $= Y{4 -> 0}
There are 2 delayed goals.
Yes (0.00s cpu)

## See Also

cs_random_worst / 2, cs_all_violated / 2