用单纯形法求解目标规划
- 格式:ppt
- 大小:1.07 MB
- 文档页数:31
习题21图解法解下列目标规划问题:1122334min (2)f Pd P d P d d -+--=+++..s t 121140x x d d -+++-=122250x x d d -+++-=13324x d d -++-=1244430x x d d -+++-=120,0;,0,1,2,3,4i i x x d d i -+≥≥≥=P 1:AD 直线上侧,P 2:四边形ABCD,P 3:四边形ABEF ,P 4:四边形ABEF 。
故该问题的满意解为四边形ABEF 内的点,所有目标都达到了。
2用单纯形法求解以下目标规划问题的满意解:(1)1122334min (53)f Pd P d P d d -+--=+++..s t 121180x x d d -+++-=122290x x d d -+++-=13370x d d -++-=24445x d d -++-=120,0;,0,1,2,3,4i i x x d d i -+≥≥≥=(2)1122234min ()f P d d P d P d -+--=+++..s t 12114580x x d d -+++-=12224248x x d d -+++-=123381080x x d d -+++-=1445x d d -++-=120,0;,0,1,2,3,4i i x x d d i -+≥≥≥=5案例练习(1)某厂生产甲、乙两种产品,每件利润分别为20、30元。
这两种产品都要在A 、B 、C 、D 四种设备上加工,每件甲产品需,而这4种设备正常生产能力依次为每天12、8、16、12机时。
此外,A 、B 两种设备每天还可加班运行。
试拟订一个满足下列目标的生产计划: 1P :两种产品每天总利润不低于120元;2P :两种产品的产量尽可能均衡;3P :A 、B 设备都应不超负荷,其中A 设备能力还应充分利用(A 比B 重要3倍)。
民航运筹学_中国民用航空飞行学院中国大学mooc课后章节答案期末考试题库2023年1.同一目标约束的一对偏差变量,至少有一个取值为0。
参考答案:正确2.目标规划问题一定存在最优解参考答案:错误3.在目标规划求解中,若高级别目标不能满足时,其后的低级别目标也一定不能满足。
参考答案:错误4.对于只有两个决策变量的目标规划问题,可用图解法求解。
参考答案:正确5.在用单纯形法求解目标规划时,利用最小比值法确定换出变量。
参考答案:正确6.目标规划的满意解不可能出现()参考答案:di+>0,di- >07.用图解法求解目标规划问题,满意解在图中可能是()参考答案:(A)(B)(C)之一8.以下叙述不正确的是()参考答案:目标规划模型用单纯形法求解时,某些情况也需增加人工变量9.以下叙述正确的是()参考答案:目标规划模型的约束中含绝对约束和目标约束10.产地个数为m销地个数为n的平衡运输问题的系数矩阵为A,则有r(A)≤m+n-1。
参考答案:错误11.表示作业法实质上是求解运输问题的单纯形法。
参考答案:正确12.按最小元素法(或Vogel法)给出的初始基可行解,从每一个空格出发可以找到唯一的闭回路。
参考答案:正确13.下列结论正确的有( )参考答案:表上作业法使用的条件是产量等于销量的平衡问题_用位势法判断一个解是否最优时,得出的位势值存在且唯一_任何运输问题都存在可行解14.有m个产地n个销地的平衡运输问题模型具有特征有( )参考答案:有mn个变量,m+n个约束_系数矩阵的秩等于m+n-1_有m+n-1个基变量,mn-m-n+1个非基变量15.当迭代到运输问题最优解时,如果有某非基变量的检验数等于0,则说明该运输问题有()参考答案:多重最优解16.在求解运输问题的表上作业法中,空格的检验数值应等于()参考答案:(闭回路上奇数次顶点运价之和)-(闭回路上偶数次顶点运价之和)17.关于产销不平衡的运输问题,下列叙述正确的是()参考答案:当产大于销时,只在运价表右端增加一列Bn+1,运价为零,销量为bn+1即可18.产销平衡的运输问题的数学模型系数矩阵的Pij中只有两个元素取1,其余为0,这两个1的元素位于()参考答案:第i行和第m+j行19.运输问题是一类特殊的线性规划问题,因而求解的结果为()参考答案:可能出现唯一最优解或多重最优解20.对偶单纯形法适用于下列线性规划:在求目标函数最大值时,所有非基变量的检验数都小于等于0,但存在某些基变量的值为负数参考答案:正确21.在对偶单纯形法中,因为总存在<0的bi,选取数值最小的作为第r行,令br=min{bi},其对应变量xr为换出基的变量。
运筹学作业王程信管1302130404026目录运筹学作业 (1)第一章线性规划及单纯形法 (3)第二章线性规划的对偶理论与灵敏度分析 (24)第三章运输问题 (53)第四章目标规划 (63)第五章整数规划 (73)第六章非线性规划 (85)第七章动态规划 (94)第八章图与网络分析 (97)第九章网络计划 (99)第一章 线性规划及单纯形法1.1分别用图解法和单纯形法求下列线性规划问题,⑴指出问题具有唯一最优解、无穷多最优解、无界解还是无可行解;⑵当具有限最优解时,指出单纯形表中的各基可行解对应图解法中可行域的哪一顶点。
121212121min 23466 s.t.324,0z x x x x x x x x =++≥⎧⎪+≥⎨⎪≥⎩() 1212121,22max 3222s.t.34120z x x x x x x x x =++≤⎧⎪+≥⎨⎪≥⎩()121212123max 105349 s.t.528 ,0z x x x x x x x x =++≤⎧⎪+≤⎨⎪≥⎩() 121212124max 5622 s.t.232,0z x x x x x x x x =+-≥⎧⎪-+≤⎨⎪≥⎩()解:⑴图解法:当212133x x z =-经过点6155(,)时,z 最小,且有无穷多个最优解。
⑵图解法:1x该问题无可行解。
⑶图解法:当21125x x z =-+经过点312(,)时,z 取得唯一最优解。
单纯形法:在上述问题的约束条件中分别加入松弛变量34,x x , 化为标准型:12341231241234max 10+500349s.t.528,,,0z x x x x x x x x x x x x x x =++++=⎧⎪++=⎨⎪≥⎩由线性规划问题的标准型可列出单纯初始形表逐步迭代,计算结果如下表所示:**33(,1,0,0),10512022(0,0,9,8)821(,0,,0)553(1,,0,0)2T T T T X Z X O X C X B ==⨯+⨯====(0)(1)(2)单纯形表的计算结果表明:单纯形表迭代的第一步得,表示图中原点(0,0)单纯形表迭代的第二步得,表示图中点单纯形表迭代的第三步得,表示图中点⑷图解法:当215166x x z =-经过点2,2()时,z 取得唯一最优解。
线性规划的解法线性规划是现代数学中的一种重要分支,它是研究如何在一定约束条件下优化某种目标函数的一种数学方法。
在现实生活中,许多问题都可以用线性规划求解。
如在生产中,如何安排产品的产量才能最大化利润;在运输中,如何安排不同的运输方式最大程度降低成本等等。
线性规划的解法有多种,下面我们就来对其进行详细的介绍。
1. 单纯形法单纯形法是线性规划中最重要的求解方法之一,它是由Dantzig于1947年提出的。
单纯形法的基本思路是从某一个初始解出发,通过挑选非基变量,使得目标函数值逐步减少,直到得到一个最优解。
单纯形法的求解过程需要确定初始解和逐步迭代优化的过程,所以其求解复杂度较高,但是在实际中仍有广泛应用。
2. 对偶线性规划法对偶线性规划法是一种将线性规划问题转化为另一个线性规划问题来求解的方法。
这种方法的主要优势是,它可以用于求解某些无法用单纯形法求解的问题,如某些非线性规划问题。
对偶线性规划法的基本思路是将原问题通过拉格朗日对偶性转化为对偶问题,然后求解对偶问题,最终得到原问题的最优解。
3. 内点法内点法是一种由Nesterov和Nemirovsky于1984年提出的方法,它是一种不需要寻找可行起点的高效的线性规划求解方法。
内点法的基本思路是通过不断向可行域的内部靠近的方式来求解线性规划问题。
内点法的求解过程需要实现某些特殊的算法技术,其求解效率高,可以解决一些规模较大、约束条件复杂的线性规划问题。
4. 分枝定界法分枝定界法是一种通过逐步将线性规划问题分解成子问题来求解的方法。
这种方法的基本思路是,在求解一个较大的线性规划问题时,将其分解成若干个较小的子问题,并在每个子问题中求解线性规划问题,在不断逐步求解的过程中不断缩小问题的规模,最终得到问题的最优解。
总之,不同的线性规划解法各有千秋,根据实际问题的需要来选择合适的求解方法是非常重要的。
希望本文能够对您有所帮助。
单纯形法求解线性规划的步骤1>初始化将给定的线性规划问题化成标准形式,并建立一个初始表格,它最右边的单元格都是非负的(否则无解),接下来的m列组成一个m*m的单元矩阵(目标行的单元格则不必满足这一条件),这m列确定了初始的基本可行解的基本变量,而表格中行用基本变量来表示2>最优化测试如果目标行的所有单元格都是非负的(除了最右列中代表目标函数值的那个单元格),就可以停止了,该表格代表了一个最优解,它的基本变量的值在最右列中,而剩下的非基本变量都为03>确定输入变量从目标行的前n个单元格中选择一个负的单元格(选择绝对值最大的那个)该单元格所在的列确定的输入变量及主元列4>确定分离变量对于主元列的每个正单元格,求出θ比率(如果主元格的单元格为负或为0,说明该问题是无解的,算法终止),找出θ比率最小的列,改行确定了分离变量和主元行5>建立下一张表格将主元行的所有单元格除以主元得到新的主元行,包括主元行在内的每一行,要减去改行主元列单元格和新主元行的成绩(除主元行为1外,这一步将主元列的所有单元格变成0).把主元列的变量名进行代换,得到新的单纯形表,返回第一步为求简单在本程序中,需要自己建立标准矩阵(比如加入松弛变量等工作需要用户自己完成),程序的输入有两种方式:1:指定行和列,由用户自行输入每一个元素SimpleMatrix(introw=0,int col=0);2:直接在主程序中初始化一个二维数组,然后利用构造函数SimpleMatrix(introw,int col,double **M) 来初始化和处理(本程序所用的实例用的是这种方法)程序中主要的函数以及说明~SimpleMatrix();销毁动态分配的数组.用于很难预先估计矩阵的行和列,所以在程序中才了动态的内存分配.需要重载析构函数bool Is_objectLine_All_Positive();其中row2为主元所在的行,col为主元所在的列,row1为要处理的行void PrintAnswer();数不合法"<<endl;}SimpleMatrix::SimpleMatrix(int row,int col){init(row,col);for(int i=0;i<rowLen;i++)cout<<"请输入矩阵中第"<<i+1<<"行的系数"<<endl; for(int j=0;j<colLen;j++)cin>>data[i][j];}?}SimpleMatrix::SimpleMatrix(int row,int col,double **M) {rowLen=row;colLen=col;init(row,col);for (int i=0;i<row;i++)for(int j=0;j<col;j++){data[i][j]=*((double*)M+col*i+j); ;}}SimpleMatrix::~SimpleMatrix(){if(colLen*rowLen != 0 ){for(int i=rowLen-1;i>=0;i--){if (data[i]!=NULL)delete[] data[i];}if (data!=NULL)delete[] data;}?}bool SimpleMatrix::Is_objectLine_All_Positive(){for(int i=0;i<colLen-1;i++)if(data[rowLen-1][i]<0)return false;return true;}bool SimpleMatrix::Is_MainCol_All_Negative(int col) {for(int i=0;i<rowLen;i++)if(data[i][col]>0)return false;return true;}bool SimpleMatrix::Is_column_all_Positive(int col){for(int i=0;i<rowLen-1;i++){return false;}return true;}int SimpleMatrix::InColumn(){int count=0;for(int i=0;i<colLen-1;i++){int temp=GetItem(rowLen-1,i);if(temp>=0){count++;}elsebreak;}double maxItem=fabs(GetItem(rowLen-1,count));int index_col;for(i=0;i<colLen-1;i++){double temp=GetItem(rowLen-1,i);if(temp<0){if(maxItem<=fabs(temp)){maxItem=fabs(temp);index_col=i;}}}return index_col;}int SimpleMatrix::DepartRow(int col){int index_row;int count=0;for(int i=0;i<rowLen;i++){if(data[i][col]<0)count++;elsebreak;}double minItem=data[count][colLen-1]/data[count][col]; index_row=count;double temp;for(i=0;i<rowLen-1;i++)temp=data[i][col];if(temp>0){temp=data[i][colLen-1]/temp;if(temp<minItem){minItem=temp;index_row=i;}}}return index_row;}void SimpleMatrix::MainItem_To_1(int row,int col){double temp=GetItem(row,col);pp#include <iostream>#include ""using namespace std;int main(){double M[4][7]={{5,3,1,1,0,0,9},{-5,6,15,0,1,0,15},{2,-1,1,0,0,-1,5},{-10,-15,-12,0,0,0,}}; SimpleMatrix Matrix(4,7,(double **)M);if(5))//判断是否存在最优解{bool p=();//判断主元列是否全部为正,确定是否已经取得最优解while(!p){int col=();//确定主元所在的行if(col))//确定线性规划的解是否为无解的{cout<<"线性规划问题是无界的,没有最优解"<<endl;exit(EXIT_FAILURE);}else{int mainRow=(col);//确定主元所在的行(mainRow,col);//将主元所在的行做变换,使主元变成1int i=0;while(i<()){if(i!=mainRow){(i,mainRow,col);//处理矩阵中其他的行,使主元列的元素为0i++;}elsei++;}}}for(int i=0;i<();i++)//输出变换以后的矩阵,判断是否正确处理{for (int j=0;j<();j++){cout<<(i,j)<<" ";}cout<<endl;}p=();}();}elsecout<<"线性规划无解"<<endl;return0;}。
2.2 将下列线性规划模型化为标准形式并列出初始单纯形表。
(1)123123123123123min 243221943414..524260,0,z x x x x x x x x x s t x x x x x x =++-++≤⎧⎪-++≥⎪⎨--=-⎪⎪≤≥⎩无约束 解:(1)令11333','",'x x x x x z z =-=-=-,则得到标准型为(其中M 为一个任意大的正数)12334567123341233561233712334567max '2'24'4''003'22'2''194'34'4''14..5'24'4''26',,','',,,,0z x x x x x x Mx Mx x x x x x x x x x x x s t x x x x x x x x x x x x x =-++-++--++-+=⎧⎪++--+=⎪⎨++-+=⎪⎪≥⎩初始单纯形表如表2-1所示:2.3 用单纯形法求解下列线性规划问题。
(1)123123123123123max 2360210..220,,0z x x x x x x x x x s t x x x x x x =-+++≤⎧⎪-+≤⎪⎨+-≤⎪⎪≥⎩ (2) 1234123412341234min 52322347..2223,,,0z x x x x x x x x s t x x x x x x x x =-+++++≤⎧⎪+++≤⎨⎪≥⎩解:(1)最优解为**(15,5,0),25T x z ==。
(2)最优解为**(0,1.5,0,0),3T x z ==-。
2.4 分别用大M 法和两阶段法求解下列线性规划问题。
第4章 单纯形法的计算方法单纯形法求解线性规划的思路: 一般线性规划问题具有线性方程组的变量数大于方程个数, 这时有不定的解。
但可以从线性方程组中找出一个个的单纯形, 每一个单纯形可以求得一组解, 然后再判断该解使目标函数值是增大还是变小, 决定下一步选择的单纯形。
这就是迭代, 直到目标函数实现最大值或最小值为止。
4.1 初始基可行解的确定为了确定初始基可行解, 要首先找出初始可行基, 其方法如下。
(1)第一种情况:若线性规划问题 max z =nj j j=1c x ∑1,1,2,...,0,1,2,...nij j i j ja xb i mx j n =⎧==⎪⎨⎪≥=⎩∑从Pj ( j = 1 , 2 , ⋯ , n )中一般能直接观察到存在一个初始可行基121(,,...,)n B P P P 0 0⎛⎫ ⎪0 1 0 ⎪== ⎪ ⎪0 0 1⎝⎭(2)第二种情况:对所有约束条件是“ ≤”形式的不等式, 可以利用化为标准型的方法, 在每个约束条件的左端加上一个松弛变量。
经过整理, 重新对j x 及ij a ( i = 1 , 2 , ⋯ , m ; j = 1 , 2 , ⋯ , n )进行编号, 则可得下列方程组11,111122,1122,1112.........,,...,0m m n n m m n n m m m m nn n nn x a x a x b x a x a x b x ax a x b x x x +++++++++=⎧⎪+++=⎪⎪⎨⎪+++=⎪⎪≥⎩显然得到一个m ×m 单位矩阵121(,,...,)n B P P P 0 0⎛⎫ ⎪0 1 0 ⎪== ⎪ ⎪0 0 1⎝⎭ 以B 作为可行基。
将上面方程组的每个等式移项得111,111222,112,11.........m m n nm m n nm m m m m mn n x b a x a x x b a x a x x b a x a x ++++++=---⎧⎪=---⎪⎨ ⎪⎪=---⎩令12...0,m m n x x x ++====由上式得(1,2,...,)i i x b i m == 又因i b ≥0, 所以得到一个初始基可行解12()12()(,,...,,0,...,0)(,,...,,0,...,0)Tm n m Tm n m X x x x b b b --= =个个(3)第三种情况:对所有约束条件是“ ≥”形式的不等式及等式约束情况, 若不存在单位矩阵时, 就采用人造基方法。