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