数学建模算法与程序(司守奎)35附录三 运筹学的LINGO软件.docVIP

  • 25
  • 0
  • 约3.54万字
  • 约 38页
  • 2017-12-07 发布于浙江
  • 举报

数学建模算法与程序(司守奎)35附录三 运筹学的LINGO软件.doc

附录三 运筹学的LINGO软件 § 1 简介 LINGO软件有多种版本,如LINDO,GINO和LINGO(包括LINGO NL)软件。 LINDO是一种专门用于求解数学规划问题的优化计算软件包,版权现在由美国LINDO系统公司(Lindo System Inc.)所拥有。LINDO软件包的特点是程序执行速度快,易于方便地输入、修改、求解和分析一个数学规划(优化问题),因此LINDO在教学,科研和工业界得到广泛应用。有关该软件的发行版本,发行价格和其它最新信息都可以从LINDO系统公司的INTERNET网络站点 获取,该站点还提供部分LINDO软件的演示版本或测试版本。 LINDO 由美国芝加哥大学的 Linus Schrage教授首先开发,随后又推出了GINO, LINGO, LINGO NL (又称LINGO2) 和“what’s best!”等优化软件,现在一般仍用 LINDO作为这些软件的统称。各组件的功能各有侧重,分别简要介绍如下: (i)LINDO是Linear Interactive and Discrete Optimizer字首的缩写形式,可以用来求解线性规划(LP—Linear Programming),整数规划(IP—Integer Programming)和二次规划(QP—Quadratic Programming)问题。 (ii)GINO是 General Interactive Optimizer字首的缩写形式,可以用来求解非线性规划(NLPNon-Linear Programming)问题,也可用于求解一些线性和非线性方程(组)以及代数方程求根等。GINO中包含了各种一般的数学函数(包括大量的概率函数),可供使用者建立问题模型时调用。 (iii)LINGO 可以用来求解线性,非线性和整数规划问题。 (iv)LINGO NL (LINGO2) 可以用来求解线性,非线性和整数规划问题。 与LINDO和GINO不同的是,LINGO和LINGO NL (LINGO2) 包含了內置的建模语言,允许以简练,直观的方式描述较大规模的优化问题,模型中所需的数据可以以一定格式保存在独立的文件中。 (v)“what’s best!” 组件主要用于数据文件是由电子表格软件(如 LUTOS1-2-3和MS OFFICE 等)生成的情形。 LINDO软件包有多种版本,但其软件內核和使用方法基本上是类似的。下面介绍LINGO组件的基本使用方法。 §2 LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到一个窗口:LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都要在该窗口内编码实现。下面举两个例子。.1 如何在LINGO中求解如下的LP问题: s.t. 由于LINGO中已假设所有的变量是非负的,所以非负约束不必再输入到计算机中,LINGO也不区分变量中的大小写字符(任何小写字符将被转换为大写字符);约束条件中的”=”及”=”可用””及””代替。在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2350; x1100; 2*x1+x2600; 然后点击工具条上的按钮 即可。 例2.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 ? 解 设表示产地运到销地的量,表示产地到销地的单位运价,表示销地的需求量,表示产地的产量,建立如下线性规划模型 s.t. 使用LINGO软件,编制程序如下: model: !68收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I):@sum(vendors(J): volume(I,J))

文档评论(0)

1亿VIP精品文档

相关文档