Originally posted by: SystemAdmin
1. A "starting vector" is just some primal and/or dual solution vector, which does not need to be feasible or optimal. If you provide such a vector or pair of vectors, then CPLEX tries to identify a simplex basis that is "close" to this vector. Then, it will use this basis as starting basis for the subsequent optimization.
If you provide a "starting basis" (i.e., specify the basis status of all rows and columns), then CPLEX uses this immediately as starting basis for the simplex algorithm.
So, if you have a basis at hand, it is always better to provide the basis instead of the vectors, because for converting the vectors into a basis there is some guessing done, which can be wrong.
2. If you provide a warm start basis, then presolving will be disabled in default settings because this may render your basis invalid. You can try to set the "advanced start indicator" to the value 2, which means that CPLEX would apply presolve and then try to crush your starting basis to the presolved model.
3. If you solve an LP to optimality, then modify it and reoptimize, CPLEX will try to apply the modifications to the presolved model as well. If this is possible (because your modifications are compatible to the presolve operations), then CPLEX will use the previously optimal (presolved) basis as starting basis for a subsequent optimization.
Maybe it helps to turn off dual presolve reductions and non-linear presolve reductions. This should make it more likely that your modifications stay compatible to the presolve reductions.
Tobias
#CPLEXOptimizers#DecisionOptimization