Here is one way to express the desired constraints by using two sets of constraints with logical conditions: con y_CON1 {r in RGN_I, m in MTH_I, p in CNTRY_I, c in CLS_I, k in MKT_I, t in MKTTYPE_I: PRICE[r,m,p,c,k,t] = .}: y[r,m,p,c,k,t] = 0; con y_CON2 {r in RGN_I, m in MTH_I, p in CNTRY_I, c in CLS_I, k in MKT_I, t in MKTTYPE_I: PRICE[r,m,p,c,k,t] ne .}: PRICE[r,m,p,c,k,t]*0.9 <= y[r,m,p,c,k,t] <= PRICE[r,m,p,c,k,t]*1.1; And here is an alternative approach that uses one set of range constraints with two IF-THEN-ELSE expressions: con y_CON {r in RGN_I, m in MTH_I, p in CNTRY_I, c in CLS_I, k in MKT_I, t in MKTTYPE_I}: (if PRICE[r,m,p,c,k,t] = . then 0 else PRICE[r,m,p,c,k,t]*0.9) <= y[r,m,p,c,k,t] <= (if PRICE[r,m,p,c,k,t] = . then 0 else PRICE[r,m,p,c,k,t]*1.1); A third approach is to use the FIX statement when PRICE is missing: for {r in RGN_I, m in MTH_I, p in CNTRY_I, c in CLS_I, k in MKT_I, t in MKTTYPE_I: PRICE[r,m,p,c,k,t] = .} fix y[r,m,p,c,k,t] = 0; con y_CON {r in RGN_I, m in MTH_I, p in CNTRY_I, c in CLS_I, k in MKT_I, t in MKTTYPE_I: PRICE[r,m,p,c,k,t] ne .}: PRICE[r,m,p,c,k,t]*0.9 <= y[r,m,p,c,k,t] <= PRICE[r,m,p,c,k,t]*1.1;
... View more