The model has just one class of constraints that computes the error term in predicting the preferences over each of the product configurations:

@FOR( WPWP( i, j, k, l): ERROR( i, j, k, l) >=

     1 + ( WWT( i) + PWT( j)) -

      ( WWT( k) + PWT( l))

);

We need to add a 1 to the right-hand side of the constraint to account for the case where we predict that configuration (i,j) is equally preferred to (k,l). Because of the way we defined the WPWP set, (i,j) will always be preferred to (k,l), thus it would be an error to predict they are equally preferred. Note, also, because the lower bound on ERROR is 0 and we are also minimizing ERROR, ERROR(i,j,k,l) will be driven to 0 when the model correctly predicts (i,j) is preferred to (k,l).