Here's one way to impose the "min volume for conflict group 5" constraint: num cust_ranking {i in cust} = max {<(i),j> in CUST_camp} ranking[i,j]; print cust_ranking; con cust_conflict_5: sum {<i,j> in CUST_CAMP: cust_ranking >= 100000 and conflict_group[i,j] = 5} assign[i,j] >= 20000; You can also store the high-ranking customers in a set and use that set instead: set CUST_HIGHRANK = {i in cust: cust_ranking >= 100000}; con cust_conflict_5: sum {<i,j> in CUST_CAMP: i in CUST_HIGHRANK and conflict_group[i,j] = 5} assign[i,j] >= 20000; You can mimic this logic to get the other constraints.
... View more