图论与网络流问题的LINGO求解技巧

合集下载

lingo使用教程

lingo使用教程

注意:用“[]”表示该部分内容可选。下同,不再赘述。
Setname 是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标 准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z) 、下划线、阿拉 伯数字(0,1,„,9)组成的总长度不超过 32 个字符的字符串,且不区分大小写。
min s.t.
2 x1 3 x 2 x1 x 2 350 x1 100
2 x1 x 2 600 x1 , x 2 0
在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例 1.2 使用 LINGO 软件计算 6 个发点 8 个收点的最小费用运输问题。产销单位运价如 下表。 单 位 销地 运 B1 B2 B3 B4 B5 B6 B7 B8 产量 价 产地
使用 LINGO 软件,编制程序如下:
model: !6 发点 8 收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end

LINGO使用说明(比较简单)

LINGO使用说明(比较简单)

Lingo介绍Lingo是美国LINDO系统公司(Lindo Symtem Inc)开发的求解数学规划系列软件中的一个(其他软件为LINGDO,GINO,What’s Best 等),它的主要功能是求解大型线性、非线性和整数规划问题,目前的版本是lingo11.0。

lingo分为Demo、solve suite、hyper、industrial、extended等六类不同版本,只有Demo版本是免费的,其他版本需要向LINDO系统公司(在中国的代理商)购买,Lingo的不同版本对模型的变量总数、非线性变量个数、整型变量个数和约束条件的数量做出不同的限制(其中extended版本无限制)。

Lingo的主要功能特色为:(1)既能求解线性规划,也有较强的求解非线性规划的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强;(4)内置建模语言,提供几十种内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为Lingo 语言;(6)能方便地与excel、数据库等其他软件交换数据。

学校图书馆40本《lingo和excel在数学建模中的应用》,袁新生、邵大宏、郁时炼主编,科学出版社Lingo 程序设计简要说明在数学建模中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。

在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。

一般我们用LINGO 来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。

LINGO 只是一个求解工具,我们主要的任务还是模型的建立!当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

Lingo的基本使用方法

Lingo的基本使用方法

2021/10/10
5
1. LINGO入门
内容提要
2.在LINGO中使用集合
3. 运算符和函数
4. LINGO的主要菜单命令
5. LINGO命令窗口
6.习题
2021/10/10
6
1. LINGO入门
1. LINGO入门 2.在LINGO中使用集合 3. 运算符和函数 4. LINGO的主要菜单命令 5. LINGO命令窗口 6.习题
2021/10/10
18
一个简单的LINGO程序
LINGO的基本用法的几点注意事项
LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@sub或@slb另行说明)。 变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达 式定义目标和约束(如果可能的话)。 语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编 写程序时应注意模型的可读性。例如:一行只写一个语句,按照 语句之间的嵌套关系对语句安排适当的缩进,增强层次感。 以感叹号开始的是说明语句(说明语句也需要以分号结束)。
2021/10/10
2
优化模型和算法的重要意义
最优化: 在一定条件下,寻求使目标最大(小)的决策
最优化是工程技术、经济管理、科学研究、社会生活中 经常遇到的问题, 如:
结构设计 资源分配
生产计划
运输方案
解决优化问题的手段
经验积累,主观判断
作试验,比优劣
2021/10/建10 立数学模型,求解最优策略

LINGO详细教程

LINGO详细教程

全国第四届研究生数学建模竞赛题 目 邮政运输网络中的邮路规划和邮车调度优化研究摘 要本文借助于图论典型算法(如Flody算法),以及运筹学图上作业法等典型手法,深入研究了一类曲面上的带附加条件的多路巡回问题。

分别回答了县区、市区邮政网络的邮路规划调度问题及其关于县区部分边界变动、和县区邮政中心变化引起的灵敏度分析。

并且针对每一问建立了相应的优化模型。

针对第一问、先回答了车辆个数的下确界,并用试探算法明确了三个子巡回可行,并针对三个子巡回设计了新颖的算法,先将问题松弛,将约束条件转化为准则库,找寻到经过县局的满足荷载限制的子巡回,然后定义每个子巡回的标示码、校验码、在程序中成功定义了映射,实现了三个子巡回的邮政网络划分,找到了问题的可行解域,然后以空载费用为目标函数,找到了空载费用为55.67的最优方案。

且该方案通过了检验。

针对第二问,针对市、县两级邮政网络图的特点,寻求局优解,借助于市区的最小生成树、以及市局、县局的最短路径,从中心向四周辐射,安排各子巡回,以区级车辆往返时间特点为约束,以子巡回的空余时间为罚函数,以环形回路为主兼顾辐射型回路,优先安排快车巡回,设计了相应的算法,并且给出了初始方案,且利用我们的方法调整方案,得到满意解,需要用13辆邮车完成全区的邮件任务,全区的总邮路路程为2453公里。

针对第三问,我们以减少邮路车辆为目标,研究了县区边界需要调整的点的特点,利用邻接区域的罚函数较大的回路破圈,重新构造子巡回。

既满足时间约束,又达到了降低费用和减少邮路车辆的目的。

通过我们的工作,可以减少两个邮车,总路程变比第二问减少了258公里针对第四问,我们定义了区域中心即为到达所有各点的距离之和为最小的点,但是邮政网络中的中心不仅取决于距离,同时由它的度数以及周围区域点的度数综合决定,我们利用Mthematica和Lingo中的tsp模板,借鉴第二问的表上作业法,和第三问灵敏度分析的经验,减少了两辆邮车,减少了284公里的邮路。

第3讲LINGO基本使用方法

第3讲LINGO基本使用方法
2020/1/15
新余学院 建模组
目前为止找到的可行 解的最佳目标函数值
有效步数
目标函数值的界
特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序)
上一页
下一页
Xinyu University MCM
优优优化化化建建建模模模
(2) min z 3x1 2x2 x3
s.t. 2x1 x2 x3 5, 4x1 3x2 x3 3 x1 x2 x3 2 x1, x2 , x3 0
2020/1/15
新余学院 建模组
上一页
下一页
Xinyu University MCM
二、在LINGO中使用集合
注意:用“[]”表示该部分内容可选。下同,不再赘述。
2020/1/15
新余学院 建模组
上一页
下一页
Xinyu University MCM
优优优化化化建建建模模模
例语1法可:以定se义tn一a个m名e[为/mstuedmenbts的er原_l始is集t/,][它:a具tt有ri成bu员tJeo_hlni、stJ]i;ll、Rose和Mike
MonthM..MonthN Jill 0 Oc1t4..Ja按n 列赋值 Oct,Nov,Dec,Jan
Rose 0 17 MonthYearM..MonthYeMariNkeOc1t201031.;.Jan2002
Oct2001,Nov2001,Dec2001 ,Jan2002
enddata
③ 集成员不放在集定义中,而在随后的数据部分来定义。
2020/1/15
新余学院 建模组

TSP问题及LINGO求解技巧

TSP问题及LINGO求解技巧

TSP 问题及LINGO 求解技巧巡回旅行商问题(Traveling Salesman Problem ,TSP),也称为货郎担问题。

最早可以追溯到1759年Euler 提出的骑士旅行问题。

1948年,由美国兰德公司推动,TSP 成为近代组合优化领域的一个典型难题。

它已经被证明属于NP 难题。

用图论描述TSP ,给出一个图(,)G V E =,每边e E ∈上有非负权值()w e ,寻找G 的Hamilton 圈C ,使得C 的总权()()()W C w e e E C =∑∈最小. 几十年来,出现了很多近似优化算法。

如近邻法、贪心算法、最近插入法、最远插入法、模拟退火算法以及遗传算法。

这里我们介绍利用LINGO 软件进行求解的方法。

问题1设有一个售货员从10个城市中的某一个城市出发,去其它9个城市推销产品。

10个城市相互距离如下表。

要求每个城市到达一次仅一次后,回到原出发城市。

问他应如何选择旅行路线,使总路程最短。

我们采用线性规划的方法求解设城市之间距离用矩阵d 来表示,ij d 表示城市i 与城市j 之间的距离。

设0--1矩阵X 用来表示经过的各城市之间的路线。

设01,ij i j x i j i j ⎧=⎨⎩若城市不到城市若城市到城市且在前考虑每个城市后只有一个城市,则:11,nij j j ix =≠=∑1,,i n =… 考虑每个城市前只有一个城市,则:11,nij i i jx =≠=∑1,,j n =…; 但仅以上约束条件不能避免在一次遍历中产生多于一个互不连通回路。

为此我们引入额外变量i u (1,,i n =…),附加以下充分约束条件:1,i j ij u u nx n -+≤-1i j n <≠≤;该约束的解释:如i 与j 不会构成回路,若构成回路,有:1ij x =,1ji x =,则:1i j u u -≤-,1j i u u -≤-,从而有:02≤-,导致矛盾。

lingo实用详细教程

lingo实用详细教程

LINGO 使用教程LINGO 是用来求解线性和非线性优化问题的简易工具。

LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。

一般来说LINGO 多用于解决大规模数学规划。

用时要注意以下几点:(1)每条语句后必须使用分号“;”结束。

问题模型必须由MODEL 命令开始,END结束。

(2)用MODEL 命令来作为输入问题模型的开始,格式为MODEL :statement (语句)。

(3)目标函数必须由“min =”或“max =”开头。

§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。

下面举两个例子。

例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。

例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。

产销单位运价如model :!6发点8收点运输问题; sets :warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume; endsets !目标函数;min =@sum (links: cost*volume); !需求约束;@for (vendors(J):@sum (warehouses(I): volume(I,J))=demand(J)); !产量约束;@for (warehouses(I):@sum (vendors(J): volume(I,J))<=capacity(I));!这里是数据; data :capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end然后点击工具条上的按钮 即可。

数学建模网络流问题

数学建模网络流问题
修改后的图中对应点的数值,得到正负号相反 的两个数,并将从正到负的方向用箭头表示。 这样,就得到一个最大流量图。
下面,我们用弧标号法求解图2中的最大流。
第一次修改:
(1)从发点s到收点t找一条路,使得这条路上的 所有弧前面的约束量 cij 0 。从图2中可以看出, 显然,① —③—⑥—⑦就是满足这样的条件的一 条路。
2 5 2
3
5
8 1 1 7 6 7 7
2
3 3
1
6 5
3 5 4
图1
点①出发的车辆数应该与点⑦到达的车辆数相同,除 ①和⑦以外的各中间点,进的车辆数应该与离去的车辆数 应该相同。
x12 x13 x14 x57 x67 f
x12 x32 x x 13 23 x14 x34 x x 35 25 x36 x 46 x 23 x 25 x32 x34 x35 x36 x 46 x65 x56 x57 x56 x65 x 67
(8)
(9 )
(10)
所以,对于发点为 Vs ,收点为 Vt 的网络N( V, U), 当增加一条约束为cts=∞的假想弧(t,s)后,最大 流问题就成为: 容量约束:
0 xij cij
(11)
平衡条件:
( j ,i )U
x ji
( j , j )U
xij
(12)
目标函数:
果找不到这样的路,说明已经求得最大流,转步 骤4。
步骤 2. 在选定的路上,找到最小的容许量 cij定为P。
步骤3. 对选定的路上每条弧的容量作以下修改 ,对于与路同向的弧,将cij修改为cij-P,对于 与路反向的弧,将cij修改为cij+P。修改完毕后

LINGO软件求解最大流问题示例

LINGO软件求解最大流问题示例

LINGO输入程序
段集 合
段 数目 据标 段与 约 束
! maximum flow problem; 这是一个最大流问题 model:
1]SETS: 2]NODES/1..10/; 3]ARCS(NODES,NODES)/1,2 1,3 1,4 2,4 3,4 3,7 4,5 4,6 4,7 5,2 5,10 6,8 7,10 8,9 8,10 9,6 9,10 10,1/:CAP,FLOW; 4]ENDSETS 5]MAX=FLOW(10,1); 6]@FOR(ARCS(I,J):FLOW(I,J)<CAP(I,J)); 7]@FOR(NODES(I):@SUM(ARCS(J,I):FLOW(J,I)) 8]=@SUM(ARCS(I,J):FLOW(I,J))); 9]DATA: 10]CAP=8,15,10,7,6,9,6,9,10,4,5,18,11,12,7,13,15,1000; 11]ENDDATA END
Value
8.000000 15.00000 10.00000 7.000000 6.000000 9.000000 6.000000 9.000000 10.00000 4.000000 5.000000 18.00000 11.00000 12.00000 7.000000 13.00000 15.00000 1000.000 0.000000 15.00000 10.00000 0.000000 6.000000 9.000000 5.000000 9.000000 2.000000 0.000000 5.000000 9.000000 11.00000 2.000000 7.000000 0.000000 2.000000 25.00000
Model Class:

LINGO在图论中的应用

LINGO在图论中的应用
一步是i --> j,否则就不是。由此,我们就可方便的确 定出最短路径;
for(roads(i,j): P(i,j)=if(FL(i) #eq# W(i,j)+FL(j),1,0));
end
部分计算结果: FL(A) 6 FL(B) 4 FL(C) 3 FL(D) 1 FL(E) 3 FL(F) 4 FL(G) 0 最短路线为 A B D G 以上计算程序是通用程序,对其它图,只需在 此程序基础上对数据作一些修改即可。
第 三 阶 段 , 从 D,E,F 到 G 的 最 短 路 分 别 为 1,3,4 , 记 为 f(D)=1,f(E)=3,f(F)=4;
第二阶段,与D,E,F有连线的出发点为B和C,从B出发 分别经过D,E,F,至终点G的里程分别为:
WBD+ f(D)=3+1=4
WBE+ f(E)=3+3=6
WBF+ f(F)=1+4=5 故B到G的最短路是上述三者的最小值(4),可以写成
图是一种直观形象地描述已知信息的方 式,它使事物之间的关系简洁明了,是分 析问题的有用工具,很多实际问题可以用 图来描述。
一、图的基本概念
图论是以图为研究对象的数学分支,在图论 中,图由一些点和点之间的连线所组成.
称图中的点为顶点(节点),称连接顶点的 没有方向的线段为边,称有方向的线段为弧.所 有线段都没有方向的图称为无向图,所有线段都 有方向的图称为有向图,既有边也有弧的图称为 混合图.
计算结果与动态规划法相同.程序中的最后一 个约束方程可以去掉,因为有了前面两个约束条 件(共n-1个约束方程)可以导出最后一个约束方程, 即 终 点 的 约 束 方 程 与 前 面 n-1 个 约 束 方 程 线 性 相 关.保留该约束方程,LINGO求解时也不会产生 任何问题,因为LINGO会自动删除多余的方程.

Lingo的基本使用方法

Lingo的基本使用方法

优化模型和算法的重要意义
最优化: 在一定条件下,寻求使目标最大(小)的决策
最优化是工程技术、经济管理、科学研究、社会生活中 经常遇到的问题, 如:
结构设计 资源分配
生产计划
运输方案
解决优化问题的手段
经验积累,主观判断 作试验,比优劣 建立数学模型,求解最优策略
1. 确定常数 2. 识别类型
LINGO软件的求解过程
LINGO的文件类型
.LG4:LINGO格式的模型文件,保存了模型窗口中所能够看到
的所有文本和其他对象及其格式信息;
.LNG:文本格式的模型文件,不保存模型中的格式信息(如字
体、颜色、嵌入对象等);
.LDT:LINGO数据文件;
.LTF:LINGO命令脚本文件; .LGR:LINGO报告文件; .LTX: LINDO格式的模型文件;
用DEM,RP,OP,INV分别表示需求量、正常生产的产量、加班生 产的产量、库存量,则DEM,RP,OP,INV对每个季度都应该有一 个对应的值,也就说他们都应该是一个由4个元素组成的数组, 其中DEM是已知的,而RP,OP,INV是未知数。
问题的模型(可以看出是LP模型 )
目标函数是所有费用的和
集合的基本用法和LINGO模型的基本要素
例度理(2的解ASt帆LtArI船IiNbLu需GCteOO求)建公量的模司分概语需别念言要是。最决40重定条要下,的四60是个条理季,解度75集的条合帆,(船25生S条et产),量及这。其些下属需四性求个必季须 按时满足。每个季度正常的生产能力是40条帆船,每条船的生产 费用为400美元。如果加班生产,每条船的生产费用为450美元。 每个季度末,每条船的库存费用为20美元。假定生产提前期为0, 初始库存为10条船。如何安排生产可使总费用最小?

LINGO使用简介及简单线性规划模型的求解

LINGO使用简介及简单线性规划模型的求解
1
这些运算符的优先级由高到低为:
高 #not# ﹣(取反)

﹡/
﹢﹣
#eq# #ne# #gt# #ge# #lt# #le#
#and# #or#
低 <= = >=
1
数学函数
@abs(x)
返回x的绝对值
@sin(x)
返回x的正弦值,x采用弧度制
ห้องสมุดไป่ตู้
@cos(x)
返回x的余弦值
@tan(x)
1
集的类型
LINGO有两种:原始集(primitive set)和派生 集(derived set)。
一个原始集是由一些最基本的对象组成的。 一个派生集是用一个或多个其它集来定义的,
也就是说,它的成员来自于其它已存在的集。
1
定义原始集
为了定义一个原始集,必须详细声明: ·集的名字 ·可选,集的成员 ·可选,集成员的属性 定义一个原始集,用下面的语法: setname[/member_list/][:attribute_list];
注意:用“[]”表示该部分内容可选。
1
集合的定义
Setname是你选择的来标记集的名字,最好具 有较强的可读性。集名字必须严格符合标准命 名规则:以拉丁字母或下划线(_)为首字符, 其后由拉丁字母(A—Z)、下划线、阿拉伯 数字(0,1,…,9)组成的总长度不超过32 个字符的字符串,且不区分大小写。
flase #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为
flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true

LINGO使用教程

LINGO使用教程

L I N G O使用教程(总59页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除LINGO 使用教程LINGO 是用来求解线性和非线性优化问题的简易工具。

LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。

§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。

下面举两个例子。

例 如何在LINGO 中求解如下的LP 问题:⎪⎪⎩⎪⎪⎨⎧≥≤+≥≥++0,6002100350..32min212112121x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600;然后点击工具条上的按钮 即可。

例使用LINGO软件计算6个发点8个收点的最小费用运输问题。

产销单位运价如下表。

使用LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。

图论与网络流问题的LINGO求解技巧

图论与网络流问题的LINGO求解技巧

图论与网络流问题的LINGO 求解技巧我们介绍使用LINGO 求解图论与网络问题中的一些典型问题。

如最短路问题、最大流问题、关键路径问题、最优树问题,以及TSP 问题。

这里主要介绍使用LINGO 求解的方法,重在应用和解决问题。

1 最短路问题的Lingo 求解设图共有个节点,其赋权图的邻接矩阵为n n n w ×.ij w p =表示节点i 到j 的权值为.当为有向图时,p ji w w ij =;当为无向图时,和ij w ji w 分别由图得到,通常不一样。

当,表示节点i 与节点0ij w =j 不连通。

令0ii w =。

假设图的所有权值 0ij w ≥现求节点a 到节点b 的最短路,其线性规划模型为:模型一、决策变量:设1ij i j x i j ⎧=⎨⎩节点与节点连通节点与节点不连通目标函数为寻找一条节点到节点的通路,使其上权值和最小,故目标函数为:a b 11min .nnij ij i j Z w x ===∑∑1. 对节点恰有一条路出去,却不能有路回来,故有:a 11najj j ax=≠=∑ 且10nkak k a x=≠=∑2. 对节点恰有一条路到达,却不能有路出去,故有:b 11nkbk k bx=≠=∑ 且10nbjj j bx=≠=∑3. 对除起始点a 和目标点之外,其它点进入和出去的路是一样多(可都为0),则:b 11,nnkiijk j xx i a ===≠∑∑b4. 对不通的路不取,约束为:,1,2,ij ijx w i j ≤=L n总的线性规划模型为:11111111min .,10..10,1,2,,01n nij iji j nnki ijk j naj j j a n ka k k a n kb k k a nbj j j a ij ijijZ w x x x i a b x x s t x x x w i j x =====≠=≠=≠=≠=⎧=≠⎪⎪⎪=⎪⎪⎪⎪=⎪⎪⎪⎪=⎨⎪⎪⎪=⎪⎪⎪≤=⎪⎪=⎪⎪⎪⎩∑∑∑∑∑∑∑∑L 或n示例演示。

数学建模实验报告关于LINGO的解题方法及其思路分析

数学建模实验报告关于LINGO的解题方法及其思路分析

数学建模实验报告1.解析:此题属于0-1模型问题。

设队员序号为i ,泳姿为j ,记c ij 为队员i 第j 种泳姿的百米成绩,若选择队员i 参加泳姿j 的比赛,记x ij =1, 否则记xij =0;则有,目标函数为∑∑===4151j i ij ij x c Z Min ,每个人最多选泳姿为1,则有5,1,141=≤∑=i xj ij,每种泳姿有且仅有1人,则有4,1,151==∑=j xi ij。

若丁的蛙泳成绩退步及戊的自由泳成绩进步,则将c43的值和c54的值改变即可。

实验过程及运行结果如下:若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,计算结果如下:通过计算结果可知,在原数据的情况下,队伍的选择应该是甲参加自由泳,乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊不参加任何比赛,且最好的时间是253.2秒。

若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,则组成接力的比赛队伍调整为乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊参加自由泳,甲不参加任何比赛。

2.解析:此题属于线性规划问题。

已知某工厂用1A 、2A 两台机床加工1B 、2B 、3B 三种不同的零件,设1A 生产1B 、2B 、3B 的个数分别为1x 、2x 、3x ,2A 生产1B 、2B 、3B 的个数分别为4x 、5x 、6x ,则目标函数为min=1*2*1x +2*3*2x +3*5*3x +1*3*4x +1*3*5x +3*6*6x ;1A 加工的工时小于80小时,2A 加工的工时小于100小时,生产1B 、2B 、3B 的总数分别为70个、50个、20个。

实验过程及运行结果如下:通过计算结果可知,当1A 生产1B 、2B 、3B 的个数分别为68个、0个、4个,2A 生产1B 、2B 、3B 的个数分别为2个、50个、16个的时候,才能得到最低的成本640元。

用lingo求最大流问题

用lingo求最大流问题
最小截集为{(V1,V2,V3),(V4,V5,V6)}
实验总结: (1) 用标号法求最大流问题,最小截集的容量与最大流的流量相等。 (2) 最小截量是截集中所有弧的容量之和。
实验目的及要求: 掌握计划网络图的绘制以及关键路线法和计划协调技术的应用方法,至少掌握 一种网络计划技术软件的使用方法,提高应用网络计划技术方法解决实际问题 的实践动手能力。 实验内容: 用 Lingo 求解网络计划技术问题(写出求解的具体步骤)
实验过程: 1.确定网络计划技术问题 2.绘制计划网络图 3.用 Lingo 求解网络计划技术问题(写出求解的具体步骤) 4.对求解结果进行应用分析
实验习题计算: 用 lingo 求下图最大流问题
解: 运用软件 lingo11 求解最大流问题如下:
由上述运算结果可知: 该网络问题的最大流是 8,其中 V1-V2 的流量是 3,V1-V3 的流量是 5,
V2-V3 的流量是 0,V2-V4 的流量是 2,V2-V5 的流量是 1,V3-V5 的流量是 5 , V4-V6 的流量是 4 ,V5-V4 的流量是 2 ,V5-V6 的流量是 4。
《运筹学》课程实验报告五
学 院: 专 业: 班 级: 姓 名: 学 号: 指导老师:
班级
实验报告 学号
姓名

课程名称 运筹学 开课实验室
实验时间
实验项目名称 【实验项目五】网络计划技术综合性实验
实验性质
验证性( ) 综合性(√) 设计性( )
成绩
指导老师签名
实验条件: 硬件:计算机,软件:lingo11

LINGO使用简介及简单线性规划的求解

LINGO使用简介及简单线性规划的求解

j
1,2,3,4)
Model: sets: row/1..4/; arrange/1..4/; link(row,arrange):x,a; endsets data: a=56 74 61 63 63 69 65 71 57 77 63 67 55 76 62 62; enddata [OBJ]min=@sum(link(i,j):a(i,j)*x(i,j)); @for(arrange(j):@sum(row(i):x(i,j))=1); @for(arrange(i):@sum(row(j):x(i,j))=1); @for(link(i,j):@bin(x(i,j))); end
Member_list是集成员列表。如果集成员放 在集定义中,那么对它们可采取显式罗列 和隐式罗列两种方式。(显式列举法——列出全 部元素, 用逗号或空格分开隐式列举法—— 1..n)如果 集成员不放在集定义中,那么可以在随后 的数据部分定义它们。
集合定义形式
隐式成员列表格式 1..n
StringM.. StringN
xi
0 不做第i件事 n件事中必须做k件并只做k件事 x1 x2 xn k n件事中最多做k件事 x1 x2 xn k
n件事中至少做k件事 x1 x2 xn k 做第i件事的充要条件是做第j件事 xi x j 做第i件事的充要条件是不做第j件事 xi 1 x j 只在做了第i件事前提下才考虑是否做第j件事 x j xi
1.LINGO程序框架
集合段:集部分是LINGO模型的可选部分,在 LINGO模型中使用集之前,必须在集部分事先定 义。集部分以关键字“sets:”开始,以 “endsets”结束。注:一个集及其属性在模型约 束中被引用之前必须事先定义。

图论优化网络流模型

图论优化网络流模型

图论优化网络流模型Konigsberg 七桥问题:当Euler在1736年访问Konigsberg时,他发现当地的市民正从事一项非常有趣的消遣活动。

Konigsberg城中有一条名叫Pregel 的河流横经其中,在河上建有七座桥如图所示: 这项有趣的消遣活动是在星期六作一次走过所有七座桥的散步,每座桥只能经过一次而且起点与终点必须是同一地点。

数学模型:Euler把每一块陆地考虑成一个点,连接两块陆地的桥以线表示,便得如下的图形:Euler推出此种走法是不可能的。

他的论点是这样的,除了起点以外,每一次当一个人由一座桥进入一块陆地(或点)时,他(或她)同时也由另一座桥离开此点。

所以每行经一点时,计算两座桥(或线),从起点离开的线与最後回到始点的线亦计算两座桥,因此每一个陆地与其他陆地连接的桥数必为偶数。

七桥所成之图形中,没有一点含有偶数条数,因此上述的任务是不可能实现的。

图的定义:一个有序的二元数组(V,E)称为一个图,记作G =(V,E)。

其中V称为顶点集,E称为边。

若每个边对应一个数F,称(V,E,F)为一个赋权。

如果两点是有序的,则称有向图,否则,无向图。

定义经过G的每条边的迹叫做 G的Euler迹;闭的Euler迹叫做Euler回路或 G回路;含Euler回路的图叫做Euler图。

直观地讲,Euler图就是从一顶点出发每边恰通过一次能回到出发点的那种图,即不重复地行遍所有的边再回到出发点。

定理G是Euler图的充分必要条件是G连通且每顶点皆偶次。

定义包含G的每个顶点的轨叫做Hamilton(哈密顿)轨;闭的Hamilton轨叫做Hamilton圈;含Hamilton圈的图叫做Hamilton图。

直观地讲,Hamilton图就是从一顶点出发每顶点恰通过一次能回到出发点的那种图,即不重复地行遍所有的顶点再回到出发点。

例1 最短路问题(SPP-shortest path problem)一名货柜车司机奉命在最短的时间内将一车货物从甲地运往乙地。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图论与网络流问题的LINGO 求解技巧我们介绍使用LINGO 求解图论与网络问题中的一些典型问题。

如最短路问题、最大流问题、关键路径问题、最优树问题,以及TSP 问题。

这里主要介绍使用LINGO 求解的方法,重在应用和解决问题。

1 最短路问题的Lingo 求解设图共有个节点,其赋权图的邻接矩阵为n n n w ×.ij w p =表示节点i 到j 的权值为.当为有向图时,p ji w w ij =;当为无向图时,和ij w ji w 分别由图得到,通常不一样。

当,表示节点i 与节点0ij w =j 不连通。

令0ii w =。

假设图的所有权值 0ij w ≥现求节点a 到节点b 的最短路,其线性规划模型为:模型一、决策变量:设1ij i j x i j ⎧=⎨⎩节点与节点连通节点与节点不连通目标函数为寻找一条节点到节点的通路,使其上权值和最小,故目标函数为:a b 11min .nnij ij i j Z w x ===∑∑1. 对节点恰有一条路出去,却不能有路回来,故有:a 11najj j ax=≠=∑ 且10nkak k a x=≠=∑2. 对节点恰有一条路到达,却不能有路出去,故有:b 11nkbk k bx=≠=∑ 且10nbjj j bx=≠=∑3. 对除起始点a 和目标点之外,其它点进入和出去的路是一样多(可都为0),则:b 11,nnkiijk j xx i a ===≠∑∑b4. 对不通的路不取,约束为:,1,2,ij ijx w i j ≤=L n总的线性规划模型为:11111111min .,10..10,1,2,,01n nij iji j nnki ijk j naj j j a n ka k k a n kb k k a nbj j j a ij ijijZ w x x x i a b x x s t x x x w i j x =====≠=≠=≠=≠=⎧=≠⎪⎪⎪=⎪⎪⎪⎪=⎪⎪⎪⎪=⎨⎪⎪⎪=⎪⎪⎪≤=⎪⎪=⎪⎪⎪⎩∑∑∑∑∑∑∑∑L 或n示例演示。

例1 现有11个点的无向图见图14.1,求点1到点11的最短路。

图14.1 无向图最短路示意图其Lingo 实现程序为:!最短路程序; model: sets:point/1..11/;road(point,point):W,X; endsets data:W=0,2,8,1,0,0,0,0,0,0,0, 2,0,6,0,1,0,0,0,0,0,0, 8,6,0,7,5,1,2,0,0,0,0,1,0,7,0,0,0,9,0,0,0,0, 0,1,5,0,0,3,0,2,9,0,0, 0,0,1,0,3,0,4,0,6,0,0, 0,0,2,9,0,4,0,0,3,1,0, 0,0,0,0,2,0,0,0,7,0,9, 0,0,0,0,9,6,3,7,0,1,2, 0,0,0,0,0,0,1,0,1,0,4, 0,0,0,0,0,0,0,9,2,4,0; enddatamin=@sum(road(i,j):w(i,j)*x(i,j)); !最短路;@for(point(i)|i#ne#1#and#i#ne#11:@sum(point(k):x(k,i))=@sum(point(j):x(i,j)));@sum(point(j)|j#ne#1:x(1,j))=1; !起始点要出去; @sum(point(k)|k#ne#1:x(k,1))=0; !不能回到起始点; @sum(point(k)|k#ne#11:x(k,11))=1; !要到达目标点; @sum(point(j)|j#ne#11:x(11,j))=0; !目标点不能出去;@for(road(i,j):x(i,j)<=W(i,j)); !不能到达的路不考虑; @for(road(i,j):@bin(x(i,j))); end结果为minZ=13x(1,2)=1 x(2,5)=1; x(5,6)=1 x(6,3)=1 x(3,7)=1 x(7,10)=1 x(10,9)=1 x(9,11)=1 故路径为1Æ2Æ5Æ6Æ3Æ7Æ10Æ9Æ11模型二:不必考虑起始点不回去,结束点不出去,统一考虑所有中间点不出现圈,添加约束为:.1i j ij u u n x n −+≤−总模型为:111111min.,1..1.1,1,2,,1,2,,01n nij iji jn nki ijk jnajjj ankbkk ai j ijij ijijZ w xx x i a bxs t xu u n x n i j nx w i j nx=====≠=≠=⎧=≠⎪⎪⎪=⎪⎪⎪⎪⎨=⎪⎪⎪−+≤−=⎪⎪≤=⎪=⎪⎩∑∑∑∑∑∑LL或,上面程序为:!最短路程序;model:sets:point/1..11/:u;road(point,point):W,X;endsetsdata:W=0,2,8,1,0,0,0,0,0,0,0,2,0,6,0,1,0,0,0,0,0,0,8,6,0,7,5,1,2,0,0,0,0,1,0,7,0,0,0,9,0,0,0,0,0,1,5,0,0,3,0,2,9,0,0,0,0,1,0,3,0,4,0,6,0,0,0,0,2,9,0,4,0,0,3,1,0,0,0,0,0,2,0,0,0,7,0,9,0,0,0,0,9,6,3,7,0,1,2,0,0,0,0,0,0,1,0,1,0,4,0,0,0,0,0,0,0,9,2,4,0;enddatamin=@sum(road(i,j):w(i,j)*x(i,j)); !最短路;n=@size(point);@for(point(i)|i#ne#1#and#i#ne#11:@sum(point(k):x(k,i))=@sum(point(j): x(i,j)));@sum(point(j)|j#ne#1:x(1,j))=1; !起始点要出去;@sum(point(k)|k#ne#11:x(k,11))=1; !要到达目标点;@for(road(i,j):u(i)-u(j)+n*x(i,j)<=n-1); !不出现圈;@for(road(i,j):x(i,j)<=W(i,j)); !不能到达的路不考虑;@for(road(i,j):@bin(x(i,j)));end2最大流问题的Lingo 求解设有向图共有个节点,其赋权图的容量矩阵为n n n C ×.表示节点i 到ij c j 的允许的最大容量。

现求根节点1到节点n 的最大流量。

其线性规划模型为:决策变量:设ij f 表示节点i 到节点j 的实际流量。

目标函数为:max Z flow =1. 从节点1流出的就是流量,故有:12nj j flow f ==∑2. 对终点流入的也是流量,故有:11n in i flow f −==∑3.中间所有点满足流入与流出相等,约束为:112,3,,1nnkiijk j ff i n ====∑∑L −4.每个节点上的流量不超过容量 ,,1,2,,ij ijf c i j ≤=L n总的线性规划模型为:121111max ..2,3,,1,,1,2,,njj n ini nn ki ij k j ijij Z flowflow f flow f s t f f i n f c i j n =−====⎧=⎪⎪⎪=⎪⎨⎪⎪==⎪⎪≤=⎩∑∑∑∑L L − 示例演示。

例2 有6个点的有向图见图14.2,求起始点1到终点6的最大流量。

图14.2 有向图初始网络其Lingo实现程序为:!最大流问题;model:sets:point/1..6/;link(point,point):C,f;endsetsdata:C=0,8,7,0,0,0,0,0,5,9,0,0,0,0,0,0,9,0,0,0,2,0,0,5,0,0,0,6,0,10,0,0,0,0,0,0;enddatamax=flow;n=@size(point);flow=@sum(point(j):f(1,j)); !流量为从起始点流出的量;gui=@sum(point(i):f(i,n)); !流入终点的量;gui=flow;!中间各点流入与流出的量相等;@for(point(i)|i#ne#1#and#i#ne#n:@sum(point(j):f(i,j))=@sum(point(k):f (k,i)));@for(link(i,j):f(i,j)<=c(i,j));end结果为maxZ=14F(1,2)=7 F(1,3)=7 F(2,3)=2 F(2,4)=5 F(3,5)=9F( 4,6)=5 F(5,6)=9结果见图14.3。

图14.3 计算结果图3 关键路线(CPM)问题的Lingo 求解计划评审方法(PERT)和关键路线法(CPM)是网络分析的重要部分,在中国又称为统筹方法(schedule methof)。

这里采用最短路的思想利用Lingo 求解关键路线。

以获得最少完成时间。

设有项作业等待完成。

作业号分别为1,。

每项作业需要完成的时间为。

第i 项作业的紧前作业有。

设虚拟的开始作业为,结束作业为。

号作业完成时间为0。

无紧前作业的作业号的紧前作业为,结束作业的紧前作业为其后无作业的作业号。

n 2,,n L (1,2,,i t i n =L )12,,,i k k k L 1n +2n +1n +1n +2n +该图共有个节点,其赋权图的邻接矩阵为2n +(2)(2)n n w +×+.ij i w t =表示作业i 完成的时间为。

当,表示作业i 与作业i t 0ij w =j 无依赖关系。

求完成作业的最少时间,就是求从起始点到结束点的最长路,其线性规划模型为: 1n +2n +决策变量:设10ij i j x i j ⎧=⎨⎩作业与作业紧连作业与作业不紧连目标函数为寻找一条从起始点到结束点1n +2n +的最长路,使其上权值和最大,故目标函数为:2211max .n n ij ij i j Z w x ++===∑∑1. 对起始点恰有一条路出去,故有:1n +21,111n n jj j n x++=≠+=∑2. 对终点恰有一条路到达,故有:2n +2,2121n k n k k n x ++=≠+=∑3. 对除起始点1n +和终点之外,其它点进入和出去的路是一样多(可都为0),则:2n +22111,2n n kiijk j xx i n n ++===≠+∑∑+4. 所有中间点不出现圈,添加约束为: .1i j ij u u n x n −+≤−总模型为:2211221121,112,212min .1,21..1.1,1,2,,,1,201n n ij iji j n n ki ijk j n n j j j n n k n kk n i j ij ij Z w x x x i n n x s t x u u n x n i j n n n x ++==++==++=≠+++=≠+=⎧=≠++⎪⎪⎪=⎪⎪⎪⎪=⎨⎪⎪−+≤−=++⎪⎪=⎪⎪⎪⎩∑∑∑∑∑∑L 或例3 1991年上海市大学生数学建模竞赛B 题第一问:现有14件工件等待在一台机床上加工,某些工件的加工顺序必须安排在另外一些工件完工以后才能开始,第j 号工件的加工时间j t 及先期必须完工的工件号i 由表1给出: 表14.4 工件加工时间与次序表 工件号1 2 3 4 5 6 7 8 9 1011 12 13 14 j t20 28 25 16 42 12 32 10 24 2040 24 36 16前期工件号3,4 5,7,85,9 -- 10,113,8,94 3,5,74 --4,76,7,14 5,12 1,2,6(1)给出一个加工顺序,则确定了每个工件的完工时间(包括等待与加工两个阶段)。

相关文档
最新文档