
lingo软件教程.doc
57页1LINGO8.0 for windows 软件及应用(编译)软件及应用(编译)万保成万保成前前 言言 运筹学,即最优化理论,或在有的领域被称为管理科学,是近几十年发展和形成的一门新兴的应用性学科她主要解决最优生产计划、最优分配、最优设计、最优决策、最佳管理等最优化问题主要研究方法是定量化、系统化和模型化方法,特别是运用各种数学模型和技术来解决问题 我们遇到的实际问题一般规模都较大,即使建立了模型,找到了解的方法,对于庞大的计算量也是望而却步工欲善其事,必先利其器”,手中有一个方便的求解最优化问题的工具就显得很重要LINGO系列优化软件包就给我们提供了理想的选择 LINGO 是一个利用线性规划和非线性规划来简洁地阐述、解决和分析复杂问题的简便工具其特点是程序执行速度很快,易于输入、修改、求解和分析一个数学规划问题,因此 LINGO 在教育、科研和工业界得到了广泛应用教学版和发行版的主要区别在于对优化问题的规模(变量和约束的个数)有不同的限制LINGO 软件包有多种版本,但其软件内核和使用方法类似详细情况可上网访问 LINGO 软件网站:. 关于 LINGO8.0 的资料市面上非常少,即使有也仅是一个附录,为此编写了本教程。
学完本书后,应该能够运用 LINGO8.0 建模语言表述实际问题,能够设置算法的基本选项,正确理解求解过程所显示的状态,最后能正确解读输出结果作为一门建模语言,它非常灵活,不是本书所能完全包含的,“熟能生出百巧来”,只有用的多了才能掌握 LINGO 的强大功能 由于水平所限,缺点和错误之处在所难免,请大家批评指正 编 者 2004 年 8 月注意:章后有注意:章后有表示该章内容可用点击章上文字(超连接)即可表示该章内容可用点击章上文字(超连接)即可目目 录录 §1 LINGO 快速入门§2 LINGO 中的集 2.1 为什么使用集 2.2 什么是集 2.3 模型的集部分 2.3.1 定义原始集 2.3.2定义派生集§3 模型的数据部分和初始部分 3.1 模型的数据部分 3.1.1 数据部分入门 3.1.2 参数 3.1.3实时数据处理 3.1.4 指定属性为一个值 3.1.5 数据部分的未知数值 3.2 模型的初始部分 2§4 LINGO 函数 4.1 基本运算符 4.1.1 算术运算符 4.1.2 逻辑运算符 4.1.3 关系运算符 4.2 数学函数 4.3 金融函数 4.4 概率函数 4.5 变量界定函数 4.6 集操作函数 4.7 集循环函数4.8 输入和输出函数 4.9 辅助函数§5 LINGO Windows 命令 5.1 文件菜单 5.2 编辑菜单 5.3 LINGO 菜单 5.4 窗口菜单 5.5 帮助菜单§6 LINGO 的命令行命令 §7 综合举例 由于时间原因,§7 节内容还没全部完成,抱歉!但为方便大家,还是先贴出来啦。
献丑!参考文献参考文献1. LINGO 用户指南(LINGO8.0 的帮助文档).2. 朱德通 编著. 最优化模型与实验. 上海:同济大学出版社,2003.3. 何坚勇 编著. 运筹学基础. 北京:清华大学出版社,2000.4. 刁在筠 郑汉鼎 等编著. 运筹学. 北京:高等教育出版社,1996.5. 姚恩瑜 何勇 等编著. 数学规划与组合优化. 杭州:浙江大学出版社,2001.6. H.P.威廉斯 著. 孟国璧 等译. 数学规划模型建立与计算机应用. 北京:国防工业出版社,1991.7.洪文 朱广斌. 整数规划下的最小生成树模型. 安徽电气工程职业技术学院学报,2003.3,96—100.8. 姜启源 谢金星 叶俊编. 数学模型(第三版). 北京:高等教育出版社,2003. 9. 谢金星等编. LINDO-LINGO how to. 网上下载,20043LINGO 是用来求解线性和非线性优化问题的简易工具LINGO 内置了一种建立最优 化模型的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可快速求解并分 析结果§1 1 LINGOLINGO 快速入门快速入门当你在 windows 下开始运行 LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之 下。
在主窗口内的标题为 LINGO Model – LINGO1 的窗口是 LINGO 的默认模型窗口,建立 的模型都都要在该窗口内编码实现下面举两个例子 例例 1.11.1 如何在 LINGO 中求解如下的 LP 问题:0,6002100350. .32min212112121xxxxxxxtsxx在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2=” LINGO 中还能用“”表示大于等于关系LINGO 并不支持严格小于和严格大于关系运算符然而, 如果需要严格小于和严格大于关系,比如让 A 严格小于 B: A= 4.24.2 数学函数数学函数 LINGO 提供了大量的标准数学函数: @abs(x) 返回 x 的绝对值 @sin(x) 返回 x 的正弦值,x 采用弧度制 @cos(x) 返回 x 的余弦值 @tan(x) 返回 x 的正切值 @exp(x) 返回常数 e 的 x 次方 @log(x) 返回 x 的自然对数 @lgm(x) 返回 x 的 gamma 函数的自然对数 @sign(x) 如果 x=0 时,返回不超过 x 的最大整数;当 x= required(J)); end 计算的部分结果为 Global optimal solution found at iteration: 0Objective value: 22.00000Variable Value Reduced CostREQUIRED( MON) 20.00000 0.000000REQUIRED( TUE) 16.00000 0.000000REQUIRED( WED) 13.00000 0.000000REQUIRED( THU) 16.00000 0.000000REQUIRED( FRI) 19.00000 0.000000REQUIRED( SAT) 14.00000 0.000000REQUIRED( SUN) 12.00000 0.000000START( MON) 8.000000 0.000000START( TUE) 2.000000 0.000000START( WED) 0.000000 0.3333333START( THU) 6.000000 0.000000START( FRI) 3.000000 0.000000START( SAT) 3.000000 0.000000START( SUN) 0.000000 0.000000 从而解决方案是:每周最少需要 22 个职员,周一安排 8 人,周二安排 2 人,周三无需安排 人,周四安排 6 人,周五和周六都安排 3 人,周日无需安排人。
4.84.8 输入和输出函数输入和输出函数 输入和输出函数可以把模型和外部数据比如文本文件、数据库和电子表格等连接起来1 1..@file@file 函数函数该函数用从外部文件中输入数据,可以放在模型中任何地方该函数的语法格式为 @file(’filename’)这里 filename 是文件名,可以采用相对路径和绝对路径两种表示 方式@file 函数对同一文件的两种表示方式的处理和对两个不同的文件处理是一样的, 这一点必须注意 例例 4.144.14 以例 1.2 来讲解@file 函数的用法 注意到在例 1.2 的编码中有两处涉及到数据第一个地方是集部分的 6 个 warehouses 集成员和 8 个 vendors 集成员;第二个地方是数据部分的 capacity,demand 和 cost 数据为了使数据和我们的模型完全分开,我们把它们移到外部的文本文件中修改模型代 码以便于用@file 函数把数据从文本文件中拖到模型中来修改后(修改处代码黑体加粗) 的模型代码如下: model: !6 发点 8 收点运输问题; sets:warehouses/ @file@file('1_2.txt')('1_2.txt') /: capacity;19vendors/ @file@file('1_2.txt')('1_2.txt') /: 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))= required(J)); end 3 3..@ole@ole 函数函数 @OLE 是从 EXCEL 中引入或输出数据的接口函数,它是基于传输的 OLE 技术。
OLE 传输 直接在内存中传输数据,并不借助于中间文件当使用@OLE 时,LINGO 先装载 EXCEL,再 通知 EXCEL 装载指定的电子数据表,最后从电子数据表中获得 Ranges为了使用 OLE 函数, 必须有 EXCEL5 及其以上版本OLE 函数可在数据部分和初始部分引入数据 @OLE 可以同时读集成员和集属性,集成员最好用文本格式,集属性最好用数值格式 原始集每个集成员需要一个单元(cell),而对于 n 元的派生集每个集成员需要 n 个单元, 这里第一行的 n 个单元对应派生集的第一个集成员,第二行的 n 个单元对应派生集的第二 个集成员,依此类推 @OLE 只能读一维或二维的 Ranges(在单个的 EXCEL 工作表(sheet)中) ,但不能读间断 的或三维的 RangesRanges 是自左而右、自上而下来读 例例 4.164.16 sets:PRODUCT; !产品;MACHINE; !机器;WEEK; !周;ALLOWED(PRODUCT,MACHINE,WEEK):x,y; !允许组合及属性; endsets data:rate=0.01;PRODUCT,MACHINE,WEEK,ALLOWED,x,y=@OLE('D:\IMPORT.XLS');@OLE('D:\IMPORT.XLS')=rate; enddata 代替在代码文本的数据部分显式输入形式,我们把相关数据全部放在如下电子数据表 中来输入。
下面是 D:\IMPORT.XLS 的图表 除了输入数据之外,我们也。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





