Here's the sketch of the formulation:
You have ten scenarios, S1 through S10
Let's introduce binary variables Y_i
which denotes which of the 10 scenarios is in play.
So these become a Specially Ordered Set
:
Sum (over i in 1..10 ) Y_i = 1 (Only one scenario holds at a time.)
Requirement
For each scenario, there are a few inequalities that have to be obeyed. All other inequalities (applicable to other scenarios) should be ignored.
Let M be a big number. Say two orders of magnitude greater than the maximum possible processing time for any dataset.
Objective Function:
Min T
Constraints:
T >= Ta
...
T >= Tc
..
T >= Te
Let's use your scenario...Let's call it Scenario s
. For each inequality that needs to be satisfied under scenario s
, we introduce a M(1-Y_s) term to the LHS of the greater than inequality.
Inequalities for scenario s:
Tc + M(1-Y_s) >= Cab + Cbc + Cce + Sc*Dc //Sc is constant
Tc + M(1-Y_s) >= Cab + Cbd + Cbc + Cce + Sc*Dc //Sc is constant
...
...
Inequalities for some other scenario t:
Td + M(1-Y_t) >= Cde + Cbc + Sd*Dd //Sd is constant
Td + M(1-Y_t) >= Cde + Cbd + Cbc + Cce + Sd*Dd //Sd is constant
..
Inequalities for scenario u:
...
...
and so on.
Depending on whichever Y_i is 1, those M(1-Y_i) terms will become zero. So the inequalities will be enforced. For all the M(1-Y_j)..The left hand side will be a huge number, and the inequality will be always hold trivially.
The nice thing is that since the overall objective is to minimize T, which in turn is the max of Ta...Te...over all 10 scenarios, the Solver will automatically pick the most optimal scenario.
Hope that helps.