mybzx.m

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

M
37
字号
function A=mybzx(p,c,ad,ax,ae)
% 一般型-->标准型
%p=1,min问题,p=2,max问题
%c=[c1,c2,...cn]'--成本向量
%ad、ax、ae分别为:>=、<=、==约束
if p==2
    c=-c;
end
ad=-ad;                                         %>=化为<=
[m1 n1]=size(ad);
[m2 n2]=size(ax);
[m3 n3]=size(ae);
if  n1==n2
    if n2==n3
        n=n1-1;
    end
end
m=m1+m2+m3;
A=zeros(m+2,n+m+1);                             %定义A,注意尺寸
Ar=m+2;
Ac=n+m+1;
A(1:m,1:n)=[ad(:,1:n);ax(:,1:n);ae(:,1:n)];     %约束系数
A(1:m,Ac)=[ad(:,n+1);ax(:,n+1);ae(:,n+1)];      %基本解
s=eye(m);                                       %人工变量
A(1:m,n+1:Ac-1)=s;
for i=1:m                                       %确保d非负
    if A(i,Ac)<=0
        A(i,:)=-A(i,:);
    end
end
lc=length(c);
A(Ar-1,1:lc)=c;                                 %原最优化目标行
for i=1:m                                       %辅助最优化目标行
    A(Ar,i)=-sum(A(:,i));
end
A(Ar,Ac)=-sum(A(:,Ac));

⌨️ 快捷键说明

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