- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
PAGE
PAGE191
第三部分Lingo软件实验
《运筹学》是一门实践性很强的应用性课程,其理论方法已被广泛应用到工业、农业、商业、交通运输业、民政事故、军事决策、物流与供应链优化、经济与金融系统等各个领域,如:资源分配、最短路线、生产计划、运输方案等。然而,对于实际应用问题,应用运筹学的理论方法通过数学建模思想建立数学模型之后,求解数学模型就成为广大决策者首先应该面对的问题。这里我们将向读者介绍一款用于求解运筹优化模型的专业数学软件-Lingo。
Lingo软件是一款专业的用于求解线性规划与非线性规划的数学软件,是求解线性规划与非线性规划最直接、最简单、最快捷的计算工具。另外,Lingo软件内置了一种独特的建模语言,可以用于解决大规模的优化问题。这里我们将主要介绍Lingo软件在《运筹学》课程中的应用,并简单介绍其在经济与金融系统中的应用。
第一讲Lingo软件简介
线性规划、整数规划以及非线性规划是运筹学课程的主体内容。这一讲主要介绍Lingo程序的编写以及应用Lingo软件解决一些简单的问题,主要针对变量比较少且约束条件比较少的小规模优化问题,并以钢管下料问题为例。
1.1预备知识
简单优化问题的求解,包括线性规划、整数规划、非线性规划等。
1.2相关函数命令及简介
1.简单Lingo程序的编写:以“model:”开始,以“end”结束;“max=”或“min=”表示目标函数;其它语句表示约束条件;
2.变量界定函数实现对变量取值范围的附加限制,共4种:
@bin(x)限制x为0或1;
@bnd(Lower,x,Upper)限制L≤x≤U;
@free(x)取消对变量x的默认下界为0的限制,即x可以取任意实数;
@gin(x)限制x为整数;
在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。@free取消了默认的下界为0的限制,使变量也可以取负值。@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。
1.3计算实验:(自学)
例1:求解线性规划问题(opt可以是min或max):
的最大值与最小值是多少?相应的最小点和最大点分别是什么?指出积极约束(最优解中取等号的约束),并指出敏感性分析的结果与含义。
例2:求解整数规划问题:
例3:求解0-1规划问题:
例4:求解二次规划问题:
例5:求解非线性规划问题:
1.4建模实验
例1:钢管下料问题
某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后售出。从钢管厂进货时得到的原料钢管都是19m长。
(1)现有一客户需要50根4m长、20根6m长、15根8m长的钢管,问如何下料最节省?
(2)客户增加需求10根5m长的钢管,由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。问如何下料最节省?
问题1的求解:
合理切割模式为:
模式
4米钢管根数
6米钢管根数
8米钢管根数
余料
1
4
0
0
3
2
3
1
0
1
3
2
0
1
3
4
1
2
0
3
5
1
1
1
1
6
0
3
0
1
7
0
0
2
3
为满足客户需要,按照哪些种合理模式,每种模式切割多少根原料钢管,最为节省?
两种标准:1.原料钢管剩余总余量最小;2.所用原料钢管总根数最少
决策变量:~按第i种模式切割的原料钢管根数(i=1,2,…7)
决策目标:(a)若以切割后剩余的总余料最小为目标,则可建立数学模型如下:
Lingo程序编写如下:
model:
Min=3*x1+x2+3*x3+3*x4+x5+x6+3*x7;
4*x1+3*x2+2*x3+x4+x5=50;
x2+2*x4+x5+3*x6=20;
x3+x5+2*x7=15;
end
@GIN(x1);@GIN(x2);@GIN(x3);@GIN(x4);
@GIN(x5);@GIN(x6);@GIN(x7);
求解结果:最优解:x2=12,x5=15,其余为0;最优值:27
(b)若以切割原料钢管的总根数最少为目标,则可建立数学模型:
Lingo程序编写如下:
model:
Min=x1+x2+x3+x4+x5+x6+x7;
4*x1+3*x2+2*x3+x4+x5=50;
x2+2*x4+x5+3*x6=20;
x3+x5+2*x7=15;
end
@GIN(x1);@GIN(x2);@GIN(x3);@GIN(x4);
@GIN(x5);@GIN(x6);@GIN(x7);
求解结果为:最优解:x1=5,x2=5,x5=15,其余为0;最优值:25。
文档评论(0)