运输问题的+Leapms模型
运输问题的+Leapms模型
运输问题是本科教课书中的一个经典章节。运输问题的线性规划模型非常简单,而且求解难度极小。
问题
一个公司生产并销售一种产品。该公司有m个产地、n个销地。产地 i 的供给量不大于p[i],销地 j 的需求量不小于d[i],从 i 到 j 的运输费用为 c[i][j]。要求规划产地到销地之间的调运量,使得调用总费用最小。
数据
以下是教课书[1,2]中的一个运输问题的数据表:

+Leapms模型语言常识
1、sub-index: 在大多数计算机语言中,如c语言、python语言中,用[ ]表示脚标, [ ] 被读作 sub-index (脚标)。例如x[i][j] 就相当于$x_{ij}$, 被读成 x sub-index i,j 。+Leapms建模语言也不例外。
2、of: 在大多数计算机语言中, () 一般有两个用途—— (1) 表示算式的优先等级、(2)表示函数,例如sin(a);当 ( )表示函数时,读做of, 例如sina(a)读做 sine of a。+Leapms使用这种习惯。
3、花括号{ } : +Leapms中的花括号有两个用法,(1)表示数据区里的数据集合、(2)表示累加或累乘中局部变量的变化范围。 例如 $\sum_{i=1}^m\sum_{i=1}^nx_{ij}c_{ij}$在+Leapm中就被写成 sum{i=1,...,m; j=1,...,n} x[i][j]c[i][j]。
4、注释:+Leapms的注释符号是//,从//开始到行结束都被当作注释忽略
运输问题的建模
设x[i][j]为从产地 i 到销地 j 的调运量,则调运总费用是 sum{i=1,...,m;j=1,...,n} x[i][j]c[i][j],于是模型的目标为
minimize sum{i=1,..,m;j=1,..,n}c[i][j]x[i][j] //(1)
产量约束
sum{j=1,...,n}x[i][j] <= s[i] | i=1,...,m //(2)
销量约束
sum{i=1,...,m}x[i][j] >= d[j] | j=1,...,n //(3)
于是运输问题模型的主要部分即:
minimize sum{i=1,..,m;j=1,..,n}c[i][j]x[i][j] //(1)
subject to
sum{j=1,...,n}x[i][j] <= s[i] | i=1,...,m //(2)
sum{i=1,...,m}x[i][j] >= d[j] | j=1,...,n //(3)
+Leapms要求对所有出现在模型中的符号进行说明:
where
m,n are integers
c[i][j] is a number|i=1,...,m;j=1,...,n
d,s are sets
x[i][j] is a variable of nonnegative number|-->
i=1,...,m;j=1,...,n
为了使得模型能够被解析和求解,必须给出数据:
data
m=3
n=4
c={
8 6 10 9
9 12 13 7
14 9 16 5
}
d={45 20 30 30}
s={35 50 40}
模型的解析和求解
+Leapms模型使用纯文本表达。
在+Leapms环境中用Load命令即可调入模型并对模型进行解析。解析完毕后会报告模型的变量数和约束数。
然后使用solve命令求解。(如果有整形或者0-1变量,则需使用mip命令求解,否则只进行松弛求解)。
cplex命令或gurobi命令可以调用cplex或gurobi软件对模型进行求解。
+Leapms>load
Current directory is "ROOT".
.........
transportation.leap
.........
please input the filename:transportation
================================================================
1: minimize sum{i=1,..,m;j=1,..,n}c[i][j]x[i][j] //(1)
2: subject to
3: sum{j=1,...,n}x[i][j] <= s[i] | i=1,...,m //(2)
4: sum{i=1,...,m}x[i][j] >= d[j] | j=1,...,n //(3)
5: where
6: m,n are integers
7: c[i][j] is a number|i=1,...,m;j=1,...,n
8: d,s are sets
9: x[i][j] is a variable of nonnegative number|-->
10: i=1,...,m;j=1,...,n
11: data
12: m=3
13: n=4
14: c={
15: 8 6 10 9
16: 9 12 13 7
17: 14 9 16 5
18: }
19: d={45 20 30 30}
20: s={35 50 40}
21:
================================================================
>>end of the file.
Parsing model:
1D
2R
3V
4O
5C
6S
7End.
..................................
number of variables=12
number of constraints=7
..................................
+Leapms>solve
The LP is solved to optimal.
找到线性规划最优解.非零变量值和最优目标值如下:
.........
x1_2*=10
x1_3*=25
x2_1*=45
x2_3*=5
x3_2*=10
x3_4*=30
.........
Objective*=1020
.........
+Leapms>
上面的求解结果给出非零最优决策变量和最优目标值。该题最优目标值为1020。
上面的运输模型求解难度很小,商用求解器可以在一个小时甚至更短时间内内求解到百万级变量的问题。
LaTex 模型的自动生成
在+Leapms环境中使用命令“Latex” 会自动生成 LaTex文件(.tex),在安装有LaTex环境的系统中双击此文件能够自动生成数学形式的pdf模型。
\documentclass{article}
\usepackage{amsmath}\begin{document}
\section{LaTex code for Model ``Transportation.leap"}
\rule[0pt]{5cm}{0.05em}\\
\begin{align}
\min\quad \sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}\end{align}
subject to
\begin{align}
&\sum_{j=1}^{n}x_{ij}\leq s_{i},\quad i=1,...,m\\
&\sum_{i=1}^{m}x_{ij}\geq d_{j},\quad j=1,...,n\\&x_{ij}\geq 0 , \quad i=1\ldots m; j=1\ldots n
\end{align}
\\\rule[0pt]{5cm}{0.05em}\\
The above formulations are generated by +Leapms from model file ``Transportation.leap" at 11:34:24 2018-12-27.
\end{document}
由上面自动生成的LaTex代码所进一步生成的pdf数学模型:

参考文献
[1] Wayne L. Winston. Operations Research: Applications and Algorithms. Duxbury press, boston, 1997
[2] Wayne L. Winston. 运筹学(数学规划 第3版 影印版). 北京:清华大学出版社,2004
运输问题的+Leapms模型的更多相关文章
- 使用 线性规划 解决 数字 排序问题, +Leapms模型
问题 将如下一组数字从大到小排序. {10, 20, -32, 177, 0, -11.5, 19, 7, 6.2, -6.28, -2.71, 44} 解决办法 建立数学模型,给出各个数字的次序值. ...
- 拓扑排序的 +Leapms 线性规划模型
知识点 拓扑排序 拓扑排序的+Leapms模型 无圈有向图 一个图G(V,E), 如果边有向且不存在回路,则为无圈有向图.在无圈有向图上可以定义拓扑排序.下图是一个无圈有向图的例子. 拓扑排序 给定一 ...
- 旅行商问题(Traveling Salesman Problem,TSP)的+Leapms线性规划模型及c++调用
知识点 旅行商问题的线性规划模型旅行商问题的+Leapms模型及CPLEX求解C++调用+Leapms 旅行商问题 旅行商问题是一个重要的NP-难问题.一个旅行商人目前在城市1,他必须对其余n-1个城 ...
- Wolsey "强整数规划“ 建模的+Leapms实践——无产能批量问题
Wolsey "强整数规划“ 建模的+Leapms实践——无产能批量问题 <整数规划>[1]一书作者L. A. Wolsey对批量问题(Lot-sizing Problem)做了 ...
- 10分钟明白对偶建模法 / +Leampms的“主模型建模”和“对偶模型建模” 之 —— 三类最短路径问题
摘要 对偶模型建模是非常有独特的一种建模方式 —— 当问题本身要求指标极小的情况下,对偶模型表现为求极大.本文给出三种最短路径问题的线性规划/混合整数规划模型,其中的第三类最短路径问题采用对偶建模方法 ...
- 生产线平衡问题的+Leapms线性规划方法
知识点 第一类生产线平衡问题,第二类生产线平衡问题 整数线性规划模型,+Leapms模型,直接求解,CPLEX求解 装配生产线平衡问题 (The Assembly Line Balancing Pro ...
- 旅游公司租车问题 —— 动态规划 v.s. + Leapms线性规划
有一个旅游公司承包一条旅游线路,未来四周内的大巴车需求分别是:4辆.1辆.4辆和5辆.该公司向租车公司租赁服务,租车公司的计价方案是:租车收取一次性手续费3000,每车每周费用2000.求最节省租车方 ...
- Pi Hybrids问题
Pi Hybrids问题 清华大学肖秀波梁湧老师翻译的Rardin教授的<运筹学>[1]已于今年年中出版,感谢机械工业出版社张有利老师的推荐和赠书,让我能看到如此完美的千页级宏篇译著.该书 ...
- 制造业物料清单BOM、智能文档阅读、科学文献影响因子、"Celebrated Italian mathematician ZepartzatT Gozinto" 与 高津托图
意大利数学家Z.高津托 意大利伟大数学家Sire Zepartzatt Gozinto的生卒年代是一个谜[1],但是他发明的 “高筋图” 在 制造资源管理.物料清单(BOM)管理.智能阅读.科学文献影 ...
随机推荐
- 在linux服务器之间复制文件和目录命令scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...
- window 7 安装Jmeter并配置https录制脚本
安装与环境配置: http://blog.csdn.net/hhuangdanfeng/article/details/51564765 http://blog.csdn.net/u010573212 ...
- Spring 系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.实物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...
- pyqt5将图片插入面板
from PyQt5.QtWidgets import * from PyQt5 import QtCore,QtWidgets from PyQt5.QtGui import * import sy ...
- 微软正式发布Chromium Edge开发预览版
目录 下载与注册 更多下载信息与订阅 导入Chrome部分数据 扩展安装 安装开发预览版是否会与Win10自带的Edge冲突? 一大早从朋友圈看到消息,微软正式发布Chromium Edge 开发预览 ...
- 购物网站首页(学习ING)
这几天在学着做购物网站,初步的完成了首页的框架吧,记录下.慢慢加强.主要难点,是样式的设置问题,如果自己想,自己摸索,可能会需要很长的调试.也是一个孰能生巧的过程吧,有些部分没有按照学习资料的方法也做 ...
- H5单张、多张图片保存续篇
前言 这篇是接上篇内容.还没看的可以看H5单张.多张图片上传这篇文章预热. 图片入库 本章我们就来看看如何让多种图片保存至数据库中.数据库:mysql 后端:.NET Core 我们回顾一下上篇我 ...
- aps .net MVC单用户登录
当不允许多用户同时登录一个帐号时,就需要一种机制,当再登录一个相同的帐号时,前面登录的人被挤下线. 原文地址:http://www.cnblogs.com/f23wangj/p/4984302.htm ...
- HTML 练习绑定onclick事件
方法一 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 安卓开发笔记(二十):利用夜神模拟器调试运行Android Studio的apk
一.首先来到夜神模拟器的安装目录下 如下图所示: 再把这整个文件夹添加到我们的windows环境变量里.然后再把android studio 和夜神模拟器都打开,注意必须同时打开而且不能够把夜神模拟器 ...