📄 mydcx.m
字号:
function [f,x]=mydcx(A,flag)
% 单纯形法
%输入A:增广阵,要求已有初始可行解
%A= [A d
% c f]
%基本可行解指示向量flag=1:Ar-1,按“行”的顺序存可行解“列”号
%-------------------------------------------------------------------
[Ar Ac]=size(A); %A-尺寸
for i=1:Ac-Ar
p=min(A(Ar,1:Ac-1));
if p<0
c=find(A(Ar,1:Ac-1)==p); %列号,目标行负的最大的
%-----------------------------------
Ad=A(1:Ar-1,Ac)./A(1:Ar-1,c); %行号,最小正数
for ii=1:Ar-1
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
f=-A(Ar,Ac); %取目标值
x=zeros(1,Ac-1);
for i=1:Ar-1
fp=flag(i);
x(fp)=A(i,Ac); %可行解
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -