x[t] = min (MAX, W[t]) is equivalent to these two constraints:

(1) x[t] <= min (MAX, W[t])

(2) x[t] >= min (MAX, W[t])

You can linearize each of these separately. (1) is easy, as it’s equivalent to the following two linear constraints;

(1a) x[t] <= MAX

(1b) x[t] <= W[t]

(2) is more difficult. You need to define a collection of new binary variables – let’s call them z[t] – and you need to choose a constant M that is larger than any possible value of abs(MAX - W[t]). Then (2) can be specified by adding the following two linear constraints:

(2a) x[t] >= MAX - M * z[t]

(2b) x[t] >= W[t] - M * (1-z[t])

In general, you will need all four constraints (1a), (1b), (2a), (2b) to linearize x[t] = min (MAX, W[t]). If you study the model carefully, you might find that only (1) needs to be linearized, using only (1a) and (1b), but if you are not sure then you can use the complete linearization.

(Also as mentioned previously, if you are using our current versions of Gurobi, COPT, Xpress, Mosek, HiGHS, CBC, or SCIP, then you can just write “x[t] = min (MAX, W[t])” in your model and let AMPL take care of linearizing it.)