Calcite | Level 5

## Changing a nonlinear constraint to a linear one

Hi.  I have a binary variable and a nonlinear constraint in my model. Since I dont want to use MINLP I would like to change my non-linear constraint to a linear one and use MILP.(If it is possible). I could not convert the constraint yet so I thought maybe you have an idea.

I have two variables as "D" and "Ad" and the condition is:

I model the constraint as

so the left side takes "D" if "D" is negative and "Ad" will be equal to "D" and it takes 0 if "D" is positive. I could not change this problem to linear. I know we can use binary variable to change absolute value to the linear form but since I already have a binary variable, by adding a new one the size will be huge and it is not solvable with the memory we have. I appreciate any idea you have.

2 REPLIES 2
SAS Super FREQ

## Re: Changing a nonlinear constraint to a linear one

Assuming D is bounded both above and below, you can linearize this as follows:

``````   var X binary;

con C1:

/* if X = 1 then D <= 0 else redundant */
con C2:
D <= D.ub * (1 - X);

/* if X = 1 then D <= Ad else redundant */
con C3:
D - Ad <= (D.ub - D.lb) * (1 - X);

/* if X = 0 then D >= 0 else redundant */
con C4:
D >= D.lb * X;

/* if X = 0 then Ad >= 0 else redundant */
con C5:
``````

Calcite | Level 5

## Re: Changing a nonlinear constraint to a linear one

Thank you so much! Binary variables make my problem huge and I am trying to avoide them. But I think it is a good idea and I will give it another try. Thank you

Discussion stats
• 2 replies
• 783 views
• 0 likes
• 2 in conversation