I am using PROC ASSIGN to perform optimal matching on a set of cases and a set of controls using a simple distance measure between cases and controls. I am unwilling to accept a match if the distance is greater than X, where X is between 0 and 1. Thus, if a cell in the distance matrix I am sending to PROC ASSIGN has a node with a distance greater than X, I set that node to missing (.). This prevents PROC ASSIGN from matching that case/control combination thereby ensuring no matches with a distance greater than X. If I set X very high, PROC ASSIGN succeeds in matching all of my cases to their optimal controls. If I set X a bit lower, PROC ASSSIGN succeeds in matching most of my cases to their optimal control and some cases just don't get matched (which is what I want). However, If I set X too low, PROC ASSIGN fails with the error, "The problem is infeasible. The output data set shows the assignments made before the infeasibility was found."
I've reviewed the relevant SAS docs and the only information they have about infeasibility is for a given case-control where with a missing distance. But in my case, that's not what's triggering the error (I don't think) as having a missing distance for some cases and controls only gives off the infeasibility error when the ratio of missing cases is beyond some threshold (or something like that).
So what does "The problem is infeasible. The output data set shows the assignments made before the infeasibility was found." mean? Is the resulting match non-optimal? Is the resulting match valid? I can accept if it is less than optimal, but does SAS just error out and stop trying at the point of the error, and if so, how early is this triggered? If it's after most of the good matches have been made, again, I can accept that.
Perhaps you should update your program to the newer procedures, per this note on support.sas.com. "You can find documentation about the ASSIGN procedure (SAS/OR software) in the SAS/OR User's Guide (online or hard copy) through SAS 8. Beginning in SAS 9, use PROC LP or PROC OPTLP instead of PROC ASSIGN. "