None of the solvers are likely to handle this "max" function well. If you can live with
Q[i,j] <= min( sum{k in Set3} Qbid[j,k] * Abid[i,j,k], Q_max[i,j] )
then you can replace this constraint with two constraints,
Q[i,j] <= sum{k in Set3} Qbid[j,k] * Abid[i,j,k]
Q[i,j] <= Q_max[i,j]
This sort of transformation works for many models, so you should consider it first. If however it happens that at an optimal solution both Q[i,j] < sum{k in Set3} Qbid[j,k] * Abid[i,j,k] and Q[i,j] < Q_max[i,j] for some i and j, then you are in a harder situation that will require some zero-one variables to force one of these to be an equality.
If you want to avoid figuring out the zero-one formulation, you can take advantage of the fact that Q_max is a param to use AMPL's piecewise-linear notation, though this will involve defining another variable:
Q_sum[i,j] = sum{k in Set3} Qbid[j,k] * Abid[i,j,k]
Q[i,j] = <<Q_max[i,j]; 1,0>> Q_sum[i,j]
Then AMPL will automatically add the needed zero-one variables to linearize the second constraint before sending the problem to a linear solver.
Bob Fourer
am...@googlegroups.com
=======