“表上作业法”ppt

表上作业法

表上作业法 什么是表上作业法 表上作业法是指用列表的方法求解线性规划问题中运输模型的计算方法。是线性规划一种求解方法。当某些线性规划问题采用图上作业法难以进行直观求解时,就可以将各元素列成相关表,作为初始方案,然后采用检验数来验证这个方案,否则就要采用闭合回路法、位势法等方法进行调整,直至得到满意的结果。这种列表求解方法就是表上作业法。 [编辑] 表上作业法的步骤[1] 1、找出初始基本可行解(初始调运方案,一般m+n-1个数字格),用西北角法、最小元素法; (1)西北角法: 从西北角(左上角)格开始,在格内的右下角标上允许取得的最大数。然后按行(列)标下一格的数。若某行(列)的产量(销量)已满足,则把该行(列)的其他格划去。如此进行下去,直至得到一个基本可行解。 (2)最小元素法: 从运价最小的格开始,在格内的右下角标上允许取得的最大数。然后按运价从小到大顺序填数。若某行(列)的产量(销量)已满足,则把该行(列)的其他格划去。如此进行下去,直至得到一个基本可行解。 注:应用西北角法和最小元素法,每次填完数,都只划去一行或一列,只有最后一个元例外(同时划去一行和一列)。当填上一个数后行、列同时饱和时,也应任意划去一行(列),在保留的列(行)中没被划去的格内标一个0。 2、求出各非基变量的检验数,判别是否达到最优解。如果是停止计算,否则转入下一步,用位势法计算; 运输问题的约束条件共有m+n个,其中:m是产地产量的限制;n是销地销量的限制。其对偶问题也应有m+n个变量,据此: σ ij = c ij? (u i + v j) ,其中前m个计为,前n个计为

由单纯形法可知,基变量的σ ij = 0 c ij? (u i + v j) = 0因此u i,v j可以求出。 3、改进当前的基本可行解(确定换入、换出变量),用闭合回路法调整; (因为目标函数要求最小化) 表格中有调运量的地方为基变量,空格处为非基变量。基变量的检验数σ ij = 0,非基变量的 检验数。σ ij < 0表示运费减少,σij > 0表示运费增加。 4、重复②,③,直到找到最优解为止。 [编辑] 表上作业法计算中的问题 1、无穷多最优解 产销平衡的运输问题必定存最优解。如果非基变量的σ ij = 0,则该问题有无穷多最优解。 2、退化 表格中一般要有(m+n-1)个数字格。但有时,在分配运量时则需要同时划去一行和一列,这时需要补一个0,以保证有(m+n-1)个数字格。一般可在划去的行和列的任意空格处加一个0即可。 [编辑] 表上作业法案例分析 [编辑] 案例一:表上作业法在物流配送中的应用[2] 配送是物流系统的一项十分重要的功能。随着物流行业的发展,物流公司迅速增加,各个物流公司之间的竞争日趋激烈。如何加强管理以减少成本问题成为各物流公司非常关注的话题。一般来说,配送中心数量减少,配送中心距离客户的距离就会越长,配送成本就越高;配送中心数量增多,配送中心距离客户的距离就会缩短,配送成本就越少,但是配送中心的管理成本随之增加。本文讨论利用现有的配送中心向客户的配送问题,寻求最小的配送成本。

表上作业法

运输问题的求解方法 ——表上作业法 产销平衡表与单位运价表 表上作业法 一、产销平衡表与单位运价表 运输问题还可用产销平衡表与单位运价表进行描述。 假设某种物资有m个生产地点Ai(i=1,2,…,m),其产量(供应量)分别为ai(i=1,2,…,m),有n个销地Bj(j=1,2,…,n),其销量(需求量)分别为bj(j=1,2,…,n)。从Ai到Bj运输单位物资的运价(单价)为Cij。将这些数据汇总可以得到产销平衡表和单位运价表5.3.1。 表5.3.1 产销平衡表与单位运价表 二、表上作业法 运输这一类特殊问题可用更加简便的求解方法———表上作业法求解,实质仍是单纯形法,步骤如下: (1)确定初始调运方案,即找出初始基可行解,在产销平衡表上给出m+n-1个数字格。 (2)求非基变量的检验数,即在表上计算空格的检验数,判别是否达到最优解:是否存在负的检验数?如果存在负的检验数,则初始调运方案不是最优方案;如果所有检验数都非负,则初始调运方案已经是最优方案了。如果已经得到最优调运方案,则停止计算,否则转入下一步。 (3)确定换入变量和换出变量,找出新的调运方案(新的基可行解),即在表上用闭回路法进行调整。 (4)重复(1)~(2),直到求出最优解为止。 (一)确定初始可行基的方法 ?最小元素法 从单位运价表中最小的运价开始确定供销关系,然后考虑运价次小的,一直到给出初始基可行解为止。 ?伏格尔法 采用最小元素法可能造成其他处的更多浪费,伏格尔法考虑最小运费与次小运费之间的差额,差额越大,就按次小运费调运。

(二)最优解的判别 计算非基变量(空格)的检验数,当所有的检验数时,为最优解。 求空格检验数的方法有: ?闭回路法 以某一空格为起点找一条闭回路,用水平或垂直线向前划,每碰到一数字格转900后,继续前进,直到回到起始空格为止。 闭回路如图5.3.1的(a)、(b)、(c)等所示。从每一个空格出发一定存在并且可以找到唯一的闭回路。因为,m+n-1个数字格(基变量)对应的系数向量是一个基,任一空格(非基变量)对应的系数向量是这个基的线性组合。 ?位势法 一种较为简便的求检验数的方法。 设是对应运输问题的m+n个约束条件的对偶变量。B是含有一个人工变量X a的初始基矩阵。X a在目标函数中的系数Ca ,由线性规划的对偶理论可知 而每一个决策变量Xij的系数向量,所以 由单纯形法可知,所有基变量的检验数等于0,即 下面用具体例子说明表上作业法的计算步骤。 例1:假设某种物资共有3个产地,其日产量分别是:A1为7 t,A2为4 t,A3为9 t;该种物资的4个销售地,其日销量分别:B1为3 t,B2为6 t,B3为5 t,B4为6 t;各产地到销售地的单位物资的运价如表5.3.2所示。在满足各销售点需要量的前提下,如何调运该种物资,才能使总运费达到最小? 表5.3.2

表上作业法

第三章 运输问题 主要内容 运输问题的模型、算法 讲授重点 运输问题的模型、算法 讲授方式 讲授式、启发式 第一节 运输问题及其数学模型 一、运输问题的数学模型 设某种物品有m 个产地A 1,A 2,…,A m ,各产地的产量分别是a 1,a 2,…,a m ;有n 个销地B l ,B 2,…,B n ,各销地的销量分别为b l ,b 2,…,b n 。假定从产地A i (i =1,2,…,m)向销地B j (j =1,2,…,n)运输单位物品的运价是c ij ,问怎样调运这些物品才能使总运费最小? 这是由多个产地供应多个销地的单品种物品运输问题。为直观清楚起见,可列出该出该问题的运输表,如表3-1所示。 设 ij x 表示从A i 运往B j 的物品数量, ij c 表示从A i 运往B j 的单位物品的运价。则对于平 衡运输问题( ∑∑=== n j j m i i b a 1 1),其数学模型的一般形式可表示为: ∑∑=== n j m i ij ij x c s 11 min ()()()????? ???? ==≥====∑∑==n j m i x n j b x m i a x ij j m i ij i n j ij ,2,1;,2,10 ,,2,1,,2,11 1 (3.1) 二、运输问题数学模型的特点 对于平衡运输问题( ∑∑=== n j j m i i b a 1 1 ),可以证明其有如下两个特点: (1)矩阵A 的秩R(A)=m+n-1。 (2)问题必有最优解,而且当j i b a ,皆为整数时,其最优解必为整数最优解。 第二节 表上作业法求解运输问题 一、给出运输问题的初始可行解(初始调运方案) 1、最小元素法 解题步骤: ⑴在运价表中找到最小运价c 1k ; ⑵将的A L 产品给B k ;

表上作业法的源代码

表上作业法的源代码-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

/* 表上作业法的源代码 */ #include "stdio.h" #include "alloc.h" #include "math.h" /* #define debug */ #define a(j) (*(C+(M-1)*N+j)) /*销量数组*/ #define b(i) (*(C+i*N+N-1)) /*产量数组*/ #define c(i,j) (*(C+i*N+j)) /*运价数组*/ #define x(i,j) (*(X+i*(N-1)+j)) /*运量数组 */ /*(<1.0E15:基本解,>=1.0E15:运量为0) */ #define s(i,j) (*(S+i*(N-1)+j)) /*检验数数组Sij */ #define u(i) (*(U+i)) /*位势数组Ui*/ #define v(i) (*(V+i)) /*位势数组Vi*/ #define cpi(k) ((CP+k)->i) /*闭回路点i标*/ #define cpj(k) ((CP+k)->j) /*闭回路点i标*/ #define cpf(k) ((CP+k)->f) /*闭回路点i标*/ /* f=0:j++; f=2:j--; f=1;i--; f=3:i++; */ /*void TP(int M,int N,double *C,double *X); */ 10 6 30 0 20 30 40 50 60 12 7 14 16 9 10 9 13 8 14 183 185 119 162 137 102 179 118 114 189 107 169 161 179 169 140 135 112 184 149 128 106 165 178 199 183 194 127 184 173 124 125 151 127 178 160 162 105 150 185 179 153 174 121 142 108 163 157 138 189 171 114 131 165 150 159 131 155 135 165 124 167 107 109 107 149 175 162 108 182 135 181 106 136 183 134 179 188 136 131 189 166 158 159 180 162 104 116 159 111 void main() { int M,N,i,j; double *C; /*存储运价,产量及销量 */ double *X; /*存储运量分配方案 */ float z; FILE *fp; char fn[80]; double sum; void TP(int M,int N,double *C,double *X); printf("please input the data file name: "); scanf("%s",fn);

表上作业法的源代码

/* 表上作业法的源代码 */ #include "" #include "" #include "" /* #define debug */ #define a(j) (*(C+(M-1)*N+j)) /*销量数组*/ #define b(i) (*(C+i*N+N-1)) /*产量数组*/ #define c(i,j) (*(C+i*N+j)) /*运价数组*/ #define x(i,j) (*(X+i*(N-1)+j)) /*运量数组 */ /*(<:基本解,>=:运量为0) */ #define s(i,j) (*(S+i*(N-1)+j)) /*检验数数组Sij */ #define u(i) (*(U+i)) /*位势数组Ui*/ #define v(i) (*(V+i)) /*位势数组Vi*/ #define cpi(k) ((CP+k)->i) /*闭回路点i标*/ #define cpj(k) ((CP+k)->j) /*闭回路点i标*/ #define cpf(k) ((CP+k)->f) /*闭回路点i标*/ /* f=0:j++; f=2:j--; f=1;i--; f=3:i++; */ /*void TP(int M,int N,double *C,double *X); */ 10 6 30 0 20 30 40 50 60 12 7 14 16 9 10 9 13 8 14 183 185 119 162 137 102 179 118 114 189 107 169 161 179 169 140 135 112 184 149 128 106 165 178 199 183 194 127 184 173 124 125 151 127 178 160 162 105 150 185 179 153 174 121 142 108 163 157 138 189 171 114 131 165 150 159 131 155 135 165 124 167 107 109 107 149 175 162 108 182 135 181 106 136 183 134 179 188 136 131 189 166 158 159 180 162 104 116 159 111 void main() { int M,N,i,j; double *C; /*存储运价,产量及销量 */ double *X; /*存储运量分配方案 */ float z; FILE *fp; char fn[80]; double sum; void TP(int M,int N,double *C,double *X); printf("please input the data file name: "); scanf("%s",fn); if((fp=fopen(fn,"r"))==NULL) { printf("Cannot open the data file!");

表上作业法的源代码

/* 表上作业法的源代码*/ #include "stdio.h" #include "alloc.h" #include "math.h" /* #define debug */ #define a(j) (*(C+(M-1)*N+j)) /*销量数组*/ #define b(i) (*(C+i*N+N-1)) /*产量数组*/ #define c(i,j) (*(C+i*N+j)) /*运价数组*/ #define x(i,j) (*(X+i*(N-1)+j)) /*运量数组*/ /*(<1.0E15:基本解,>=1.0E15:运量为0) */ #define s(i,j) (*(S+i*(N-1)+j)) /*检验数数组Sij */ #define u(i) (*(U+i)) /*位势数组Ui*/ #define v(i) (*(V+i)) /*位势数组Vi*/ #define cpi(k) ((CP+k)->i) /*闭回路点i标*/ #define cpj(k) ((CP+k)->j) /*闭回路点i标*/ #define cpf(k) ((CP+k)->f) /*闭回路点i标*/ /* f=0:j++; f=2:j--; f=1;i--; f=3:i++; */ /*void TP(int M,int N,double *C,double *X); */ 10 6 30 0 20 30 40 50 60 12 7 14 16 9 10 9 13 8 14 183 185 119 162 137 102 179 118 114 189 107 169 161 179 169 140 135 112 184 149 128 106 165 178 199 183 194 127 184 173 124 125 151 127 178 160 162 105 150 185 179 153 174 121 142 108 163 157 138 189 171 114 131 165 150 159 131 155 135 165 124 167 107 109 107 149 175 162 108 182 135 181 106 136 183 134 179 188 136 131 189 166 158 159 180 162 104 116 159 111 void main() { int M,N,i,j; double *C; /*存储运价,产量及销量*/ double *X; /*存储运量分配方案*/ float z; FILE *fp; char fn[80]; double sum; void TP(int M,int N,double *C,double *X); printf("please input the data file name: "); scanf("%s",fn); if((fp=fopen(fn,"r"))==NULL) {

表上作业法解决运输问题演示教学

表上作业法解决运输 问题

表上作业法解决运输问题 谢荣华、林建、岳钱华、叶俊君 【摘要】在物资调运问题中,希望运输费用最少总是人们最为关心的一个目标。在各种设定条件的约束下,如何寻找使得总运输费用最少的最优的运输方案是运输问题的核心。为给社会生产(生活)提供既便捷又经济实惠的物资调运方案,运输问题模型的求解方法可以产生最优的决策方案。因此对运输问题的深入研究具有极其重要的理论意义和实际应用价值。表上作业法是解决运输问题的重要方法本文讨论了产销平衡运输问题的表上作业法,利用伏格尔法求初始方案,位势法求检验数,闭合回路发对可行解进行调整和改进,直至求出最优解。 【关键词】运筹学、运输问题、改善优化、表上作业法 一、理论依据 运输问题的表上作业法步骤 1、制作初始平衡表 用“西北最大运量,然后,每增加角方法”:即在左上角先给予最大运量,然后,每增加一个运量都使一个发量或手里饱。如果所有运量的数字少于 (m+n-1),则补0使之正好(m+n-1)个。 (注:补零时不能使这些书构成圈。) 2、判断初始方案是否最优

(1)求位势表:对运价表加一行一列,圈出运价表中相应于有运量的项,在增加的行列上分别添上数,使这些元素之和等于圈内的元素。这些元素称为位势数。 (2)求检验数,从而得到检验数表。 结论:若对任意检验数小于等于0,则该方案最优,否则进入3进行调整. 3、调整 (1)找回路:在检验数大于0对应的应量表上对应元素为起点,沿横向或纵向前进,如遇到有运量的点即转向,直至起点,可得到一个回路。 (2)找调整量:沿上述找到的回路,从起点开始,在该回路上奇数步数字的最小者作为调整量ε。 (3)调整方式:在该回路上奇数步-ε,偶数步+ε,得到新回路。 重复上述步骤,使所有检验数小于0,即得到最优方案。 二、背景 鉴于市场竞争日益激烈,消费者需求渐趋多样,工厂作为市场消费品的产出源头,唯有对这种趋势深刻理解、深入分析,同事具体的应用于实际中,才能使自身手艺,断发展壮大,不被新新行业所淘汰。对于今天的重点研究对象食品工厂而言,由于在不同产品在原料使用、物料损耗、市场价格等方面均存在各种差异,如何确定各产品的生产配比,以及在最优的生产配比方案之下工厂能够达到最大的产值,都是值得进行探讨研究的现实问题。 三、实例 甲、乙、丙三个城市每年需要煤炭分别为:320、250、350万吨,由A、B 两处煤矿负责供应。已知煤炭年供应量分别为:A—400万吨,B—450万吨。

相关文档
最新文档