Looks like you have 11K customers and a budget of $2500. Suppose you knew the expected return r[i,j] if customer i is assigned to group j. Then your expected profit for that assignment would be r[i,j] - c , where c is the cost of assigning a customer to group j. In your case, c[1] = 0.40, c[2] = 0.30, c[3] = 0.20, and c[4] = 0.10. Now define a binary decision variable Assign[i,j] with the interpretation that Assign[i,j] = 1 if customer i is assigned to group j, and Assign[i,j] = 0 otherwise. Then you want to solve the following optimization problem (expressed using PROC OPTMODEL syntax): var Assign {CUSTOMERS, GROUPS} binary; max TotalExpectedProfit = sum {i in CUSTOMERS, j in GROUPS} (r[i,j] - c ) * Assign[i,j]; con AssignOnce {i in CUSTOMERS}: sum {j in GROUPS} Assign[i,j] = 1; con Budget: sum {i in CUSTOMERS, j in GROUPS} c * Assign[i,j] <= 2500; If you are allowed not to assign a customer to any group, you can change the = 1 to <= 1 in the AssignOnce constraint. Alternatively, you can define a dummy group j = 5, with cost c[5] = 0, if there is some nonzero expected return r[i,5] for customer i not being assigned to a group. It remains to use the results of your two pilot programs to estimate r[i,j] for each customer-group pair. I'll leave that for a statistician to discuss, but maybe you can do some kind of Bayesian update of your initial scoring model.
... View more