lindo常用的基本语法PPT学习课件_第1页
lindo常用的基本语法PPT学习课件_第2页
lindo常用的基本语法PPT学习课件_第3页
lindo常用的基本语法PPT学习课件_第4页
lindo常用的基本语法PPT学习课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 目标函数以 max 或 min 开头 max 或min 与目标函数表达式之间不能有 lindo常用的基本语法 2 变量名的长度不超过8个字符 并且必须以英文字母开头 英文字母不区分大小写 3 目标函数与约束条件之间必须用 st 分开 并且 st 单独一行 4 目标函数 各约束条件都必须以 回车键 结束 并且都应该是经过化简后的表达式 所有字符必须是英文状态下输入的 5 lindo软件已规定所有的决策变量均为非负数 1 2020 4 17 6 变量与其系数之间可以有空格 乘号必须省略 式中不能有括号 约束条件的右端不能有决策变量 左端不能有常数项 没有下标 式中不能有分母 式中不能有 逗号 和 句号 等 说明语句除外 常用的基本语法 7 约束条件中的符号 用 表示 用 和 表示 8 输入文件中的第一行默认为目标函数 可以用2 3 等标明各约束条件 便于从输出结果中查找信息 以感叹号 开始的是说明语句 2 2020 4 17 9 程序最后以end结束 对于小型的规划问题 end可以省略 常用的基本语法 整数变量 例如 ginx1 和0 1变量 例如intx3 的约束放在end之后 此时end不能省略 10 如果所有的决策变量都是整数变量 假如有6个变量 则可以在end之后写命令 gin6 如果不是所有的决策变量都是整数变量 则不能采用此方法 此时 如果省略end的话 整数变量 0 1变量等限制将不起作用 3 2020 4 17 11 如果x1是整数变量 则应在end之后写上命令 ginx1 如果x1是0 1变量 则应在end之后写上命令 intx1 如果所有的决策变量共有6个 并且所有的决策变量都是整数 则可以在end之后写命令 gin6 如果x1 x2都是整数变量 但并不是所有的变量都是整数变量 则要写成 ginx1ginx2 不能写成 ginx1 x2或ginx1 x2 4 2020 4 17 4 2 1LINGO软件使用格式 1 目标函数以 max 或 min 开头 其后面是目标函数的表达式 2 模型以 model 开始 以 end 结束 对简单的模型 model 及 end 也可以省略 lingo中的语句顺序不重要 目标函数与约束条件有明显的标志 不用加其它的符号 lingo总是根据 max 或 min 语句寻找目标函数 而其它的语句都是约束语句和说明语句 除了首行和末行外 每行以 结束 所有字符必须是英文状态下输入的 1 LINGO使用规则 5 2020 4 17 LINGO软件的使用规则 2 3 乘号 不能省略 式中可以有括号 约束条件的右端可以有决策变量 没有下标 式中不能有分母 式中不能有 逗号 和 句号 说明语句和函数中的内容除外 故目标函数和各约束约束条件都可以是没有经过化简后的表达式 4 英文字母不区分大小写字母 lingo中的变量名和行名可以超过8个字符 但不能超过32个字符 并且变量名必须以字母开头 后面跟数字或字母 5 lingo软件已规定所有的决策变量均为非负数 除非用限定变量取值范围的函数 free或 bnd等另行说明 6 2020 4 17 LINGO软件的使用规则 3 6 约束条件中的符号 用 或 表示 用 或 表示 7 计算机把输入程序中的第一行默认为目标函数 其它各约束条件可以用 1 2 标明它的行号 8 虽然决策变量可以放在约束条件的右端 但为了提高Lingo的求解效率 应尽可能采用线性表达式定义目标函数和约束条件 9 在lingo中以感叹号 开始的是说明语句 并且说明语句也需要以分号 结束 并且除了 和 之外 说明语句中的其它字符可以是任何字符 7 2020 4 17 LINGO软件的使用规则 4 10 lingo模型是由一系列语句组成的 即每个语句是组成lingo模型的基本部分 每个语句 目标 约束 说明语句等 都是以分号 结尾的 编写程序时应注意保持模型的可读性 例如 虽然lingo允许每行写多个语句 也允许一个语句写成几行 但最好一行只写一个语句 并且按照语句的嵌套关系对语句安排适当的缩进 增强层次感 8 2020 4 17 LINGO软件的使用规则 5 11 在lingo中 以 开头的都是函数调用 其中有 整型变量函数 bin表示0 1变量 gin表示整数变量 和上下界限定等函数 free表示去掉非负限制 bnd限定变量的上限 下限 这些变量的限制要放在 end 之前 否则这些变量的限制将不起作用 9 2020 4 17 如果x1是整数变量 则应在end之前写命令 gin x1 如果x1是0 1变量 则应在end之前写命令 bin x1 如果所有的决策变量共有6个 并且所有的决策变量都是整数 不能写命令 bin 6 等其它的命令 如果x1 x2都是整数变量 并且不是所有的变量都是整数变量 则要写成 gin x1 gin x2 不能写成 gin x1 x2 或其它的命令 10 2020 4 17 练习 分别用lindo lingo编写下列数学模型的程序 11 2020 4 17 1 可以用于求线性规划及非线性规划问题 包括非线性整数规划问题 2 lingo的优点 2 lingo包含内置的建模语言 常称矩阵生成器 允许以简练 直观的方式描述较大规模的优化模型 成千万个约束条件和变量 模型中所需的数据可以用一定格式保存在独立的文件中 需要时再读取数据 12 2020 4 17 在lindo中的目标函数最优值 最优解与灵敏度分析是一起显示出来 3 lingo中的灵敏度分析 而在lingo中 最优解 最优值与灵敏度分析是分别用不同的命令显示出来 lingo中的灵敏度分析的数据输出结果与lindo中的灵敏性分析中输出结果是相同的 因为lingo的求解结果中是没有灵敏度分析的 所以如果需要灵敏度分析的数据 可以通过修改选项来实现 13 2020 4 17 先修改系统选项 启动灵敏度分析 通过修改选项得到灵敏度分析数据的步骤 执行 LINGO options 菜单命令弹出 选项 对话框 在 Generalsolver 选项卡中 将其中左边列的第二个选项 Dualcompulations 对偶计算 选项的默认设置 prices 改为 pricesandRanges 价格及范围 后 先对规划问题求解一次 执行 LINGO Range 菜单命令 运行后计算机则显示只有灵敏度分析的数据 14 2020 4 17 一般情况下 lingo得到的都是局部最优解 要得到全局最优解 激活全局最优求解程序的步骤 则要激活全局最优求解程序 方法如下 执行 LINGO Options 菜单命令弹出 选项框 对话框 在 GlobalSolver 选项卡上选择 UseGlobalSolver 点确定即可 由于全局最优求解程序花费的时间可能是很长的 所以为了减少计算工作量 我们应该尽量对变量等做进一步的限制 15 2020 4 17 1 运算符 4 2 2运算符及优先级 1 算术运算符 加 减 乘 除 乘方 开方 2 逻辑运算符 逻辑运算结果只有真与假 在lingo中用1和0表示 逻辑运算符 表达式 通常作为过滤条件使用 and 与 or 或 not 非 eq 等于 ne 不等于 gt 大于 ge 大于等于 lt 小于 le 小于等于 即 g 大于 e 等于 l 小于 t 不等于 16 2020 4 17 3 关系运算符 2 运算符的优先级 或 not 负号 减法 eq ne gt ge lt le and 与 or 高 低 17 2020 4 17 sqrt x 4 2 3常用的函数 在Lingo中 所有的系统函数都必须是以 开头 1 数学函数 abs x 求绝对值函数 返回x的绝对值 cos x 求余弦函数 返回x的余弦值 x的单位是弧度 exp x 计算ex的值 log x 计算lnx的值 pow x y 计算xy的值 sqr x 计算x的平方 计算x的平方根 size A 求矩阵A的元素个数 18 2020 4 17 2 集合循环函数 集合循环函数是指对集合中的所有元素 下标 进行循环操作的函数 如 sum for等 具体的使用格式 循环函数名 循环变量所在的集 循环变量 过滤条件 循环表达式 其中 如果在操作过程中没有过滤条件 可以省略过滤条件 如果表达式是对集合的所有循环变量进行操作 循环变量也可以省略 19 2020 4 17 集合循环函数 for 是对集合的每个元素独立地操作一次表达式 通常用于优化问题的约束条件 sum 是求集合中表达式的和 prod 是求集合中表达式的乘积 max 是求集合中表达式的最大值 min 是求集合中表达式的最小值 但如果是求目标函数的最大 最小值 则是用 max 目标函数表达式 min 目标函数表达式 而不用写 20 2020 4 17 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 分别求i2 end 21 2020 4 17 2 sum 该函数返回遍历指定的集成员的一个表达式的和 例4 3求向量 5 1 3 4 6 10 前5个数的和 model sets number 1 6 x endsetsdata x 5134610 此命令给变量x具体的取值 enddatas sum number i i le 5 x i end 22 2020 4 17 3 变量定界函数 变量定界函数是对变量的取值范围附加限制 bnd A x B 是指限定变量x的取值为A x B 在LINDO中无此函数 gin x 限定变量x的取值为整数 bin x 限定变量x为0 1变量 free x 取消变量x的非负限制 即x可以取负数 0或正数 因为lingo原来默认所有的变量非负取值 在lindo是用命令int 而在lingo中没有 int x 23 2020 4 17 4 2 4lingo计算输出的结果 lingo计算的输出结果与lindo计算的输出结果是完全相同的 只是输出的命令不相同 在lindo中 最优值 最优解 影子价格与灵敏度分析的数据可以同时输出 而在lingo中 灵敏度分析的数据只有通过修改选项才能输出 24 2020 4 17 lingo计算输出结果 例4 1的数学模型 model max 32 x1 30 x2 3 x1 4 x2 36 5 x1 4 x2 40 9 x1 8 x2 76 end 输出结果 Globaloptimalsolutionfound Objectivevalue 282 6667Totalsolveriterations 3VariableValueReducedCostX11 3333330 000000X28 0000000 000000RowSlackorSurplusDualPrice1282 66671 00000020 0000001 16666731 3333330 00000040 0000003 166667 25 2020 4 17 4 2 5关于lingo程序中的段 一般来说 lingo中建立的优化模型可以由五部分来组成 或称为五段 下面介绍常用的三段 集合段 数据段 目标和约束段 1 集合段 sets 这部分要以 sets 开始 以 endsets 结束 作用在于定义必要的集合及其元素 属性相当于变量或数组 集合的成员相当于下标 26 2020 4 17 1 集合段 sets 具体使用格式是 集合名 集的成员 属性 ABD 1 2 3 4 5 6 x y 显式罗列所有的成员 ABD 1 6 x y 隐式罗列所有的成员 中间的成员系统自动产生 只要列出集合的第一个和最后一个成员就行 但所有的成员必须是有规律的 不同的成员及不同的属性之间 用 分隔 集合的属性相当于以集合的元素为下标的数组 即属性相当于变量 成员相当于下标 27 2020 4 17 具体来说 ABD 1 2 3 4 5 6 x y 其集合名为ABD 属性为x y成员为1 2 3 4 5 6 定义以x y为变量 下标分别为1 2 3 4 5 6的变量 即x1 x2 x3 x4 x5 x6y1 y2 y3 y4 y5 y6 属性 变量 的具体值如果是常数 则应在数据段中输入具体数据 如果是未知数 即决策变量 则在数据段中不能输入数据 但可以在初始段输入初值 集合的成员和属性可以在定义时省略 随后在数据段中输入 28 2020 4 17 关于集合的一些说明 myfile 1 5 a 定义原始集合myfile 属性a的成员有5个元素 即定义a是单下标变量 下标有5个取值 即a1 a2 a3 a4 a5 myfoes 1 6 b 定义原始集合myfoes 属性b的成员有6个元素 即定义b是单下标变量 下标有6个取值 即b1 b2 b3 b4 b5 b6 myido myfoes myfile x c 定义派生集合myido 属性x和c的成员有30个元素 即定义x和c是双下标变量 第1个下标有6个取值 第2个下标有5个取值 其中myfoes和myfile称为派生集合的父集 29 2020 4 17 例4 4 model sets myfile 1 5 a myfoes 1 6 b myido myfile myfoes x c endsetsdata c 1 2 2 5 6 42 3 4 6 9 32 5 1 5 2 0 5 6 7 9 10 1033 4 6 6 7 9 a 100 200 100 100 400 b 100 200 100 150 150 200 enddata 30 2020 4 17 2 数据段 data 以 data 开始 以 enddata 结束 作用在于对集合的属性 数组或变量 输入必要的常数数据 具体的使用格式为 属性 或变量 常数列表 在常数列表中 数据之间用 分隔 也可以空格分开 ctrl 回车 的作用也等价于一个空格 即变量 或属性 是取等号右边的常数 31 2020 4 17 model sets ABD 1 2 3 4 5 6 x y endsetsdata x 1 3 0 5 6 7 y 3 4 29 58 3 10 enddataend 在数据段中输入数据时 可以分别输入每个变量对应的数据 也可以同时输入多个同维的变量的数据值 两种输入方法得到的结果相同 例4 5 等同于 x y 1 3 3 4 0 29 5 58 6 3 7 10 32 2020 4 17 3 目标和约束段 这部分实际上是定义目标函数 约束条件等 但这部分并没有段的开始及结束的标记 lingo的目标函数和约束条件 一般要用到循环函数 如求和函数 sum和循环函数 for等 目标函数是求最大值或最小值 max 目标函数 或min 目标函数 约束条件的标志是 for 约束条件 目标函数的标志是 33 2020 4 17 例如 sets ABD 1 2 3 4 5 6 X AB 1 3 Y D endsets 1 如程序中有约束条件 在lingo程序中应该表示为 for AB j sum ABD i x i y j d j 2 如程序中有约束条件 在lingo程序中应该表示为 for AB i sum ABD j x i y j d i 循环变量 循环变量 先计算变量j 再计算变量i 先计算变量i 再计算变量j 34 2020 4 17 model sets myfile 1 5 a myfoes 1 6 b myido myfile myfoes x c endsetsdata c 1 2 2 5 6 42 3 4 6 9 32 5 1 5 2 0 5 6 7 9 10 1033 4 6 6 7 9 a 100 200 100 100 400 b 100 200 100 150 150 200 enddatamin sum myido i j c i j x i j for myfile i sum myfoes j x i j a i for myfoes j sum myfile i x i j b j end 分析用lingo编写的程序 35 2020 4 17 例4 6 写出下面规划问题的lingo中用集合编写的求解程序 如果线性规划问题有最优解 请写出最优解 36 2020 4 17 解 要写出用lingo中集合的方法求解的程序 则应该先把规划模型化为用求和形式表示的模型 其中 37 2020 4 17 则该规划问题的用求和形式表示的模型为 38 2020 4 17 用求和形式表示的模型 39 2020 4 17 讨论用集合表示的模型 其中 1 变量c x是单下标 下标有3个取值 变量b是单下标 下标有4个取值 对于单下标的变量 只要直接定义集合即可 即要定义两个集合 一个有3个取值的 另一个有4个取值的 由于变量c b a已经有具体的数值 故必须在数据段中给出具体的取值 变量x没有具体的数值 它是决策变量 故不能在数据段中给出具体的取值 40 2020 4 17 讨论用集合表示的模型 2 变量a是双下标变量 下标共有4 3个取值 第1个i下标有4个取值 第2个下标j有3个取值 对于双下标的变量 必须定义派生集合 它第1个父集是有4个取值 第2个父集是有3个取值 变量a已经有具体的数值 它不是决策变量 故必须在数据段中给出具体的取值 41 2020 4 17 上述数学模型用集合编写的求解程序为 集合段sets endsets ab 1 2 3 x c abc 1 2 3 4 b abcd abc ab a 数据段data enddata c 8 10 2 b 70 80 15 50 a 2 1 34 2 23 0 12 2 0 42 2020 4 17 目标函数max sum ab j c j x j 约束条件 for abc i sum ab j a i j x j b i ab 1 2 3 x c abc 1 2 3 4 b abcd abc ab a 43 2020 4 17 用集合表示的程序为 model sets ab 1 2 3 x c abc 1 2 3 4 b abcd abc ab a endsetsdata c 8 10 2 b 70 80 15 50 a 2 1 34 2 23 0 12 2 0 enddatamax sum ab j c j x j for abc i sum ab j a i j x j b i end 44 2020 4 17 model sets ab 1 2 3 x c abc 1 2 3 4 b abcd abc ab a endsetsdata c 8 10 2 b 70 80 15 50 a 2 1 34 2 23 0 12 2 0 enddatamax sum ab j c j x j for abc i sum ab j a i j x j b i end Globaloptimalsolutionfound Objectivevalue 280 0000Totalsolveriterations 2VariableValueReducedCostX 1 0 0000002 666667X 2 25 000000 000000X 3 15 000000 000000 利用软件计算 可知 该数学规划模型的最优解为 最优值为 45 2020 4 17 2 把规划问题化为用求和形式表示的模型 其中 46 2020 4 17 该规划问题用求和形式表示的模型为 47 2020 4 17 该规划问题用集合编写的程序为 集合段sets endsets ab 1 2 3 4 5 x c abc 1 2 3 b abcd abc ab a 数据段data enddata c 3 1 1 0 0 b 11 3 1 a 1 2 1 1 0 4 1 2 0 1 2 0 1 0 0 48 2020 4 17 目标函数max sum ab j c j x j 约束条件 for abc i sum ab j a i j x j b i ab 1 2 3 4 5 x c abc 1 2 3 b abcd abc ab a 49 2020 4 17 model sets ab 1 2 3 b abc 1 2 3 4 5 c x abcd ab abc a endsetsdata c 3 1 1 0 0 b 11 3 1 a 1 2 1 1 0 4 1 2 0 1 2 0 1 0 0 enddatamax sum ab j c j x j for abc i sum ab j a i j x j b i end 用集合表示的程序为 50 2020 4 17 model sets ab 1 2 3 b abc 1 2 3 4 5 c x abcd ab abc a endsetsdata c 3 1 1 0 0 b 11 3 1 a 1 2 1 1 0 4 1 2 0 1 2 0 1 0 0 enddatamax sum abc j c j x j for ab i sum abc j a i j x j b i end Globaloptimalsolutionfound Objectivevalue 2 000000Totalsolveriterations 0VariableValueReducedCostX 1 4 0000000 000000X 2 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论