下载此文档

单纯形算法实验报告.doc


文档分类:研究报告 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
该【单纯形算法实验报告 】是由【橘子】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【单纯形算法实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。实验报告?单纯形算法的求解姓名:井启超学号:2010434152?班级:数电(4)班一、实验目的运用MATLAB程序设计语言完成单纯形算法求解线性规划问题。二、实验内容编写一个MATLAB的函数文件:,用于求解标准形的线性规划问题:minf=c'*x??subjectto:?:[x,minf,optmatrx,flag]=linp(c,A,b):C:线性规划问题的目标函数f=c'*x中各变量的系数向量,:线性规划问题的约束中各变量的系数组成的矩阵,是一个m×:线性规划问题的约束中的常数向量,:输出线性规划问题的最优解,当线性规划问题没有可行解或者有可行解但没有最优解时X=[].minf:输出线性规划问题的最优值,当线性规划问题没有可行解时minf=[],当线性规划问题有可行解但没有最优解时minf=-:输出最优解对应的单纯形表,当线性规划问题没有可行解或者有可行解但没有最优解时optmatrx=[].flag:线性规划问题的求解结果标志值,当线性规划问题有最优解时flag=1,当线性规划问题有可行解但没有最优解时flag=0,当线性规划问题没有可行解时flag=-、dcxsf函数代码:function[x,minf,optmatrx,flag]=dcxsf(A,b,c)A=input('请输入约束中的系数矩阵A=');?b=input('请输入约束中的常数向量b=');c=input('请输入目标函数中的系数向量c=');?[i,j]=size(c);ifj==1c=c';disp('输入的目标函数系数向量c为单列矩阵,已将其转化为单行矩阵')end[i,j]=size(b)ifi==1b=b';disp('输入的约束中的常数向量b为单行矩阵,已将其转化为单列矩阵')end??c=-c;[m,n]=size(A);m1=m;?????%保存下原来的行数s=eye(m);???A=[As];A=[Ab];g1=zeros(1,n);x=ones(1,m);g1=[g1-x];g=[0];g1=[g1g];???%人工变量的检验向量s1=n+m+1;???%目前列数之和s2=zeros(1,m+1);c=[cs2];A1=zeros(m,1);fori1=1:mA1(i1,1)=i1+n;%基变量的数值存储区endfori=1:mg1(1,:)=g1(1,:)+A(i,:);enddecide=find(g1(1,1:m+n)>0);?%寻找g1中大于零的数值列数存于decide数组中while~isempty(decide)?i=decide(1);???????%将列数赋给itext=find(A(1:m,i)>0);??%text存放该列中所有数值大于零的行数ifisempty(text)????flag=0;break;endmin=inf;fori1=1:m????????%当该列存在大于零的数值时ifA(i1,i)>0&A(i1,s1)/A(i1,i)<min????%寻找比值最小的min=A(i1,s1)/A(i1,i);x1=i1;??????%将比值最小的行数赋给x1endendA(x1,:)=A(x1,:)/A(x1,i);?%单位化c(1,:)=c(1,:)+(-1*c(1,i)*A(x1,:));g1(1,:)=g1(1,:)+(-1*g1(1,i)*A(x1,:));fori1=1:mifi1~=x1A(i1,:)=A(i1,:)+(-1*A(i1,i)*A(x1,:));%进行换机迭代endendA1(x1,1)=i;???????%将列数既对应的非基变量转换为基变量decide=find(g1(1,[1:m+n])>0);????????%再进行查找endifg1(1,s1)>0????????%无解情况flag=-1;endifg1(1,s1)==0g1(1,:)=[];fori6=1:mA(:,n+1)=[];endfori6=1:mc(n+1)=[];enddecide=find(A1(1:m,1)>n);????%查找是否有人工变量if~isempty(decide)??????while~isempty(decide)x1=decide(1);???????%存放的是人工变量的行数text=find(A(x1,1:n)~=0);??%该行的所有元素都不为零的列坐标ifisempty(text)????decide(1)=[];A1(x1,:)=[];A(x1,:)=[];m=m-1;elsei=text(1);???????%i保存的是列数A(x1,:)=A(x1,:)/A(x1,i);A1(x1,1)=i;c(1,:)=c(1,:)+(-1*c(1,i)*A(x1,:));fori1=1:mifi1~=x1A(i1,:)=A(i1,:)+(-1*A(i1,i)*A(x1,:));endenddecide(1)=[];text(1)=[];endendenddecide=find(c(1,1:n)>0);??????while~isempty(decide)i=decide(1);??????????%将列数赋给itext=find(A(:,i)>0);??????%保存大于零的项的行数ifisempty(text)????????%为空的时候,则无解disp('有可行解但没有最优值')flag=0c=[c;A];optmatrx=c;x=zeros(n,1);foro=1:nforo1=1:mifo==A1(o1,1)x(o,1)=A(o1,n+1);endendendminf=-infoptmatrxxreturn;endmin=inf;fori1=1:mifA(i1,i)>0&A(i1,n+1)/A(i1,i)<minmin=A(i1,n+1)/A(i1,i);x1=i1;?????????????%保存最小项的行数endendA(x1,:)=A(x1,:)/A(x1,i);?????%单位化j=c(1,i);forj1=1:n+1c(1,j1)=c(1,j1)+A(x1,j1)*(-1)*j;?%换机迭代endfori1=1:mifi1~=x1A(i1,:)=A(i1,:)+(-1*A(x1,:)*A(i1,i));

单纯形算法实验报告 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人橘子
  • 文件大小31 KB
  • 时间2024-01-20
最近更新