对偶单纯形法编程.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对偶单纯形法编程

云南大学数学与统计学实验教学中心 实 验 报 告 课程名称:运筹学实验 学期:2012~2013学年第二学期 成绩: 指导教师:葛瑜 学生姓名:卢富毓 学生学号:20101910072 实验名称:对偶单纯形法编程 实验要求: 必做 实验学时:2学时 实验编号:02 实验日期: 2013/3/8 完成日期:2013/3/11 学院: 数学与统计学院 专业 : 信息与计算科学 年级: 2010级 一、实验目的、环境 ,找到其所换入的列以保证的到的对偶问题仍有可行解。 然后再按照原单纯形算法经行求解。重复上述步骤。 B、编译运行程序,输入约束方程的系数矩阵A,常矩阵B,价值系数C,得到最优解 为了保证得到的算法既能对特殊情形(有bi0)的情况下能求解,也能对一般的问题求解。这里给出了一下两组数据。 1、上一个实验报告中的求解的数据。 B=[2 ; 14 ; 2]; X=[3 -4 2 0 -5 5 0 0] 2、参照课本P62例题6中的2-6表给出的数据 X=[-2 -3 -4 0 0] D、运行结果如下图: 1)下图表示的是第一个数据带入后得到的结果。表示对偶单纯形法对一般的数据成立 2)下图表示的对偶单纯形法对b中存在负值时纠正的结果: a、初始化后的结果: b、优化后的结果: c、最后得到的结果: 最后得到的结果与书上例题所有的结果完全吻合。所以所编写的算法为对偶单纯形法。 五、总结,b的变换有了更加清晰的理解。 以及在求解过程中,对线性约束的标准型也有了明确的掌握。 六、源代码 源代码如下: #includeiostream #includeiomanip using namespace std; #define M -1000 class DanChun{ private: double A[100][120],B[30]; //创建一个二维数组,用来存储xi值以及b的值 double C[110],CB[40];//定义一个C矩阵用来存储x 的价值系数 double CZ[110];//CZ用来存储cj-zj的值 double sita[30];//用来存储sita的值 int XB[30];//用来存XB的值 double X[100];//用来存储最后计算的X的值 double w[100]; //Cj-Zj/X[i]的替换。 public: int n,m; void init();//1.将不等式约束的各矩阵进行赋值 bool FindE(int i, int j);//2.寻找A矩阵中的基向量 void FindCB(); //3.寻找有用价值系数,Cj-Zj需要用到的 int Cj_Zj(); //4.1求出cj-zj的值 int C_sita(int k);//4.2计算sita的值 void Com_DC();//4.用来计算单纯形法的主函数 void Com_E(int l, int k);//4.3求其单位向量 bool P_CjZj();//4.4 int Bbool(double b[], int k); //判断b中是否有负值存在 int TH(int l); //b有负值是,进行替换操作 void Display(); void Display1(); }; void DanChun::init(){ int i=0,j=0; cout请输入 m,n :; cinm; cinn; cout请输入线性约束矩阵:endl; for(i=0; im;i++){ for(j=0;jn+m; j++){ if(jn){ cinA[i][j]; } else { A[i][j]=0; if(j==n+i){ A[i][j]=1; } } } } coutendl; cout请输入B的值:endl; for(i=0;im;i++){ cinB[i]; CB[i]=0; } coutendl; cout请输入价值系数 C:endl; for(i=0;in+m;i++){ if(in){ cinC[i]; } else{ C[i] = M; } X[i]=0; } n = m+n; } void DanChun::Display(){ int i,j; cout价值系数 C:; for(i=0;in;i++){ coutC[i] ; } coutendl; coutB的值:; for(i=0;im

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档