Lindo Lingo简介 北京信息科技大学理学院数学系
数学建模常用软件功能介绍
1 Mathematica简介Mathematica是美国Wolfram公司开发的一套符号计算系统。
本章简要介绍windows平台下Mathematica5.0的基本操作。
Mathematica功能强大,内容丰富的函数覆盖了初等数学,微积分和线性代数等众多的数学领域,包含了数学多方向的新方法和新技术。
同时, Mathematica具有异常强大的作图函数,是非常好的可视化的工具。
Mathematica具有自由的集成环境和优良的系统开放性,吸引了众多的用户,在科研院所和高等学校非常流行。
Mathematica使用C语言编写,它吸收了不同类型的软件特点:•具有简单的Basic的交互方式操作;•具有类似于Matlab,MathCAD的强大的数值计算功能;•具有Maple那样强大的符号计算功能;•具有类似C和Pascal那样的结构化程序设计。
2 LINGO和LINDO简介LINGO和LINDO是专门用于求解数学规划问题的软件包。
由于执行速度快,而且能够方便地输入、求解和分析数学规划问题,因此在教学、科研和工业界得到广泛应用。
使用LINDO和LINGO,能够迅速的求解规划问题的最优决策,省去了大量难以想象的人工计算。
3 MATLAB简介MATLAB是由美国Mathworks公司开发,是一个交互式的以矩阵计算为基础的科学和工程计算软件。
其编程效率高,计算功能强,使用非常方便,并且易于扩充,绘图功能强大,并且提供了各种工具箱,为工程实践提供了强大的支持。
4 MATYPE简介MathType是一个强大的数学公式编辑器,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号。
可以与常见文字处理工具紧密结合,支持OLE (对象的链接与嵌入),可以在任何支持OLE 的文字处理系统中调用(从主菜单中选择"插入->对象" 在新对象中选择"MathType Equation" ),帮助用户快速建立专业化的数学技术文档。
常用数学软件介绍Maple、Mathematica、Matlab、 MathCAD、 SAS、SPSS、LINDO、LINGO
2 、Mathematica
➢美国Wolfram Research公司开发。 ➢拥有强大的数值计算和符号计算能力(它的符号计算不 是基于Maple的,而是自己开发的)。
➢主要功能包括:符号演算、数值计算和绘图功能。 ➢基本系统主要是用C语言开发的,因而可以比较容易 地移植到各种平台上。 ➢对于输入形式有比较严格的规定,用户必须按照系统 规定的数学格式输入,系统才能正确地处理。
(5)可以方便地作出以各种方式表示的一元和二元 函数的图形,可以根据需要自由地选择画图的范围 和精确度。通过对这些图形的观察,人们可以迅速 形象地把握对应函数的某些特征。
3、 Matlab
➢Matlab是矩阵实验室(Matrix Laboratory)的缩写。 ➢是美国 MathWorks公司推出的一套高性能的数值计算 和可视化科学计算软件。 ➢它和Maple、 Mathematica并列为三大数学软件。
四种软件的比较
如果同时要求计算精度、符号计算和编程的话,最好同 时使用Maple和Mathematica ,它们在符号处理方面各具 特色。如果要求进行矩阵、图形或其他数据处理,则选 择Matlab ;同时利用Matlab的Notebook功能,结合 Word的编辑功能,可以很方便地处理科技文章。如果仅 仅是要求一般的计算或者是普通用户日常使用,首选的 是MathCAD ,它在高等数学方面所具有的能力,足够一 般用户的要求,而且它的输入界面也特别友好。
➢集数值分析、矩阵运算、信号处理和图形显示于一体。
➢Matlab以无需定义维数的矩阵作为基本数据单位。 ➢目前国内外高校和研究部门科学研究的重要工具。
数学软件简介
常用数学软件简介在科技和工程界上比较流行和著名的数学软件主要有四个,分别是Maple、MATLAB、MathCAD 和Mathematica。
它们在各自针对的目标方面都有不同的特色。
在统计与运筹方面也有四个常用的数学软件:它们分别是SAS、SPSS、LINDO、LINGO。
此外,还有在几何教学中常用几何画板软件。
一、Maple软件Maple是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。
Maple V的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。
Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。
它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语言开发的。
Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。
输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。
二、MATLAB 软件MATLAB原是矩阵实验室(Matrix Laboratory)在70年代用来提供Linpack和Eispack软件包的接口程序,采用C语言编写。
从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言。
MATLAB可以运行在十几个操作平台上,比较常见的有基于Windows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。
MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等。
Lingo简介
6. “ltx”:Lindo格式的模型文件;
7. “mps”:MPS(数学规划系统) Lingo软件模型一般由5部分组成: 1. 集合段(SETS):“SETS:”开始,“ENDSETS”结束; 2. 目标与约束段; 3. 数据段(DATA):“DATA:”开始,“ENDDATA”结束; 4. 初始化段(INIT):“INIT:”开始,“ENDINIT”结束;
无限
800 3200
无限
4000 16000
无限
Lindo/Lingo 软件简介
Lindo是英文Linear INteractive and Discrete Optimizer 字母的缩写,可求解线性规划(LP)和二次规划(QP)。
Lingo是英文Linear INteractive and General Optimizer 字母的缩写,除了具有Lindo所有功能之外,还可以用于求 解非线性规划(NLP),也可用于一些线性和非线性方程 的求解等。
Lindo/Lingo 软件简介
Lindo/Lingo内部求解器: 1. 直接求解程序(Direct Solver)
2. 线性优化求解程序(Linear Solver)
3. 非线性优化求解程序(Nonlinear Solver) 4. 分支定界管理程序(Branch and Bound Manager)
Lindo/Lingo 软件简介
美国芝加哥大学 Linus Schrage 教授于1980年前后开发 的一套专门用于求解最优化问题的软件包。 软件包括:Lindo、Lingo、Lindo API以及What’sBest! 这四款软件分为演示版(试用版)和正式版,两者的区别 在于求解问题的规模不同。正式版又可以分为求解包 (Solver Suite)、高级版(Super)、超级版(Hyper)、 工业版(Industrial)、扩展版(Extended)。
LINGO简介
LINGO简介(LINGO v11.0 Demo)美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发, 后来成立LINDO系统公司(LINDOSystems Inc. 公司网址:).这套软件现在包括4种:1. What's Best!What's Best! lets you build linear, nonlinear, and integer models in Excel. Models are easy to build and understanding standard spreadsheet equations. Excel users can often begin building models within minutes of installing the What's Best! program, and the problem capacities of the larger What's Best! versions allow large scale, real world problems to be solved.2.LINGOLINGO is a comprehensive tool designed to help you build and solve linear, nonlinear, and integer optimization models quickly, easily, and efficiently. LINGO includes a powerful modeling language, a full-featured environment for building and editing problems, the ability to read and write to Excel and databases, and a set of fast built-in solvers.3.LINDO APIWith the LINDO API, you can easily create your own optimization applications. It allows you to plug the power of the LINDO solver right into customized applications that you have written.4.Classic LINDOClassic LINDO's simple interface and straightforward model expression style make it easy to learn and use. Classic LINDO is appropriate for building and solving moderately sized linear and integer models.这套软件取得了非常巨大的成功,据网站提供的信息:全球《财富》杂志500强企业中,一半以上使用上述产品,其中前25强企业中有23家使用上述产品。
LINDO、LINGO软件的使用方法
例1的数 学模型
max Z 32 x1 30 x2 3x1 4 x2 36 5 x1 4 x2 40 9 x1 8 x2 76 x1 , x2 0
LINDO/LINGOl软件简介
第1节 第2节 LINDO LINGO
第1节 LINDO软件
一、LINDO软件的使用格式 二、LINDO输出结果分析
一、LINDO软件的使用格式
LINDO软件是一种专门用于求解线性 规划问题的软件包,由于LINDO执行速度很 快且输入方便,易于求解和分析规划问题, 因此在科研和工业界得到广泛应用。
影子价格: 资源每增加1个单位时,目标函数Z增加的值 (1) 设备A每增加1台时,利润增加1.166667元
(2) 设备B每增加1台时,利润不增加
(3) 设备C每增加1台时,利润增加3.166667元
第4部分数据的分析
Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Coefficient Increase Decrease 32.00000 1.750000 9.500000 30.00000 12.66667 1.555556
2 最优值为:282.667 即 Z max 282 3 最优解为: x1=1.3333 即 x 1 1 1 3 x2=8
第3部分的数据分析(1)
在最优解的情况 下资源是否有剩 余(或超量)
Row Slack or Surplus Dual Price 2) 0.000000 在最优解下,设 3) 1.333333 备A、C无剩余 4) 0.000000
利用LINGO建立最优化模型
利用LINGO建立最优化模型洪文1,朱云鹃1,金震1,王其文21(安徽大学商学院 合肥 230039)2(北京大学光华管理学院 北京 100871)摘 要:本文借助于最优化软件LINGO建立了最小树、最短路、最大流、最小费用流和货郎担问题的LINGO模型,并对模型中的难点给出了注释。
利用本文提供的模型,可以很容易地求出上述5个最优化问题的最优解。
关键词:最小树、最短路、最大流、最小费用流、货郎担问题、LINGO中图分类号:0211.6 文献标识码:A 文章编号:0 引言求解最小树、最短路、最大流、最小费用流和货郎担问题的方法虽然很多,但是利用最优化求解软件LINGO建立相应的模型来求解上述5个问题是一种新的尝试。
本文建立的模型有两个突出的特点。
第一个特点是模型的数据与公式完全分离,这样使得问题的求解变得特别方便(对于不同的问题只要更换数据即可)。
第二个特点是这五个模型都是利用最优化求解软件LINGO编写而成,可进行快速求解。
1 LINGO简介LINGO是一个简单而实用的最优化软件。
利用线性和非线性最优化的方法,LINGO可以用公式简明地表示复杂的规划问题,并可以快速地求出问题的最优解。
LINGO是由美国芝加哥LINDO系统公司研制。
该公司根据用户信息、线性和非线性规划的理论和方法及计算机发展的需要不断推出新的版本。
目前LINGO已成为世界上最为流行的最优化软件之一。
LINGO在我国已经有了相当多的用户。
它的主要特点是:1)LINGO含有一系列的接口函数。
这些接口函数可用在文本文件、电子表格和数据库中,可与外部的输入/输出源进行连接。
2)LINGO可以直接嵌入到Excel中,也可以将Excel嵌入到LINGO模型中。
这样就可以将数据与模型分离,使得模型的维护和调试变得非常容易。
3)LINGO使用Windows的窗口展开优化分析功能,使用对话框展示各种功能。
清晰、直观、易学易用。
4)LINGO具有强大的计算功能。
数学建模Lingo软件简介
版本类型 总变量数 整数变量数 非线性变量数 约束数
演示版 求解包 高级版 超级版 工业版 扩展版
300 500 2000 8000 32000 无限
30 50 200 800 3200 无限
30 50 200 800 3200 无限
150 250 1000 4000 16000 无限
Lingo(Linear Interactive and General Optimizer),即交互 式的线性和通用优化求解器,可求解线性规划,也可以求解非 线性规划,还可以用于一些线性和非线性方程组的求解等。 Lingo软件的最大特),而且执行速度很快。Lingo实际上还是最 优化问题的一种建模语言,包括许多常用的数学函数共建立优 化模型时调用,并可以接受其它数据文件。
2. 建立LINDO/LINGO优化模型需要注意的几个基本问题
1. 尽量使用实数优化模型,尽量减少证书约束和整数变 量的个数;
2. 尽量使用光滑优化模型,尽量避免使用非光滑函数; 3. 尽量使用线性优化模型,尽量减少非线性约束和非线 性变量的个数; 4. 合理设定变量的上下界,尽可能给出变量的初始值; 5. 模型中使用的单位的数量级要适当。
演示版和正式版的基本功能是类似的,只是试用版能够
求解问题的规模受到严格限制,对于规模稍微大些的问题就不 能求解。即使对于正式版,通常也被分成求解包(solver suite)、 高级版(super)、超级版(hyper)、工业版(industrial)、扩展版 (extended)等不同档次的版本,不同档次的版本的区别也在于 能够求解的问题的规模大小不同,下表给出了不同版本 LINGO程序对求解规模的限制:
LINDO,LINGO,LINDO API 和 What’s Best! 在最优化软件的市场上占有很大的份额,尤其在供微机上使用 的最优化软件的市场上,上述软件产品具有绝对的优势。根据 LINDO公司主页()上提供的信息,位列 全球《财富》杂志500强的企业中一半以上使用上述产品,其 中位列全球《财富》杂志25强企业中有23家使用上述产品。读 者可以从上述主页下载上面4种软件的演示版和大量应用例子。
LINDO LINGO使用简介
1 LINDO菜单命令和语句1.1菜单命令我们可以从类似于其它Windows程序的便捷菜单访问LINDO的命令。
主菜单包括屏幕顶部的6个子菜单,它们列出了各种命令。
当单击其中一个子菜单——File、Edit、Solve、Reports、Window或Help时,将出现了一个包含各种命令的下拉菜单。
你可以像在大多数windows程序中那样选择命令——或者用鼠标单击命令,或者在适当的子菜单亮显时,按命令名中带下划线的字母。
许多命令还有快捷键(F2、Ctrl+Z等)。
为了增加方便性,还可以利用位于屏幕顶部工具栏中的图标访问一些最常用的命令。
下面简要介绍各种菜单命令,并列出了可以应用的快捷键和图标。
1.File(文件)菜单File菜单命令能够以各种方法操纵LINDO数据文件。
可以使用这个命令打开、关闭、保存和打印文件,并且可以执行LINDO独有的各种任务。
下面将描述File命令。
命令说明New F2 创建用于输入数据的新窗口。
Open F3 打开已有的文件。
利用对话框可以选择各种文件类型和位置。
View F4 打开已有的文件,仅进行浏览。
不对文件进行修改。
Save F5 保存窗口。
可以保存输入数据(模型)、Reports窗口或命令窗口。
可以下列格式保存数据:*.LTX,可以利用字处理软件进行编辑的文本格式;*.LPK,以“填充”格式保存编译模型,但是不进行特殊的格式化或解释;*.MPS,与机器无关的工业标准格式,用于在LINDO和其它LP软件之间传递LP问题。
Save As F6 利用指定的文件名保存活动窗口。
这特别适合于重命名已修改的文件,同时能够保持原始文件不受影响。
Close F7 关闭活动窗口。
如果窗口包含新的输入数据,将询问你是否保存修改。
Print F8 把活动窗口发送到打印机。
Printer Setup…F9 选择打印机和打印格式的各种选项。
Log Output…F10 把通常发送到Reports窗口的所有后续屏幕活动发送到文本文件中。
《Lingo软件学习》PPT课件
xij
0或1
j 1, 2, , n, i j i=1,2, ,n, j i i, j 1, 2, n
三、职员时序安排模型
一项工作一周7天都需要有人(比如护士工作),每天 (周一至周日)所需的最少职员数为20、16、13、16、19、 14和12,并要求每个职员一周连续工作5天,试求每周所 需最少职员数,并给出安排。注意这里我们考虑稳定后的 情况。
LINGO中的函数有基本元算符,数学函数,金融函数,变 量限定函数等,全部函数请参照Edit|paste funtion。
算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:
^ 乘方 ﹡ 乘
/除
﹢加
﹣减
LINGO唯一的一元算术运算符是取反函数“﹣”
LINGO具有9种逻辑运算符: #not# 否定该操作数的逻辑值,#not#是一个一元运算符 #eq# 若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等,则为true;否则为flase #gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase #ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flase #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true
68
min z
cij xij
i1 j 1
8
xij ai
i 1, 2, , 6
LINGO在数学建模中的应用
一、LINGO简介LINGO[1]是美国LINDO系统公司开发的求解数学规划系列软件中你的一个,它的主要功能是求解大型线性、非线性和整数规划问题,LINGO的不同版本对模型的变量总数、非线性变量数目、整型变量数目和约束条件的数量做出不同的限制.LINGO的主要功能特色为:(1)既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强.(4)置建模语言,提供几十个部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;(6)能方便地与EXCEL、数据库等其他软件交换数据.LINGO像其他软件一样,对他的语法有规定,LINGO的语法规定如下:(1)求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2) 每个语句必须以字母开头,由字母、数字和下划线所组成,昌都不超过32个字符,不区分大小写;(3)每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行;(4)如果对变量的取值围没有特殊说明,则默认所有决策变量都非负;(5)LINGO模型以语句“MODEL”开头,以语句“END”结束,对于比较简单的模型,这这两个语句可以省略.LINGO提供了五十几个部函数,使用这些函数可以大大减少编程工作量,这些函数都是以字符@开头,下面简单介绍其中的集合操作函数和变量定界函数及用法.集合是LINGO建模语言中最重要的概念,使用集合操作函数能够实现强大的功能,LINGO 提供的常用集合操作函数有@FOR(s:e)、@SUM(s:e)、@MAX(s:e)、@MIN(s:e)等.@FOR(s:e)常用在约束条件中,表示对集合s 中的每个成员都生成一个约束条件表达式,表达式的具体形式由参数e 描述;@SUM(s:e) 表示对集合s 中的每个成员,分别得到表达式e 的值,然后返回所有这些值的和;@MAX(s:e) 表示对集合s 中的每个成员,分别得到表达式e 的值,然后返回所有这些值中的最大值;@MIN(s:e) 表示对集合s 中的每个成员,分别得到表达式e 的值,然后返回所有这些值中的最小值.LINGO 默认变量的取值可以从零到正无穷大,变量定界函数可以改变默认状态,如对整数规划,限定变量取整数,对0-1规划,限定变量取0 1或.LINGO 提供的变量定界函数有:@BIN(X)、@BND(L,X,U)、@GIN(X)、@FREE(X).@BIN(X)限定X 为0或1,在0-1规划中特别有用;@GIN(X)限定X 为整数,在整数规划中特别有用;@BND(L,X,U)限定L <X <U,可用作约束条件;@FREE(X)取消对X 的限定,即X 可以取任意实数.二、LINGO 在线性规划中的应用具有下列三个特征的问题称为线性规划问题(Linear program)[2]简称LP 问题,其数学模型称为线性规划(LP)模型.线性规划问题数学模型的一般形式为:求一组变量(1,2,,)j x j n =L 的值,使其满足1122max(min),n n z c x c x c x =+++L2111122111211222221122***.0,1,2,,,,..n j n n n n nn nn n n x j na x a x a xb a x a x a x b s t a x a x a x b ⎧⎪⎪⎪⎨⎪⎪≥=⎪⎩+++++++++L L L L L式中“*”代表“≥”、“ ≥”或“=”.上述模型可简写为1max(min),nj j j z c x ==∑1*0,1,2,,,1,2,,..nij j j ji a x x j n b i m s t =⎧⎪⎨⎪≥=⎩=∑L L 其中,变量j x 称为决策变量,函数1nj jj z c x==∑称为目标函数,条件1*nj jij c x b =∑称为约束条件,0j x ≥ 称为非负约束.在经济问题中,又称j c 为价值系数,i b 为资源限量. 线性规划在科学决策与经营管理中实效明显[3],但是对于规模较大的线性模型,其求解过程非常繁琐,不易得出结果.而 LINGO 中的部集合函数有@FOR(s:e)、@SUM(s:e)、@MAX(s:e)、@MIN(s:e)等,可以用这些集合函数使程序编程简单可行,下面举例说明.例1 某工厂有两条生产线,分别用来生产M 和P 两种型号的产品,利润分别为200元每个和300元每个,生产线的最大生产能力分别为每日100和120,生产线没生产一个M 产品需要1个劳动日(1个工人工作8小时称为1个劳动日)进行调试、检测等工作,而每个P 产品需要2个劳动日,该工厂每天共计能提供160个劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解 设两种产品的生产量分别为1x 和2x ,则该问题的数学模型为:目标函数 12max 200300z x x =+约束条件 1212100,120,160,0,1,2.i x x x x x i ≤⎧⎪≤⎪⎨+≤⎪⎪≥=⎩编写LINGO 程序如下:MODEL:SETS:SHC/1,2 /:A,B,C,X; YF/1,2,3 /:J;ENDSETSDATA:A=1,2 ; B=100,120; C=200,300;ENDDATAMAX=@SUM(SHC:C*X);@FOR(SHC(I):X(I)<B(I)); @SUM(SHC(I):A(I)*X(I))<=160; END程序运行结果如下Global optimal solution found.Objective value: 29000.00 Total solver iterations: 0 Variable Value Reduced CostA( 1) 1.000000 0.000000A( 2) 2.000000 0.000000B( 1) 100.0000 0.000000B( 2) 120.0000 0.000000C( 1) 200.0000 0.000000C( 2) 300.0000 0.000000X( 1) 100.0000 0.000000X( 2) 30.00000 0.000000J( 1) 0.000000 0.000000J( 2) 0.000000 0.000000J( 3) 0.000000 0.000000Row Slack or Surplus Dual Price 1 29000.00 1.000000 2 0.000000 50.00000 3 90.00000 0.000000 4 0.000000 150.0000最优解为12100,30,x x ==最优值为29000.00z =.即每天生产100个M 产品30个P 产品,可获得29000元利润.三、LINGO 在整数规划和0-1规划中的应用1 求解整数规划整数规划[4]分为整数规划和混合整数规划,要求全部变量都为非负整数的数学规划称为纯整数规划,只要求部分变量为非负整数的数学规划称为混合整数规划.下面只讨论约束条件和目标函数均为线性的整数规划问题,即整数线性规划问题(以下简称整数规划,记为ILP),其数学模型的一般形式是()1max min nj j j z c x ==∑,()()11,2,,..01,2,,nij j i j j j a x b i n s t x j n x =⎧≤=⎪⎪⎪≥=⎨⎪⎪⎪⎩∑L L 全为整数或部分为整数。
数学建模软件LinDoLinGo的简介(修改)
X——表示变量X可取任意实数值。 GIN X——表示变量X只取非负整数值。 INT X——表示变量X只能取0或1。 SLB X value——表示变量X以value为下界。 SUB X value——表示变量X以value为上界。 FREE m——表示问题的前m个变量为自由变量 GIN m——表示问题前m个变量为非负整数值 INT m——表示问题前m个变量为0-1变量。
LINGO 示例
查看简单例子
LINHGO程序
Lindo模型到Lingo模型的转换
“ST”在Lingo模型中不再需要,所以删除了; 在每个系数与变量之间增加了运算符“*”;
将目标函数的表示方式从“MAX”变成“MAX=”;
每行(目标、约束和说明语句)后面均增加了一
个分号“;”; 约束的名字被放ngo中模型以“Model:”开始,以“END”结束。 对简单模型,这两个语句也可以省略。
LINDO/LINGO软件 使用简介
LinDo/LinGo简介
LINDO(Linear Interactive and Discrete Optimizer),即“交互式的线性和离散优化求解 器”,可以用来求解线性规划(LP)和二次规划 (QP); LINGO(Linear Interactive and General Optimizer),即“交互式的线性和通用优化求解 器”,除了用来求解线性规划(LP)、二次规划 (QP)和非线性规划,还可用于线性和非线性方程 组的求解。 最大的特色:允许决策变量是整数(即整数规划,包 括0-1规划)。
Lindo求解整数规划
Lindo求解整数规划程序
LP OPTIMUM FOUND AT STEP 2 OBJECTIVE VALUE = 998.811951
优化建模与LINDO,LINGO优化软件
ROW SLACK OR SURPLUS DUAL PRICES
三
原料无剩余
2)
0.000000
种
时间无剩余
3)
0.000000
资 源
加工能力剩余40
4)
40.000000
48.000000 2.000000 0.000000
“资源” 剩余为零的约束为紧约束(有效约束)
结果解释
OBJECTIVE FUNCTION VALUE
1. 优化模型与优化软件简介
优化模型和优化软件的重要意义
(最)优化:在一定条件下,寻求使目标最大(小)的决策
最优化是工程技术、经济管理、科学研究、 社会生活中经常遇到的问题, 如: 结构设计 资源分配 生产计划 运输方案 解决优化问题的手段 • 经验积累,主观判断 • 作试验,比优劣 • 建立数学模型(优化模型),求最优策略(决策) CUMCM赛题:约一半以上与优化有关,需用软件求解
2)
0.000000
48.000000
3)
0.000000
2.000000
4) 40.000000
0.000000
NO. ITERATIONS= 2
reduced cost值表 示当该非基变量 增加一个单位时 (其他非基变量 保持不变)目标 函数减少的量(对 max型问题)
也可理解为:
为了使该非基变 量变成基变量, 目标函数中对应 系数应增加的量
2
50.000000 10.000000
6.666667 90,在允许范
3 480.000000 53.333332
80.000000 围内
4 100.000000 INFINITY 40.000000
利用lingo语法简化表达式
10
lingo适合解决什么问题?
只要涉及最大或最小值的优 化问题,都能用lingo求 解
11
Lingo基础
一个优化问题通过以下三部分组成:
1、目标函数:一般表示成求某个数学表达式的最大 值或最小值。 2、决策变量:目标函数值取决于哪些变量 3、约束条件:对变量附加一些条件限制(通常用等 式或不等式表示)。(变量限制条件)
点击红色按纽运行点击红色按纽运行lingo简介1lingo由美国lindo公司开发软件前身是lindo60是美国芝加哥大学生linusschrage教授于1980年开发的专门用于求解数学规划的软件包属于最优化运筹学问题求解软件2lingo主要用于求解线性规划非线性规划二次规划和整数规划等问题也可以用于求解一些线性和非线性方程组及代数方程求根等
19
lingo集基础
例3.1:要定义x1,x2,…,x100这100个变 量,可定义集合xx, 写成: Sets: xx/1..100/:x; Endsets 其中XX是集合,1..100表示集合从1到100, X表示这个集合的变量,XX只作循环或程序流 时才使用 注意:在MATLAB中只能用矩阵表示,这是 LINGO简单的原因
27
常用数学函数
@abs(x) 返回x的绝对值 @sin(x) 返回x的正弦值,x采用弧度制 @cos(x) 返回x的余弦值 @tan(x) 返回x的正切值 @mod(x,y) 求x/y的余数 @exp(x) 返回常数e的x次方 @log(x) 返回x的自然对数 @lgm(x) 返回x的gamma函数的自然对数 @sign(x) 如果x<0返回-1;否则,返回1 @floor(x) 返回x的整数部分。当x>=0时,返回不超过 x的最大整数;当x<0时,返回不低于x的最大整数。 @smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值 @smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值
lindo和lingo简介
LINDO和LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件包。
LINDO 用于求解线性规划和二次规划,LINGO除了具有LINDO的全部功能外,还可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解以及代数方程求根等。
LINDO和LINGO软件的最大特色在于可以允许优化模型中的决策变量是整数(即整数规划),而且执行速度很快。
LINGO实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,并提供与其它数据文件(如文本文件、EXCEL电子表格文件、数据库文件等)的接口,易于方便地输入、求解和分析大规模最优化问题。
由于这些特点,LINDO和LINGO软件在教学、科研和工业、商业、服务等领域得到广泛应用。
1)目标函数及各约束条件之间一定要有“Subject to (ST) ”分开。
2)变量名不能超过8个字符。
3)变量与其系数间可以有空格,单不能有任何运算符号(如乘号“*”等)。
4)要输入<=或>=约束,相应以<或>代替即可。
5)一般LINDO中不能接受括号“()“和逗号“,“,例:400(X1+X2) 需写成400X1+400X2;10,000需写成10000。
6)表达式应当已经过简化。
不能出现 2 X1+3 X2-4 X1,而应写成-2X1+3 X2。
用LINDO求解施工中的线性规划(LP)问题1 引言线性规划是现代化管理的常用工具与方法,在施工过程中,很多实际问题,如配(下)料,运输(土石方调配),施工机具车辆调度,施工场地的合理设点,成品、半成品、原材料的合适库存量规划问题等等,都需要运用线性规划方法求得最优方案。
线性规划一般需要先确定要求的未知变量和目标函数,然后找出所有的约束条件,表示为线性方程或不等式,建立问题的数学模型,对于变量数目和约束条件较少的情况可用手工计算,较多的情况则需运用计算机来求解。
2 LINDO介绍LINDO是Linear INteractive and Discrete Optimizer字首的缩写形式,是由Linus Schrage 于1986年开发的优化计算软件包。
常用数学软件介绍Maple、Mathematica、Matlab、_MathCAD、_SAS、SPSS、LINDO、LINGO
数学软件是数学实验室的主要组成部分。 50年代计算机的强大功能主要表现在数值计算上。 60到80年代的Fortran以及Basic语言等可以说是数学软 件(Mathematical Software)的基础。 在70到80年代出现了数学软件包。 数学软件的发展经历了一个八仙过海各显神通的阶段。
使用LINDO的一些注意事项
“>”(或“<”)号与“>=”(或“<=”)功能相同 变量与系数间可有空格(甚至回车), 但无运算符 变量名以字母开头,不能超过8个字符 变量名不区分大小写(包括LINDO中的关键字) 目标函数所在行是第一行,第二行起为约束条件 行号(行名)自动产生或人为定义。行名以“)”结 束 7. 行中注有“!”符号的后面部分为注释。如: ! It’s Comment. 8. 在模型的任何地方都可以用“TITLE” 对模型命名 (最多72个字符),如: TITLE This Model is only an Example 1. 2. 3. 4. 5. 6.
理功能,允许用户从Word访问Matlab的数值计算和
可视化结果。
2.人机界面友好,编程效率高 Matlab语言易学易用,不要求用户有高深的数学 和程序语言知识,不需要用户深刻了解算法及编程技 巧。Matlab的语言规则更接近数学表示,与我们习惯 的笔算式极为相似,命令表达方式与标准的数学表达 式非常相近。它以解释方式工作,键入算式无需编译 立即得出结果,若有错误也立即做出反应,便于编程 者立即改正。 Matlab具有图形用户接口(GUI),允许用户把 Matlab当作一个应用开发工具来使用。Matlab还包含 几十个 PDF帮助文件,从Matlab的使用入门到其他专 题应用均有详细的介绍。
LINDO-LINGO简介及使用方法
欢迎访问华中数学建模网 1.LINDO、LINGO一、软件简介LINDO是一种专门用于求解数学规划问题的软件包。
由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。
因此在数学、科研和工业界得到广泛应用。
LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。
也可以用于一些非线性和线性方程组的求解以及代数方程求根等。
LINDO中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。
一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)。
整数规划(IP—Integer Programming)问题。
其中LINDO 6 .1 学生版至多可求解多达300个变量和150个约束的规划问题。
其正式版(标准版)则可求解的变量和约束在1量级以上。
LINDO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP —QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。
虽然LINDO和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。
要学好用这两个软件最好的办法就是学习他们自带的HELP文件。
下面拟举数例以说明这两个软件的最基本用法。
(例子均选自张莹《运筹学基础》)例1.(选自《运筹学基础》P54.汽油混合问题,线性规划问题)一种汽油的特性可用两个指标描述:其点火性用“辛烷数”描述,其挥发性用“蒸汽压力”描述。
某炼油厂有四种标准汽油,设其标号分别为1,2,3,4,其特性及库存量列于下表1中,将上述标准汽油适量混合,可得两种飞机汽油,某标号为1,2,这两种飞机汽油的性能指标及产量需求列于表2中。
Lingo简介
Lingo软件一、变量定界函数(Variable Domain Functions )(1)取整变量:@GIN( variable_name);Example 1: @GIN( X); 使X为整数变量;Example 2: @GIN( PRODUCE( 5)); 使PRODUCE( 5)为整数变量;Example 3: @FOR( DAYS( I): @GIN( START( I)));使START( I),I DAYS∈全部为整数变量。
1.2 0,1变量:@BIN( variable_name);Example 1: @BIN( X); 使X取值为0或1;Example 2: @BIN( INCLUDE( 4)); 使变量INCLUDE( 4)取值为0或1;Example 3: @FOR( ITEMS: @BIN( INCLUDE));使INCLUDE(i),i t i m e s∈全部变量为0,1变量。
1.3 自由变量:@FREE( variable_name);Example 1: @FREE( X); 使X为自由变量;Example 2: @FREE( QUANTITY( 4)); 含义同上Example 3: @FOR( ITEMS: @FREE( QUANTITY)); 含义同上1.4 约束变量:@BND( lower_bound, variable_name, upper_bound); Example 1: @BND( -1, X, 1); [1,1]X∈-Example 2: @BND( 100, QUANTITY( 4), 200); 含义同上;Example 3: @FOR( ITEMS: @BND( 10, Q, 20)); 含义同上;Example 4: @FOR( ITEMS: @BND( QL, Q, QU)); 含义同上。
二、常见运算符2.1 代数运算符: +,-, *,/,^;2.2 逻辑运算符:(1)逻辑表达式运算 #AND#(与),#OR#(或) #NOT#(非)(2)数值表达式运算 #EQ#(等于), #NE#(不等于),#GT#(>) #GE#(≥) #LT#(<) #LE#(≤)(3)数值关系运算符:=,>=,<=。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lingo 中的集合
• 集是一群相联系的对象,这些对象也称为集的成员。 一个集可能是一系列产品、卡车或雇员。每个集成员 可能有一个或多个与之有关联的特征,我们把这些特 征称为属性。属性值可以预先给定,也可以是未知的, 有待于LINGO求解。例如,产品集中的每个产品可以有 一个价格属性;卡车集中的每辆卡车可以有一个牵引 力属性;雇员集中的每位雇员可以有一个薪水属性, 也可以有一个生日属性等等。 • LINGO有两种类型的集:原始集(primitive set)和派 生集(derived set)。
某厂生产 A,B,C 三种产品,其所需劳动力、材料等有关数据见下表:
消 耗 定 资 源 额 产 品
A
B
C
可用量(单位)
劳动力 材 料 产品利润(元/件)
6 3 3
3 4 1
5 5 4
45 30
问题:1)确定获利最大的产品生产计划; 2)产品 A 的利润在什么范围内变动时,上述最优计划不变?(5 分) 3) 如果劳动力数量不增,材料不足时可从市场购买,每单位 0.4 元, 问该厂要不要购进原材料扩大生产,以购多少为宜?(10 分)
隐式成员列表 1..n StringM..StringN DayM..DayN MonthM..MonthN MonthYearM..MonthYe arN 示例 1..5 Car2..car14 Mon..Fri Oct..Jan Oct2001..Jan2002 所产生集成员 1,2,3,4,5 Car2,Car3,Car4,…,Car14 Mon,Tue,Wed,Thu,Fri Oct,Nov,Dec,Jan Oct2001,Nov2001,Dec2001 ,Jan2002
11
10 --
27
21 6
19
10 11
1432 13指派题模型max s.t.
c x
i 1 j 1 n
n
n
ij ij
x
j 1 n
ij
1, i 1,2, , n 1, j 1,2, , n
x
i 1
ij
xij 0或1
求解程序见 zhipai.lg4
sets: flight/1..6/; assign(flight,flight): c,x; endsets data:
• 最大规模的模型的非零系数可以达到1,000,000个, • 最大变量个数可以达到100,000个,最大目标函数和约束 条件个数可以达到32000个, • 最大整数变量个数可以达到100,000个。 • LINDO 6 .1 学生版至多可求解多达300 个变量和150 个 约束的规划问题。
LINDO 初步操作
指派问题
• 设有n个人,计划做n项工作,其中Cij表示第i个人做第j 项工作的收益,现求一项指派方式,使得每个人完成 一项工作,并使总收益最大。 • 例:6人做6项工作收益情况
人
工作
1
2
3
4
5
6
1
2 3
20
17 9
15
15 12
16
33 18
5
12 16
4
8 30
7
6 13
4
5 6
12
---
8
7 --
集合的定义方法
• 定义一个原始集,用下面的语法: setname[/member_list/][:attribute_list]; • ① 当显式罗列成员时,必须为每个成员输入一个不同 的名字,中间用空格或逗号搁开,允许混合使用。
• 例: 可以定义一个名为students的原始集,它具有成
员John、Jill、Rose和Mike,属性有sex和age: • sets: students/John Jill, Rose Mike/: sex, age; endsets
变量上,下限定义命令SUB,SLB • 命令功能:给当前模型中的变量设置上,下限。 • 命令格式:SUB [变量名] [常数] • SLB [变量名] [常数] • 其中的常数为给相应变量设置的上,下限数值。 • SLB X1 1.5 !为X1设定下限1.5 FREE X1 • 取消变量上下限命令FREE
• ② 当隐式罗列成员时,不必罗列出每个集成员。可采 用如下语法: setname/member1..memberN/[: attribute_list]; • 这里的member1是集的第一个成员名,memberN是集的 最末一个成员名。LINGO将自动产生中间的所有成员名 • LINGO也接受一些特定的首成员名和末成员名,用于创 建一些特殊的集。列表如下:
Lingo中的常用函数()
• @bin(x) 限制x为0或1 • @bnd(L,x,U) 限制L≤x≤U • @free(x) 取消对变量x的默认下 界为0的限制,即x可以取任意实数 • @gin(x) 限制x为整数 • @if(x#eq#0,100,0) 如果x=0,就返回100, 否则 ,返回0
基本集合,派生集合
• 一个原始集是由一些最基本的对象组成的。 • 一个派生集是用一个或多个其它集来定义的, 也就是说,它的成员来自于其它已存在的集。 • 集部分是LINGO模型的一个可选部分。在LINGO 模型中使用集之前,必须在集部分事先定义。 集部分以关键字“sets:”开始,以“endsets” 结束。一个模型可以没有集部分,或有一个简 单的集部分,或有多个集部分。一个集部分可 以放置于模型的任何地方,但是一个集及其属 性在模型约束中被引用之前必须定义了它们。
练习:混合泳接力队员选择问题
Lindo,Lingo软件使用简介
北京信息科技大学理学院数学系 黄静静
Lindo简介
• LINDO 是专门用于求解数学规划的软件包。LINDO 执行速度很快、易于方便输入,因此在数学、科研和 工业界得到广泛应用。 • LINDO 主要用于解线性规划、二次规划。也可以用于 线性方程组的求解以及代数方程求根等。 • LINDO 中包含了建模语言和许多常用的数学函数(包 括大量概论函数),可供使用者建立规划问题时调用。 • 一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划
给模型加注标题和行号
TITLE "This is a maximum profit problem" MAX 4 X1 + X2 - X3 + 2 X4 ST RESOURCE) X1 - X2 + X3 - X4 < 30 SALE) 3 X1 + X2 - X3 + 2 X4 < 36 STORAGE) X1 + 2 X2 + X3 - 2 X4 < 20 END
c = 20 15 16 5 4 7
17 15 33 12 8 6 9 12 18 16 30 13
12 8 11 27 19 14
-99 7 10 21 10 32 -99 -99 -99 6 11 13; enddata max = @sum(assign: c*x); @for(flight(i): @sum(flight(j):x(i,j))=1); @for(flight(j): @sum(flight(i):x(i,j))=1);
• • • • • • • MAX 开始输入一个极大化模型 MIN 开始输入一个极小化模型 TITL 输入模型标题 EDIT 全屏幕输入或全屏幕编辑一个模型 LOOK 在屏幕上显示已输入的模型 GO 模型运行 QUIT 退出LINDO,返回操作系统
MAX 5.24X1+7.3X2+8.34X3+4.18X4 SUBJECT TO 1.5X1+X2+2.4X3+X42000 X1+5X2+X3+3.5X48000 1.5X1+3X2+3.5X3+X45000 X1,X2,X3,X40 MAX 5.24X1+7.3X2+8.34X3+4.18X4 ST !"ST"也可以写"SUBJECT TO" 1.5X1+1.0X2+2.4X3+1.0X4<2000 1.0X1+5.0X2+1.0X3+3.5X4<8000 1.5X1+3.0X2+3.5X3+1.0X4<5000 END !END结束MAX命令状态。 !变量非负约束X1,X2,X3,X4>=0是隐含的,不必也不能输入
定义派生集
sets: product/A B/; machine/M N/; week/1..2/; allowed(product,machine,week):x; endsets
LINGO生成了三个父集的所有组合共八组作为allowed集的成员。列表如下: 编号 成员 1 1 (A,M,1) 2 2 (A,M,2) 3 3 (A,N,1) 4 4 (A,N,2) 5 5 (B,M,1) 6 6 (B,M,2) 7 7 (B,N,1) 8 8 (B,N,2) 成员列表被忽略时,派生集成员由父集成员所有的组合构成,称为稠密集。 限制派生集的成员,使它成为父集所有组合构成集合的一个子集,称为稀疏集 一个派生集的成员列表有两种方式生成:①显式罗列;②设置成员资格过滤器
例1.1 如何在LINGO中求解如下的LP问题:
Lingo程序如下: model:
max = 2*x1+3*x2;
x1+x2>=350; x1>=100; 2*x1+x2<=600; end
Lindo,Lingo主要区别
• • • • • • 目标函数表示方式从max变成了max= ST在Lingo中不再需要 在每个系数与变量之间增加了运算(不能省略) 每行(目标,约束和说明语句)后增加了‘;’ 约束的名字放在一对[ ]中,不是在 )中 Lingo中模型与model: 开始,以end 结束 ,对简 单模型可省略 • Lingo不区分大小写,变量名不超过32个字符, 以字母开头