《运筹学B》实验指导书(第二版)南昌航空大学数信学院应用数学系邱根胜编2011年09月目录实验1、用Lingo求解最短路、最小树问题 (4)实验2、用Lingo求解最大流、最小费用流问题 (11)实验3、利用Lingo求解排队与存贮模型 (16)实验4、利用数学软件求解对策论问题 (30)实验5、运筹学综合应用 (37)一、授课对象四年制本科数学与应用数学、信息与计算科学专业。
二、课程类型专业选修课三、实验的性质、目的与任务1、实验性质《运筹学B》实验是一门重要的专业课实验。
要求通过上机实验,使学生了解运筹学中的网络优化、排队论、对策论等在实际中的应用,了解运筹学解决实际问题的基本方法,培养建模能力和计算机应用能力。
2、实验的目的培养与提高学生分析问题和解决问题的能力、自学能力,利用运筹学和数学软件求解实际问题的能力,以及程序设计能力。
3、实验的任务应用Matlab、lindo/lingo求解网络优化模型、排队与存储模型、对策论模型等,加深对运筹学方法的理解,并初步具有利用运筹学和计算机软件解决实际问题的能力。
五、实验内容与实验要求实验一、用Lingo求解最短路、最小树问题实验要求:1、了解Lingo软件求解一般数学规划的方法;2、理解最短路问题和最小树的数学规划模型。
实验二、用Lingo求解最大流、最小费用流问题实验要求:1、熟悉Lingo软件求解一般数学规划的方法;2、熟悉最大流、最小费用流问题的数学规划模型;3、掌握利用Lingo求解最大流、最小费用流问题的数学模型的用法。
实验三、利用Lingo求解排队与存贮模型实验要求:1、理解排队论与存贮论中的几个基本模型;2、利用Lingo求解排队与存贮模型。
实验四、利用数学软件求解对策论问题实验要求:1、了解将对策论模型转化为数学规划模型的方法;2、利用Lingo求解对策论模型。
实验四、运筹学综合应用本实验为综合性实验,主要内容为对一个实际问题,能利用运筹学建立模型,并利用计算机编程求解,培养学生数学建模的能力和计算机应用能力。
实验要求:1、根据要求选取一个实际问题,利用运筹学知识,建立实际问题的数学模型;2、利用数学软件求解模型,并对结果进行分析、讨论,最后给出问题的解决方案;3、写出实验报告。
注:从12学时的实验内容中选择8学时的实验内容,其中有一个综合性实验。
六、主要参考书[1] 谢金星,薛毅编著,《优化建模与LINDO/LINGO》,清华大学出版社,2005年7月。
[2]《运筹学》教材编写组编,《运筹学》(第三版),清华大学出版社,2005年6月,[3] 姜启源,邢文训,谢金星等,《大学数学实验》,清华大学出版社,2005年。
[4] 胡运权主编,《运筹学教程》(第三版),清华大学出版社,2007年。
实验一:用Lingo 求解最短路、最小树问题及旅行商问题 一、实验目的通过本实验熟悉Lingo 软件中的集合、运算、编辑等命令,了解最短路、最小生成树和旅行商问题的数学规划模型;能利用最短路和最小生成树建立实际问题的数学模型,并利用Lingo 求解。
二、例题(1)最短路问题 假设有向图有n 个顶点。
现需要求从顶点V 1到顶点V n 的最短路。
设决策变量为ij x ,当1=ij x ,说明弧(V i ,V j )位于顶点V 1到顶点V n 的最短路上;否则0=ij x ,则求V1到V n 的最短路的数学模型为:(P1) EV V x ni ni i x x t s x wj i ij nE V V j ji nE V V j ij EV V ijiji j j i j i ∈≥⎪⎩⎪⎨⎧≠=-==-∑∑∑∈=∈=∈),(,0,1,0,11,1..min),(1),(1),(其中E 为有向图的所有弧的集合,ij w 为弧(Vi,Vj)的权.例题1-1 在下图中,用点表示城市,现有A ,B1,B2,C1,C2,C3,D 共7个城市,点与点之间的连线表示城市间有道路相连,连线旁的数字表示道路的长度。
现计划从城市A到称市D 铺设一条天然气管道,请设计出最小价格管道铺设方案。
解:Lingo 求解程序为:! We have a network of 7 cities. We want to findthe length of the shortest route from city 1 to city 7; sets :C1! Here is our primitive set of seven cities; cities/A, B1, B2, C1, C2, C3, D/;! The Derived set "roads" lists the roads that exist between the cities; roads(cities, cities)/A,B1 A,B2 B1,C1 B1,C2 B1,C3 B2,C1 B2,C2 B2,C3 C1,D C2,D C3,D/: w, x; endsets data :! Here are the distances that correspond to above links; w = 2 4 3 3 1 2 3 1 1 3 4; enddatan=@size (cities); ! The number of cities; min =@sum (roads: w*x);@for (cities(i) | i #ne# 1 #and# i #ne# n:@sum (roads(i,j): x(i,j)) = @sum (roads(j,i): x(j,i))); @sum (roads(i,j)|i #eq# 1 : x(i,j))=1;运行得到非零解为:X( A, B1) 1.000000 0.000000 X( B1, C1) 1.000000 0.000000 X( C1, D) 1.000000 0.000000 即最短路为:A-B1-C1-D ,最短路长为6(2)最小生成树问题设无向图是连通的,且互不包有圈,则称该图为树。
如果有向图中任何一点都可由某一个顶点V 1到达,则称1V 为图G 的根。
如果有向图G 有根。
且关于它的基础图是树,则称G 为有向树。
若'G 是包含G 的全部顶点的子图,它又是树,则称'G 的生成树。
若图(,)G V E 是一个连通赋权图,T 是G 的一颗生成树,T 的每条边所赋权的和称为树T 的权,称具有最小权的生成树为G 的最小生成树。
例1-2 假设某电力公司在7个村庄之间架设电线,各村庄之间的距离如下图所示,试求出使电线总长度最小的架线方案。
解:节点1表示树根,点i 与j 的距离用ij c 表示,当两个节点之间没有线路相通时,两点之间的距离用很大的数M 表示。
引入0-1变量ij x :)(1j i x ij ≠=表示从i 到j 的边在架设线路中,)(0j i x ij ≠=表示该边不在线路中,则架线方案可以归结为求上述赋权图的最小生成树。
数学模型可表示为[5]:(p2)111121min 1,2,3,...,,1,..0,11,2,3,...,.(2)(1)(3),1,...,,2,...,,nnij iji j nij i n j j i j k kj kj jk z c x x j n i j x s t u u n i n u u x n x n x k n j n j k =====⎧==≠⎪⎪⎪⎪≥⎨⎪⎪=≤≤-=⎪≥+---+-==≠⎪⎩∑∑∑∑其中u 是整数约束变量,ij x 是0-1变量。
Lingo 求解程序:model : sets :city /1..7/:u;link(city,city):dist,x; endsetsn=@size (city); data :dist=0 3 4 7 100 100 100 3 0 3 2 4 100 100 4 3 0 100 5 7 100 7 2 100 0 2 100 6 100 4 5 2 0 1 4 100 100 7 100 1 0 2 100 100 100 6 4 2 0; enddatamin =@sum (link:dist*x); u(1)=0;@for (link:@bin (x));@for (city(k)|k #GT# 1:@sum (city(i)|i #ne# k:x(i,k))=1; @for (city(j)|j #gt# 1 # and # j #ne#k:u(j)>=u(k)+x(k,j)-(n-2)*(1-x(k,j))+(n-3)*x(j,k););); @sum (city(j)|j # GT # 1:x(1,j))>=1;@for (city(k)|k #gt# 1:u(k)>=1;u(k)<=n-1-(n-2)*x(1,k););求解报告为(部分):Global optimal solution found at iteration: 15 Objective value: 13.00000Variable Value Reduced CostN 7.000000 0.000000 U( 2) 1.000000 0.000000 U( 3) 2.000000 0.000000 U( 4) 2.000000 0.000000 U( 5) 3.000000 0.000000 U( 6) 4.000000 0.000000 U( 7) 5.000000 0.000000X( 1, 2) 1.000000 3.000000 X( 2, 3) 1.000000 3.000000 X( 2, 4) 1.000000 2.000000 X( 4, 5) 1.000000 2.000000 X( 5, 6) 1.000000 1.000000 X( 6, 7) 1.000000 2.000000从上述求解报告得到最优架设线路为1-2-3,2-4-5-6-7,总长度为13。
另一个不含圈的模型为[8]:∑∑==n i nj ij ij x c 11minnj i u x n j i j i n nx u u nj xx t s j ij ij j i nji i ijnj j ,...,2,1,,0},1,0{,...,2,1,,,1,...,3,2,1;1..121=≥∈=≠-≤+-==≥∑∑≠==model : sets :city /1..7/:u;link(city,city):dist,x; endsetsn=@size (city); data :dist=0 3 4 7 100 100 100 3 0 3 2 4 100 100 4 3 0 100 5 7 100 7 2 100 0 2 100 6 100 4 5 2 0 1 4 100 100 7 100 1 0 2 100 100 100 6 4 2 0; enddatamin =@sum (link:dist*x);@for (city(j)|j #GT# 1:@sum (city(i)|i #ne# j:x(i,j))=1;);@sum (city(j)|j # GT # 1:x(1,j))>=1;@for (link(i,j)|i #ne# j:u(i)-u(j)+n*x(i,j)<=n-1); @for (link:@bin (x)); end得到结果和前面相同,但运行时间稍长.比前一个程序较稳定. 例题1.3 旅行商问题,又称为货郎但问题(文[1]p244例题11)。