⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 danchunxing.m

📁 用matlab编写的线性规划之单纯型方法用来求解一些简单的线性规划问题
💻 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 + -