Originally posted by: TobiasAchterberg
If you have explicitly formulated the dual, then it this not too hard to do.
Let us first consider the case in which you want to get alternative optimal solutions to a primal LP that has multiple optimal solutions, just to avoid the confusion that comes from dualization. Let (x,s) be an optimal solution and (y,r) the associated dual/reduced cost vector. Now, the optimal face of this primal LP can be obtained by fixing all variables with non-zero reduced costs r_j to their current value x_j (which is either the lower or upper bound) and by changing the sense of all constraints with non-zero dual y_i to equality (i.e., fixing the slack variable of the constraint to 0). Now, you can select an arbitrary objective function in this restricted primal problem, reoptimize, and you will get some other optimal solution to the original primal LP. This is because only those variables and slacks with zero reduced costs remain in the problem, hence there will be no more change to the original objective function.
Now apply the same to the dual model. Say (y,r) is an optimal solution of the dual, and (x,s) is the dual's dual solution, i.e., the solution and slack vector of the primal. Now, in order to stay on the optimal face of the dual, you need to fix the dual variables y_i that correspond to a non-zero s_i, and you have to turn the dual inequalities j with x_j non-zero into equations. Then, change the dual objective function (i.e., the primal right hand side vector and the primal bounds of the variables) and reoptimize.
Tobias
#CPLEXOptimizers#DecisionOptimization