1. Binary variables
This method is used when we can precisely determine the possible values of a variable. For instance, given an integer variable with the condition , we can decompose the variable into 9 binary variables () to satisfy
Why do we need to decompose a variable into multiple variables? What is the benefit? The answer is, suppose we have not only one variable as above but also another variable with the condition . Then, it would be very difficult to linearize the condition if we use these two variables. On the other hand, if we decompose both and into binary variables, this condition can be easily modeled as follows: .
2. Modeling nonlinear constraints geometrically
This method is applicable when we can find a convex hull containing only points that satisfy the desired constraint. For instance, to linearize the condition where are binary variables. We observe that the feasible points are . Geometrically representing these points in three-dimensional space, we obtain the tetrahedron shown below

The points within the tetrahedron are precisely those that satisfy the given condition. The equations defining this tetrahedron are the exact constraints needed to linearize the original condition, specifically, the following conditions
A few notes:
- Use this method when we can determine all points satisfying the original constraint
- There must exist a convex set that contains all and only the points satisfying the constraint
- The above convex set should be easily representable by other linear constraints
- From this point forward, I will use the term geometric method to describe this technique. (This name is entirely my own creation, and I haven't consulted any references. It might not be the correct terminology. If you know the proper term for this method, please let me know so I can correct it.)
3. Modeling nonlinear “ or ” constraints
The typical form of these constraints is:
A common approach to linearize this type of constraint is to introduce an additional binary variable that corresponds to the two cases of the original constraint and then try to reformulate the original condition so that they are not contradictory. For example, consider linearizing the following constraint with
Create binary variable satisfying
Then the original condition can be reformulated as follows
Note: This method is quite difficult to apply and requires case-by-case analysis to find an appropriate linearization.
4. Conclusion
We have discussed 3 common modeling techniques. Additional methods can be found in MOSEK Modeling Cookbook.
Happy modeling!