Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Multivariate piecewise constraint using SOS

    Posted 02/07/18 05:59 AM

    Originally posted by: angelo_carlino


    Hello, I'm wrting a MILP problem about water resource optimization. I have one variable (ReleaseFromReservoir) that has an upper and lower bound. These two bounds have to be computed using a function depending on two variables (ReservoirLevel, ReservoirInflow). I have a grid of points and the value for each of these points. Is it possible to implement that as a SOS constraint in CPLEX? Just to let you know, I am writing the problem in Pyomo, but I would like to know just if that is feasible in CPLEX.

    Best,

    Angelo


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Multivariate piecewise constraint using SOS

    Posted 02/19/18 03:35 PM

    I don't think there is a direct way to do this. One thing that comes to mind is the following. Assign a continuous variable wij with domain [0,1] to the point in R2 formed by the combination of the i-th grid value for ReservoirLevel and the j-th value of ReservoirInFlow. Constrain the w variables to sum to 1, so that you are taking a convex combination of grid points. Approximate ReleaseFromReservoir with the sum of wij times the function value at the point.

    Now comes the tricky part. To make the approximation as accurate as possible, you really want to assign nonzero weights only to points that are corners of a minimal rectangle (i.e., formed from adjacent grid values on each axis). To do this, add binary variables xi for each grid value of ReservoirLevel and yj for each value of ReservoirInflow. They will signal which values form the lower left corner of the rectangle being used. The x variables should sum to 1, and so should the y variables. Finally, constrain wij to be <= xi-1+xi and also <= yj-1+yj.


    #CPLEXOptimizers
    #DecisionOptimization