As per this quote (and Tobias's suggestions):

"Since only nonbasic variables with reduced costs of 0 (zero) can change when the application moves from one alternate optimal solution to another, you can also enumerate alternate optimal solutions by using the routines CPXgetdj and CPXgetpi to identify the nonbasic structural variables and slacks with nonzero reduced costs. Then, fix these structural variables to their current values using CPXchgbds, and fix the slack variables with CPXchgsense. Set the simplex iteration limit to 1 (one); change the objective as before; and you can

**enumerate some, but not all**, alternate optimal solutions."

I was able to successfully obtain some of the optimal solutions. I understand that you can't get all of them. Is it because that the above method could only give optimal solutions related to the given basis (set by fixing non-zero reduced costs variables/slacks)? So we could get different set of optimal solutions starting from some other optimal basis?

Thanks,

Vivek.