PHASE I
STEP 0 (INITIALIZATION): Find an initial basic feasible solution (BFS), i.e., an extreme point of the feasible region. If one cannot be found the problem is infeasible: STOP.
PHASE II
STEP 1 (STOPPING CRITERIA CHECK): Is unboundedness detected ? If so, there is no optimum solution: STOP.
If not, is there an adjacent extreme point where the objective function is better than at the current one, i.e., can the objective be improved by exchanging one of the currently basic variables for one of the currently nonbasic variables ? If not, the current BFS is optimal. STOP.
If not proceed to Step 2
STEP 2 (ITERATIVE STEP): Move to the better
adjacent extreme point identified above by exchanging a basic variable
for a nonbasic one and go to Step 1.