lindo常用的基本语法
LINGO软件求解优化问题
![LINGO软件求解优化问题](https://img.taocdn.com/s3/m/a1a5e8808762caaedd33d431.png)
模 1桶 型 牛奶 或
12小时
3公斤A1 4公斤A2
获利24元/公斤 获利16元/公斤
8小时 公斤A 每天 50桶牛奶 时间 桶牛奶 时间480小时 至多加工 小时 至多加工100公斤 1 公斤 决策变量 目标函数 x1桶牛奶生产 1 桶牛奶生产A 获利 24×3x1 × 每天获利 原料供应 劳动时间 加工能力 非负约束 x2桶牛奶生产 2 桶牛奶生产A 获利 16×4 x2 ×
Window|Tile (Alt+T) 平铺窗口 上下文相 关的帮助
File|New (F2) 新建文件
Edit|Cut (Ctrl+X) 剪切
•
Window|Send to Back (Ctrl+B) 窗口后置
3、LINGO的菜单 、 的菜单 栏 • File
– Export File… – User Database Info
有效步数
5、Options 7个选 、 个选 项卡 • 可设置80-90个控制参数
Interface界面 General Solver通用求解 Linear Solver线性求解 Nonlinear Solver非线性求解 Integer Pre-Solver整数预处理 Integer Solver整数求解 Global Solver全局最优求解
结果解 释
Objective value: Variable X1 X2 Row 1 2 3 4 3360.000 Value Reduced Cost 20.00000 30.00000 Slack or Surplus 3360.000 0.000000 0.000000 40.00000 0.000000 0.000000 Dual Price 1.000000 48.00000 2.000000 0.000000
LINDO使用手册
![LINDO使用手册](https://img.taocdn.com/s3/m/6b2353eeaeaad1f346933ff5.png)
LINDO使用手册LINDO Users Manual第一章 LINDO初步LINDO 是Linear INteractive Discrete Optimizer的缩写,是一个线性和整数规划的软件系统。
这里介绍的LINDO/386 5.3版本,最大规模的模型的非零系数可以达到1,000,000个,最大变量个数可以达到100,000个,最大目标函数和约束条件个数可以达到32000个,最大整数变量个数可以达到100,000个。
它的特点是采用交互方式操作,而且命令简单明了,很容易掌握。
用户在输入初步的数学模型后,可以一边运行,一边修改调试,直至获得满意的结果。
LINDO既是一个实用的求解大规模线性和整数规划系统,也很适用于训练的目的,用来培养学生面对较复杂的实际问题,构造线性及整数规划模型以及求解这些问题的能力。
限于本教材的内容,本手册只介绍有关线性规划和整数规划的基本内容,省略了有关二次规划、参数规划以及有关线性规划算法的比较专门的内容。
§1.1 LINDO 命令一览表LINDO 命令纳成十一类,每一类的名称及所属命令如下:1、查询类(Information)HELP 求助COM ( Command ) 命令列表LOCAL 当前版本信息CAT ( Categories ) 命令分类TIME 显示当前时间DATE 显示当前日期2、文件输入类( Input )MAX 键盘输入极大化模型MIN 键盘输入极小化模型RETR ( Retrieve ) 从磁盘读入模型文件RMPS ( Read MPS ) 从磁盘读入MPS文件TAKE 从磁盘读入模型或命令文件LEAV ( LEAVE ) TAKE命令的终止RDBC* 读取用SBDC命令保存的基列作为初始基FBR * 读取用FBS命令保存的基FINS* 读取用MPS格式保存的基3、显示类(Display)PIC ( Picture ) 显示矩阵中非零元素的分布及数量级TABL ( Tableau ) 显示当前单纯形表LOOK 显示模型的数学形式NONZ ( Nonzeros ) 显示解中的非零变量SHOC ( Show Column ) 显示模型中的一列SOLU ( Solution ) 显示当前得到的解RANGE 显示灵敏度分析的结果BPIC* 显示三角化的当前基逆矩阵CPRI* 显示所选择列的有关信息RPRI* 显示所选择行的有关信息DMPS* 显示以MPS格式表示的解PPIC* 显示行列重新排列的矩阵,使非零元素最靠近对角线4、文件输出类( File Output )SAVE 模型存盘DIVE ( Divert ) 将屏幕输出转向磁盘文件RVRT ( Revert ) 重新回到屏幕输出状态SMPS ( Save MPS ) 模型以 MPS 格式存盘SDBC* 将当前基的列向量以文件形式保存FBS* 将当前基以文件形式保存FPUN* 将当前基以MPS形式保存SMPN* 将当前模型用非标准的MPS格式保存5、求解类(Solution)GO 求解一个模型PIV(Pivot) 进行一次单纯形叠代GLEX* 用字典序方法优化6、问题编辑类( Problem Editing )ALT(Alter) 修改模型中的系数EXT(Extension) 增加一个约束DEL(Delete) 删除一个约束SUB(Simple Upper Bound) 给出一个变量的上界APPC(Append Column) 增加一列SLB(Simple Lower Bound) 给出一个变量的下界FREE 取消一个变量的上下界EDIT 用全屏幕编辑建立或修改模型7、退出( Quit )QUIT 退出 LINDO 系统8、整数规划、二次规划和参数规划( Integer, Quadratic and Parametric Programs )INT 定义一个0-1变量QCP*(Quadratic Programming) 定义二次规划PARA*(Parametric Programming)求解参数规划POSD*(Positive Definiteness) 检查二次规划矩阵的正定性TITAN* 紧缩连续变量的上界以及0-1变量的系数BIP* 在整数规划中给出一个剪枝的界GIN (General Integer)定义一个整数变量IPTOL* 设定整数规划最优解的宽容度9、对话参数( Conversational Parameters )WIDTH 设置打印机宽度TERS ( Terse ) 简洁输出信息VERB ( Verbose ) 冗长输出信息BAT ( Batch ) 成批输出信息PAGE 设定屏幕页的大小PAUSE 暂停10、用户子程序USER 执行用户提供的子程序11、杂项INV* (INVERT)求当前基的逆矩阵,以减少叠代误差STAT (STATISTICS)统计模型矩阵的系数BUG 如发现系统缺陷,提供有关信息SET 设置LINDO的内部参数TITL (TITLE)给出模型的标题§1.2 LINDO 初步操作以下命令,可以完成模型输入,模型显示,模型运行,退出LINDO等操作,这些命令是:• MAX 开始输入一个极大化模型• MIN 开始输入一个极小化模型• TITL 输入模型标题• EDIT 全屏幕输入或全屏幕编辑一个模型• LOOK 在屏幕上显示已输入的模型• GO 模型运行• QUIT 退出LINDO,返回操作系统在这一章中,先对这几个命令的用法作详细解说。
LINDO LINGO使用简介
![LINDO LINGO使用简介](https://img.taocdn.com/s3/m/7e8766ec998fcc22bcd10dae.png)
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使用入门
![lingo使用入门](https://img.taocdn.com/s3/m/930932116edb6f1aff001f3b.png)
伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。
member_list· 可选,集的成员列表,如果集成员放在集定义中,那么对它们可采取 显式罗列和隐式罗列两种方式。如果集成员不放在集定义中,那么可以在随后的数 据部分定义它们。 ① 当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号 搁开,允许混合使用。 例4-3 可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike ,属性有sex和age: sets: students/John Jill, Rose Mike/: sex, age; endsets
注:A variable is considered to be nonlinear if it enters into any nonlinear relationship in any constraint in the model,如X*Y=10,而X+Y=10则认为X,Y都是线 性的;在X*X+Y=100中,X是非线性的,Y是线性的;在X=1,X+Y=3中,则认为X和Y 都不是变量。 2、约束框(Constraints)显示的是模型约束的总数和非线性约束的总数。 3、非零框(Nonzeros)显示的是模型中的非零系数的总数和非线性变量中非零系数的 总数。 4、内存时间框(Generator Memory Used)显示正在使用的模型所需的内存大小。 5、耗用时间框(Elapsed Runtime)显示用于编译和求解模型所需的时间。 6、求解状态框(Solver Status)显示模型类型和最优解的状态 Model:模型类型,可能的结果是:LP,NLP,QP,IP,ILP,INLP,PIP,MIP,IQP,PIQP,PINP等 State:给出现行解得状态,可能的结果是:全局最优解(Global Opt),局部最优解 (Local/Relative Opt),可行解(Feasible solution),不可行解(Infeasible solution),无界 解(Unbounded),中断(Interrupt),未定(Undetermined) Objective:给出当前目标函数值
第5讲 LINDO简介
![第5讲 LINDO简介](https://img.taocdn.com/s3/m/95c4348a6529647d272852d5.png)
4.4 影子价格(Dual Price)
在LINDO解决方案的Slack or Surplus项后面一般还 有Dual Price项,它表示约束函数的右侧值(RHS)每 “增加”一单位,目标函数将“增加”的值。这里的 “增加”是相对求关于MAX问题而言;相对求关于 MIN线性问题来说,则为RHS值每增加一单位,目标 函数将减少的值。如果此值为负数,则对于MAX线性 问题而言,RHS值每增加一单位,目标函数将“增加” 一个负值,即将减少的值;对于求关于MIN线性问题来 说就是将要增加的值。
5.3 Debug子菜单
用Debug命令诊断一个模型的错误是很方便的。而许 多模型的错误往往出现在充分行和必要行上。所谓充 分行(Sufficent Rows)是指: 如果从模型中删去这个约束 条件,将使模型变为可行。并不是每个模型都有充分 行,但每一个无可行解或最优解模型都有必要行(Neces –sary Rows)。必要行是指一个约束条件是非法的,但
X<=10 Y<=12 X+2Y<=16 END
3.2.4 类型说明语句的写法
类型说明语句一般写在结束语句END的后面,下面 分别加以介绍:
Free<Variable> 设置变量为任意值,包括正数和 负数. 如果程序中没有此说明语 句,则变量默认为正数.
Gin<Variable> 设置变量为整数.
选择“是”,然后选Close键,就得到分析结果。也 可以选“否”,然后在Solutions下拉菜单中选Range项, 同样可以得到灵敏度分析结果。
灵敏度分析有两个结果:
(一) 在最优解不变条件下目标函数系数的允许变化范 围(RANGES IN WHICH THE BASIS IS UNCHANGED: OBJ COEFFICIENT RANGES):
lindo详细使用说明
![lindo详细使用说明](https://img.taocdn.com/s3/m/e7dcd0e0e009581b6bd9eba3.png)
LINDO软件包使用手册目录第一节简介与安装第二节用LINDO求解线性规划(LP) 问题第三节用LINDO求解整数规划(IP) 和二次规划(QP) 问题第四节GINO简介第五节LINGO简介第一节简介与安装1·1简介本文主要面向大中专学生, 研究生, 及掌握一定的高等代数知识的读者,介绍LINDO软件包(学生版)的基本使用方法。
该软件包(学生版)主要功能在于帮助使用者较快地输入一个优化问题的式子, 求解并分析该优化问题, 然后可做些较小的改动, 并重复上述的过程.该软件包(学生版)在微机上DOS环境下运行。
其使用界面不是图形式的,而是字符式的;不是菜单式的, 而是面向具体的命令(Command). 它有许多的命令, 每一个命令都可随时执行, 由系统检查该命令是否在上下文中起作用. 它采用一种对用户友好的交互使用方式, 包括了所有的使用过程指导. 基于使用的具体情况, 它会向使用者询问下一步将做什么, 或等待使用者输入下一个命令.LINDO软件包(学生版)包括LINDO,GINO,LINGO和LINGO NL(LINGO2)等优化软件的学生版以及相应的例子文件。
由于LINDO程序执行速度很快,易于方便地输入、求解和分析优化问题,LINDO在教学、科研和工业界得到广泛应用。
这里用LINDO软件包作为LINDO,GINO,LINGO和LINGO NL等的统称,包含五种组件,下面分别介绍如下:(1)LINDO是Linear INteractive and Discrete Optimizer字首的缩写形式,是由Linus Schrage 于1986年开发的优化计算软件包, 可以用来求解线性规划(LP----Linear Programming), 整数规划(IP----Integer Programming) 和二次规划(QP----Quadratic Programming) 问题. LINDO易于规划问题的输入、求解和分析,程序执行速度很快。
数学建模软件LinDoLinGo的简介(修改)
![数学建模软件LinDoLinGo的简介(修改)](https://img.taocdn.com/s3/m/a4c934611ed9ad51f11df202.png)
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的一些注意事项
![使用LINDO的一些注意事项](https://img.taocdn.com/s3/m/1a80e5cd172ded630b1cb66b.png)
LINGO软件简介
LINGO模型的优点
•包含了LINDO的全部功能 •提供了灵活的编程语言(矩阵生成器)
LINGO模型的构成:4个段
•目标与约束段 • 集合段(SETS ENDSETS)
• 数据段(DATA ENDDATA) •初始段(INIT ENDINIT)
LINGO模型 — 例:选址问题
某公司有6个建筑工地,位置坐标为(ai, bi) (单位:公里), 水泥日用量di (单位:吨)
•使用LINDO的一 些注意事项
使用LINDO的一些注意事项
9. 变量不能出现在一个约束条件的右端 10. 表达式中不接受括号“( )”和逗号“,”等任何符号, 例: 400(X1+X2)需写为400X1+400X2 11. 表达式应化简,如2X1+3X2- 4X1应写成 -2X1+3X2 12. 缺省假定所有变量非负;可在模型的“END”语句 后用“FREE name”将变量name的非负假定取消 13. 可在 “END”后用“SUB” 或“SLB” 设定变量上 下界 例如: “sub x1 10”的作用等价于“x1<=10” 但用“SUB”和“SLB”表示的上下界约束不计入模 型的约束,也不能给出其松紧判断和敏感性分析。 14. “END”后对0-1变量说明:INT n 或 INT name 15. “END”后对整数变量说明:GIN n 或 GIN name
第一行:模型有5行(约束4行),4个变量,两个整数变量(没有 0-1变量),从第4行开始是二次规划的实际约束。 第二行:非零系数19个,约束中非零系数12个(其中6个为1或-1), 模型密度为0.760(密度=非零系数/[行数*(变量数+1)]) 。 第三行的意思:按绝对值看,系数最小、最大分别为0.3和277。 第四行的意思:模型目标为极小化;小于等于、等于、大于等于约 束分别有2、0、2个;广义上界约束(GUBS)不超过1个; 变量上界约束(VUBS)不少于0个。所谓GUBS,是指一组不 含有相同变量的约束;所谓VUBS,是指一个蕴涵变量上界的约 束,如从约束X1+X2-X3=0可以看出,若X3=0,则X1=0,X2=0 (因为有非负限制),因此X1+X2-X3=0是一个VUBS约束。 第五行的意思:只含1个变量的约束个数=0个;冗余的列数=0个
Lindo使用(经典 推荐)
![Lindo使用(经典 推荐)](https://img.taocdn.com/s3/m/b699173667ec102de2bd89cd.png)
1LINDO软件使用1.1 LINDO简介1.1.1LINDO是什么LINDO 是Linear, INteractive, and Discrete Optimizer的缩写,它是一个便利而有强大的工具软件,常用于求解线性规划(LP——Linear Programming)、整数规划(IP——Integer Programming)和二次规划(QP——Quadratic Programming)问题,这些问题一般在商业、工业、科研和政府工作中都会遇到。
LINDO已被证实在一些特殊领域能发挥巨大作用,如产品配售、配料问题、生产与人员时序安排、库存管理等。
LINDO软件易学易用、运行速度快、结果报告内容详尽。
如果你是一个初学者,你将发现LINDO非常容易上手。
例如,一个用户希望求解:Maxmize 3X + 2YSubject to4X + 3Y < 103X + 5Y < 12那么这就是他所需输入的东西,而LINDO马上就可以求解出结果并给以报告单。
问题以简单明了的方程式形式出现,通过帮助命令可以查询命令的使用方法,LINDO 同时提供了高级建模帮助。
如果你是优化方面的专家,你将对LINDO的强大而又健全的功能留下深刻印象,它具备你所需的所有高级命令:模型输入、求解、结果展示和结果分析。
如果你是一个开发者,你还可以通过自己的应用程序调用LINDO DLL算法。
在某些特殊情况下,LINDO被用来解决工业上的大型线性、二次、整数规划问题,例如在大型机器上,LINDO曾用来解决含多达50,000个约束和200,000个变量的问题。
在演示版中LINDO6.01中,可求解含50个约束和100个变量的问题使用LINDO软件有三种基本方式:z对于中小型问题,可以通过键盘直接输入模型并求解z可以调用通过其它方式产生的文件(包含命令描述和数据录入),并生成报表文件z用户自编子程序可以直接链接LINDO,构造一个包含自己的代码和LINDO优化库的完整程序,1.1.2常用菜单和命令在Windows环境中,LINDO将所有命令划分为如下六个类别:z Filez Editz Solvez Reportsz Windowz Help这些类别在运行LINDO时很容易从菜单上看到,在本节后面将给出其功能描述,在描述每条命令的同时,还列出了相应的工具栏上的按钮和相应的快捷键组合。
lindo简明教程
![lindo简明教程](https://img.taocdn.com/s3/m/6a2a2cdb360cba1aa811da6f.png)
VARIABLE
VALUE
REDUCED COST
X
1.272727
0.000000
Y
1.636364
0.000000
!“VALUE”给出最优解中各变量的值。
!“REDUCE COST”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小
!变动时,目标函数的变化率,其中基变量的 reduce cost 值应为0,对于非基变量Xj 相应
变量命名: 变量名最多用 8 个字符。其中第一个字符必须为 26 个字符之一,其余可以用“! ) + - = < >”这 7 个之外的任意字符。
约束命名 可以给每一个约束条件命名,以使得 LINDO 输出的内容更加易懂。方法是在约束条件 的前面写上约束名称和一个右括弧。它的命名规范和变量命名一样。
运算符 LINDO 的运算符仅有“+ - = < >”这 5 种。“≤”或“≥”用“<”或“>”表示,写成 “<=”或“>=”也可以,但仍会当作“<”或“>”处理。不接受括号来指定运算的优先级, 所有运算从左至右处理。变量和系数之间不要加“*”号。
五、LINDO 可选声明
LINDO 程序中,在“END”行之后可以写“TITLE”、“SUB”、“SLB”、“FREE”、“GIN”、 “INT”、“QCP”这几种可选声明,下面对它们一一说明。
TITLE 使用方式为:TITLE <Title> 指定<Title>为输出结果的标题。
SLB 使用方式为:SLB <Variable> <Value> 指定变量的下界。
图2
图3
以上就是求解一个 LP 问题的全过程。如果对中间的一些细节不关心,可以跳过第
lingo语言
![lingo语言](https://img.taocdn.com/s3/m/c1aa6826bcd126fff7050b2c.png)
需要注意的几个基本问题
尽量使用实数优化,减少整数约束和整数变量 尽量使用光滑优化,减少非光滑约束的个数 尽量少使用绝对值、符号函数、多个变量求最大/最小值、 四舍五入、取整函数等 尽量使用线性模型,减少非线性约束和非线性变量的个数 如x/y <5 改为x<5y 合理设定变量上下界,尽可能给出变量初始值 模型中使用的参数数量级要适当 如小于103
二、Lingo集合 集合
例1 选址问题
某公司有6个建筑工地,位置坐标为(ai,bi) (单位:公里), 水泥日用量di (单位:吨)
i a b d 1 2 3 1.25 2 8.75 0.75 5 3 0.5 4.75 4 4 5.75 5 7 5 3 6.5 6 6 7.25 7.75 11
假设:料场和工地之间有直线道路 (1)现有2料场,位于A(5,1),B(2,7),记(xj,yj),j=1,2, 日储量ej各有20吨。 目标:制定每天的供应计划,即从A, B两料场分别向各 工地运送多少吨水泥,使总的吨公里数最小。
目前为止找到的可行 解的最佳目标函数值 扩展 的求 解器 (求解 求解 程序) 程序 状态 框 目标函数值的界 特殊求解程序当前运行步数: 特殊求解程序当前运行步数: 分枝数(对 程序); 分枝数 对B-and-B程序 ; 程序 子问题数(对 程序); 子问题数 对Global程序 ; 程序 初始点数(对 程序) 初始点数 对Multistart程序 程序
解:
目标:吨公里 约束:需求 供应
m in st .
cij [(xj −ai )2 +( yj −b )2 ]1/2 ∑∑ i
j = i= 1 1 2
2
6
∑c
j= 1 6 i= 1
lindo常用的基本语法
![lindo常用的基本语法](https://img.taocdn.com/s3/m/97dcfc1fbb68a98271fefa33.png)
(1)@for
该函数用来产生对集成员的约束。@for 函数允许只输入一个约束条件,然后由lingo 自动产生每个集成员的约束条件。 例4-2 产生序列{ 1,4,9,16,25 }
model: sets: number/1..5/:x; !此命令产生一个变量x, 是单下标变量,其下标有5个取值; endsets @for(number(i): x(i)=i^2); !此命令是对 所有的下标i,分别求i 2; end
3、 lingo中的灵敏度分析
在lindo中的目标函数最优值、最优解与灵敏度 而在lingo中,最优解、最 分析是一起显示出来, 优值与灵敏度分析是分别用不同的命令显示出来。 lingo中的灵敏度分析的数据输出结果与lindo 中的灵敏性分析中输出结果是相同的。 因为lingo的求解结果中是没有灵敏度分析的, 所以如果需要灵敏度分析的数据,可以通过修改 选项来实现。
“≤”用“<=”表示,并且可以分别用“>”和“<”表示
常用的基本语法
9、程序最后以end结束,对于小型的规划问题, end可以省略。整数变量(例如:gin x1)和0-1 变量(例如int x3)的约束放在end之后,此时end不 能省略。 此时,如果省略end的话,整数变量、0-1变 量等限制将不起作用。 10、如果所有的决策变量都是整数变量(假如有6 个变量),则可以在end之后写命令: gin 6
LINGO软件的使用规则(4)
(10) lingo模型是由一系列语句组成的,即每个语 句是组成lingo模型的基本部分,每个语句(目标、 约束、说明语句等)都是以分号“;”结尾的, 编写程序时应注意保持模型的可读性。
例如:虽然lingo允许每行写多个语句,也允许一 个语句写成几行, 但最好一行只写一个语句, 并且 按照语句的嵌套关系对语句安排适当的缩进,增 强层次感。
lindo 6.1简介
![lindo 6.1简介](https://img.taocdn.com/s3/m/c9462e8ed0d233d4b14e69dc.png)
附录3 LINDO 6.1 Demo简介————————————————————————————————————1LINDO 6.1简介和版本信息LINDO是LINDO公司开发的一个求解线性规划、整数规划和二次规划的一个产品。
LINDO 是Linear Interactive Discrete Optimizer即“线性交互离散优化”的缩写。
这里介绍LINDO 6.1 Demo版的使用。
这个LINDO版本是LINDO公司提供的免费产品,可以从网站下载。
LINDO 6.1 Demo版可以求解规模最大为300个变量(其中整数变量最多为50个),150个约束的线性规划问题。
LINDO 6.1 功能齐全,使用简单,求解问题的规模可以满足教学案例的需要。
LINDO 6.1 的安装过程和大多数应用程序相同,双击安装程序图标lnd61.exe,并按照屏幕提示操作。
安装完毕以后,单击Windows“开始”\“程序”\LINDO 6.1\Lindow32,启动LINDO。
首次进入LINDO 6.1,会出现请求输入LINDO产品序列码的窗口:单击“Demo Version”,以演示版用户身份进入系统。
出现LINDO主窗口,并且出现About LINDO的界面。
About LINDO界面显示LINDO 6.1版本的一些主要参数,如约束条件个数,变量个数,整数变量个数,系数矩阵非零元素个数等。
此界面显示几秒钟后自动关闭。
如需要再次打显示此About LINDO界面,可单击菜单Help\About LINDO…。
显示About LINDO界面后,出现LINDO空白模型窗口。
LINDO空白模型窗口如下。
2 LINDO 6.1的菜单和工具图标和大多数Windows 应用软件一样,LINDO 既可以用菜单驱动,也可以用工具图标驱动。
2.1 LINDO 菜单LINDO 有六项下拉菜单,如右图所示。
这六项菜单分别是:File -文件 Edit -编辑 Solve -求解 Report-报表Window -窗口Help -帮助下面对每一下拉菜单的子项作出说明。
PPT上的模型实例lindo与lingo的区别
![PPT上的模型实例lindo与lingo的区别](https://img.taocdn.com/s3/m/c8951f35abea998fcc22bcd126fff705cc175c31.png)
LINDO与LINGO的语法区别LINGO的使用(求解线性规划和非线性规划问题):1.最大值MAX=…,最小值MIN=…2.语句必须以分号”;”结束每行可多个语句语句可跨行3.变量名由字母、数字和下划线组成以字母开头长度不超32个字符不区分大小写4.默认决策变量非负其他要求可做说明5.模型以MODEL:开头,以END结束(此结构也可省略)6.注释以!开始,以; 结束;7.可以用<表示<=;用>表示>=8.LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除注释语句和TITLE语句外的其他语句都是约束条件,因此语句的顺序并不重要。
9.限定变量取整数值的语句为“@GIN(X1)”和“@GIN(X2)”,不可以写成“@GIN(2)”,否则LINGO将把这个模型看成没有整数变量。
10.LINGO中函数一律需要以“@”开头,其中整型变量函数(@BIN、@GIN)和上下界限定函数(@FREE、@SUB、@SLB)与LINDO中的命令类似。
而且0/1变量函数是@BIN函数。
Lindo的使用(求解线性规划问题)★程序以“MAX”(或“MIN”)开始,表示目标最大化(或最小化)问题,后面直接写目标函数表达式和约束表达式;★目标函数和约束之间用“ST”分开;(或用“s.t.”)★程序以“END”结束(“END” 也可以省略)。
★系数与变量之间的乘号必须省略。
★系统对目标函数所在行自动生成行名“1)”,对约束默认的行名分别是“2)” “3)”…,用户也可以自己输入行名;行名放在对应的约束之前。
★书写相当灵活,不必对齐,不区分字符的大小写。
★默认所有的变量都是非负的, 所以不必输入非负约束。
★约束条件中的“<=” 及“>=”可分别用“<” 及“>”代替。
★一行中感叹号“!”后面的文字为是注释语句,可增强程序的可读性,不参与模型的建立。
1.变量与系数间可有空格(甚至回车), 但无运算符2.变量名以字母开头,不能超过8个字符3.变量名不区分大小写(包括LINDO中的关键字)4.目标函数所在“>”(或“<”)号与“>=”(或“<=”)功能相同5.行是第一行,第二行起为约束条件6.行号(行名)自动产生或人为定义。
lindo,lingo使用几个重要方面
![lindo,lingo使用几个重要方面](https://img.taocdn.com/s3/m/e024d9d528ea81c758f578a5.png)
LINGO模型的构成:4个段 模型的构成: 个段 模型的构成
目标与约束段 目标与约束段 集合段(SETS 集合段( ENDSETS) )
数据段(DATA ENDDATA) 数据段( ) 初始段(INIT ENDINIT) 初始段( 初始段 )
LINGO模型 LINGO模型 — 例:选址问题
某公司有6个建筑工地,位置坐标为 单位: 某公司有 个建筑工地,位置坐标为(ai, bi) (单位:公里 个建筑工地 单位 公里), 单位: 水泥日用量d 单位 水泥日用量 i (单位:吨)
使用LINDO的一些注意事项 使用LINDO的一些注意事项 LINDO
9. 变量不能出现在一个约束条件的右端 10. 表达式中不接受括号“( )”和逗号“,”等任何符号 例: 等任何符号, 表达式中不接受括号“ 和逗号“ 等任何符号 和逗号 400(X1+X2)需写为 需写为400X1+400X2 需写为 11. 表达式应化简,如2X1+3X2- 4X1应写成 -2X1+3X2 表达式应化简, 应写成 12. 缺省假定所有变量非负;可在模型的“END”语句后用 缺省假定所有变量非负;可在模型的“ 语句后用 将变量name的非负假定取消 “FREE name”将变量 将变量 的非负假定取消 13. 可在 “END”后用“SUB” 或“SLB” 设定变量上下界 后用“ 后用 例如: 的作用等价于“ 例如: “sub x1 10”的作用等价于“x1<=10” 的作用等价于 但用“ 但用“SUB”和“SLB”表示的上下界约束不计入模型的约 和 表示的上下界约束不计入模型的约 也不能给出其松紧判断和敏感性分析。 束,也不能给出其松紧判断和敏感性分析。 14. “END”后对 变量说明:INT n 或 INT name 后对0-1变量说明 后对 变量说明: 15. “END”后对整数变量说明:GIN n 或 GIN name 后对整数变量说明: 后对整数变量说明
lindo_lingo的使用
![lindo_lingo的使用](https://img.taocdn.com/s3/m/f017e6eeaeaad1f346933fc1.png)
二、用LINDO求解整数规划(IP) LINDO求解整数规划 IP) 求解整数规划(
例 3 如下IP问题: 如下IP问题 问题: min 15x11+19x21+26x31+19x41+18x12+23x22+17x32+2 1x42+24x13+22x23+16x33+23x43+24x14+18x24+19 x34+17x44 ST x11+x12+x13+x14=1 x21+x22+x23+x24=1 x31+x32+x33+x34=1 x41+x42+x43+x44=1 x11+x21+x31+x41=1 x12+x22+x32+x42=1 x13+x23+x33+x43=1 x14+x24+x34+x44=1 end int 16
下面我们就用LINDO 来解这一优化问题。 下面我们就用LINDO 来解这一优化问题
输入语句: max(不区分大小写,min) x1+x2+x3+x4 ST(大写或写subject to) x5+x6+x7+x8>=250000 x1+x5<=380000 x2+x6<=265200 x3+x7<=408100 x4+x8<=130100 2.85x1-1.42x2+4.27x318.49x4>=0 2.85x5-1.42x6+4.27x718.49x8>=0 16.5x1+2.0x2-4.0x3+17x4>=0 7.5x5-7.0x6-13.0x7+8.0x8>=0 end
LINDO-LINGO简介及使用方法
![LINDO-LINGO简介及使用方法](https://img.taocdn.com/s3/m/f276747d27284b73f242505a.png)
欢迎访问华中数学建模网 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中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过修改选项得到灵敏度分析数据的步骤:
① 先修改系统选项,启动灵敏度分析 执行 “ LINGO/ options ” 菜单命令弹出 “选项” 对话框,在“ General solver ”选项卡 中, 将其中左边列的第二个选项 “ Dual compulations ” (对偶计算)选项的默认设置 “prices” 改为 “ prices and Ranges ”(价格及范围)后, 先对规划问题求解一次。
即:g —大于, e —等于, l —小于, t —不等于
(3)关系运算符 <(或<=)
=
>(或>=)
2、运算符的优先级
高 #not# (负号)
^
* / + (减法) #eq#,#ne#,#gt#,#ge#,#lt#,#le# #and# 与,#or#
低
> = <
4.2.3 常用的函数
1、数学函数 求绝对值函数, @abs(x) 返回x的绝对值 @cos(x) 求余弦函数,返回x的余弦值, x的单位是弧度 @exp(x) 计算e x 的值 @size(A) @log(x) 计算lnx 的值 @pow(x,y) 计算x y 的值 求矩阵A的元素个数 @sqr(x) 计算x的平方 @sqrt(x) 计算x的平方根
4.2.1 LINGO软件使用格式 1、 LINGO使用规则
(1) 目标函数以“max=”或“min=”开头,其后面 是目标函数的表达式。 (2) 模型以“model:”开始,以“end”结束, 对简单的模型,“model:”及“end”也可以省略。 lingo中的语句顺序不重要,目标函数与约束条件 lingo总是根 有明显的标志,不用加其它的符号。 据“max=”或“min =”语句寻找目标函数,而其 除了首行和末 它的语句都是约束语句和说明语句。 行外,每行以 “;”结束。所有字符必须是英文 状态下输入的。
② 执行“LINGO/Range”菜单命令,运行后计算 机则显示只有灵敏度分析的数据。
激活全局最优求解程序的步骤
一般情况下,lingo得到的都是局部最优 则要激活全局最优求解 解,要得到全局最优解, 程序, 方法如下:
执行 “LINGO/Options” 菜单命令弹出 在 “Global Solver” 选项 “选项框” 对话框, 卡上选择 “Use Global Solver” 点确定即可。 由于全局最优求解程序花费的时间可能 是很长的,所以为了减少计算工作量,我们 应该尽量对变量等做进一步的限制。
“≤”用“<=”表示,并且可以分别用“>”和“<”表示
常用的基本语法
9、程序最后以end结束,对于小型的规划问题, end可以省略。整数变量(例如:gin x1)和0-1 变量(例如int x3)的约束放在end之后,此时end不 能省略。 此时,如果省略end的话,整数变量、0-1变 量等限制将不起作用。 10、如果所有的决策变量都是整数变量(假如有6 个变量),则可以在end之后写命令: gin 6
集合循环函数:
@for @sum
是对集合的每个元素独立地操作一次表 达式 , 通常用于优化问题的约束条件; 是求集合中表达式的和;
@prod
@max
是求集合中表达式的乘积;
是达式的最小值;
但如果是求目标函数的最大、最小值,则是用 “max=目标函数表达式”, “min=目标函数表达式” 而不用写@。
Global optimal solution found. model: Objective value: 282.6667 Total solver iterations: 3 max=32*x1+30*x2; Variable Value Reduced Cost 3*x1+4*x2<=36; X1 1.333333 0.000000 5*x1+4*x2<=40; X2 8.000000 0.000000 9*x1+8*x2<=76; Row Slack or Surplus Dual Price 1 282.6667 1.000000 end 2 0.000000 1.166667 3 4 1.333333 0.000000 0.000000 3.166667
练习: 分别用lindo、lingo编写下列数学模型 的程序
1 、 max Z x1 2 x2 x3 2 x1 x2 x3 4 s.t. x1 2 x2 6 x , x , x 0 1 2 3
3、min Z 2 x1 5 x2 2 x1 x2 x3 6 s.t. x2 3 x3 9 x , x 0 1 2
在Lingo中,所有的系统函数都必须是以“@”开头。
2、集合循环函数
集合循环函数是指对集合中的所有元素(下标) 进行循环操作的函数,如@sum,@for等。
具体的使用格式:
@循环函数名(循环变量所在的集 (循环变量)│ 过滤条件:循环表达式) 其中,如果在操作过程中没有过滤条件,可 以省略过滤条件;如果表达式是对集合的所有循 环变量进行操作,循环变量也可以省略。
5、lindo软件已规定所有的决策变量均为非负数。
常用的基本语法
6、变量与其系数之间可以有空格,乘号必须省 略,式中不能有括号;约束条件的右端不能有决 策变量, 左端不能有常数项;没有下标, 式中不能 有分母,式中不能有“逗号”和“句号”等(说明 语句除外) 。 7、约束条件中的符号“≥”用 “>=”表示, 8、输入文件中的第一行默认为目标函数,可以 用 2) , 3) 等标明各约束条件,便于从输出结果中 查找信息。以感叹号“!”开始的是说明语句.
4.2.2 运算符及优先级
1、运算符 (1)算术运算符: +加 -减 *乘 /除 ^乘方 (开方) (2)逻辑运算符: 逻辑运算结果只有真与假,在lingo中用1和0 表示,逻辑运算符(表达式)通常作为过滤条件 使用。 ① #and# 与,#or# 或,#not# 非 ② #eq#等于,#ne#不等于,#gt#大于, #ge#大于等于,#lt#小于, #le#小于等于
LINGO软件的使用规则(4)
(10) lingo模型是由一系列语句组成的,即每个语 句是组成lingo模型的基本部分,每个语句(目标、 约束、说明语句等)都是以分号“;”结尾的, 编写程序时应注意保持模型的可读性。
例如:虽然lingo允许每行写多个语句,也允许一 个语句写成几行, 但最好一行只写一个语句, 并且 按照语句的嵌套关系对语句安排适当的缩进,增 强层次感。
LINGO软件的使用规则(2)
(3) 乘号“ * ”不能省略,式中可以有括号,约束 条件的右端可以有决策变量,没有下标,式中不 能有分母,式中不能有“逗号”和“句号” (说明 语句和函数中的内容除外) ,故目标函数和各约束 约束条件都可以是没有经过化简后的表达式。 (4) 英文字母不区分大小写字母,lingo中的变量名 和行名可以超过8个字符,但不能超过32个字符, 并且变量名必须以字母开头,后面跟数字或字母。 (5) lingo软件已规定所有的决策变量均为非负数, (除非用限定变量取值范围的函数@free或@bnd 等另行说明)。
lindo常用的基本语法
1、目标函数以“max”或“min”开头,max(或 min)与目标函数表达式之间不能有“=”。 2、变量名的长度不超过8个字符,并且必须以英 文字母开头。英文字母不区分大小写。
3、目标函数与约束条件之间必须用“ st ”分开, 并且“ st ”单独一行。 4、目标函数、各约束条件都必须以“回车键” 结束,并且都应该是经过化简后的表达式,所 有字符必须是英文状态下输入的。
2、 min Z x1 3 x2 x1 2 x2 6 s.t. 3 x1 x2 15 x , x 0 1 2
2、lingo的优点 (1)可以用于求线性规划及非线性规划问 题,包括非线性整数规划问题。
(2)lingo包含内置的建模语言(常称矩阵 生成器),允许以简练、直观的方式描述 较大规模的优化模型(成千万个约束条件 和变量), 模型中所需的数据可以用一定格 式保存在独立的文件中,需要时再读取数据。
3、 lingo中的灵敏度分析
在lindo中的目标函数最优值、最优解与灵敏度 而在lingo中,最优解、最 分析是一起显示出来, 优值与灵敏度分析是分别用不同的命令显示出来。 lingo中的灵敏度分析的数据输出结果与lindo 中的灵敏性分析中输出结果是相同的。 因为lingo的求解结果中是没有灵敏度分析的, 所以如果需要灵敏度分析的数据,可以通过修改 选项来实现。
4.2.4 lingo计算输出的结果
lingo计算的输出结果与lindo计算的输出 结果是完全相同的,只是输出的命令不相同。
在lindo中,最优值、最优解,影子价格 与灵敏度分析的数据可以同时输出。
而在lingo 中,灵敏度分析的数据只有通 过修改选项才能输出。
lingo计算输出结果
例4-1 的数学模型: 输出结果:
(2)@sum
该函数返回遍历指定的集成员的一个表达 式的和。
例4-3 求向量[ 5,1,3,4,6,10 ]前5个数的和。
model: sets: number/1..6/:x; endsets data: x = 5 1 3 4 6 10; !此命令给变量x具体的取值; enddata s=@sum(number(i) | i #le# 5: x(i)); end
(1)@for
该函数用来产生对集成员的约束。@for 函数允许只输入一个约束条件,然后由lingo 自动产生每个集成员的约束条件。 例4-2 产生序列{ 1,4,9,16,25 }
model: sets: number/1..5/:x; !此命令产生一个变量x, 是单下标变量,其下标有5个取值; endsets @for(number(i): x(i)=i^2); !此命令是对 所有的下标i,分别求i 2; end