数学建模与lingo软件应用.pdf_第1页
数学建模与lingo软件应用.pdf_第2页
数学建模与lingo软件应用.pdf_第3页
数学建模与lingo软件应用.pdf_第4页
数学建模与lingo软件应用.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

数学建模与lingo软件应用.pdf.pdf 免费下载

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

文档简介

数学模型与数学模型与lingo软件软件数学模型与数学模型与数学模型与数学模型与lingolingo软件软件软件软件 西南交通大学数学系西南交通大学数学系西南交通大学数学系西南交通大学数学系 需要掌握的几个重要方面需要掌握的几个重要方面 掌握集合 SETS 的应用 正确阅读求解报告 正确理解求解状态窗口 学会设置基本的求解选项 OPTIONS 应用实例 LINDO和LINGO软件能求解的优化模型 LINGO 8 0有两种命令模式 Windows 模式 通过下拉式菜单命令驱动LINGO 运行 命令行 Command Line 模式 仅在命令窗口下操作 与LINDO 相比 LINGO 软件主要具有两大优点 1 除具有LINDO 的全部功能外 还可用于求解非线性 规划问题 包括非线性整数规划问题 2 LINGO 包含了内置的建模语言 允许以简练 直观 的方式描述较大规模的优化问题 模型中所需的数据可 以以一定格式保存在独立的文件中 在在LINGO中使用中使用LINDO模型模型 LINGO的界面的界面 LINGO软件的主窗口 用软件的主窗口 用 户界面 所有其他窗口户界面 所有其他窗口 都在这个窗口之内 都在这个窗口之内 模型窗口 模型窗口 Model Window 用于输入 用于输入 LINGO优化模型 即优化模型 即 LINGO程序 程序 状态行 最左边显状态行 最左边显 示示 Ready 表示 表示 准备就绪准备就绪 当前时间当前时间 当前光标当前光标 的位置的位置 工具栏工具栏 File Ope n F3 打 开 文 件 File Print F7 打 印 文 件 Edit Cop y Ctrl C 复制 Edit Und o Ctrl Z 取 消 操 作 Edit Fin d Ctrl F 查找 LINGO Solution Alt O 显示解答 Edit Match Parenthesis Ctrl P 匹配括号 LINGO Options Ctrl I 选项设置 Window Close All Alt X 关闭所有窗口 Help Conte nts F1 在线 帮助 File New F2 新建文件 File Save F4 保存文件 Edit Cut Ctrl X 剪切 Edit Past e Ctrl V 粘贴 Edit Redo Ctrl Y 恢复操作 Edit Go To Line Ctrl T 定位某行 LINGO Sol ve Ctrl S 求解模型 LINGO Pictur e Ctrl K 模型图示 Window Send to Back Ctrl B 窗口后置 Window Til e Alt T 平铺窗口 上下文 相关的 帮助 LP问题在lindo和lingo中不同的输入形式 Lindo max 2x 3y st 4x 3y 10 3x 5y 12 end Lingo max 2 x 3 y 4 x 3 y 10 3 x 5 y 12 1 将目标函数的表示方式从 MAX 变成了 MAX 2 ST 在LINGO 模型中不 再需要 所以被删除了 3 每个系数与变量间增加了 运算符 即乘号不能省略 4 每行 目标 约束和说明 语句 后面均增加了一个分号 5 模型结束标志 END 也被 删除了 LINGO 中只有当模型 以 MODEL 开始时才能以 END 结束 这是LINGO 模型的最基本 特征 直接将lindo模型文件转化为lingo文件 Lindo max 2x 3y st 4x 3y 10 3x 5y 12 end Lingo max 2 x 3 y 4 x 3 y 10 3 x 5 y 12 为保证能将LINDO 模型移植到LINGO 中去 在LINDO 模型输入时应尽量采 用 规范化 的格式 Lingo的不同保存类型 LG4 表示LINGO 格式的 模型文件 是一种特殊的二 进制格式文件 保存了我们 在模型窗口中所能够看到的 所有文本和其他对象及其格 式信息 只有LINGO 能读 出它 用其他系统打开这种 文件时会出现乱码 LNG 表示LINGO文本文 件 以这个格式保存模型时 系统 将给出警告 因为模 型中的格式信息 如字体 颜色等 将会丢失 LDT 表示数据文件 LTF 表示 命令脚本文件 LGR 表示 报告文件 除 LG4 文件外 这里的另外几 种格式的文件其实都是普通的 文本文件 可以用任何文本编 辑器打开和编辑 运行状态窗口运行状态窗口 Variables 变量数量 变量数量 变量总数 变量总数 Total 非线性变量数 非线性变量数 Nonlinear 整数变量数 整数变量数 Integer Constraints 约束数量 约束数量 约束总数 约束总数 Total 非线性约束个数非线性约束个数 Nonlinear Nonzeros 非零系数数量 非零系数数量 总数 总数 Total 非线性项系数个数非线性项系数个数 Nonlinear Generator Memory Used K 内存使内存使 用量用量 Elapsed Runtime hh mm ss 求解花费的时间 求解花费的时间 状态窗口的参数解释 运行状态窗口运行状态窗口 求解求解 器器 求求 解程解程 序序 状状 态框态框 当前模型的类型当前模型的类型 LP QP ILP IQP PILP PIQP NLP INLP PINLP 以 以I开开头头表示表示 IP 以 以PI开开头头表示表示PIP 当前解的状态当前解的状态 Global Optimum Local Optimum Feasible Infeasible 不可不可行行 Unbounded 无无界界 Interrupted 中断中断 Undetermined 未确定未确定 解的解的目目标标函函数数值值 当前约束当前约束不满足不满足的总量的总量 不是不不是不 满足满足的约束的个数的约束的个数 实实数 即使数 即使 该值该值 0 当前解 当前解也可能不可也可能不可行 行 因为因为这个量这个量中没中没有有考虑考虑用用上下上下界界 命令形式给出命令形式给出的约束 的约束 目目前前为止为止的的 迭代次迭代次数数 状态窗口的参数解释 运行状态窗口运行状态窗口 扩展扩展 的求的求 解器解器 求解求解 程序程序 状态状态 框框 使用的使用的特殊特殊求解程序求解程序 B and B 分枝定分枝定界界算法算法 Global 全局全局最优求解程序最优求解程序 Multistart 用用多多个个初始点初始点求解的程序求解的程序 目目前前为止找到为止找到的的可可行行 解的最解的最佳目佳目标标函函数数值值 目目标标函函数数值值的界的界 特殊特殊求解程序当前运行求解程序当前运行步步数 数 分枝分枝数数 对对B and B程序程序 子问题子问题数数 对对Global程序程序 初始点初始点数数 对对Multistart程序程序 有有效步效步数数 状态窗口的参数解释 用LINGO 来解二次规划问题 22 121122 12 12 12 982770 32 100 2 0 MAXzxxxx xx st xx xx x x 为整数 max 98 x1 277 x2 x1 2 0 3 x1 x2 2 x2 2 x1 x2 100 x1 2 x2 gin x1 gin x2 注意事项 1 变量和行名可以超过8 个 字符 但不能超过32 个字 符 且必须以字母开头 2 LINGO 已假定各变量非 负 除非用函数 free或 sub 或 slb 另行说明 3 变量可以放在约束条件的 右端 同时数字也可放在约束 条件的左端 但为了提高效 率 应尽可能采用线性表达式 定义目标和约束 如果可能 Lingo的编程 优化问题的一种建模语言 使用者可以只用键 入一行文字就可以建立起含有大规模变量的目 标函数和成千上万条约束 LINGO模型的构成 4个段 集合段 SETS ENDSETS 数据段 DATA ENDDATA 初始段 INIT ENDINIT 目标与约束段 LINGO中中的的集集 对实际问题建模的时候 总会遇到一群或多群相联系 的对象 比如工厂 消费者群体 交通工具和雇工等 等 LINGO允许把这些相联系的对象聚合成集集 sets 一旦把对象聚合成集 就可以利用集来最大限度的发 挥LINGO建模语言的优势 集是LINGO建模语言的基础 是程序设计最强有力的 基本构件 借助于集 能够用一个单一的 长的 简明 的复合公式表示一系列相似的约束 从而可以快速方便 地表达规模较大的模型 集是一群相联系的对象 这些对象也称为集的成员成员 每 个集成员可能有一个或多个与之有关联的特征 我们把 这些特征称为属属性性 属性值可以预先给定 也可以是未 知的 有待于LINGO求解 集部分集部分是LINGO模型的一个可选部分 在LINGO模型中使 用集之前 必须在集部分事先定义 集部分以关键字 sets 开始 以 endsets 结束 一个模型可以没有集部分 或有一个简单的集部分 或 有多个集部分 一个集部分可以放置于模型的任何地方 但是一个集及其属性在模型约束中被引用之前必须定义了 它们 定义原始集定义原始集 setname member list attribute list Setname是你选择的来标记集的名字 最好具有较强的可读 性 集名字必须严格符合标准命名规则 以拉丁字母或下划 线 为首字符 其后由拉丁字母 A Z 下划线 阿 拉伯数字 0 1 9 组成的总长度不超过32个字符的 字符串 且不区分大小写 Member list是集成员列表 如果集成员放在集定义中 那 么对它们可采取显式罗列和隐式罗列两种方式 如果集成员 不放在集定义中 那么可以在随后的数据部分定义它们 sets students John Jill Rose Mike sex age endsets 模型的数模型的数据部分据部分 数据部分提供了模型相对静止部分和数据分离的可能性 显 然 这对模型的维护和维数的缩放非常便利 数据部分以关键字 data 开始 以关键字 enddata 结束 在这 里 可以指定集成员 集的属性 其语法如下 object list value list 对象列对象列 object list 包含要指定值的属性名 要设置集成员的集名 用逗号或空格隔开 一 个对象列中至多有一个集名 而属性名可以有 任意多 如果对象列中有多个属性名 那么它 们的类型必须一致 如果对象列中有一个集 名 那么对象列中所有的属性的类型就是这个 集 数数值列值列 value list 包含要分配给对象列中的对象的 值 用逗号或空格隔开 注意属性值的个数必须等于 集成员的个数 sets set1 A B C X Y endsets data X 1 2 3 Y 4 5 6 enddata 数数据部分据部分的的未知未知数数值值 有时只想为一个集的部分成员的某个属性指定值 而 让其余成员的该属性保持未知 以便让LINGO去求出 它们的最优值 在数据声明中输入两个相连的逗号表 示该位置对应的集成员的属性值未知 两个逗号间可 以有空格 sets years 1 5 capacity endsets data capacity 34 20 enddata 属性capacity的第2 个和第3个值分别 为34和20 其余的 未知 模型的模型的初始部分初始部分 初始部分是LINGO提供的另一个可选部分 在初始部分中 可以输入初始声明初始声明 initialization statement 和数据部分中 的数据声明相同 对实际问题的建模时 初始部分并不起到描 述模型的作用 在初始部分输入的值仅被LINGO求解器当作 初始点来用 并且仅仅对非线性模型有用 和数据部分指定变 量的值不同 LINGO求解器可以自由改变初始部分初始化的 变量的值 一个初始部分以 init 开始 以 endinit 结束 初始部分的初 始声明规则和数据部分的数据声明规则相同 也就是说 我们 可以在声明的左边同时初始化多个集属性 可以把集属性初始 化为一个值 可以用问号实现实时数据处理 还可以用逗号指 定未知数值 init X Y 0 1 endinit Y log X X 2 Y 2 1 好的初始点会减少模型的求解时 间 运算符及其优先级 算术算术运运算符算符 加法 减法或负号 乘法 除法 求幂 关关系运系运算符算符 即 即 大于 等于 逻辑逻辑运运算符算符 AND 与 OR 或 NOT 非 EQ 等于 NE 不等于 GT 大于 GE 大 于等于 LT 小于 LE 小于等于 结果只有 真 1 和 假 0 两个值 LINGO 函数一览 1 LINGO 函数一览 2 LINGO 函数一览 3 LINGO 函数一览 4 LINGO 函数一览 5 LINGO 函数一览 6 smax x1 x2 xn 给定一个直角三角形 求包含该三角形的最小正方形 for 函数 产生序列 1 4 9 16 25 sum 函函数数 求向量 5 1 3 4 6 10 前5个数的和 该函数用来产生对集成员的约 束 基于建模语言的标量需要 显式输入每个约束 不过 for 函数允许只输入一个约束 然 后LINGO自动产生每个集成员 的约束 该函数返回遍历指定的集成 员的一个表达式的和 min和 max 求向量 5 1 3 4 6 10 前5个数最小值 后3个数最大值 返回指定的集成员的一个表达式的最小值或最大值 通过文件输入输出数据通过文件输入输出数据 通过文件输入输出数据可以将通过文件输入输出数据可以将LINGO程序和程序和 程序处理的数据分离开来 程序处理的数据分离开来 程序和数据的分离程序和数据的分离 是结构化程序设计 面是结构化程序设计 面 向对象编程的基本要求 向对象编程的基本要求 实际问题通常需要处理大规模的实际数据 实际问题通常需要处理大规模的实际数据 而这些数据通常都是在其它应用系统中生成而这些数据通常都是在其它应用系统中生成 的 或者已经存放在其它应用系统中的某个的 或者已经存放在其它应用系统中的某个 文件或数据库中 文件或数据库中 LINGO计算的结果需要以文件方式提供给其计算的结果需要以文件方式提供给其 它应用系统使用 它应用系统使用 1 通过通过WINDOWS剪贴板传递数据剪贴板传递数据 粘贴命令 粘贴命令 Edit Paste 特殊粘贴命令 特殊粘贴命令 Edit Paste Special 粘贴命令 粘贴命令 Edit Paste 将将WORD文件或其他外部文件中的数据拷贝到文件或其他外部文件中的数据拷贝到Windows剪剪 贴板贴板 在在LINGO程序中直接粘贴到需要的地方程序中直接粘贴到需要的地方 步骤步骤 注意注意 粘贴的数据保持了粘贴的数据保持了WORD表格的风格表格的风格 且且LINGO能够正常能够正常 识别甚至编辑其字体等 识别甚至编辑其字体等 由于由于LINGO对集合的属性是按列赋值的 所以在外部文对集合的属性是按列赋值的 所以在外部文 件中的数据与实际需要复制的数据可能发生行列颠倒件中的数据与实际需要复制的数据可能发生行列颠倒 的情况 需进行调整 的情况 需进行调整 类似的方法也可以将类似的方法也可以将LINGO程序中的数据复制到其他外程序中的数据复制到其他外 部文件中 部文件中 2 通过文本文件传递数据通过文本文件传递数据 通过文本文件输入数据通过文本文件输入数据 FILE filename 通过文本文件输出数据通过文本文件输出数据 TEXT filename 通过文本文件输入数据通过文本文件输入数据 FILE函数通常可以在集合段和数据段使用 函数通常可以在集合段和数据段使用 但不允许嵌套使用 但不允许嵌套使用 调用格式 调用格式 FILE filename filename为存放数据的文件名 可以包含完整的为存放数据的文件名 可以包含完整的 路径名 或表示在当前目录下寻找这个文件 路径名 或表示在当前目录下寻找这个文件 数据文件中记录之间必须用数据文件中记录之间必须用 分开分开 MODEL SETS MYSET FILE myfile txt FILE myfile txt ENDSETS MIN SUM MYSET I SHIP I COST I FOR MYSET I CON1 SHIP I NEED I CON2 SHIP I SUPPLY I DATA COST FILE myfile txt NEED FILE myfile txt SUPPLY FILE myfile txt TEXT result txt SHIP DUAL SHIP DUAL CON1 ENDDATA END myfile txt文件 的内容 格式 Seattle Detroit Chicago Denver COST NEED SUPPLY SHIP 12 28 15 20 1600 1800 1200 1000 1700 1900 1300 1100 通过文本文件输出数据通过文本文件输出数据 TEXT函数通常只在数据段使用函数通常只在数据段使用 调用格式 调用格式 TEXT filename 它用于数据段中将解答结果送到文本文件它用于数据段中将解答结果送到文本文件 filename中 中 当省略当省略filename时 结果送到标准的输出设备时 结果送到标准的输出设备 通常就是屏幕 通常就是屏幕 Filename可以使用相对路径或绝对路径 若文件可以使用相对路径或绝对路径 若文件 已经存在 已经存在 则覆盖原则覆盖原文件文件 最重要的是理解 集合 SET 及其 属性 Attribute 的概念 例1 SAILCO 公司需要决定下四个季度的帆船生产量 下四个季度的帆船需求量分别是40 条 60 条 75 条 25 条 这些需求必须按时满足 每个季度正常的生 产能力是40 条帆船 每条船的生产费用为400 美元 如果加班生产 每条船的生产费用为450 美元 每个季 度末 每条船的库存费用为20 美元 假定生产提前期为0 初始库存为10 条船 如何安排 生产可使总费用最小 用DEM RP OP INV 分别表示需求 正常生产的产 量 加班生产的产量 库存量 则DEM RP OP INV 对 每个季度都应该有一个对应的值 也就说他们都应该是一 个由4 个元素组成的数组 其中DEM 是已知的 而 RP OP INV 是未知数 目标函数 1 2 3 4 400 450 20 i MINRP IOP IINV I 约束条件1 能力限制 RP I 40 I 1 2 3 4 约束条件2 产品数量的平衡方程 INV I INV I 1 RP I OP I DEM I I 1 2 3 4 INV 0 10 约束条件3 变量的非负约束 利用数组的概念 QUARTERS 1 2 3 4 称为集 合 DEM RP OP INV 称为 该集合的属 性 MODEL SETS QUARTERS 1 4 DEM RP OP INV 定义集合及其属性 ENDSETS DATA DEM 40 60 75 25 ENDDATA 初始段省略 MIN SUM QUARTERS 400 RP 450 OP 20 INV 目标函数 FOR QUARTERS I RP I 1 基本集合与派生集合基本集合与派生集合 例 建筑工地的位置例 建筑工地的位置 用平面坐标用平面坐标a b表示 距离单位 表示 距离单位 公里公里 及水泥日用量及水泥日用量d 吨吨 下表给出 有两个临时料场位下表给出 有两个临时料场位 于于P 5 1 Q 2 7 日储量各有日储量各有20吨 从吨 从A B两料场分别两料场分别 向各工地运送多少吨水泥 使总的吨公里数最小 两个向各工地运送多少吨水泥 使总的吨公里数最小 两个 新的料场应建在何处 节省的吨公里数有多大 新的料场应建在何处 节省的吨公里数有多大 1167453d 7 756 554 750 751 25b 7 2535 750 58 751 25a 建立模型建立模型 记工地的位置为记工地的位置为 水泥日用量为 水泥日用量为 料场 料场 位置为位置为 日储量为 日储量为 从料场 向工地的 从料场 向工地的 运送量为 运送量为 ii ba6 1 L id i jj yx2 1 je j ji ij c 26 22 11 2 1 6 1 MIN1 s t 1 2 62 1 23 ijjiji ji iji j ijj i fcxaya cdi cej L 使用使用现现有有临临时时料场料场时 时 决策决策变量变量只只有 非有 非负负 所以这 所以这是是LP模型模型 当当为为新新 建料场选址建料场选址时时决策决策变量变量为为和和 由由于于目目标标函函数数 对对是是非线性的 非线性的 所以在所以在新建料场新建料场时时是是NLP模型 模型 先先解解NLP模型 模型 而把现而把现有有临临时时料场料场的位置的位置作作 为初始为初始解解告诉告诉LINGO ij c ij c jj yx f jj yx 输入程序输入程序 定义定义了三了三个个集合集合 其 其中中LINK在前在前 两两个个集合集合DEMAND 和和SUPPLY的的 基础基础上定义上定义 表示表示集合集合LINK中中的的元素元素就就是集合是集合DEMAND 和和SUPPLY的的元素组元素组合成合成的有序的有序二元组二元组 从从数学数学上上看看LINK是是DEMAND 和和SUPPLY的的 笛卡儿积笛卡儿积 也也就就是是说说 LINK S T SDEMAND TSUPPLY 因因此此 其 其属属性性C也也就就是是一一个个6 2的的矩阵矩阵 或者或者 说说是是含含有有12个个元素元素的的二维二维数数组组 LINGO建建模模语言语言也也称称为为矩阵矩阵生生成成器 器 MATRIX GENERATOR 类 类似似DEMAND 和和SUPPLY直接直接把元素把元素列列举举 出出来来的的集合集合 称称为为基基本本集合集合 primary set 而把而把LINK这这种种基基于其于其 它它集合集合而而派生派生出出来来的的二维或二维或多多维维集合集合称称为为派生派生集合集合 derived set 由由于于是是DEMAND 和和SUPPLY生生成成了了派生派生集合集合LINK 所以 所以 DEMAND 和和SUPPLY 称称为为LINK的的父父集合集合 输入程序输入程序 初始段 INGO对数据是按列赋值的 语句的实际赋值顺序是 X 5 2 Y 1 7 而不是 X 5 1 Y 2 7 等价写法 X 5 2 Y 1 7 同理 数据段中对常数数组A B的赋值语句也可以写成 A B 1 25 1 25 8 75 0 75 0 5 4 75 5 75 5 3 6 5 7 25 7 75 输入程序输入程序 定义目标和约束 与前例的方法是类似 这里 包含了派生集合 请特别注意进一步体会集 合函数 SUM和 FOR的用法 由于新建料场的位置理论上讲可以是任意 的 所以在约束的最后 模型的 END 语句上 面的一行 用 free函数取消了变量X Y的非 负限制 在程序开头用TITLE语句 对这个模型取了一个标题 LOCATION PROBLEM 并且对目标 行 OBJ 和两类约束 DEMAND CON SUPPLY CON 分别进行 了命名 请特别注意这里约 束命名的特点 局部最优解 X 1 7 249997 X 2 5 695940 Y 1 7 749998 Y 2 4 928524 略 最小运量 89 8835 吨公里 NLP中局部最优解不不一一定定就是全局最优解 在 help中有这样的叙 述 Thus when a nonlinear model is solved we say the solution is merely a local optimum and the user must be aware other local optimums may or may not exist with better objective values 第一步 利用LINGO Options 菜单命令激活全局最优求解程序 第二步 为减少计算工作量 对X Y 的取值再做一些限制 由于 最佳料场位置至少不应该超出现在6 个工地所决定的坐标的最 大 最小值决定的矩形之外 即 0 5 x 8 75 0 75 y 7 75 可以加上 bnd 函数 最优解X 1 3 2549 X 2 7 2500 Y 1 5 6526 Y 2 7 7500 最小运量 85 26 吨公里 把料厂P 5 1 Q 2 7 的位置看成是已知并且固定的 这时是LP 模型 只需把初始段的 X Y 5 1 2 7 移到数据段就可 此时 得到全局最优解 最小运量136 2

温馨提示

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

评论

0/150

提交评论