set VARMAJOR; set VARMINOR; set VARFREE; set CONSMAJOR; set CONSMINOR; set CONSEQUAL; set VAR = VARMAJOR union VARMINOR union VARFREE; set CONS = CONSMAJOR union CONSMINOR union CONSEQUAL; param c {VAR}; param b {CONS}; param a {CONS,VAR}; var X {VAR}; maximize objective: sum {j in VAR} c[j] * X[j]; consMajor {i in CONSMAJOR}: sum {j in VAR} a[i,j] * X[j] >= b[i]; consMinor {i in CONSMINOR}: sum {j in VAR} a[i,j] * X[j] <= b[i]; consEqual {i in CONSEQUAL}: sum {j in VAR} a[i,j] * X[j] = b[i]; var_cons_major {j in VARMAJOR}: X[j] >= 0; var_cons_minor {j in VARMINOR}: X[j] <= 0;