LINGO8.0讲义剖析.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LINGO8.0讲义剖析

LINGO基础以及在建模中的应用 LINGO是一个利用线性规划和非线性规划来简洁地阐述、解决和分析复杂问题的简便工具。LINGO还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立模型时调用,并提供与其他数据文件(如文本文件、EXCEL电子表格文件、数据库文件等)的接口,程序执行速度快,易于输入、修改、求解和分析问题。 和另外一种常用的建模语言MATLAB相比,LINGO有自己的独特的地方。在使用MATLAB表述一个数学模型问题的时候,需要将模型中的约束条件进行分类(即线性等式约束、线性不等式约束、非线性等式约束、非线性不等式约束)转化成相应的矩阵形式以及相应的M文件,如果是一个大规模的问题,还需要建立较多的M文件,而且,当问题中的某些约束条件有较小的改动的时候,会引起相应的M文件有较大的改动,这就使得MATLAB的灵活性较差。而在使用LINGO表述相同模型问题时,则只需要简单的“翻译”成相应的LINGO程序即可。同时LINGO是一个专业的求解规划问题的软件,在求解速度和求解精度上都要比MATLAB好。但是MATLAB也有自己的特点,所以读者在建模时,最好根据实际问题,恰当得混合使用这两种软件,才能达到较好的建模效果。 LINGO软件包有多种版本,但其软件内核和使用方法类似,本讲义以LINGO8.0进行简单介绍。学习本讲义,仅能够让读者能够运用LINGO8.0建模语言表述实际问题,正确理解求解过程所显示的状态,解读输出结果。作为一门建模语言,它非常灵活,不是本讲义所能完全包含的,关于程序高级方面的设置和使用,可查看帮助文件和其他的相关资料。 一 LINGO基础 ? §1 LINGO快速入门 ? 当你在windows下开始运行LINGO系统时,windows应用程序一样,会得到类似下面的一个窗口:? ? ? ? ? ? ? ? ? ? ? ? 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 1.1 如何在LINGO中求解如下的问题: 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 产量 A1 6 2 6 7 4 2 5 9 60 A2 4 9 5 3 8 5 8 2 55 A3 5 2 1 9 7 4 3 3 51 A4 7 6 7 3 9 2 7 1 43 A5 2 3 9 5 7 2 6 5 41 A6 5 5 2 2 8 1 4 3 52 销量 35 37 22 32 41 32 43 38 ? 首先建立相应的数学模型:设为产地到销地的运量,为单位运价,为产地的产量,为销地的销量 数学模型: ,, 使用LINGO软件,编制程序如下: model:sets: 2] AA/1..6/: a; 3] BB/1..8/: b; 4] Links(AA,BB): c, x; 5]Endsets !数据的定义部分 6] data: 7] a=60 55 51 43 41 52; 8] b=35 37 22 32 41 32 43 38; 9] c=6 2 6 7 4 2 9 5 10] 4 9 5 3 8 5 8 2 11] 5 2 1 9 7 4 3 3 12] 7 6 7 3 9 2 7 1 13] 2 3 9 5 7 2 6 5 14] 5 5 2 2 8 1 4 3; 15] enddata !目标函数; 16] min=@sum(links: c*x); !需求约束; 17] @for(BB(j): 18] @sum(AA(i): x(i,j))=b(j)); !产量约束; 19] @for(AA(i): 20] @sum(BB(j): x(i,j))=a(i)); ?end !程序结束的标志符 然后点击工具条上的按钮 即可。LINGO程序,程序一般以标志符model:开始,以end结束。标准的LINGO程序主体一般由四部分组成:(1)集合块,如例中的第1-5行。(2)数据块,如例中的第6-15行。(3)目标函数,如例中的第16行。(4)约束条件,如例中的第17-20行。这四个部分之间并没有严格的顺序之分,调整它们之间的次序,并不影响程序的运行,但为

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档