




文档简介
数学建模-LINGO软件 数学建模数学建模 LINGO软件软件 NT U -M CM 数学建模-LINGO软件 1 LINGO入门入门 LINGO的基本用法 1. LINGO的主要功能特色:的主要功能特色: (1) 既能求解线性规划问题,也有较强的求解非线性规划 问题的能力; 既能求解线性规划问题,也有较强的求解非线性规划 问题的能力; (2) 输入模型简练直观;输入模型简练直观; (3) 运行速度快,计算能力强;运行速度快,计算能力强; (4) 内置建模语言,提供几十个内部函数,从而能以较少 语句,较直观的方式描述较大规模的优化模型; 内置建模语言,提供几十个内部函数,从而能以较少 语句,较直观的方式描述较大规模的优化模型; (5) 将集合的概念引入编程语言,很容易将实际问题转换 为 将集合的概念引入编程语言,很容易将实际问题转换 为LINGO模型;模型; (6) 能方便地与能方便地与Excel、数据库等其他软件交换数据;、数据库等其他软件交换数据; NT U -M CM 数学建模-LINGO软件 建模时需要注意的几个基本问题:建模时需要注意的几个基本问题: (1) 尽量使用实数优化模型,减少整数约束和整数变量的 个数; 尽量使用实数优化模型,减少整数约束和整数变量的 个数; (2) 尽量使用光滑优化模型,减少非光滑约束的个数; 如:尽量少地使用绝对值函数、符号函数、多个变量求最 大(或最小)值、四舍五入函数、取整函数等 尽量使用光滑优化模型,减少非光滑约束的个数; 如:尽量少地使用绝对值函数、符号函数、多个变量求最 大(或最小)值、四舍五入函数、取整函数等. (3) 尽量使用线性优化模型,减少非线性约束和非线性变量 的个数(如 尽量使用线性优化模型,减少非线性约束和非线性变量 的个数(如x/y 5改为改为x 5y) ;) ; (4) 合理设定变量的上下界,尽可能给出变量的初始值;合理设定变量的上下界,尽可能给出变量的初始值; (5) 模型中使用的单位的数量级要适当(如小于模型中使用的单位的数量级要适当(如小于103);); NT U -M CM 数学建模-LINGO软件 2. LINGO的基本用法的基本用法. 例例1.某工厂有两条生产线,分别用来生产某工厂有两条生产线,分别用来生产M和和P两种型号的产 品,利润分别为 两种型号的产 品,利润分别为200元元/个和个和300元元/个,生产线的最大生产 能力分别为每日 个,生产线的最大生产 能力分别为每日100和和120,生产线每生产一个,生产线每生产一个M产品需要 产品需要 1个劳动日(个劳动日(1个工人工作个工人工作8小时为小时为1个劳动日)进行调试、 检测等工作,而每个 个劳动日)进行调试、 检测等工作,而每个P产品需要产品需要2个劳动日,该厂工人每天 共计能提供 个劳动日,该厂工人每天 共计能提供160劳动日,假如原材料等其他条件不受限 制,问应该如何安排生产计划,才能使获得的利润最大? 解:设两种产品的生产量分别为 劳动日,假如原材料等其他条件不受限 制,问应该如何安排生产计划,才能使获得的利润最大? 解:设两种产品的生产量分别为x1和和x2,则该数学模型为,则该数学模型为 12 max200300zxx 1 100 x 2 120 x 12 2160 xx 12 ,0 x x 【目标函数】【目标函数】 【约束条件】【约束条件】 再用再用LINGO处理处理 NT U -M CM 数学建模-LINGO软件 输入输入LINGO如下如下: LINGO处理结果:处理结果: NT U -M CM 数学建模-LINGO软件 LINGO的语法规定:的语法规定: (1) 求目标函数的最大值和最小值分别用求目标函数的最大值和最小值分别用MAX= 或或MIN= 来表示;来表示; (2) 每个语句必须以分号每个语句必须以分号“;”结束,每行结束,每行可以可以有多个语句,语 句 有多个语句,语 句可以可以跨行;跨行; (3) 变量名称必须以字母变量名称必须以字母(A- -Z)开头,由字母、数字开头,由字母、数字(0- -9)和下 划线 和下 划线“_”组成,长度组成,长度不超过不超过32个字符,个字符,不区分不区分大小写;大小写; (4) 可以可以给语句加上标号,给语句加上标号,例如例如OBJ MAX= ; (5) 以以“!”开头,以开头,以“;”结束的语句是注释语句;结束的语句是注释语句; (6) 如果对变量的取值范围没有作特殊说明,则如果对变量的取值范围没有作特殊说明,则默认默认所有决策 变量都 所有决策 变量都非负非负; (7) LINGO模型以语句模型以语句“MODEL:”开头,以开头,以“END”结束,对 于比较简单的模型,这两句可以省略; 结束,对 于比较简单的模型,这两句可以省略; NT U -M CM 数学建模-LINGO软件 例例2.基金的优化使用基金的优化使用(2001年数学建模竞赛年数学建模竞赛C题)题) 假设某校基金会得到了一笔数额为假设某校基金会得到了一笔数额为M万元的基金,打算将 其存入银行,校基金会计计划在 万元的基金,打算将 其存入银行,校基金会计计划在n年内每年用部分本息奖 励优秀师生,要求每年的奖金额相同,且在 年内每年用部分本息奖 励优秀师生,要求每年的奖金额相同,且在n年末仍保留 原基金数额 年末仍保留 原基金数额.银行存款税后年利率见下表银行存款税后年利率见下表 存期1年2年3年5年 税后年利率%1.82.162.5922.88 校基金会希望获得最佳的基金使用计划,以提高每年的奖 金额,请在 校基金会希望获得最佳的基金使用计划,以提高每年的奖 金额,请在M=5000万元,万元,n=5年的情况下设计具体存款方 案 年的情况下设计具体存款方 案. 分析:分析: 假定首次发奖金的时间是在基金到位后一年,以后每 隔一年发一次,每年发的时间大致相同 假定首次发奖金的时间是在基金到位后一年,以后每 隔一年发一次,每年发的时间大致相同. 那么,实际上 那么,实际上 n年中发放的奖金都来自利息年中发放的奖金都来自利息. 若全部奖金都存为一年期,则每年的奖金数为若全部奖金都存为一年期,则每年的奖金数为90万 显然,准备两年后使用的款项应当存成两年期,比存两 次一年期的收益高 万 显然,准备两年后使用的款项应当存成两年期,比存两 次一年期的收益高. NT U -M CM 数学建模-LINGO软件 定义: 收益比定义: 收益比a()/1 本金利息本金利率 【如,存【如,存2年的收益比为年的收益比为a2 =1+2.16%2=1.0432】 按银行存款税后年利率计算得到各存款年限对应的最优收益比 见下表 按银行存款税后年利率计算得到各存款年限对应的最优收益比 见下表: 存期年限 1年2年3年4年(3+1)5年 最优收益比1.0181.04321.077761.097159681.144 由上表知:由上表知: (1) 一次性存成最长期,优于两个一次性存成最长期,优于两个(或两个以上或两个以上)较短期的组合 较短期的组合 (中途转存中途转存) . (2) 当存款年限需要组合时当存款年限需要组合时,收益比收益比与组合的先后次序无关 建立模型 与组合的先后次序无关 建立模型把总基金把总基金M分成分成5+1份,分别用份,分别用x1 ,x6表示表示, 其中,其中,x1 , , x5分别存成分别存成1- -5年定期,到期后本息合计用于发 放奖金, 年定期,到期后本息合计用于发 放奖金,x6存存5年定期,到期的本息合计等于原基金总数年定期,到期的本息合计等于原基金总数M 用用S表示每年发放的奖金,表示每年发放的奖金,ai表示第表示第i年的最优收益比年的最优收益比 NT U -M CM 数学建模-LINGO软件 max S ,1,5 ii a xSi 6 i i xM 56 a xM 模型为:模型为: 输入输入LINGO如下如下: NT U -M CM 数学建模-LINGO软件 3. 解读求解报告解读求解报告. LINGO求解报告: 例 求解报告: 例. NT U -M CM 数学建模-LINGO软件 LINGO求解报告:求解报告: 缩减成本系数 缩减成本系数 (相差值相差值) 松弛或剩余松弛或剩余 注注: 最优解中变量的缩减成本系数值自动取零最优解中变量的缩减成本系数值自动取零. 约束条件中约束条件中, 对于“对于“=”不等式不等式, 称之为称之为剩余剩余(Surplus). 不等式左右两边值相 等时 不等式左右两边值相 等时, 松弛和剩余的值为松弛和剩余的值为0; 如果约束条件无法满足如果约束条件无法满足, 则松弛和 剩余的值为 则松弛和 剩余的值为负负. 影子影子(对偶对偶) 价格价格 含义含义: 如果该生产线最大生产能力增加如果该生产线最大生产能力增加1, 能使目标函数值增 加 能使目标函数值增 加50. NT U -M CM 数学建模-LINGO软件 2 了解了解LINGO的菜单的菜单 新建新建 打开打开 保存保存 打印打印 剪切剪切 复制复制 粘贴粘贴 取消取消 重做重做 查找查找 定位定位 匹配 括号 匹配 括号 求解求解 显示 答案 显示 答案 模型 图示 模型 图示 选项 设置 选项 设置 窗口 后置 窗口 后置 关闭所 有窗口 关闭所 有窗口 平铺 窗口 平铺 窗口 在线 帮助 在线 帮助 上下文 相关帮助 上下文 相关帮助 文件菜单文件菜单 编辑菜单编辑菜单 LINGO菜单菜单 窗口菜单窗口菜单 帮助菜单帮助菜单 NT U -M CM 数学建模-LINGO软件 输出特殊格式文件输出特殊格式文件 MPS格式文件格式文件 MPI格式文件格式文件 IBM开发的数学规划文件 标准格式 开发的数学规划文件 标准格式 LINDO公司制定的数学规划 文件格式 公司制定的数学规划 文件格式 用户基本信息用户基本信息 该命令弹出一个对话框该命令弹出一个对话框,要求 输入用户名和密码 要求 输入用户名和密码(这些信息 在用 这些信息 在用ODBC函数访问数据 库要用到 函数访问数据 库要用到) NT U -M CM 数学建模-LINGO软件 选择性粘贴选择性粘贴 该命令把该命令把Window剪贴板中 的内容插入到光标所在位置 剪贴板中 的内容插入到光标所在位置. 插入新对象插入新对象 链接 修改模型内插入对象的链接 性质 链接 修改模型内插入对象的链接 性质. 对象的性质 在模型中选择一个链接或嵌 入对象 对象的性质 在模型中选择一个链接或嵌 入对象,用本命令可以查看和 修改这个对象的属性 用本命令可以查看和 修改这个对象的属性. NT U -M CM 数学建模-LINGO软件 灵敏度分析灵敏度分析 该命令产生当前模型的灵敏度分析 报告 该命令产生当前模型的灵敏度分析 报告: (1)最优解保持不变的情况下最优解保持不变的情况下,目标 函数的系数变化范围 目标 函数的系数变化范围; (2)在影子价格和缩减成本系数都 不变的前提下 在影子价格和缩减成本系数都 不变的前提下,约束条件右边的 常数变化范围 约束条件右边的 常数变化范围; 例例. 做下列模型的灵敏度分析做下列模型的灵敏度分析 MAX=200*X1+300*X2; X1=100; X2=120; X1+2*X2=160; NT U -M CM 数学建模-LINGO软件 敏感性分析的作用是给出敏感性分析的作用是给出“Ranges in which the basis is unchanged”,即研究当目标函数的系数 和约束右端项在什么范围变化(此时假定其他系数 保持不变)时,最优基(矩阵)保持不变。 ,即研究当目标函数的系数 和约束右端项在什么范围变化(此时假定其他系数 保持不变)时,最优基(矩阵)保持不变。 注意注意:这里:这里LINGO不询问是否进行敏感性分析。如 果需要进行敏感性分析,必须用 不询问是否进行敏感性分析。如 果需要进行敏感性分析,必须用“LINGO |Options” 命令打开系统选项对话框,在命令打开系统选项对话框,在“General Solver”标 签下的 标 签下的“Dual Computations”下拉列表中选中 下拉列表中选中 “Prices ijij ij zc x 8 1 ,1,2,6; iji j xa i 6 1 ,1,2,8; ijj i xdj 0,1,2,6,1,2,8; ij xij NT U -M CM 数学建模-LINGO软件 1. 集合段集合段 集合集合是一组相关对象构成的组合 集合在使用之前需要预先给出定义 是一组相关对象构成的组合 集合在使用之前需要预先给出定义, 初始集合的定义初始集合的定义三要素三要素: 集合的集合的名称名称, 集合的集合的元素元素, 集合的集合的属性属性(可视为可视为与该集合有关 的变量或常量 与该集合有关 的变量或常量). 集合分为集合分为初始初始(基本基本原始原始)集合集合和和衍生衍生(派生派生)集合集合 初始集合的定义格式初始集合的定义格式: 集合的名称集合的名称/集合的元素集合的元素/:集合的属性集合的属性; 例例. 定义例定义例3的货栈集合的货栈集合ai和和dj WH / W1.W6 /: AI; VD / V1.V8 /: DJ; SETS: ENDSETS NT U -M CM 数学建模-LINGO软件 衍生集合的定义衍生集合的定义四要素四要素: 集合的集合的名称名称, 对应的初始集合对应的初始集合, 集合的集合的元素元素(可以省略可以省略), 集合 的 集合 的属性属性(可以没有可以没有). 例例.定义集合,表示例定义集合,表示例3中从第中从第i个货栈到第个货栈到第j个客户的运货量 个客户的运货量 xij , 和第和第i个货栈到第个货栈到第j个客户的单位货物运价个客户的单位货物运价cij . LINKS (WH, VD):C, X; 注注: 如果集合的如果集合的元素省略元素省略不写不写, 则默认衍生集合的元素取它所 对应初始集合的所有可能组合 则默认衍生集合的元素取它所 对应初始集合的所有可能组合. 集名称集名称必须严格符合标准命名规则:以字母或下划线(必须严格符合标准命名规则:以字母或下划线(_) 为首字符,其后由字母( ) 为首字符,其后由字母(AZ)、下划线、阿拉伯数字 ( )、下划线、阿拉伯数字 (0,1,9)组成的总长度不超过)组成的总长度不超过32个字符的字符 串,且不区分大小写。 个字符的字符 串,且不区分大小写。 NT U -M CM 数学建模-LINGO软件 2. 数据段数据段. 如何给例如何给例3中的集合中的集合AI, DJ, C, X赋值赋值? AI = 60, 55, 51, 43, 41, 52; DJ = 35, 37, 22, 32, 41, 32, 43, 38; C = 6, 2, 6, 7, 4, 2, 5, 9 4, 9, 5, 3, 8, 5, 8, 2 5, 2, 1, 9, 7, 4, 3, 3 7, 6, 7, 3, 9, 2, 7, 1 2, 3, 9, 5, 7, 2, 6, 5 5, 5, 2, 2, 8, 1, 4, 3; DATA: ENDDATA 注注: 数据段以数据段以“DATA:” 开始开始, 以以ENDDATA结束, 这两个语句必须 结束, 这两个语句必须单独成一行单独成一行; 数据之间的 ; 数据之间的逗号逗号和和空格空格可以替换可以替换 NT U -M CM 数学建模-LINGO软件 3. 目标与约束段目标与约束段. 例例3的目标函数:的目标函数: 68 11 min; ijij ij zc x 用用LINGO语句表示为:语句表示为: MIN = SUM(LINKS(I, J): C(I, J)*X(I, J); 注注: SUM是是LINGO提供的内部函数,其作用是对某个集 合的所有成员,求指定表达式的和 提供的内部函数,其作用是对某个集 合的所有成员,求指定表达式的和. SUM有两个参数:有两个参数:集合名称集合名称和和表达式表达式 如果表达式中参与运算的属性属于同一个集合,则 如果表达式中参与运算的属性属于同一个集合,则 SUM的索引可以省略的索引可以省略. 即即 MIN = SUM(LINKS: C*X); NT U -M CM 数学建模-LINGO软件 例例3的约束条件:的约束条件: 8 1 ,1,2,6; iji j xa i 用用LINGO语句表示为:语句表示为: FOR(WH(I): SUM(VD(J): X(I, J)=AI(I); 注注: FOR是是LINGO提供的内部函数,其作用是对某个集 合的所有成员分别生成一个约束表达式 提供的内部函数,其作用是对某个集 合的所有成员分别生成一个约束表达式. FOR有两个参数:有两个参数:集合名集合名和和约束表达式约束表达式 这里的集合名表示对该集合所有成员生成对应约束表达式这里的集合名表示对该集合所有成员生成对应约束表达式 问问: 语句中的语句中的I, J能不能省略能不能省略? 不能不能 6 1 ,1,2,8; ijj i xdj 用用LINGO语句表示为:语句表示为: FOR(VD(J): SUM(WH(I): X(I, J) =DJ(J); NT U -M CM 数学建模-LINGO软件 初始化段以语句初始化段以语句INIT:开头开头,以语句以语句ENDINIT结束 如下程序 结束 如下程序 INIT: X=0.99; Y=0.01; ENDINIT Y=LOG(X); X2+Y2=1; 注注: 初始化段初始化段只对非线性模型起作用只对非线性模型起作用,在线性模型中不起任何 作用 在线性模型中不起任何 作用. 4. 初始段初始段. 在数据段给变量赋值以后在数据段给变量赋值以后,该变量在整个程序运行阶段都是 常量 该变量在整个程序运行阶段都是 常量,而不是决策变量而不是决策变量. 如果想对决策变量赋一定初始值如果想对决策变量赋一定初始值,希望该初始值作为寻找最 优解的起始值 希望该初始值作为寻找最 优解的起始值(变量本身不是常量变量本身不是常量),可以在程序中增加初始 段 可以在程序中增加初始 段 NT U -M CM 数学建模-LINGO软件 4 LINGO的运算符和函数的运算符和函数 一、一、LINGO的常用运算符的常用运算符. 1. 算术运算符算术运算符. * / + - - 2. 逻辑运算符逻辑运算符. 分 类运算符作 用 运算对象是两个数 分 类运算符作 用 运算对象是两个数 #EQ#两个运算对象两个运算对象相等相等时为真,否则为假时为真,否则为假 #NE#两个运算对象两个运算对象不相等不相等时为真,否则为假时为真,否则为假 #GT#左边左边大于大于右边时为真,否则为假右边时为真,否则为假 #GE#左边左边大于或等于大于或等于右边时为真,否则为假右边时为真,否则为假 #LT#左边左边小于小于右边时为真,否则为假右边时为真,否则为假 #LE#左边左边小于或等于小于或等于右边时为真,否则为假 预算对象是逻辑值 或逻辑表达式 右边时为真,否则为假 预算对象是逻辑值 或逻辑表达式 #NOT#单目运算符单目运算符,表示对运算对象取反(即真变假,假变真),表示对运算对象取反(即真变假,假变真) #AND#两个运算对象两个运算对象都真都真时为真,否则为假时为真,否则为假 #OR#两个运算对象两个运算对象都假都假时为假,否则为真时为假,否则为真 逻辑运算符优先级别:逻辑运算符优先级别:#NOT#最高,最高,#AND#和和#OR#最低最低 NT U -M CM 数学建模-LINGO软件 3. 关系运算符关系运算符. 关系运算符通常用在条件表达式中,用来指定约束条件表 达式左边与右边必须满足的关系 关系运算符通常用在条件表达式中,用来指定约束条件表 达式左边与右边必须满足的关系. 有以下三种:有以下三种: = = 注:注:LINGO没有单独的没有单独的“”关系,如果出现了单个关系,如果出现了单个 “”,LINGO认为是省略了认为是省略了“=”. 如果需要严格小(大)于关系,如如果需要严格小(大)于关系,如A严格小于严格小于B,可 以表示成: ,可 以表示成:AB 这里 是一个小的正数,它的值依赖于模型中这里 是一个小的正数,它的值依赖于模型中A小于小于B多少 才算不等 多少 才算不等. 例例. 计算 计算 2 #GT# 3 #AND# 4 #GT# 2 结果为结果为0(FALSE) NT U -M CM 数学建模-LINGO软件 二、数学函数二、数学函数. 函 数 名返回值函 数 名返回值 ABS(X)返回返回X的绝对值的绝对值 SIN(X)返回返回X的正弦值的正弦值 COS(X)返回返回X的余弦值的余弦值 TAN(X)返回返回X的正切值的正切值 LOG(X)返回返回X的的自然对数自然对数值值 EXP(X)返回返回eX的值(的值(e为自然常数,为自然常数,e=2.7182818) SIGN(X)返回返回X的符号值的符号值 SMAX(X1,X2,Xn)返回这一系列数中的最大值返回这一系列数中的最大值 SMIN(X1,X2,Xn)返回这一系列数中的最小值返回这一系列数中的最小值 FLOOR(X)返回返回X的整数部分(向最靠近的整数部分(向最靠近0的方向取整)的方向取整) LGM(X)返回返回X的的gamma函数的自然对数值函数的自然对数值 MOD(X,Y)返回返回X除以除以Y的余数(的余数(X和和Y都是整数)都是整数) POW(X,Y)返回指数返回指数XY的值(该函数可用的值(该函数可用XY代替)代替) SQR(X)返回返回X的平方值(该函数可用的平方值(该函数可用X2代替)代替) SQRT(X)返回返回X的正的平方根(该函数可用的正的平方根(该函数可用X(1/2)代替)代替) NT U -M CM 数学建模-LINGO软件 三、概率函数三、概率函数. 函 数 名返回值函 数 名返回值 PSN(X)返回标准正态分布的分布函数返回标准正态分布的分布函数 PPS(A,X) 返回参数为返回参数为A的泊松分布函数值当的泊松分布函数值当X不是整 数时 不是整 数时,采用 线性插值进 行计算 采用 线性插值进 行计算 PBN(P,N,X) 返回参数为返回参数为P,N的二项分布的分布函数值的二项分布的分布函数值 PHG(POP,G,N,X) 返回参数为返回参数为POP,G,N的超几何分布的分布函数值的超几何分布的分布函数值 PFD(N,D,X) 返回参数自由度为返回参数自由度为N和和D的的F分布的分布函数值分布的分布函数值 PCX(N,X) 返回自由度为返回自由度为N的的x2分布分布函数值分布分布函数值 PTD(N,X) 返回自由度为返回自由度为N的的t分布的分布函数值分布的分布函数值 RAND(SEED) 返回返回0-1之间的伪随机数之间的伪随机数 SEED为 种子 为 种子 QRAND(SEED) 返回返回0-1之间的多个拟均匀随机数之间的多个拟均匀随机数(只能用在数据段只能用在数据段) PEB(A,X) 略略 PEL(A,X) PPL(A,X) PFS(A,X,C) PSL(X) NT U -M CM 数学建模-LINGO软件 四、集合操作函数四、集合操作函数. 函 数 名返回值函 数 名返回值 FOR(s:e) 该函数常用在约束条件中该函数常用在约束条件中, 表示对集合表示对集合s中的每个成员生成一个 约束条件表达式 中的每个成员生成一个 约束条件表达式e SUM(s:e) 对集合对集合s中的每 个成员 中的每 个成员, 分别得 到表达式 分别得 到表达式e的值的值, 然后返回所有这些值的和然后返回所有这些值的和 MAX(s:e)然后返回所有这些值中的最大值然后返回所有这些值中的最大值 MIN(s:e)然后返回所有这些值中的最小值然后返回所有这些值中的最小值 PROD(s:e)然后返回所有这些值的乘积然后返回所有这些值的乘积 IN(s:e1)如果成员如果成员e1在集合在集合s中中, 则返返回则返返回1, 否则返回否则返回0 SIZE(s)返回集合返回集合s中的成员个数中的成员个数 INDEX(s:ek) 返回成员返回成员ek在集合中的顺序号在集合中的顺序号(索引值索引值), 该值在该值在1和集合和集合s的成员 个数之间 的成员 个数之间,如果集合如果集合s中没有该元素中没有该元素, 则给出出错信息则给出出错信息 WRAP(I,N) 若若I1,N,返回返回I; 否则,返回否则,返回J=I- -N*K(K为整数为整数, J1,N,) 上表中,前五个函数的表示形式为上表中,前五个函数的表示形式为: 函数名函数名(集合名集合名|条件条件:表达式表达式) 例例. “FOR(VD(J)|J#NE#5:表达式表达式e);”表示什么含义表示什么含义? NT U -M CM 数学建模-LINGO软件 五、变量定界函数五、变量定界函数. 函 数 名返回值函 数 名返回值 BIN(X)限制限制X为为0或或1.【该函数在【该函数在0-1规划中特别有用】规划中特别有用】 BND(L,X,U)限制限制LX U. 【可用作约束条件】【可用作约束条件】 GIN(X)限制限制X为整数为整数. 【该函数在整数规划中特别有用】【该函数在整数规划中特别有用】 FREE(X)取消对变量取消对变量X的限制的限制(即即X可取任意实数值可取任意实数值) 注: 注: BND函数可以用约束条件代替函数可以用约束条件代替,但使用但使用BND函数表 达变量的取值范围比使用约束条件的求解 函数表 达变量的取值范围比使用约束条件的求解速度快速度快, 且不计 入约束条件的数目中 且不计 入约束条件的数目中. FREE(X)的作用是取消对变量的作用是取消对变量X的默认非负设置的默认非负设置. 例例. 求函数求函数z = (x+2)2 +(y- -2)2的最小值的最小值. min=(x+2)2+(y-2)2; free(x); 【请大家上机验证一下有【请大家上机验证一下有FREE和没有的差别】和没有的差别】 NT U -M CM 数学建模-LINGO软件 六、其他函数六、其他函数. 函 数 名说 明函 数 名说 明 WARN(文字信息文字信息,逻辑表达式逻辑表达式) 如果逻辑表达式的值为真如果逻辑表达式的值为真, 则显示指导文 字信息 则显示指导文 字信息(用于提示用于提示) IF(逻辑表达式逻辑表达式,表达式为真时的值表达式为真时的值, 表达式为假时的值表达式为假时的值) 该函数根据逻辑表达式的结果是真还是 假 该函数根据逻辑表达式的结果是真还是 假, 决定返回值决定返回值, 常用来表示分段函数常用来表示分段函数 USER( ) 该函数允许用户用该函数允许用户用C语言或语言或FORTRAN语 言编写并编译自己的函数 语 言编写并编译自己的函数,返回用户函数 的计算结果 返回用户函数 的计算结果 例例. 用用IF表示下列函数表示下列函数. 4 , 0500 ( ) 5003 , 500 xx f x xx f = IF(x#LE#500,4*x,500+3*x); 或或f = IF(x#GT#500,500+3*x,4*x); 【思考【思考:】 4 , 0500 ( )5003 , 5001000 15002 ,1000 xx f xxx x x 此外还有此外还有: 文件输入输出函数文件输入输出函数,金融函数金融函数,结果报告函数结果报告函数 NT U -M CM 数学建模-LINGO软件 txt文件与文件与lingo变量之间的数据连接变量之间的数据连接 file(外部文件路径外部文件路径文件名文件名.txt):把外部:把外部txt文件数据传到文件数据传到lingo; txt(外部文件路径外部文件路径文件名文件名.txt):把:把lingo变量数据传到外部变量数据传到外部.txt文件文件. sets: s/1.10/; ss(s,s):x1; endsets data: x1 = file(C:Documents and SettingsOwner桌面t.txt); Enddata sets: ss/1.10/; ww(ss,ss):s; endsets data: text(C:Documents and SettingsOwner桌面o.txt)=s; enddata NT U -M CM 数学建模-LINGO软件 Lingo与与excel的数据链接的数据链接 X=ole(路径路径文件名文件名.xls,范围范围): xls数据传给lingo的x; ole(已有的路径已有的路径文件名文件名.xls,范围范围)=x:把lingo中的x传给 已有的excel文件。 NT U -M CM 数学建模-LINGO软件 5 补 充补 充 一、 稠密集合与稀疏集合一、 稠密集合与稀疏集合. SETS: WH / W1.W6 /: AI; VD/V1.V8/:DJ; LINKS(WH,VD):C,X; ENDSETS 省略了成员列表,只是指出它基于两个初始集合的衍生集合 称为 省略了成员列表,只是指出它基于两个初始集合的衍生集合 称为稠密集合稠密集合. 如果衍生集合的成员只是稠密集合中的一部分(子集),则 称为 如果衍生集合的成员只是稠密集合中的一部分(子集),则 称为稀疏集合稀疏集合. 稀疏集合的定义方法有两种:稀疏集合的定义方法有两种: (1)直接列表法;直接列表法; (2)元素过滤法元素过滤法. NT U -M CM 数学建模-LINGO软件 例例. 有如下工作流程有如下工作流程. ABC E F G H I JK D SETS: TASK/A B C D E F G H I J K/; PRED(TASK,TASK)/A,B B,C C,F C,G F,J G,J J,K D,E E,H E,I H,J I,J/; ENDSETS (1)直接列表法;直接列表法; NT U -M CM 数学建模-LINGO软件 (2)元素过滤法元素过滤法. 例例. 某公司某公司8个职员两两相容度如下表个职员两两相容度如下表. S1S2S3S4S5S6S7S8 S1-9342156 S2-173521 S3-44292 S4-1552 S5-876 S6-23 S7-4 S8- SETS: REN/1.8/; LINKS(REN,REN)| ENDSETS 注注: 这里这里 ENDSETS 例例.给下列集合赋值给下列集合赋值 (法法1) DATA: X=1,2,3; Y=4,5,6; ENDDATA (法法2) DATA: X,Y=1,4 2,5 3,6; ENDDATA 注注: 同一集合的多个属性一起赋值时同一集合的多个属性一起赋值时,LINGO用用按列赋值按列赋值方式 进行 方式 进行. NT U -M CM 数学建模-LINGO软件 2. 通过键盘输入数据通过键盘输入数据. 例例. 当当A=125, A=265时时,下列模型的目标函数值是多少下列模型的目标函数值是多少? Max=98*x1+A*x2-x12- -0.3*x1*x2- -2*x22; x1+x2100; x1=x2; GIN(x1); GIN(x2); 22 121122 max 980.32fxAxxx xx 12 12 12 100; ; , xx xx x x 为整数 DATA: A=?; ENDDATA MODEL: END NT U -M CM 数学建模-LINGO软件 3. 部分赋值部分赋值. SETS: WH / W1.W6 /: A; ENDSETS 例例. 给下列集合的第二和第三个元素赋值为给下列集合的第二和第三个元素赋值为60和和55 DATA: A=,60,55,; ENDDATA NT U -M CM 数学建模-LINGO软件 6 应用举例 例 应用举例 例1 求向量5,1,3,4,6,10前5个数最小值,后 3个数最大值 。 求向量5,1,3,4,6,10前5个数最小值,后 3个数最大值 。 sets: number/1.6/:x; endsets data: x=5 1 3 4 6 10; enddata minv=min(number(i)|i#le#5:x); !或者或者minv=smin(x1(1),x(2),x(3),x(4),x(5); maxv=max(number(i)|i#ge#4:x); !或者或者maxv=smax(x(4),x(5),x(6); end NT U -M CM 数学建模-LINGO软件 例例2 加工奶制品的生产计划加工奶制品的生产计划 1桶 牛奶 桶 牛奶 3公斤公斤A1 12小时小时 8小时小时 4公斤公斤A2 或 获利 或 获利24元元/公斤公斤 获利获利16元元/公斤公斤 50桶牛奶时间桶牛奶时间480小时至多加工小时至多加工100公斤公斤A1 制订生产计划,使每天获利最大制订生产计划,使每天获利最大 35元可买到元可买到1桶牛奶,买吗?若买,每天最多买多少桶牛奶,买吗?若买,每天最多买多少? 可聘用临时工人,付出的工资最多是每小时几元可聘用临时工人,付出的工资最多是每小时几元? A1 的获利增加到的获利增加到30元元/公斤,应否改变生产计划?公斤,应否改变生产计划? 每天:每天: NT U -M CM 数学建模-LINGO软件 1桶 牛奶 桶 牛奶 3公斤公斤A1 12小时小时 8小时小时 4公斤公斤A2 或 获利 或 获利24元元/公斤公斤 获利获利16元元/公斤公斤 x1 桶牛奶生产桶牛奶生产A1x2 桶牛奶生产桶牛奶生产A2 获利获利 243x1获利获利 164 x2 21 6472xxzMax 每天获利每天获利 约束条件约束条件 50 21 xx 480812 21 xx 1003 1 x 0, 21 xx 线性规 划模型 线性规 划模型 (LP) 时间时间480小时 至多加工小时 至多加工100公斤公斤A150桶牛奶每天桶牛奶每天 加工能力加工能力 原料供应原料供应 劳动时间劳动时间 非负约束非负约束 目标函数目标函数 决策变量决策变量 NT U -M CM 数学建模-LINGO软件 model: max=72*x1+64*x2; x1+x250; 12*x1+8*x2480; 3*x1100; end Global optimal solution found. Objective value: 3360.000 Total solver iterations: 2 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000 模型求解与解释模型求解与解释 reduced cost值表示当该非基变 量增加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2019年中考物理专题专测练习卷及答案-电与磁信息及能源和可持续发展
- 2025年跨语言词义消歧迁移考题(含答案与解析)
- 小学一年级语文教师培训教学计划
- 学校食堂减少一次性用品使用措施
- 传染病防治及信息报告管理规范培训考核试题及答案
- 呼吸机相关性肺炎试题及答案
- 人教版二年级上册道德与法治班级教学计划
- 学校食堂疫情防控演练方案及流程
- 城市多部门协同应急机制分析-洞察及研究
- 昭通市中医院检验科生物安全培训考核试题及答案
- 2025-2030电动船舶电池系统安全标准构建与产业链配套能力报告
- 数字时代群体冲突演变-洞察及研究
- 大学英语四级高频词汇1500+六级高频词汇1500
- 中国古代文学史 马工程课件(下)24第九编晚清文学 第三章 宋诗派的兴起与桐城派的承变
- GB/T 40079-2021阀门逸散性试验分类和鉴定程序
- GB/T 38537-2020纤维增强树脂基复合材料超声检测方法C扫描法
- 部编人教版道德与法治四年级上册全册完整版课件
- 混凝土结构跳仓施工方案
- 水稳摊铺作业安全技术交底
- 二年级劳动与技术折扇课件
- 公墓施工组织设计
评论
0/150
提交评论