LINGO求解运输问题
- 格式:doc
- 大小:68.00 KB
- 文档页数:3
数学与计算科学学院实验报告
实验项目名称运输问题求解
所属课程名称运筹学B
实验类型综合
实验日期 2014年10月25日
姓名张丽芬
学号 0102
成绩
附录1:源程序
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致.
2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求.
3.实验原理:简要说明本实验项目所涉及的理论知识.
4.实验环境:实验用的软、硬件环境.
5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容.概括整个实验过程.
对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作.对于设计性和综合性实验,在上述内容
基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明.对于创新性实验,还应注明其创新点、特色.
6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析.
7.实验结论(结果):根据实验过程中得到的结果,做出结论.
8.实验小结:本次实验心得体会、思考和建议.
9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价.。
运输问题课程设计lingo一、教学目标本章节的教学目标是让学生掌握运输问题的基本概念、Lingo模型的构建及求解方法。
通过本章节的学习,学生应能够:1.理解运输问题的背景和意义,掌握运输问题的基本概念和分类。
2.学会使用Lingo软件构建运输问题的模型,并运用该软件求解运输问题。
3.能够运用所学知识分析和解决实际生活中的运输问题。
二、教学内容本章节的教学内容主要包括以下几个部分:1.运输问题的基本概念:运输问题的发展历程、基本概念、分类及应用领域。
2.Lingo软件的使用:Lingo软件的界面及功能、模型的构建、求解及优化。
3.运输问题的Lingo模型求解:单源、多源、循环、分配等类型的运输问题的Lingo模型构建及求解。
4.实际案例分析:分析现实生活中遇到的运输问题,运用Lingo软件求解,并提出解决方案。
三、教学方法为了达到本章节的教学目标,将采用以下教学方法:1.讲授法:讲解运输问题的基本概念、Lingo软件的使用方法及运输问题的Lingo模型求解方法。
2.案例分析法:分析实际案例,引导学生运用所学知识解决实际问题。
3.讨论法:学生分组讨论,培养学生的合作能力和解决问题的能力。
4.实验法:让学生动手操作Lingo软件,亲自构建和求解运输问题模型,提高学生的实际操作能力。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《运输问题与Lingo建模》。
2.参考书:关于运输问题、Lingo软件使用的相关书籍。
3.多媒体资料:运输问题案例视频、Lingo软件操作演示视频。
4.实验设备:计算机、投影仪等。
五、教学评估本章节的教学评估将采用多元化的评估方式,全面、客观地评价学生的学习成果。
评估方式包括:1.平时表现:通过课堂参与、提问、讨论等环节,记录学生的表现,占总评的30%。
2.作业:布置与本章节内容相关的作业,要求学生独立完成,占总评的20%。
3.考试:设计针对本章节内容的考试,测试学生对运输问题及Lingo建模的掌握程度,占总评的50%。
用lingo解决运输问题(一)实验目的1. 运输问题求解的编程实现2(掌握使用matlab、Lingo、Excel的求解功能求解运输问题,并对结果进行分析。
(二)实验内容《运筹学》清华三版P98页 3.3题Lingo程序代码及运行结果(选取部分):<1>3.3(1):程序代码:model:sets:xiao/1..4/:s;chan/1..3/:h;link(chan,xiao):x,y;endsetsdata:y=3 7 6 42 43 24 3 8 5;h=5 2 3;s=3 3 2 2;enddatamin=@sum(link:x*y);@for(xiao(j):@sum(chan(i):x(i,j))=s(j));@for(chan(i):@sum(xiao(j):x(i,j))=h(i)); 运行结果及结果分析:Objective value: 32.00000产地1分别将数量为3和2的产品运往销地甲和丁;产地2将数量为2的产品运往销地丙;产地3将数量为3的产品运往销地乙;该运输问题的最小费用为32.<2>3.3(2):程序代码:model:sets:xiao/1..4/:s;chan/1..3/:h;link(chan,xiao):x,y; endsetsdata:y=10 6 7 1216 10 5 95 4 10 10;h=4 9 4;s=5 2 4 6;enddatamin=@sum(link:x*y); @for(xiao(j):@sum(chan(i):x(i,j))=s(j));@for(chan(i):@sum(xiao(j):x(i,j))=h(i));运行结果及结果分析:Objective value: 118.0000产地1将数量为1、2、1的产品分别运往销地甲、乙、丙;产地将数量为3、6的产品运往销地丙、丁;产地3将数量为4的产品运往销地甲。
用lingo解决运输问题(一)实验目的1. 运输问题求解的编程实现2.掌握使用matlab、Lingo、Excel的求解功能求解运输问题,并对结果进行分析。
(二)实验内容《运筹学》清华三版P98页 3.3题Lingo程序代码及运行结果(选取部分):<1>3.3(1):程序代码:model:sets:xiao/1..4/:s;chan/1..3/:h;link(chan,xiao):x,y;endsetsdata:y=3 7 6 42 43 24 3 8 5;h=5 2 3;s=3 3 2 2;enddatamin=@sum(link:x*y);@for(xiao(j):@sum(chan(i):x(i,j))=s(j));@for(chan(i):@sum(xiao(j):x(i,j))=h(i));运行结果及结果分析:Objective value: 32.00000产地1分别将数量为3和2的产品运往销地甲和丁;产地2将数量为2的产品运往销地丙;产地3将数量为3的产品运往销地乙;该运输问题的最小费用为32.<2>3.3(2):model:sets:xiao/1..4/:s;chan/1..3/:h;link(chan,xiao):x,y;endsetsdata:y=10 6 7 1216 10 5 95 4 10 10;h=4 9 4;s=5 2 4 6;enddatamin=@sum(link:x*y);@for(xiao(j):@sum(chan(i):x(i,j))=s(j));@for(chan(i):@sum(xiao(j):x(i,j))=h(i));运行结果及结果分析:Objective value: 118.0000产地1将数量为1、2、1的产品分别运往销地甲、乙、丙;产地将数量为3、6的产品运往销地丙、丁;产地3将数量为4的产品运往销地甲。
最小费用为118.<3>3.3(3):程序代码:model:sets:xiao/1..5/:s;chan/1..4/:h;link(chan,xiao):x,y;endsetsdata:y=10 20 5 9 102 10 8 30 61 20 7 10 4h=5 6 2 9;s=4 4 6 2 4;enddatamin=@sum(link:x*y);@for(xiao(j):@sum(chan(i):x(i,j))=s(j));@for(chan(i):@sum(xiao(j):x(i,j))<=h(i));运行结果及结果分析:Objective value: 90.00000产地1分别将数量为1、2的产品运往销地丙、丁;产地2分别将数量为4、2的产品运往销地甲、戊;产地3将数量为2的产品运往销地戊;产地4分别将数量为4、5的产品运往销地乙、丙;最小运费为90.<4>3.3(4):程序代码:model:sets:xiao/1..5/:s;chan/1..5/:h;link(chan,xiao):x,y;endsetsdata:y=10 18 29 13 2213 10000 21 14 160 6 11 3 100009 11 23 18 1924 28 36 30 34;h=100 120 140 80 60;s=100 120 100 60 80;enddatamin=@sum(link:x*y);@for(xiao(j):@sum(chan(i):x(i,j))=s(j));@for(chan(i):@sum(xiao(j):x(i,j))<=h(i));运行结果及结果分析:Objective value: 5520.000产地1将数量为100的产品运往销地甲;产地2分别将数量为40、80的产品运往销地丙、戊;产地3分别将数量为的产品运往销地乙、丙、丁;产地4将数量为80的产品运往销地乙;产地5将数量为20的产品运往销地乙。
运筹学实例分析及lingo 求解一、线性规划某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。
各供货仓库到8个客户处的单位货物运输价见表试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。
解:设ijx 表示从第i 个仓库到第j 个客户的货物运量。
ij c表示从第i 个仓库到第j 个客户的单位货物运价,i a 表示第i 个仓库的最大供货量,j d 表示第j 个客户的订货量。
目标函数是使总运输费用最少,约束条件有三个:1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束数学模型为:∑∑===6181)(min i j ijij x c x f⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≥===≤∑∑==08,,2,1,6,2,1,,..6181ij j i ij i j ij x j d x i a x t s 编程如下:model : Sets :Wh/w1..w6/:ai; Vd/v1..v8/:dj;links(wh,vd):c,x;endsetsData:ai=60,55,51,43,41,52;dj=35,37,22,32,41,32,43,38;c=6,2,6,7,4,2,5,94,9,5,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;EnddataMin=@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));endGlobal optimal solution found.Objective value: 664.0000Total solver iterations: 0Variable Value Reduced Cost AI( W1) 60.00000 0.000000 AI( W2) 55.00000 0.000000 AI( W3) 51.00000 0.000000 AI( W4) 43.00000 0.000000 AI( W5) 41.00000 0.000000 AI( W6) 52.00000 0.000000 DJ( V1) 35.00000 0.000000 DJ( V2) 37.00000 0.000000 DJ( V3) 22.00000 0.000000 DJ( V4) 32.00000 0.000000 DJ( V5) 41.00000 0.000000 DJ( V6) 32.00000 0.000000 DJ( V7) 43.00000 0.000000 DJ( V8) 38.00000 0.000000 C( W1, V1) 6.000000 0.000000 C( W1, V2) 2.000000 0.000000 C( W1, V3) 6.000000 0.000000 C( W1, V4) 7.000000 0.000000 C( W1, V5) 4.000000 0.000000 C( W1, V6) 2.000000 0.000000 C( W1, V7) 5.000000 0.000000C( W2, V1) 4.000000 0.000000 C( W2, V2) 9.000000 0.000000 C( W2, V3) 5.000000 0.000000 C( W2, V4) 3.000000 0.000000 C( W2, V5) 8.000000 0.000000 C( W2, V6) 5.000000 0.000000 C( W2, V7) 8.000000 0.000000 C( W2, V8) 2.000000 0.000000 C( W3, V1) 5.000000 0.000000 C( W3, V2) 2.000000 0.000000 C( W3, V3) 1.000000 0.000000 C( W3, V4) 9.000000 0.000000 C( W3, V5) 7.000000 0.000000 C( W3, V6) 4.000000 0.000000 C( W3, V7) 3.000000 0.000000 C( W3, V8) 3.000000 0.000000 C( W4, V1) 7.000000 0.000000 C( W4, V2) 6.000000 0.000000 C( W4, V3) 7.000000 0.000000 C( W4, V4) 3.000000 0.000000 C( W4, V5) 9.000000 0.000000 C( W4, V6) 2.000000 0.000000 C( W4, V7) 7.000000 0.000000 C( W4, V8) 1.000000 0.000000 C( W5, V1) 2.000000 0.000000 C( W5, V2) 3.000000 0.000000 C( W5, V3) 9.000000 0.000000 C( W5, V4) 5.000000 0.000000 C( W5, V5) 7.000000 0.000000 C( W5, V6) 2.000000 0.000000 C( W5, V7) 6.000000 0.000000 C( W5, V8) 5.000000 0.000000 C( W6, V1) 5.000000 0.000000 C( W6, V2) 5.000000 0.000000 C( W6, V3) 2.000000 0.000000 C( W6, V4) 2.000000 0.000000 C( W6, V5) 8.000000 0.000000 C( W6, V6) 1.000000 0.000000 C( W6, V7) 4.000000 0.000000 C( W6, V8) 3.000000 0.000000 X( W1, V1) 0.000000 5.000000 X( W1, V2) 19.00000 0.000000 X( W1, V3) 0.000000 5.000000X( W1, V5) 41.00000 0.000000 X( W1, V6) 0.000000 2.000000 X( W1, V7) 0.000000 2.000000 X( W1, V8) 0.000000 10.00000 X( W2, V1) 1.000000 0.000000 X( W2, V2) 0.000000 4.000000 X( W2, V3) 0.000000 1.000000 X( W2, V4) 32.00000 0.000000 X( W2, V5) 0.000000 1.000000 X( W2, V6) 0.000000 2.000000 X( W2, V7) 0.000000 2.000000 X( W2, V8) 0.000000 0.000000 X( W3, V1) 0.000000 4.000000 X( W3, V2) 11.00000 0.000000 X( W3, V3) 0.000000 0.000000 X( W3, V4) 0.000000 9.000000 X( W3, V5) 0.000000 3.000000 X( W3, V6) 0.000000 4.000000 X( W3, V7) 40.00000 0.000000 X( W3, V8) 0.000000 4.000000 X( W4, V1) 0.000000 4.000000 X( W4, V2) 0.000000 2.000000 X( W4, V3) 0.000000 4.000000 X( W4, V4) 0.000000 1.000000 X( W4, V5) 0.000000 3.000000 X( W4, V6) 5.000000 0.000000 X( W4, V7) 0.000000 2.000000 X( W4, V8) 38.00000 0.000000 X( W5, V1) 34.00000 0.000000 X( W5, V2) 7.000000 0.000000 X( W5, V3) 0.000000 7.000000 X( W5, V4) 0.000000 4.000000 X( W5, V5) 0.000000 2.000000 X( W5, V6) 0.000000 1.000000 X( W5, V7) 0.000000 2.000000 X( W5, V8) 0.000000 5.000000 X( W6, V1) 0.000000 3.000000 X( W6, V2) 0.000000 2.000000 X( W6, V3) 22.00000 0.000000 X( W6, V4) 0.000000 1.000000 X( W6, V5) 0.000000 3.000000 X( W6, V6) 27.00000 0.000000 X( W6, V7) 3.000000 0.000000Row Slack or Surplus Dual Price 1 664.0000 -1.000000 2 0.000000 3.000000 3 22.00000 0.000000 4 0.000000 3.000000 5 0.000000 1.000000 6 0.000000 2.000000 7 0.000000 2.000000 8 0.000000 -4.000000 9 0.000000 -5.000000 10 0.000000 -4.000000 11 0.000000 -3.000000 12 0.000000 -7.000000 13 0.000000 -3.000000 14 0.000000 -6.000000 15 0.000000 -2.000000由以上结果可以清楚的看到由各仓库到各客户处的货物调运数量,由此得出的符合条件的最佳运货方案,而使运费最低,最低为664。
一.实验目的
1、学会使用LINGO 软件求解运输问题的步骤与方法。
2、掌握使用LINGO 对运输问题的求解功能,并对结果进行分析。
二.实验内容
1.已知某企业有甲、乙、丙三个分厂生产一种产品,其产量分别为7、9、7个单位,需运往A 、B 、C 、D 四个门市部,各门市部需要量分别为3、5、7、8个单位。
已知单位运价如下表。
试确定运输计划使总运费最少。
2.现在要在五个工人中确定四个人来分别完成四项工作中的一项工作。
由于每个工人的技术特长不同,他们完成各项工作所需的工时也不同。
每个工人完成各项工作所需工时如下表所示,试找出一个工作分配方案,使总工时最小。
三. 模型建立
1.由题设知,总产量为:7+9+7=23个单位,总销量为:3+5+7+8=23个单位,所以这是一个产销平衡的运输问题。
设)4,3,2,1;3,2,1(==j i x ij 代表从第i 个产地运往第j 个销地的数量,z 为总运费。
i a 表示第i 个产地的产量,j b 表示第j 个销地的销量ij c 表示从第i 个产地运往第j 个销地的单位产
品运输费用。
则该问题的数学模型为:
3
4
1
1
4
13
1
max 0,1,2,3;1,2,3,4ij ij
i j ij i j ij j i ij Z c x x a x b x i j =====⎧=⎪⎪⎪=⎨⎪⎪≥==⎪⎩∑
∑
∑∑
2. 设0-1变量,1,0ij i x i ⎧=⎨⎩当第个人完成某j 项工作
,当第个人不完成某j 项工作
则该问题的数学模型为:
5
4
115
141
min 1,1,01ij ij
i j ij i ij j ij Z c x x j x i x i j =====⎧= =1,2,3,4⎪⎪⎪
= = 1,2,3,4,5⎨⎪⎪= =1,2,3,4,5;=1,2,3,4⎪⎩
∑∑∑∑或,
四. 模型求解(含经调试后正确的源程序)
1、编写程序1-1.m 如下:
model : sets :
warehouses/wh1..wh3/: capacity; vendors/v1..v4/: demand;
links(warehouses,vendors): cost, volume; endsets data :
capacity=7 9 7; demand=3 5 7 8; cost= 12 13 10 11 10 12 14 10 14 11 15 12; enddata
min =@sum (links(I,J): cost(I,J)*volume(I,J));
@for(vendors(J):
@sum(warehouses(I): volume(I,J))=demand(J));
@for(warehouses(I):
@sum(vendors(J): volume(I,J))<=capacity(I));
end
2、编写程序2-1.m如下:
model:
sets:
workers/w1..w5/;
jobs/j1..j4/;
links(workers,jobs): cost,volume;
Endsets
data:
cost=9 4 3 7
4 6
5 6
5 4 7 5
7 5 2 3
10 6 7 4;
enddata
min=@sum(links: cost*volume);
@for(workers(I): @sum(jobs(J): volume(I,J))<=1);
@for(jobs(J): @sum(workers(I): volume(I,J))=1);
@for(links(i,j): @bin(volume(i,j)));
End
五.结果分析
最优调运方案为:甲→C:7单位;甲→D:0单位;乙→A:3单位;
乙→D:6单位;丙→B:5单位;丙→D:2单位。
最少总运费为:239。
最优指派方案为:Ⅰ→C;Ⅱ→A;Ⅲ→B;Ⅳ→D。
最小总共时为:14。
六.实验总结。