为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单纯性算法的大M法实现程序代码

2017-10-22 18页 doc 38KB 149阅读

用户头像

is_358746

暂无简介

举报
单纯性算法的大M法实现程序代码单纯性算法的大M法实现程序代码 单纯性算法的大M法实现 注意:本程序需要一个输入数据的TXT文档,本例中为InputFile.txt,你可以根据需要改一下; 另外,文档格式如下 假如经过松弛变量后的方程为AX=b;求min f=CX=? A为系数矩阵,X 为变量列向量,b为常数列向量 则文档格式为 变量个数 方程个数 F=CX中的C行向量 系数矩阵 常数向量 如: 7 3 0 0 0 -0.75 20 -0.5 6 1 0 0 0.25 -8 -1 9 0 1 0 0.5 -12 -0.5 3 0...
单纯性算法的大M法实现程序代码
单纯性算法的大M法实现程序代码 单纯性算法的大M法实现 注意:本程序需要一个输入数据的TXT文档,本例中为InputFile.txt,你可以根据需要改一下; 另外,文档格式如下 假如经过松弛变量后的方程为AX=b;求min f=CX=? A为系数矩阵,X 为变量列向量,b为常数列向量 则文档格式为 变量个数 方程个数 F=CX中的C行向量 系数矩阵 常数向量 如: 7 3 0 0 0 -0.75 20 -0.5 6 1 0 0 0.25 -8 -1 9 0 1 0 0.5 -12 -0.5 3 0 0 1 0 0 1 0 0 0 1 本程序采用的是大M法做的 #include #include #include #include class CSimplex { public: int m_uiConstraintNum; //约束等式数目 int m_uiVariableNum; //记录变量个数 int count; //记录次数 int AddVariableNum; //添加的人工变量个数 double m_dObjectiveValue; //记录目标函数值 double m_vMatrixA[50][20]; //记录系数矩阵A的值 double m_vRightB[20]; //记录等式右边b向量的值 double m_vObjCoffi[50]; //记录从第一个变量开始的所有变量对应的在优 化目标中的系数 double m_vReducedCost[50]; //判别系数 double m_vTheta[20]; //记录Theta int m_vBaseVariableIndex[20]; //记录基变量的编号 double Solution[50]; //记录解向量 int InPutProblem(); //从文件读入数据 void CalculateReducedCost(); //计算判别系数 void CalculateZ(); //计算目标函数值 int FindIn(); //寻找入基变量编号 void CalculateTheta(); //计算Theta int FindOut(); //寻找出基变量编号 void RotaTrans(); //以主元旋转变换,进行相应的入基出基操作 int JudgeA(); //判断有无最优解 int JudgeB(); //判断是否为无穷多组解 int JudgeC(); //判断单纯性算法结束 int JudgeD(); //判断有无可行解 int Solve(); //求解 }; int CSimplex::InPutProblem() //从文件读入数据 { fstream file; count=1; AddVariableNum=0; float i; int j,k,t,temp1,temp2,temp3; file.open("InputFile.txt",ios::in,0); if(!file) return 0; file>>i; m_uiVariableNum=(int)i; file>>i; m_uiConstraintNum=(int)i; for(j=0;j>i; m_vObjCoffi[j]=i; } for(j=0;j>i; m_vMatrixA[j][k]=i; } } for(j=0;j>i; m_vRightB[j]=i; m_vBaseVariableIndex[j]=-1; } for(j=0;jin)) { in=i; } } return(in); } int CSimplex::FindOut() //寻找出基变量编号 { int i,out=-1,flag=0; double temp=10000; for(i=0;i0)&&(m_vTheta[i]!=1000)) flag++; if(flag!=0) { for(i=0;i0)&&(m_vTheta[i]m_vBaseVariableIndex[out])) out=i; } } } if(flag==0) { for(i=0;im_uiConstraintNum) flag=1; return(flag); } int CSimplex::JudgeC() //判断单纯性算法结束 { int i; for(i=0;i>i; return 1; }
/
本文档为【单纯性算法的大M法实现程序代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索