模糊数学方法及其应用6-7

谢季坚 刘承平 《模糊数学方法及其应用》第三版 部分MATLAB代码

%谢季坚 刘承平《模糊数学方法及其应用》第三版 中部分算法MATLAB程序
%6.F_Jlfx.m

function F_Jlfx(bzh,fa,X)
%模糊聚类分析
%bzh数据标准化类型;fa建立模糊相似矩阵的方法;X原始数据矩阵
X=F_JlSjBzh(bzh,X);
R=F_JlR(fa,X);
[m,n]=size(R);
if(m~=n|m==0)return;end
F_JlDtjl(R);



%谢季坚 刘承平《模糊数学方法及其应用》第三版 中部分算法MATLAB程序
%7.TwoLp.m

function[z,x,p]=TwoLp(A,b,c,T)
%两阶段法求解线性规划
%入口参数A,b,c分别表示技术系数矩阵,资源限量向量,价值系数向量,入口参数T是一个向量
%向量b的维数必须等于矩阵A的行数m,向量c的维数必须等于矩阵A 的列数n
%向量T的1至m个分量分别表示m个约束条件,0表示=,1表示≤,2表示≥
%向量T的第m+1个分量,0表示min,1表示max
%出口参数第一个记录最优值z,第二个记录最优解x
%参考例子:[z,x]=twolp([2,3;0,4],[26,13],[1,3],[2,2,0]);
[m0,n0]=size(A);%获得矩阵的行列数
z=0;x=[];ysn=n0;p=0;
if(m0==0)return;end
[m,n]=size(c);
if(n==1)c=c';n=m;m=1;end
if(n~=n0|m~=1)fprintf('\n 错误: 向量c(第三个入口参数)的维数不等于矩阵A(第一个入口参数)的列数\n\n');p=3;return;end
[m,n]=size(b);
if(m==1)b=b';m=n;n=1;end
if(m~=m0|n~=1)fprintf('\n 错误: 向量b(第2个入口参数)的维数不等于矩阵A(第一个入口参数)的行数\n\n');p=3;return;end
[m,n]=size(T);
if(m==1)m=n;n=1;end
if(m<=m0|n~=1)fprintf('\n 错误: 向量T(第4个入口参数)的维数<m+1\n\n');p=3;return;end
T=round(T);
if(m>m0)
for(i=1:m0)if(T(i)<0|T(i)>2)fprintf('\n 错误: 向量T(第4个入口参数)的第%d个分量不是0,1或2\n\n',i);p=3;return;end;end
if(T(m0+1)<0|T(m0+1)>1)fprintf('\n 错误: 向量T(第4个入口参数)的第%d个分量不是0,或1\n\n',m0+1);p=3;return;end
end
m=m0;n=n0;wcx=0.000000001;
Control=T(m+1);
if(Control)c=-c;end
ycs=c;Vb=[];%Vb记录基变量的序号
for(i=1:m)%将右端常数变为非负
if(abs(b(i))<wcx)b(i)=0;
if(T(I)==2)A(i,:)=-A(i,:);T(i)=1;end
elseif(b(i)<0)%不等式反向
A(i,:)=-A(i,:);b(i)=-b(i);
if(T(i)==2)T(i)=1;
elseif(T(i)==1)T(i)=2;end
end
if(T(i))n=n+1;%化为标准型A(:,n)=0;
if(T(i)==1)A(i,n)=1;Vb(i)=n;
else A(i,n)=-1;end
end
end
if(n>ysn)
c(n)=0;end
c0=c;
c=zeros(1,n);
n1=n;%非人工变量数
for(i=1:m0)if(T(i)~=1)
n=n+1;
A(i,n)=1;
Vb(i)=n;
c(n)=1;end;end%增加人工变量
A(:,n)=0;
[i,j]=size(b);
if(i==1)
b=b';end
if(n==n1)
c=c0;end
B=eye(m);
ddbs=0;%记录迭代次数
fprintf('两阶段法求解线性规划:\n');
cB=[];
for(j=1:m)
cB(j)=c(Vb(j));end
while(1)
ddbs=ddbs+1;%换基迭代
bb=B*b;
z=cB*bb;%计算检验数行
s=0;cBB=cB*B;
for(j=1:n1)%

你可能喜欢

  • 建模模糊数学方法
  • 数学讲座
  • 现代音乐史
  • 数学理论
  • 数学应用论文
  • 算法大全
  • 模糊聚类分析
  • 数学建模

模糊数学方法及其应用6 7相关文档

最新文档

返回顶部