I suspect that this problem may be infeasible.
For nonlinear optimization, determining if a problem is globally infeasible is equivalent to finding a global solution of a bound least square problem. For such a reformulation, we can apply the local solvers as well as multi-start. If the objective is 0, then the problem has feasible points. If the objective is nonzero, then the problem may be infeasible. In general we cannot guarantee that a feasible region does not exist somewhere, as the corresponding problem is NP-hard.
For example, I have created a new problem from your original sas file. First, I have converted your inequality constraints calc_units_dev{d in drug, m in month}: deviation[d,m]<=0.01 to the equality constraints: calc_units_dev{d in drug, m in month}: deviation[d,m] + newslack [d,m]=0.01 by introducing new slack variables newslack[d,m] >= 0. Your objective function has then been replaced by error = (total_patients-annualpatients)^2 + sum{M IN MONTH}(monthly_patient_share[m]-1)^2+ sum{d in drug, m in month}(newslack[d,m] + deviation[d,m] - 0.01)^2, and your all the constraints has been dropped out. Essentially, I have created a new least square problem with the box constraints to detect the feasibility of your original problem. If the optimal error is 0, then the original problem is feasible. The log file that I have got, with V9.3 is:
Objective Optimality
Iter Value Infeasibility Error
0 7138983 0 40.89185820
1 4975949 0 0.00500000
2 4612514 0.00514115 0.00514115
3 1218025 0 0.00500000
4 1149047 0 0.00005000
5 1065987 0 0.00006865
6 1065901 0.13030618 0.13030618
7 1065767 0 0.00005000
8 1068925 0 0.00005000
9 1068107 0 0.0000005021859
NOTE: Optimal.
NOTE: Objective = 1068107.19.
Thus, no a feasible point is found. The sas file named ReformulatedOrigianl for this new created problem has been attached.
I then removed your constraints patient_match and calc_units_dev from your problem. Instead, only constraint MONTHLY_ps is considered. I have created another sas file called ReformulatedFeasible and it has been attached as well. The solver has then found an optimal solution with objective value being 0. That is, a feasible point has been found.
To further investigate if a feasible point can be found from different starting points, I ran the solver with MultiStart option on. It basically tries a nlp solver from many different starting points. The command is:
solve with nlp/MS;
But, no a feasible point has been found. So I suspect that your original problem may be infeasible.
... View more