Replies: 2 comments
-
Hi @gadavidd just to say that I won't be able to discuss your point before a few days/weeks. But, it's in my stack |
Beta Was this translation helpful? Give feedback.
-
You draw a parallel with the constraints that can be removed from a model. Adding/removing a constraintThere are two ways to remove a constraint And a constraint is a function that removes values from variables' domain. Unposting a constraint relax the model. Relaxing a variableIf I'm correct:
right? To me, that's why |
Beta Was this translation helpful? Give feedback.
-
I am reading about DCSP (Dynamic Constraints Satisfaction), in particular focusing on Mittal's 1990 work (initial reference), and thought about the topic with Choco-solver. Taking into consideration the DCSP implementations and @cprudhom and @jgFages discussions in 2014-15 (see #232), I realized that the focus of the implementation was on enabling and disabling Constraints in Choco. However, for changes with a focus on variables following the DCSP aspects in Choco, it would not be possible. Is this true? I think about this because of an implementation I recently discussed with @TramontinLSS.
Consider including a null (
na
- not applicable) operator. This operator would have the function of allowing a variable to take no value from the domain. In this way, the variable will be disabled in the model by this operator and will be irrelevant to the solution. Have you seen any implementation of this type? It is very useful in cases of Table Constraints and Hybrid Tables.For example, in the case where we have variables
A=[1,2,3]; B=[4,5,6]; C=[7,8,9]
andD=[10,11,12]
Consider the following Table Constraints:
The solutions will be in:
A=[1,3]
,B=[4,5]
,C=[8,9]
,D=[10,11,12]
But if by chance it is convenient that
C
is definitely not part of the solution in a certain scenario, for example, whenD=10
:C would be inactive if the domain
D
equals 10, soC
would not be part of the final solution:This model seems of little relevance in a model as small as the one represented above. Even in the bibliography, the null value could be included in the domain of variables, or else the smallest value of the domain could be considered for
C
. However, we have cases of extremely giant models to which the addition of this operator would be of extreme importance. Have you considered something like this? I am trying to work on this implementation in Choco.In summary, the null operator would signal which variable does not need to receive a value to solve the problem (it would be the inverse of
any()
), becoming an irrelevant variable that indicates that effort should not be spent during the solution.Beta Was this translation helpful? Give feedback.
All reactions