This is a quick overview of the most common cause of the following error message:
"The linearity conditions required by this Solver engine are not satisfied"
Linear models use functions that are linearly defined, though they do not have to be "two or three dimensional". For example, 1a + 5b + 3c + 20d is a linear function where a, b, c, and d are variables. More information on linear functions can be found here.
This error message occurs post "start" of an Optimize operation and means your model was "diagnosed" as non-linear and/or non-smooth. When this occurs, it can help to check the Output tab of the Solver Options and Model window pane, which will report the model diagnosis as well as non-linear or non-smooth operations such as in the screenshot below:
Note in the screenshot the follow lines:
- "Warning: Non-linear operation ..." which tells you the first operation performed that is non-linear or non-smooth and the cell the operation was found at as well as the operation "type" (non-linear in this case).
-- Note: The warning also indicates the number of non-linear or non-smooth operations but only reports where the first one was found for a particular "type" (either non-linear or non-smooth, these will be separate "warnings").
- "Model diagnosed as" which tells you your "model type". NLP in Non-linear Problem, NSP is Non-smooth Problem, and there are variations to both (I.E. NLP/MIP for non-linear mixed integer). If the model is not diagnosed as some variation of LP, you will not be able to use the LP/Quadratic engine (or one of our "plug-in" linear solvers such as Gurobi) to solve it.
Some models can be "linearized" if a user did intend to have a linear model (suggested, if possible). For example IF functions (which are non-smooth) can be linearized with Binary variables.
More information on linearizing IF functions can be found here.
More information on linearizing IF and ABS functions can be found here.
If you believe your model is linear and are unsure why you are receiving the above error message please let us know via email to email@example.com. Note that it is helpful in these cases to have a copy of the model if it is possible to send one with your initial request.