steps

Input: A, b and c ˜

Output: either V as the optimal point & VTb as optimal value or declare the LP problem as infeasible.

0

V = V 0 = ( 0 , 0 , ⋯ , 0 ) % the coordinate cone;

r 1 = ( 1 , 0 , ⋯ , 0 ) , r 2 = ( 0 , 1 , ⋯ , 0 ) , ⋯ , r m = ( 0 , 0 , ⋯ , 1 ) ;

1

while (true)

2

% For all facets not in C & reject V, find one that rejects V the least.

Δ ¯ = { 1 : ( m + n ) } \ Δ ; % Δ ¯ are facets not in C

j * = arg min j { e j | e j = ( V T τ Δ ¯ ( j ) − c Δ ¯ ( j ) ) , j ∈ Δ ¯ }

3

if e j * ≥ 0 return (V & VTb) as optimal vertex & optimal value

else J * = Δ ¯ ( j * ) ; % j* is the facet index to enter

4

t i = c J * V T τ J * r i T τ J * ; i = 1 , ⋯ , m ; i = 1 , ⋯ , m }; q i = V + t i r i ;

5

if ( t i < 0   ∀ i = 1 , ⋯ , m ) return(“LP is infeasible”)

else % For all the real cuts qi,, find the qI* that is closest to V

I * = arg min i { q i T b | t i > 0 } % I* is the facet index to leave

6

% Form new cone Ck+1 by updating Vk+1; edge vectors and facets

V k + 1 = q I * ; r i = { r i i = I * s i g n ( t i ) [ q i − V k + 1 ] i ≠ I *

Δ ( I * ) = J * ;

7

end