资源预览内容
第1页 / 共80页
第2页 / 共80页
第3页 / 共80页
第4页 / 共80页
第5页 / 共80页
第6页 / 共80页
第7页 / 共80页
第8页 / 共80页
第9页 / 共80页
第10页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数学建模与运用n1 Lingo软件用法n2 线性规划问题n3 非线性规划问题n4 整数规划问题n5 目标规划问题及计算机解法LINGO软件用法2016年8月目录n1 LINGO软件的安装与主界面n2 LINGO软件的简单编程方法n3 LINGO软件的求解结果n4 LINGO软件的模型语言编程方法n5 LINGO软件的函数与运算符n6 LINGO软件的灵敏度分析1 LINGO软件的安装与主界面n1.3 LINGO 11.0的安装在Internet上容易找到Lingo 11.0通常无须安装,双击执行程序Lingo11.exe, 可直接启动。1 LINGO软件的安装与主界面n四、LINGO 11.0的主界面多文档程序 编辑窗口求解 (执行程序)2 LINGO软件的简单编程方法n2.1 简单编程法是指按数学模型的构成,对每一个数学表达式 仅作少量符合计算机语言格式的变动,输入编 辑窗口并运行的编程方法。2 LINGO软件的简单编程方法n例1 某企业每月生产甲、乙两种产品,需要三种生产资源 :技术服务、劳动力、行政管理,单位产品对三种资源的 需求量、单位产品的利润以及三种资源的总量如下表所示 。问:如何安排生产以使产品获利最大? 单单位产产品消耗资资源量单单位利润润 技术术劳动劳动 力管理 甲110210 乙1564 资资源量1006003002 LINGO软件的简单编程方法n例1.1-LINGO程序2 LINGO软件的简单编程方法n2.2 简单编程法的要点每个数学表达式对应一个语句,以分号结束以“max=”或“min=”开头的是目标函数语句变量、运算符等必须符合计算机语言的格式n特别地,乘号不能省略。以感叹号(!)开头、以分号结束的行是注释行英文字母或单词不区分大小写约束“xi0”不需输入,LINGO默认变量非负3 LINGO软件的求解结果n3.1 “求解”按钮和菜单3 LINGO软件的求解结果n3.2 求解结果:(1) 状态结果模型类别 LP: 线性规划最优状态 Global: 全局最优目标值:600变量情况 (1) 总数:2 (2) 非线性的: 0 (3) 整型变量: 0约束情况 (1) 总数:4 (2) 非线性的: 03 LINGO软件的求解结果n3.2 求解结果: (2) 数值结果目标值:600变量值松弛或剩 余变量值4 LINGO的模型语言编程法n4.1 模型语言程序的基本框架MODEL:nSETS:nENDSETSnDATA:nENDDATAENDS集合部分 (变量定义区),需在模型引用 变量之前先定义. 可以有多个sets段.模型部分:目标函数、约束条件数据部分:模型所需的数据. 可以有多个DATA段.4 LINGO的模型语言编程法n n4.2 4.2 变量的定义变量的定义4.2.1 定义变量的一些基本要求n为提高编程效率,尽量为模型中的常数也定义变量来 ,然后在DATA部分为其赋值。n相同类型的变量可以定义为数组,先定义一维数组, 再由多个一维数组派生出二维或高维数组4 LINGO的模型语言编程法4.2.2 “例1”的常量和变量n决策变量X:x1,x2n常量有:目标函数系数c:(10,4)约束条件的系数矩阵A:1 110 52 6约束条件的右端常数b:(100,600,300)n矩阵A32可看作是由(b,c)派生出来的,b,c 称为原原 始集始集,A称为派生集派生集。4 LINGO的模型语言编程法4.2.3 4.2.3 原始集的定义原始集的定义n格式:集名集名 / /成员列表成员列表/: /: 属性列表属性列表例如:定义一个学生集(studs),有4个成员Jhon,Jill,Rose,Mike 成员属性有性别(Sex)和年龄(Age)。定义:studs /Jhon,Jill,Rose,Mike/: sex,age;(成员:显式罗列)或 studs /14/: sex, age;(成员:隐式罗列, 成员为1,2,3,4)* *成员较多时,可使用成员较多时,可使用隐式成员隐式成员 列表列表setname setname/member1memberN/ /member1memberN/ :attribute_list:attribute_list;*n n数字型数字型n n字符数字型字符数字型n n星期型星期型n n月份型月份型n n年份年份- -月份型月份型* *隐式成员列表类别隐式成员列表类别* *(1)(1)数字型数字型1n 1n 例:例:15 15 (1,2,3,4,5) (1,2,3,4,5) (2)字符数字型stringMstringN stringMstringN 例例: : truck3truck34truck3truck34*(3)(3)星期型星期型 dayMdayN dayMdayN 例:例:monfrimonfri(Mon, Tue, Wed, Thu, Fri) (Mon, Tue, Wed, Thu, Fri)(4)(4)月份型月份型 MonthMMonthN MonthMMonthN 例:例:OCTJAN OCTJAN (Oct, Nov, Dec, JanOct, Nov, Dec, Jan)*(5)(5)年份年份- -月份型月份型 monthYearMmonthYearNmonthYearMmonthYearN例:例:OCT2001JAN2002OCT2001JAN2002(2001.10 2001.11 2001.10 2001.11 2001.12 2002.1 2001.12 2002.1)4 LINGO的模型语言编程法原始集与C语言“结构体”的对应关系n原始集 - C语言“结构体”成名 - 结构体的成员(域)属性 - 结构体的实例4 LINGO的模型语言编程法4.2.4 “例1”的原始集n(1) 产品(Product)集:成员:2个,甲产品、乙产品成员属性:2个,数量(X)、单价(c)定义:定义:prod /p1,p2/: x,c;prod /p1,p2/: x,c;n(2) 资源(Resource)集成员:3个,技术、劳动力、管理成员属性:1个,数量(b)定义:定义:res /tech, worker, manage/: bres /tech, worker, manage/: b4 LINGO的模型语言编程法4.2.5 派生集的定义n n格式:集名格式:集名 ( (父集列表父集列表) ) / /成员表列成员表列/ /: : 属性列表属性列表父集:可以是原始集,也可以是派生集成员列表:如果省略,则以“父集”的全部组合为成员n例如:为“例1”定义派生集生产耗用集生产耗用集(consum)(consum)定义:Consum (res,prod): A;Consum (res,prod): A;成员: A(1,1)=(tech,p1) A(1,2)=(tech,p2)A(2,1)=(worker,p1) A(2,2)=(worker,p2)A(3,1)=(manage, p1) A(3,2)=(manage,p2)4 LINGO的模型语言编程法4.2.6 “例1”的常见定义 sets:prod/12/:x,c;res/13/:b;cons(res,prod):a; endsetsn注:可将x,c,b看作一维数组,a看作二维数组.其元素为x(1),x(2),; a(1,1),a(1,2),4 LINGO的模型语言编程法n n4.3 4.3 变量变量( (属性属性) )的赋值的赋值“DATAENDDATA”的编写有三种赋值方法:nA. 在DATAENDDATA段中直接赋值nB. 从TXT文件中导入nC. 从EXCEL文件中导入4 LINGO的模型语言编程法n4.3.1 直接赋值法格式:属性属性= ;n值与值之间用空格分开,用分号结束对“例1”中属性的赋值: c=10 4; b=100 600 300; A=1 110 52 6;对一维数组赋值时,不区分行向 量或列向量;对二维数组赋值时,分多行排列 数据,只在最后一行加分号。4 LINGO的模型语言编程法n4.3.2 从TXT文件导入(1) TXT文件中数据的排列格式数据间以空格分开,每组数据以“” 为结束符,表示一条数据记录,文件 尾时可以不要结束符。4 LINGO的模型语言编程法(2)导入方法n在“DATAENDDATA”段中用file()函数每读取一组数据,都要用一次 file()函数(遇到符号“”终止读取) 。TXT文件与LINGO程序文件放在同一 个文件夹中。4 LINGO的模型语言编程法n4.3.3 从EXCEL文件导入(1) EXCEL文件中数据的排列格式将数据组按行或矩阵形式存放在 sheet1表的单元格中。对每组数据所在的单元区域定义一 个名称,方法是: A. 选中一个数据区域; B. 选择菜单“插入名称定义例如,左图中三组数据区域的名称 分别为“cost, res, consum”。4 LINGO的模型语言编程法(2) 从EXCEL文件导入数据的方法n属性 = OLE(路径文件名.xls , 区域名称 )n例如:文件所在的盘符及其路径不能省略。4 LINGO的模型语言编程法n n4.4 4.4 目标函数及约束条件的编写目标函数及约束条件的编写如果目标函数和约束条件比较简单,则仍然可 以采用简单编程法的书写格式,但引用变量时 应当使用数组格式。例如:4 LINGO的模型语言编程法容易看到上述程序中,目标函数和约束条件都 有对应元素乘积后累加的特征,并且3个约束条 件的结构是相同的。应当有更高效的编程方法为此,LINGO软件提供了 两个重要函数:nsum( )nfor( )4 LINGO的模型语言编程法n4.1 改写数学模型4 LINGO的模型语言编程法4.2 对的编程方法(用sum( )函数)n格式:sum ( sum ( 集名集名 | |过滤条件过滤条件 : : 表达式表达式) )“|过滤条件”表示只对符合条件的表达式作累加,可省略。n功能:按过滤条件遍历集,以对按过滤条件遍历集,以对“ “表达式表达式” ”作累加作累加.n例如:对上述模型的目标函数格式1:sum( prod(j): c(j)*x(j) );格式2:sum(prod: c*x);n例:s=sum(number(j) | j #le# 5j #le# 5: x); 对j5以内的所有x作累加4 LINGO的模型语言编程法n例如:对上述模型的3个约束条件sum( prod(j): a(1,j)*x(j) ) =1. 主要用于模型的约束条件语句中 ,表示约束条件的两端是否相等。2. LINGO软件并不支持严格大于或 小于,“”和 “=”等价。3. 严格不等可构造为“A+e=30; end 5 LINGO的运算符和函数n5.2.9 判断函数warn(warn(文本串文本串 , , 条件条件) )功能:当条件为真时产生一个内容为“文本”的信息框示例: mo
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号