I have been using the method of fixing nonbasic variables with non-zero reduced costs to do preemptive goal programming. It works for the most part. But I have recently noticed in a certain instance of the problem, few variables have solution of 0, and their reduced cost is 0 too. I thought if the solution is 0, it is a non-basic variable. But when I used the commands available within cplex interactive optimizer, it showed me that these variables were still basic variables, but with solution 0. Since the preemptive goal programming method only fixes the non-basic variables with non zero reduced costs to 0, these variables escape the fixing, and while optimizing the next goal, the previously optimized objective deteriorates in value.
I think I am missing something very simple here, but I am not sure. Is it:
- fixing non-basic variables with non-zero variables is not enough to keep the optimality of the optimized objective?
- definition of nonbasic is not equal to those variables whose values are 0?
The method used here for the goal program is also known as column-dropping method. I wonder if the column-dropping approach does not work well for problems that have degenerate solutions.