# How does Cplex handle conditional constraints?

 2 1 In looking over the documentation for CPLEX (voluminous, and often hard to navigate) they describe (for example using Concert Technology) general logical constraints. They imply that they're implemented using indicator variables. That much I can see: For every inequality $$c \cdot x \le a$$ one can define a 0/1 (indicator) variable $$y$$ and add the two constraints $$y == 1 \Rightarrow c \cdot x \le a$$ and $$y == 0 \Rightarrow c \cdot x > a$$ (though I'm not sure how they deal with the strict inequality). Usually indicator constraints like $$y == 1 \Rightarrow c \cdot x \le a$$ can be dealt with by using big $$M$$ -- let $$M$$ be an upper bound on $$c \cdot x$$, and then add the inequality $$c \cdot x \le a + M(1-y)$$. However, my impression, is that Cplex does something more sophisticated than this. At the very least I could imagine that the $$M$$ could be modified dynamically, but I'm guessing that there's more to it than that. Can anyone shed some light on this? asked 07 Sep '13, 13:43 VictorSMiller 343●2●15 accept rate: 0% 1 I did find the following -- how SCIP handles indicator constraints: http://scip.zib.de/doc-2.0.2/html/cons__indicator_8c.html (08 Sep '13, 12:38) VictorSMiller

 1 The CPLEX official comparison of these two methods (available here) is a good start if you want to know which one you should select. answered 07 Sep '13, 15:46 Ehsan ♦ 4.8k●3●11●22 accept rate: 16% @Ehsan, Thanks. Although I'm certainly interested in which one I should select, what I'm really after is how the indicator variable contraint $$y == 0 \Rightarrow c \cdot x \le a$$ is implemented. For example, are these constraints treated separately from the linear ones? And what's actually done to enforce them? (07 Sep '13, 23:16) VictorSMiller
 toggle preview community wiki

By Email:

Markdown Basics

• *italic* or _italic_
• **bold** or __bold__
• image?![alt text](/path/img.jpg "Title")
• numbered list: 1. Foo 2. Bar
• to add a line break simply add two spaces to where you would like the new line to be.
• basic HTML tags are also supported

Tags:

×191
×2