clear all
clc
a1=[-1 -1 1 0; -4 -1 0 1]
b=[-2;-4]
c=[-5 -6 0 0 0]
bv=[3 4]
a=[a1 b]
zc=c(bv)*a-c
table=[a;zc]
array2table(table,'variablename',{'x1','x2','s1','s2','sol'},'rownames',{'bv1','bv2','zj-cj'})
run=true
while run
sol = a(:, end)
if any(sol<0)
[minsol pvtrow] = min(sol)
row=a(pvtrow,1:end-1)
zjcj=zc(1:end-1)
for i=1:size(zjcj,2)
if row(i)<0
ratio(i)=abs(zjcj(i)/row(i))
else
ratio(i)=inf %inf is infinite
end
end
[minr pvtcol] = min(ratio)
bv(pvtrow)=pvtcol
pvtKey=a(pvtrow,pvtcol)
a(pvtrow,:)=a(pvtrow,:)/pvtKey
for i=1:size(a,1)
if i~=pvtrow
a(i,:)=a(i,:)-a(i,pvtcol)*a(pvtrow,:)
end
end
zc=c(bv)*a-c
nexttable=[a;zc]
array2table(nexttable,'variablename',{'x1','x2','s1','s2','sol'},'rownames',{'bv1','bv2','zjcj'})
else
run=false
fprintf('final optimal table has been obtained and optimal vaule is %f',zc(end))
end
end