Assuming you are using CPLEX, you have at least two options. Both involve introducing a new variable to represent the quantity being multiplied by the indicator plus some new constraints that force the new variable to equal the expression above when the condition is true and to equal zero when the condition is false. One method uses what CPLEX terms an indicator constraint; the other uses "big M" constraints (ordinary constraints containing some potentially large coefficients). I have an

old blog post comparing the two, and it links to even older posts that are relevant.

Note that math programming models do not tolerate strict inequalities. So you will either have to tolerate some ambiguity if s^d_t equals t, or alternatively set the new variable equal to the expression for the <= t case, set it equal to zero for the >= t + epsilon case (epsilon some small positive constant), and essentially rule out s^d_t being between t and t + epsilon.

------------------------------

Paul Rubin

Professor Emeritus

Michigan State University

------------------------------

Original Message:

Sent: Mon September 06, 2021 10:44 AM

From: Siwar Moumni

Subject: how to express the indicator function as a condition in the pre-processing ?

i have this expression and i don't arrive how to express the indicator function in the Preprocessing , can someone help me :

Let p > 0 be the number of bags transferred from the storage system to any carousel. If start time tuple τ = <shτ , sdτ> ∈ Si is selected for flight i ∈ F, , the number bags stored up to period t is given by the expected amount of baggage arrived up to time t minus the amount of baggage which have already been sent to the carousel,

------------------------------

Siwar

------------------------------