📄 danchunxing.m
字号:
clear
C=[1 1 1 0 0 0 0 0 0];%[-4,-1,0,0,0];
A=[-0.565 0.435 0.435 1 0 0 0 0 0;
-0.411 0.589 -0.411 0 1 0 0 0 0;
-0.154 -0.154 0.846 0 0 1 0 0 0;
-0.00435/2 -0.00435/2 -0.00435/2 1 0 0 1 0 0
-0.00411/2 -0.00411/2 -0.00411/2 0 1 0 0 1 0
-0.00154/2 -0.00154/2 -0.00154/2 0 0 1 0 0 1];%[-1 2 1 0 0;2 3 0 1 0;1 -1 0 0 1];
b=[0.5 0.1 0.4 0.10875*2 0.10275*2 0.0385*2]';
n=[1 2 3 4 5 6 7 8 9];
nB=[2,3,4,5,6,8];
size_A=size(A);
row=size_A(1);
column=size_A(2);
%nn=[1,2,3,4;1,2,3,7;1,3,4,5;1,4,5,6;1,5,6,7;1,2,4,5;1,2,4,6;1,2,4,7;1,2,5,6;1,2,5,7;1,2,6,7;1,3,4,7;1,3,5,6;1,3,6,7;1,4,6,7;2,5,6,7;4,5,6,7;3,5,6,7;3,4,6,7]
%for ii=1:max(size(nn))
%nB=nn(ii,:);%[3,4,5];
%ii
k=1;
for i=1:max(size(n))
flag=1;
for j=1:max(size(nB))
if nB(j)==n(i)
flag=0;
break
end
end
if flag==1
nN(k)=n(i);
k=k+1;
end
end
%B=A(:,nB);
%inv_B=inv(B);
%xB=inv_B*b
%end
for ii=1:10
S={'第';num2str(ii);'次迭代:'};
disp([S{1:max(size(S))}])
B=A(:,nB);
inv_B=inv(B);
xB=inv_B*b
if min(xB)>=0
xN=zeros(max(size(nN)),1);
f(ii)=C(nB)*xB
w=C(nB)*inv_B
z=w*A(:,nN)-C(nN)
[max_z,max_k]=max(z);
if max_z>0
y=inv_B*A(:,nN(max_k))
if max(y)>0
rr=100;
for i=1:max(size(y))
if y(i)>0
if rr>xB(i)/y(i)
rr=xB(i)/y(i);
r=i;
end
end
end
r
temp=nB(r);
nB(r)=nN(max_k);
nN(max_k)=temp;
else
disp('不存在最优解!')
break
end
else
break
end
nB
nN
else
break
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -