# Preemptive Goal programming by fixing nonbasic variables with non-zero reduced costs

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:

1. fixing non-basic variables with non-zero variables is not enough to keep the optimality of the optimized objective?
2. 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.

• 2: a variable can be basic with value $0$, in this case the solution is called degenerated. It occurs when multiple constraints intersect. – Kuifje Feb 7 '20 at 9:06
• @Kuifje thank you. I wonder if the method of fixing non-basic variables with non-zero variables fails to keep the objective's optimality in cases where solution is degenerate. – naveen divakaran Feb 7 '20 at 14:26
• This is what I learnt today. I observed the problem that triggered this question, does keep the optimum value even though the solution is degenerate. I have been using a tolerance to limit the upper bound on non-basic variables with non-zero reduced cost, because of the computing with limited precision requires me to not completely drop the column, to prevent infeasibilities. When i reduced the tolerance to low number to bring behavior close to column dropping the optimum of previous objective is preserved. Should I remove the question,or still keep it or paste this comment as answer? – naveen divakaran Feb 11 '20 at 0:58
• I think you could paste your comment as an answer :) – Kuifje Feb 11 '20 at 8:13