The constraint "R >= pmax[i,t]*U[i,t]" for all i in UNIT, t in TIME is equivalent to R >= max {i in UNIT, t in TIME} >= pmax[i,t]*U[i,t]". Since your model, with this constraint, gives an optimum where R is greater than the max, you will need a separate constraint that implies R <= the max. That will require some additional binary variables:
var Z {i in UNIT, t in TIME} binary;
subject to Rge {i in UNIT, t in TIME}: R >= pmax[i,t]*U[i,t];
subject to Rle {i in UNIT, t in TIME}: R <= pmax[i,t]*U[i,t] + M*(1-Z[i,t]);
subject to Z1: sum {i in UNIT, t in TIME} Z[i,t] = 1;
Constraint Z1 requires exactly one variable Z[i,t] to equal 1, and the other constraints can be satisfied only if the corresponding pmax[i,t] * U[i,t] is maximal. M should be taken as some large value, such as the difference between the largest and smallest possible value of pmax[i,t] * U[i,t] for any i and t.
--
Robert Fourer
am...@googlegroups.com