mylx.m

来自「线性规划的程序」· M 代码 · 共 36 行

M
36
字号
function [A,flag]=mylx(A)
%输入A:线性规划标准型
%       最下面两行为目标行
%       最后一列为解
% 基本可行解指示向量flag=1:Ar-1,按“行”的顺序存可行解“列”号
% -----------------------
[Ar Ac]=size(A);
Arr=Ar-2;                                       %等式约束数目=人工变量数目
flag=zeros(1,Arr);
%-------------------------------------
for i=1:Ac-1
    p=min(A(Ar,1:Ac-1));
    if p<0
       c=find(A(Ar,1:Ac-1)==p);                 %列号,目标行负的最大的
%-----------------------------------       
       Ad=A(1:Arr,Ac)./A(1:Arr,c);              %行号,最小正数
       for ii=1:Arr
           if Ad(ii)<=0
               Ad(ii)=inf;
           end
       end
       q=min(Ad);
       r=find(Ad==q); 
%-------------------------------------
       flag(r)=c;                               %指示向量
       A=mygaussx(A,r,c);                       %以A(r,c)为轴高斯消去
    elseif p>=0
        break
    end
end
% 以上得到辅助优化最优解-阵A、flag
A=[A(1:Ar-1,1:Ac-1-Arr),A(1:Ar-1,Ac)];          %原始最优-阵A



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?