Lingo初步.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lingo初步

Lingo软件初步 Lindo/Lingo软件是美国Lindo系统公司开发的一套专门用于求解优化模型的软件。Lindo系统公司面向全社会免费提供该软件的“演示版”,我们现在使用的就是这个演示版。占领硬盘空间大约40MB . 一.Lingo入门 1.编写简单的Lingo程序 Lingo程序:在“模型窗口”中,按Lingo语法格式,输入一个完整的优化模型。 (注意:一个程序就是一个优化模型) 例1 要求解线性规划问题 输入程序: max=2*x+3*y; 4*x+3*y=10; 3*x+5*y=12; 例2 求解 输入程序: max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1=2*x2;x1+x2=100; @gin(x1); @gin(x2); 2.语法格式 (1)目标函数 max= 或 min= (2)每个语句的结尾要有“;” (3)程序中,各个语句的先后次序无关 (4)自动默认各个变量均为大于等于零的实数 (5)不区分大写、小写 (6)程序中的“=”、“”等同于原模型中的“” 程序中的“=”、“”等同于原模型中的“” (7)对一个特定的变量 x ,进行限制: @free(x) :把x放宽为任意实数 @gin(x) :限制x为整数 @bin(x) :限制x只能取0或1 @bnd(-6,x,18) :限制x为闭区间[-6,18]上的任意实数 3.练习题 题1: 题2: MAX S.T. ,且均为整数。 二.Lingo中使用集合 例3:某帆船制造公司要决定下两年八个季度的帆船生产量。八个季度的帆船需求量分别是40条、60条、75条、25条、30条、65条、50条、20条,这些需求必须按时满足,既不能提前也不能延后。该公司每季度的正常生产能力是40条帆船,每条帆船的生产费用为400美圆。如果是加班生产的,则每条生产费用为450美圆。帆船跨季度库存的费用为每条20美圆。初始库存是10条帆船。如何生产? (注:本题当然可以用动态规划方法求解;接下来你将看到,建立优化模型用Lingo软件求解比较省事。) 解:八个季度的需求量数组记为xq,则 xq=[40,60,75,25,30,65,50,20]. 类似地,用数组zc, jb, kc分别表示八个季度的正常生产量、加班生产量、季度末库存量。 目标函数是全部费用之和: 约束条件:生产能力 ; 数量平衡 以上是模型。怎样用Lingo编程呢? 把下标的范围当作集合,本题的集合是{1,2,3,4,5,6,7,8};定义在集合上的一个个数组,都分别称为该集合的属性,本题这个集合有四个属性,分别是xq,zc,jb,kc . 先看本题的Lingo程序,再看注解: model: sets: jihe/1..8/:xq,zc,jb,kc; endsets data: xq=40,60,75,25,30,65,50,20; enddata min=@sum(jihe:400*zc+450*jb+20*kc); @for(jihe:zc=40); kc(1)=10+zc(1)+jb(1)-xq(1); @for(jihe(i)|i#gt#1:kc(i)=kc(i-1)+zc(i)+jb(i)-xq(i)); end 注解:(1)一个完整的Lingo程序必然以“model:”开始,以“end”结束。 (2)集合定义部分(从“sets:”到“endsets”):内容是定义集合及其属性,命令格式为 “ 集合名/集合的全部元素/:全体属性 ”。本程序中jihe/1..8/:xq,zc,jb,kc; ,这里的“1..8”等同于“1,2,3,4,5,6,7,8” 。 (3)数据输入部分(从“data:”到“enddata”):内容是输入已知数据。 (4)其它部分:包括目标函数、约束条件。 本程序中,@sum(jihe:400*zc+450*jb+20*kc),是求和函数, @for(jihe:zc=40),是循环函数,zc的所有分量都不大于40, @for(jihe(i)|i#gt#1:kc(i)=kc(i-1)+zc(i)+jb(i)-xq(i)),表示对集合jihe中的所有大于1的i,都满足该项约束。 答:八个季度正常生产量 zc=[40,40,40,40,40,40,40,20]

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档