Without linearizing your model, the solver is unlikely to find a globally optimal solution. You can avoid the nonlinear MAX and MIN functions by omitting the bound1 and bound2 constraints and instead enforcing these bounds in the VAR statement:
var w1 >= 0 <= 1, w2 >= 0 <= 1, w3 >= 0 <= 1;
You can also linearize the absolute value in the objective by introducing Surplus and Slack variables:
var Surplus {MONTHS} >= 0;
var Slack {MONTHS} >= 0;
con LinearizeAbs {i in MONTHS}:
w1*FC1[i] + w2*FC2[i] + w3*FC3[i] - AC[i] = Surplus[i] - Slack[i];
minimize absErr = sum{i in MONTHS} (Surplus[i] + Slack[i]);
See the Curve Fitting and Market Sharing examples in SAS/OR 14.3 User's Guide: Mathematical Programming Examples.
... View more