物流运输问题模型及其求解方法研究与实践1.doc_第1页
物流运输问题模型及其求解方法研究与实践1.doc_第2页
物流运输问题模型及其求解方法研究与实践1.doc_第3页
物流运输问题模型及其求解方法研究与实践1.doc_第4页
物流运输问题模型及其求解方法研究与实践1.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二专业 毕业设计 论文 毕业设计 论文 题目题目 物流运输问题模型及物流运输问题模型及 其求解方法研究与实践其求解方法研究与实践 主办学院主办学院 计算机与电子信息学院计算机与电子信息学院 第二专业第二专业 电子商务电子商务 主修学院主修学院 林学院林学院 主修专业主修专业 林学林学 学学 号号 0636110120 姓姓 名名 李秀连李秀连 指导教师指导教师 杨林峰杨林峰 2010 年年 4 月月 30 日日 摘要 运输问题是运筹学的一个分支 是线性规划的特殊形式 它研究的是如 何在一个大宗物资调运中 制定出一个由若干个产地将物资根据已知的运 输交通网运到各个销售地的方案 使得总运费最小 物流是整个物流活动 中核心 运输管理是物流活动的统筹规划和管理的一重要部分 对运输环 节进行规划和优化 对提高物流活动的运行效率有重要意义 本文通过对运输问题模型和求解方法的研究 在产销平衡的条件下 运 用不同的软件 Excel Lingo 和 Matlab 等对运输问题进行求解 同时对内 点法求解运输问题进行了研究 最终在计算机上得以实现 通过研究得出 结果如下 1 三个软件 Excel Lingo 和 Matlab 在求解简单的运输问题 其结果 表上作业法求解的结果是一样的 2 在进行比较复杂的运输问题求解时 Excel 出现可变单元格过多而 无法进行继续求解 而 Lingo 和 Matlab 的求解结果相同 在时间耗费上差 异不大 在内存占用上 Matlab 比 Lingo 的大 3 根据内点法的原理和方法进行研究 编写出对运输问题进行求解 的代码 并实现求解 关键词 运输问题 表上作业法 Excel Lingo Matlab 内点法 I Study on the Solution and Practice of the Model of Logistics Transportion Problem Abstract Transportion problem is a branch of Operations Research it is a special form of linear programming It researchs how to build a program that in a bulk material dispatching to delivered all these materials based on the known traffic network to all sales from a number of producer bringing the total freight minimum Logistics is the core of the logistics activities transportation management is an important part of overall planning and management in the logistics activities Planning and management the transport link is very important for improving the efficiency of logistics activities Based on the study of the transportion model and its solution under the conditions of production and marketing balance used different software such as Excel Lingo Matlab and so on to solve the transportion problem and also studied the solving of the transportion problem by using the internal point method and eventually can be achieved in the computer Through the results of the study are as follows 1 Threesoftware Excel Lingo and Matlab in solving a simple transportation problems the result and result of suing Tabular method were the same 2 When solved the more complex transportation problem Excel appears too much variable to solve however the results of using Lingo and Matlab is the same and little difference in time spenting and in the memory footprint Matlab is larger than the Lingo 3 Based on the study of the principles and methods of interior point method to write a program to solve the transportion problem Keywords The Transportation Problems Tabular Method Excel Lingo Matlab Interior Point Method 目录 第一章 绪 论 1 1 1 课题的来源 1 1 2 本课题的实现目标 1 1 3 运输问题的发展现状及研究意义 2 1 4 本课题的主要工作 3 第二章 线性规划与运输问题 4 2 1 线性规划 4 2 2 运输问题 5 第三章 运输问题求解实践 8 3 1 单纯形法 8 3 2 表上作业法 8 3 3 工具求解实践 14 3 4 小结 21 第四章 大型运输问题案例求解与运输问题的应用 22 4 1 大型运输问题实例 22 4 2 运输问题的应用 27 第五章 内点法 31 5 1 运输问题的内点算法 31 5 2 牛顿法 32 5 3 中心路径和终止条件 33 5 4 运输问题的内点算法实现 34 第六章 总 结 40 6 1 结论 40 6 2 展望 40 参考文献 42 附 表 43 致 谢 49 0 第一章 绪论 1 1 课题的来源 运输问题是线性规划的一种特殊形式 运输问题主要是解决这样的问 题 在大宗物资调运时 有若干个产地 根据已知的运输交通网 如何制 定一个运输方案 将这些物资运到各个销售地 使得总运费最小 物流管 理的本质要求就是求实效 即以最少的消耗 实现最优的服务 达到最佳 的经济效益 搞好物流管理 可以通过合理的运输方案 使中间装卸搬运 储存费用降低 损失减少 在其他条件不变的情况下 降低物流成本就意 味着扩大了企业的利润空间 提高了利润水平 所以一个合理的运输方案 有着重要的意义 运输问题模型提出后 人们对其求解的方法进行了大量的研究 并有 了重大成果 其中 Danzig 的表上作业法是最简单和最常用的 表上作业 法本质就是单纯形法 虽然表上作业法是最简单的 但是在求解的过程中 还是会耗费大量的时间 在讲究高速高效的现代生活中显然是要被淘汰的 随着计算机技术的发展和普及 人们把运输问题的求解依赖于计算机求解 于是产生了大量求解运输问题的软件和工具 如 Excel Lingo 和 Matlab 等 在众多的求解方法和求解工具中 总会有各自的优缺点 所以寻求一 个好中更好的求解工具 提高求解效率和可扩展性将会有很重要的意义 1 2 本课题的实现目标 本课题通过研究运输问题在不同软件上的实现 首先进行小规模的运 输问题实践 对在不同的软件中求解的难易程度 耗时耗力 以及所求解 的结果的准确性进行比较分析 由于模型的规模较小 所以在求解过程中 其效果不是很明显 故为了提高说服力 对一个比较大型的运输问题进行 求解 分析其差异性 寻找出各个软件的优异性 为在实践中提供一个依 据 最后把运输问题运用内点法在计算机上进行求解 将其结果与单纯形 法求解的效果进行比较分析 1 1 3 运输问题的发展现状及研究意义 运输问题是运筹学的一个分支 它研究的是如何在一个大宗物资调运 中 制定出一个由若干个产地 将这些物资根据已知的运输交通网运到各 个销售地的方案 使得总运费最小 运输问题是在 1941 年美国学者希奇柯 克 Hitchcock 在研究生产组织和铁路运输方面的线性规划问题时提出的 1 运输问题的提出 不仅可以求出物资的合理调运方案 其他类型的问题也 都可以经过变换后转为运输问题来进行求解 运输问题自提出以来 人们对其解法进行了大量的研究 从目标函数的角度 运输问题同时考虑运输总费用最小 运输过程中 损坏率最低和单位运价变化的调整等多个目标 所以有宋叶新 陈绵云和 吴晓平研究的具有模糊信息的目标运输问题求解 2 李珍萍研究的最短时限 运输问题 3 带瓶颈限制的运输问题 运用禁忌搜索算法解决带固定费用 的运输问题 调整单位运价使得运输计划最优的运输问题的逆问题等等 从算法角度来看 人们对运输问题提出了大量算法 如表上作业法 图上求解法 遗传算法 4 5 神经网络算法 6 减运价算法 仿真优化法 内点法等等 从计算机求解角度来看 目前已经有很多对运用计算机求解运输问题 的研究 如运输问题的计算机求解 7 8 Excel 求解运输问题 9 Lingo 求 解运输问题 10 Matlab 求解 11 此外 还有其他软件也可以求解运输问题 比如运筹学 CAI 软件 不过功能比较少 Winqsb 等等 现实中运用比较广 泛的是 Lingo 和 Matlab 运输问题是社会经济生活中经常出现的优化问题 我们经常碰到物资 调运如煤 粮食 钢材 木材等 这些都是大宗型的运输 在物流流通中 通过合理的运输方案 使中间装卸搬运 储存费用降低 损失减少 以最 少的消耗 实现经济效益最大化 所以一个合理的科学的运输方案有着重 要的意义 在众多的求解方法和求解工具中 总会有各自的优缺点 所以 寻求一个好中更好的求解工具 提高求解效率和可扩展性将会有很重要的 意义 同时 在现实生活中 许多问题都可以转化成运输问题数学模型进行 求解 所以研究运输问题也等于研究了很多相关的问题 其意义更明显 2 1 4 本课题的主要工作 本课题通过对物流运输问题模型的分析 探讨其求解方法 并进行实 际操作 分析比较运输问题的手工求解和工具求解两类方法的具体求解过 程中的差异 并以广西某化肥厂的比较大型的物流运输问题作为对象 使 用工具对其进行求解 得出一个最佳方案 同时尝试采用内点法对运输问 题进行求解 同时总结了运输问题的应用方向 论文的第二章主要是介绍了运输问题的一些基本情况 包括 LP 模型 运输问题的模型 第三章中分别讲述了运输问题的手工求解和工具求解的 方法步骤 并将其结果进行分析比较 第四章介绍了不同工具求解的方法 在比较大型的运输问题 广西某化肥厂的运输问题案例的实现 对其结 果进行分析 并归纳总结了运输问题的应用方向 第五章介绍了内点法求 解运输问题的原理和算法 和对实例实现求解 最后对论文的工作进行了 总结 3 第二章 线性规划与运输问题 2 1 线性规划 线性规划 LP 问题 就是求出在一个凸多面体上求出线性目标函数 的最小值 线性规划问题的标准形式为 0 max 21 2211 22222121 11212111 2211 n mnmnmm nn nn nn xxx bxaxaxa bxaxaxa bxaxaxa ts xcxcxcz 2 1 最早提出线性规划想法的是法国数学家 J B J 傅里叶和 C 瓦莱 普森 分别于 1832 年和 1911 年独立提出的 但是那时并未引起注意 直到 1939 年 前苏联数学家康托洛维奇 B KanTOpOBHH 在 生产组织与计划 中的数学方法 一书中 提出和研究了线性规划问题 但也未引起重视 1947 年 美国数学家丹泽格 G B Dantzig 提出了一般的线性规划数学模 型和求解线性规划问题的通用方法 单纯形法 为这门学科奠定了基础 单纯形法的提出 推动了最优化理论的发展 1979 年 前苏联数学家哈奇扬 JI r Khachiyan 提出了运用求解线性 不等式组解线性规划问题的椭球算法 并证明该算法是多项式时间算法 这算法的提出具有重要的意义 但其实际计算收敛速度极慢 实用效果比 单纯形法差 1984 年 在美国贝尔电话实验室工作的印度数学家卡玛卡 N Karmarkar 提出了求解线性规划问题的投影尺度法 用这种方法求解 线性规划问题在变量个数为 5000 时只要单纯形法所用时间的 1 50 12 这个多项式时间算法很有实用意义 这一算法的提出引起人们对内点算法 的关注 此后相继出现了多种更为简便实用的内点算法 求解线性规划是 非常复杂和耗时的一件事 为了省时省力又准确的得出结果 人们把目光 转向了计算机求解 1952 年 线性规划问题第一次在计算机上获得求解 这开始了人们对计算机求解线性规划的探索 现在已经有很多软件可以进 4 行线性规划求解 如 Excel Lindo Lingo SAS Matlab 和 Winqsb 等 本 文主要是运用 Excel Lingo 和 Matlab 这三个软件分别进行演示 2 2 运输问题 运输问题 13 发展于线性规划问题 自从 1939 年提出了类似线性规划的 模型后 人们发现许多问题都属于线性函数在约束条件下的最优化问题 在 1940 年 Hitchcock 提出运输问题 运输问题属于线性规划问题的特殊情 况 既有线性规划问题的共性 也有自身的特点和算法 运输问题提出后 1958 年 Konterovich 对运输问题做了早期的研究 运输问题的数学模型如下 已知某种物资有 m 个供应点 源点 1 2 供应量 i Aim 分别为 个单位 1 2 有 n 个需求点 终点 i aim 1 2 需求量分别为 1 2 从到运 j Bjn j bjn i A j B 输单位物资的运价 单位 为 若用表示从到的运量 那么在产 ij c ij x i A j B 销平衡 即的条件下 要求得总运费最小的调运方案 可求解 n j j m i i ba 11 的数学模型 2 2 0 2 1 2 1 min 1 1 11 ij i n j ij j m i ij m i n j ijij x miax njbx ts xcz 由产销平衡条件 n j j m i i ba 11 所以是产销平衡的运输问题 但在现实生活中往往产销是不平衡的 这就需要把产销不平衡问题转 5 化为产销平衡问题 当产大于销时 运输问题的数学模型变为 n j j m i i ba 11 2 3 0 2 1 2 1 min 1 1 11 ij i n j ij j m i ij m i n j ijij x miax njbx ts xcz 由于产大于销 所以多余的产品就要考虑在产地就地储存的问题 设 是产地的储存量 有 1 ni x i A 1 111 1 1 1 1 1 1 2 1 2 1 n n j j m i i m i ni j m i ij i n j ijni n j ij bbax njbx miaxxx 令 当 时 ijij cc mi 2 1 nj 2 1 当 时 0 ij cmi 2 1 1 nj 将其代入 2 3 得 m i n j ijijij m i ni m i n j ijij m i n j ijij xcxcxcxcz 111 1 11 1 1 1 min 0 2 1 2 1 1 1 1 ij i n j ij j m i ij x miax njbx ts 其中 这就转化成了一个平衡的运输问题 1 1 1 11 n j jn n j j m i i bbba 当销大于产时 也可以转化成为一个产销平衡问题 产大于销是假设 6 多曾一个销售点 该销地的销量为 相应的运价变为1 nj n j j m i i ba 11 同样 当销大于产时也用同样的方法进行转换 这时假设增加一0 1 ni c 个产地 产量为 相应的运价为 也转化成了产销平 m i i n j j ab 11 0 1 jm c 衡问题 在本论文中为了方便计算 只考虑产销平衡的情况 7 第三章 运输问题求解实践 3 1 单纯形法 在运输问题的解法中最好最有效的方法是单纯形法 单纯形法求解线 性规划的思路 先找出一个基本可行 解 对它进行鉴别 看是否是最优解 若不是 则按照一定法则转换到 另一改进的基本可行解 再鉴别 若仍不 是 则再转换 按此重复进行 单纯形法的计算步骤如下 第一步 对线性规划数学模型进行标准化 构造一个初始基可行解 第二步 判断当前基本可行解是否是最优解 第三步 若当前解不是最优解 则进行基变换迭代到下一个基本可行 解 3 2 表上作业法 表上作业法是单纯形法在求解运输问题时的一种简化方法 其实质是 单纯形法 只是具体计算和术语有所不同 其一般思路是 初始方案的确定 最优解的检验 调运方案的调整 以下以一个简单的例子进行介绍 例 某公司经销甲产品 它下设三个加工厂 有四个销售点 各加工 厂每日的产量及各销售点每日销量 各加工厂到销售点的单位产品的运价 如表 3 1 所示 问该公司应如何调运产品 在满足各销售点的需求量的前提 下 使得总运费最少 表 3 1 已知信息表 B1B2B3B4产量 吨 A13113107 A219284 A3741059 销量 吨 3656 销 地 产 地 8 表 3 2 运输方案表 B1B2B3B4产量 吨 A17 A24 A39 销量 吨 3656 3 2 1 初始方案的确定 初始方案的确定就是初始基可行解的确定 产销平衡的运输问题总是存 在可行解 因有 dba n j j m i i 11 必存在可行解 0 1 2 1 2 ij ximjn 又因 0 min ij x j a j b 故运输问题必存在最优解 确定初始其可行解的方法很多 简单又尽可能接近最优解的方法一般 有 最小元素法 伏格尔法和西北角法 本文主要介绍最小元素法的求解 步骤 同时也采用其他两种方法进行求解得出结果 最小元素法的基本方法就是就近供应 即从单位运价表中最小的运价 开始确定供销关系 然后次小 直到得出初始其可行解为止 其步骤如下 第一步 在表 3 1 找出最小运价为 1 先将 A2的产品供应给 B1 因 2 a 即 A2 除满足 B1的全部需要外 还多出 1 吨产品 在表 3 2 的 1 b A2 B1 的交叉格处填上 3 同时把表 3 1 中的 B1列划掉 销 地 产 地 9 第二步 在表 3 1 的找出没有划掉的最小的运价 2 把 A2多余的 1 吨 供应给 B3 并在表 3 2 A2 B3 交叉格出填上 1 同时把表 3 1 的 A2行 划掉 第三步 同样在表 3 1 的找出没有划掉的最小的运价 3 因为 A2已经 供应 1 吨给 B3 所以 A1供应 4 吨给 B3 并在表 3 2 A1 B3 交叉格出填 上 4 同时把表 3 1 的 B3列划掉 第四步 在表 3 1 中的找出没有划掉的最小的运价 4 把 A3的 6 吨供 应给 B2 并在表 3 2 A3 B2 交叉格出填上 6 同时把表 3 1 的 B2列划 掉 第五步 在表 3 1 中的找出没有划掉的最小的运价 5 由于 A3一共生 产 9 吨 把 6 吨供应给了 B2 剩下的 3 吨全部供应给 B4 并在表 3 2 A3 B4 交叉格出填上 3 同时把表 3 1 的 A3行划掉 第六步 在表 3 1 中的找出没有划掉的最小的运价 10 由于 A1一共生 产 7 吨 把 4 吨供应给了 B3 剩下的 3 吨全部供应给 B4 并在表 3 2 A1 B4 交叉格出填上 3 同时把表 3 1 的 B4列划掉 到此已经把产地 的产品全部分配到各销地 并得出运输方案表 见表 3 3 同时得出总运费 为 86 元 表 3 3 最小元素法 运输方案表 B1B2B3B4产量 吨 A1437 A2314 A3639 销量 吨 3656 注 总运费 3 1 1 2 4 3 6 4 3 5 3 10 86 元 另外另种方法的思路及求解结果如下 伏格尔法的基本思路是一产品的产品如果不能按最小运费就近供应 就考虑次小运费 会产生一个差额 差额越大 说明不能按最小运费调运 时 运费增加就越多 因而对差额最大处采用最小运费调运 求得结果见 表表 3 4 销 地 产 地 10 表 3 4 伏格尔法 运输方案表 B1B2B3B4产量 吨 A1527 A2314 A3639 销量 吨 3656 注 总运价 3 1 6 4 5 3 2 10 1 8 3 5 85 元 西北角法 又称左上角法 或阶梯法 其基本思想为先从表的左上角 即 A1 B1 在产销约束条件允许的范围内 极可能大的产量满足销量 从而确定该交叉格的产量 依此类推 在剩余格中从左上角开始进行同样 的处理 求解结果见表 3 5 表 3 5 西北角法 运输方案表 B1B2B3B4产量 吨 A1347 A2224 A3369 销量 吨 3656 注 总运费 3 3 4 11 2 9 2 2 3 10 6 5 135 元 在表上作业法求初始解的三个方法中 左上角法最简单 最小元素法 次之 伏格尔法相对最复杂 但所求结果伏格尔法最好 最接近最优解 其次是最小元素法 左上角法则相当较差 14 销 地 产 地 销 地 产 地 11 3 2 2 最优解的检验 最优解的判别方法是计算空格的检验数 运输问 NjiPBCc ijBij 1 题的目标函数是要求实现最小化 所以当时 为最优解 0 1 ijBij PBCc 求空格检验的方法有两种 闭回路法和位势法 本文采用的是闭回路法 闭回路法的步骤是在初始解方案的计算表上 从每一空格出发找一条 闭回路 即以某一个空格为起点 水平或垂直向前划 当碰到一个数字格 时可以转 90 后 继续前进 直到回到原点为止 在例题中用最小元素法求出的初始解表 3 3 中 从任意一个空格出发 如 A1 B1 若让 A1调运 1 吨产品给 B1 为了保持产销平衡 则在 A1 B3 处减少 1 吨 A2 B3 处增加 1 吨 A2 B1 处减少 1 吨 构成 了一个闭回路 这一闭回路增加的运费为 1 3 1 3 1 2 1 1 1 元 这 1 就是空格 A1 B1 的检验数 同理可以找出 所有空格的检验数 结果如下表 3 6 表 3 6 空格检验数表 空格闭回路 检验 数 A1 B1 A1 B1 A1 B3 A2 B3 A2 B1 A1 B1 1 A1 B2 A1 B2 A1 B4 A3 B4 A3 B2 A1 B2 2 A2 B2 A2 B2 A2 B3 A1 B3 A1 B4 A3 B4 A3 B2 A2 B2 1 A2 B4 A2 B4 A2 B3 A1 B3 A1 B4 A2 B4 1 A3 B1 A3 B1 A3 B4 A1 B4 A1 B3 A2 B3 A2 B1 A3 B1 10 A3 B3 A3 B3 A3 B4 A1 B4 A1 B3 A3 B3 12 当检验数存在负数时 说明原方案不是最优解 需要改进 3 2 3 调运方案的改进 在进行最优解检验时 出现负检验数 表明没有得出最优解 方案需 12 要进行改进 本文采用改进的方法是闭回路调整法 闭回路调整法的思路 是 以负检验数的空格为调入格 当负检验数为两个或两个以上时 一般 选最小的负检验数 以它相对应的非基变量为换入变量 由表 3 6 可知 空格 A2 B4 的检验数为负 所以以该空格为调入格 见表 3 7 在该空格中调入量是以闭回路上具有 1 的数字格中的最小者 即 min 1 3 1 然后按闭回路上的正 负号 进行加减得到调整方案 见表 3 8 此时的总运费为 85 元 表 3 7 方案调整 B1B2B3B4产量 吨 A14 1 3 1 7 A231 1 1 4 A3639 销量 吨 3656 表 3 8 改进后的方案表 B1B2B3B4产量 吨 A1527 A2314 A3639 销量 吨 3656 注 总运费 3 1 6 4 5 3 2 10 1 8 3 5 85 元 对此调整后的方案再次用闭回路法进行检验 得出的检验数如下 表 3 9 改进后空格检验数表 空格闭回路 检验 数 A1 B1 A1 B1 A1 B3 A2 B3 A2 B1 A1 B1 0 销 地 产 地 销 地 产 地 13 A1 B2 A1 B2 A1 B4 A3 B4 A3 B2 A1 B2 2 A2 B2 A2 B2 A2 B3 A1 B3 A1 B4 A3 B4 A3 B2 A2 B2 2 A2 B4 A2 B4 A2 B3 A1 B3 A1 B4 A2 B4 1 A3 B1 A3 B1 A3 B4 A1 B4 A1 B3 A2 B3 A2 B1 A3 B1 9 A3 B3 A3 B3 A3 B4 A1 B4 A1 B3 A3 B3 12 表中的所有检验数都是非负数 说明表 3 8 的结果是最优解 同时也说 明伏格尔法给出的初始解比最小元素法给出的初始解更接近最优解 3 3 工具求解实践 在进行运输问题求解时 传统的解法是表上作业法 虽然表上作业 法已经是最简单的 但是在求解过程中还是会消耗大量的时间 特别是大 规模的运输问题 表上作业法就显得很复杂 随着计算机的出现 人们开 始尝试用计算机对运输问题进行求解 至今已经有很多软件是针对线性规 划而设计的 如 Excel 的规划求解 以及专业的求解工具 Lingo 和 Matlab 等 3 3 1 Excel 规划求解 Microsoft excel 的 规划求解 工具取自得克萨斯大学奥斯汀分学的 Leon Lasdon 和克里夫兰州大学的 Allan Waren 共同开发的 GRG2 Generalized Reduced Gradient 非线性最优化代码 15 Excel 的 规划求解 功能强大 它可以实现对有多个决策变量的线性 规划问题的求解 回避了用线性规划专业软件求解时对操作者的专业要求 同时也克服了笔算的缺点 其操作方法简单 方便 快捷 大大提高了计 算的效率与准确性 Excel 与专业软件相比 有以下特点 1 Excel 软件方便易学 大部分人都比较熟悉 容易掌握 2 能用表格简单直观地体现数学模型 3 Excel 具有大量的内建函数 通过设置参数 就能进行复杂的计算 建模过程简单 14 4 Excel 软件具有强大的数据分析功能 Excel 求解的步骤如下 1 创建表格 图 3 1 创建表格 2 设置约束条件和目标函数 3 F7 SUM B7 E7 F8 SUM B8 E8 F9 SUM B9 E9 B2 SUM B7 B9 C2 SUM C7 C9 D2 SUM D7 D9 15 E2 SUM E7 E9 H12 SUMPRODUCT B2 E4 B7 E9 图 3 2 约束条件和目标函数 4 设置规划求解参数见图 3 3 图 3 3 规划求解参数 5 规划求解选项设置 图 3 4 规划求解选项图 16 6 求解 图 3 5 规划求解 7 结果 图 3 6 Excel 求解的结果 由图 3 6 计算结果可以知道 运用 Excel 求解的结果和用表上作业法的 结果是一样的 3 3 2 Lingo 求解 Lingo 软件是美国 Lindo 系统公司开发的一套用于求解最优化问题的软 件包 Lingo 除了能用于求解线性规划和二次规划外 还可以用于非线性规 划求解以及一些线性和非线性方程 组 的求解等 Lingo 软件的最大特色 在于它允许优化模型中的决策变量为整数 而且执行速度快 Lingo 内置了 一种建立最优化模型的语言 可以简便地表达大规模问题 利用 Lingo 高 效的求解器可快速求解并分析结果 17 Lingo 软件 线性优化求解程序通常使用单纯形法 单纯形法虽然在实 际应用中是最好最有效的方法 但对某些问题具有指数阶的复杂性 所以 为了能解大规模问题 Lingo 也提供了内点算法备选 Lingo 软件有快速建 构模型 轻松编辑数据 强大求解工具 交互式模型和建立完成应用 丰 富的文件支持等优点 Lingo 代码编写如下 sets wh w1 w2 w3 ai vd v1 v2 v3 v4 dj links wh vd c x endsets data ai 7 4 9 dj 3 6 5 6 c 3 11 3 10 1 9 2 8 7 4 10 5 enddata min sum links i j c i j x i j for wh i sum vd j x i j ai i for vd j sum wh i x i j dj j end 运行的结果如下 图 3 7 总运费 18 图 3 8 运输方案 图 3 9 内存和时间耗费 由图 3 7 至图 3 9 可知 运用 Lingo 求解的结果和用表上作业法的结果 是一样的 该模型的运行过程不用 1 秒 内存 20K 3 3 3 Matlab 求解 Matlab 是 20 世纪 70 年代 美国新墨西哥大学计算机科学系主任 Cleve Moler 为了减轻学生编程的负担 用 FORTRAN 编写而成的的 到 20 世纪 90 年代 Matlab 已成为国际控制界的标准计算软件 Matlab 的基本数据单位是矩阵 它的指令表达式与数学 工程中常用 的形式十分相似 故用 Matlab 来解算问题要比用 C FORTRAN 等语言 完成相同的事情简捷得多 并且 mathwork 也吸收了像 Maple 等软件的优 点 使 Matlab 成为一个强大的数学软件 Matlab 代码编写如下 tic f 3 11 3 10 1 9 2 8 7 4 10 5 t f ff reshape t 3 4 1 19 a zeros 3 12 for j 0 2 a j 1 4 j 1 4 j 1 1 end b zeros 4 12 for t 1 4 for p 0 2 b t 4 p t 1 end end Aeq a b Beq 7 4 9 3 6 5 6 lb zeros 12 1 x fval exitflag output lambda linprog ff Aeq Beq lb x round x 对 x 取整 B reshape x 4 3 把 b 调为矩阵 B toc 运行结果 图 3 10 调运方案 图 3 11 总运费 Elapsed time is 0 033213 seconds 时间消耗 0 033213 秒 结果跟预想的一样总运费 85 元 调运方案也是一样的 20 3 4 小结 由上述对运输问题的求解过程和结果 可以得出以下结论 1 不论是用表上作业法求解 还是工具求解 其求解的结果是一样的 总运费都是 85 元 调运方案也是一样 2 在整个求解过程中 虽然表上作业法很简单 无需懂得电脑操作 不过在求解时从初始方案的确定到最优解的检验 最后进行调运方案的调 整 这一过程消费大量时间 不像运用工具求解那样快捷 3 三个不同软件进行求解时 Excel 求解是不用进行代码编写的 无 需考虑算法和函数 只需进行表格创建和参数设置 简单方便 直观易用 而 Lingo 和 Matlab 是要进行代码编写的 而且运用的代码算法和函数不一 样 相对于 Matlab Lingo 的代码比较简单 运用到的函数就三个 不像 Matlab 要考虑循环迭代问题 4 Excel Lingo 和 Matlab 在求解过程中 Excel 不能进行运行时间的耗 费和内存占用的测算 Lingo 在运行结果中直接的出 直观方便 而 Matlab 则要用命令进行 而且通过命令 tic 和 toc 只能得出时间耗费 内存的占用 要通过任务管理器才能测算出来 不过在进行上述案例求解时都是十分迅 速的 总计都不到 1 秒 当然在这样一个简单的模型中其结果和速度是很 难找出差别的 所以要采用一个更大规模 更复杂的模型再一一进行求解 找出差别 21 第四章 大型运输问题案例求解与运输问题的应用 4 1 大型运输问题实例 由于在上一章的例子中 数学模型较小 在用计算机求解时的结果没 有可比性 所以根据需要 本文中自拟了一个广西某化肥厂产销案例 案 例中设计了 14 个产地和 91 个销地 运价 c 主要依据两点之间的距离来确 定 得出了运输模型见附表 1 对广西某化肥厂产销案例分别用三个软件采用上述方法进行求解 得 出结果进行分析比较 运行的环境 系统 Microsoft Windows XP Professional 内存 1Gb 硬件内存 160G 虚拟光驱 DAEMON Tools V3 47 4 1 1 大型运输问题的 Excel 求解 方法步骤同第三章的一样 运行结果如下 图 4 1 参数设计 22 图 4 2 运行结果 运用同样的方法对案例进行求解 得出的结果是 可变单元格过多 如上图所示 说明该模型的规模对于 Excel 来说是过大的 处理不了 4 1 2 大型运输问题的 Lingo 求解 根据数模编写代码 sets wh wh1 wh91 ai vd vd1 vd14 dj links wh vd c x endsets data ai 销量 dj 产量 c 运价 由于数据较大 故省略 enddata min sum links i j c i j x i j for wh i sum vd j x i j ai i for vd j sum wh i x i j dj j end 运行结果 图4 3 总运费 23 图 4 4 调运方案 24 图 4 5 性能显示 Lingo 在进行求解时是非常迅速的 整个过程运行的计算时间花费不到 1 秒 计算机内存使用量是 282K 总迭代求解 395 次 模型运行结果得总运 费 44764 40 4 1 3 大型运输问题的 Matlab 求解 代码编写 tic f 由于数据较大 故不显示 t f ff reshape t 91 14 1 a zeros 91 1274 for j 0 90 a j 1 14 j 1 14 j 1 1 end b zeros 14 1274 for t 1 14 for p 0 90 b t 14 p t 1 end end Aeq a b Beq 由于数据较大 故不显示 lb zeros 1274 1 x fval exitflag output lambda linprog ff Aeq Beq lb b reshape x 14 91 b toc 25 运行结果 图 4 6 总运费 图 4 7 调运方案 Elapsed time is 0 157713 seconds 26 CPU 使用占 12 PF 使用率为 479MB 见图 4 8 图 4 8 内存占用图 从用 Matlab 求解的结果可以看出 该模型的总运费是 44764 4 1 4 结果分析 有三个软件进行求解的过程和结果可以明显的比较出他们之间的差别 在用 Excel 求解中出现了 可变单元格过多 的提示 而运行终止 说 明该模型的规模对于 Excel 来说是过大的 这就体现了专业软件和非专业软 件的差别 在求解小型的数学模型时 在结果和运算耗费上是几乎没有差 别的 但在求解较大型的数学模型时 其差别就十分明显 而在运用 Lingo 和 Matlab 求解较大型的模型时的结果和耗时是几乎没 有差别的 由运行结果可以知道 他们求出方案的总运费都是一样 都是 44764 而且运输方案也是一样 在执行命令时所花费的时间都不到 1 秒 速度非常快 不同的是其所占用的内存 Lingo 是 282K 而 Matlab 所占用 的是内存的 12 即 1GB 12 122 88MB 这比 Lingo 大得多 说明对于 那种专门求解数学规划问题的软件来说 在求解的功能和机能是差不多的 4 2 运输问题的应用 从上一节中可以知道使用工具对比较大型的运输问题进行求解是非常 27 快的 而且求解简单 在现实生活中完全符合产销平衡的运输问题的所有 条件的情况是很少的 而是经常出现一些特征类似但有一个或几个特征却 不符合的问题 常见的情况有 产销不平衡 最大化目标 路线容量或路 线最小量 不可接受的路线 因为运输问题都会有最优解 所以把这些问 题转化成运输问题的数学模型 再进行求解 就可以把问题解决 现在介 绍几种比较常见的问题 1 生产和储存问题 某工厂按合同规定当年每季度分别提供某产品 已知该厂各季的生 j b 产力为及生产的单位成本 又如果生产出来的产品当季不交货 单位 i a ij c 产品每积压一季度的储存和维护费等费用为 d 要在完成合同的情况下 作 出使该厂全年生产费用最小的决策 若设为第季度生产的用于第 季度交货的数量 又第季度生产的 ij xi ji 用于第 季度交货的单位实际成本为应该是该季度单位成本加上储存和维 j ij c ij c 护费等费用为 d 所以得出数学模型 4 1 0 min 4 1 4 1 4 1 4 1 ij i jij j iij ij ij ij x bx ax xcz 显然这是一个产大于销的运输问题模型 2 航运调度问题 已知某航运公司的航班情况见表 4 1 又知道每条船每次装卸时间各需 1 天 则该公司应怎样在满足所有航线的运货要求分配船只使得用船只最少 表 4 1 某航运公司的航班情况 航线起点终点每天航班数 28 1ED3 2BC2 3AF1 4DB1 表 4 2 两港口之间的航行天数 ABCDEF A121477 B1031388 C2301555 E7851703 F7852030 在求解中该公司所需要配备的船只分为两种 第一种 载货航程需要的周转船只数 航线 1 从 E 到 D 航行过程中需要的船只数为 17 2 3 57 同理 其他 3 天航行所需的船只分别为 B 到 C 3 2 2 10 A 到 F 7 2 1 9 D 到 B 13 2 1 15 则共需 57 10 9 15 91 条 第二种 空船调运需要的周转船只数 这时就体现到运输问题的作用了 问题变为从 C D F 三个港口运输 空船到 A B E 三个港口 要求其效率最高 则建立模型如表 4 3 这就 是一个运输问题中的产销平衡和运价表 求解建模得出的最少周转船只数 加上第一种的船只需要数就是总共需要的最少船只数 表 4 3 产销平衡表 ABEai C2352 D1413172 F7831 bj113 3 总利润最大问题 若某百货公司要去外地采购 n 种规格的货物 数量为 有 m 个城市 j b 可以供应上述货物 各市的供应量为 各市的质量好 运价和销售情况 i a 29 不同 预计售后的利润为 要给该公司制定一个预期盈利最大的采购方 ij c 案 可以建模 4 2 0 max 4 1 4 1 11 ij i jij j iij m i n j ijij x bx ax xcz 4 转运问题 就是在原运输问题上增加若干转运站 运输方式变为 运输方式有 产地 转运站 转运站 销地 产地 产地 产地 销地 销地 转运站 销地 产地等 设 为从 到 的运输量 是从 到 的运输量的运输单价 可 ij xi j ij ci j 得到线性规划模型 目标函数 运输单价与运输量乘积之和 ijijx cz min 约束条件 对产地 发点 输出量 输入量 产量 i 对转运站 中转点 输入量 输出量 0 对销地 收点 输入量 输出量 销量 j 5 障碍运输问题 障碍运输问题就是由于某种原因 某产地不能把货物运到销地的现象 如果从 Ai到 Bj的线路不通 则令从 Ai到 Bj的运价为任意一个足够大的 ij c 正数 M 这样就转换成了一个标准的运输问题了 30 运输问题还可以应用在农业上的耕种作物分配 军事上的作战军火分 配等等 第五章 内点法 自从 1984 年 Karmarkar 提出了投影尺度法 引起人们对内点法的关 注 推动了内点法的发展 至今出现了许多新的方法和成果 如仿射均衡 程度法 路径跟踪法 势降低法 不可行内点法和原始 对偶法 这些方法 都要应用一些非线性的方法和技巧 对大型线性规划问题的解法研究证实 内点法的速度比单纯形法的快 16 内点法的基本思想 17 是从内点 x0 出发 沿可行方向求出使目标函 数值上升的后继点 再从得到的内点出发 沿着另一个可行方向求使目标 函数值上升的内点 重复以上步骤 产生一个由内点组成的序列 xk 使得 当满足终止准则时 停止迭代 内点法是一个迭代算法 并 kTkT xcxc 1 且每次迭代都要满足严格的不等式条件 5 1 运输问题的内点算法 18 运输问题的一般模型 5 1 0 min x bAxs t cx 其对偶问题为 5 2 cyAts yb T T max 对偶问题 5 2 加一个松弛变量 s 后变为 5 3 0 max s csyAts yb T T 31 由 5 1 和 5 3 求出满足 Karush Kuhn Tucker 最优性条件为 5 4 0 0 2 10 sx nisx bAx csyA ii T y 和 s 分别是拉格朗日乘数为的是约束条件和 条件bAx 0 x 其每一项 或必须为零 这就是互补条件 当向nisx ii 2 10 i x i s 量满足原问题 5 1 满足对偶问题 5 2 x n Rx sy 则向量 称为原始对偶的解决方案 nm RsRy syx 5 2 牛顿法 用牛顿法求解最优解 为了便于计算 把公式 5 4 转换成以下是形 式 0 0 sx XSe bAx csyA syxF T 5 5 其中 n xxxX diag 21 n sssS diag 21 T e1 1 1 对于条件 为简化计算可以减掉大量无关的变量 简化为0 0 sx 故最优条件变形为 0 0 sx 可行集 5 6 0 sxcsyAbAxsyx T 严格可行集 5 7 0 0 sxcsyAbAxsyx T 则严格可行条件可以变为 0 kkk syx 原始对偶内点法的两个基本要素是 一个确定步骤的程序和一个在搜 32 索空间可行点的测量 如前所述 对方程组 5 5 可以在牛顿方法找迭代 方向的初始点 牛顿法形成了一个线性模型 F 围绕当前点并获得迭代方向 通过求解下面线性方程组 syx 5 8 syxF s y x syxJ 其中是 F 的函数行列式 如果当前点是严格可行解 就是J 牛顿步骤方程组变为 0 syx 5 9 XSes y x AT 0 00 通常沿着牛顿方向 5 9 得到的步长很大 可能不能满足非负条件 为了避免这种发生情况 可以沿着一个线性且很小的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论