书签 分享 收藏 举报 版权申诉 / 45
上传文档赚钱

类型利用lingo语法简化表达式课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2974286
  • 上传时间:2022-06-17
  • 格式:PPT
  • 页数:45
  • 大小:4.46MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《利用lingo语法简化表达式课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    利用 lingo 语法 简化 表达式 课件
    资源描述:

    1、1Lingo 讲义讲义数信学院数信学院 邝神芬邝神芬 数学建模:数学建模:lingolingo专题专题2参考教材参考教材v1. 优化建模与优化建模与lindo/lingo软件软件, 谢金星谢金星 薛毅薛毅 ,清华大学出版社 v2.lingo 教程 (电子版)v3.运筹学(第三版)运筹学(第三版) ,清华大学出版社 求解线性规划求解线性规划0,6002100350. .32min212112121xxxxxxxtsxx例例1.1如何在如何在LINGO中求解如下的中求解如下的LP问题:问题: 4Lingo程序运行步骤:程序运行步骤:56点击红色按纽运行点击红色按纽运行78Lingo简介简介v 1.

    2、lingo由美国由美国lindo公司开发,软件前身是公司开发,软件前身是lindo 6.0, 是美国芝加哥大学生是美国芝加哥大学生linus schrage教授于教授于1980年开发的专门用于求解数学规划的软件包,属年开发的专门用于求解数学规划的软件包,属于最优化,运筹学问题求解软件于最优化,运筹学问题求解软件, 。v 2.LINGO主要用于求解线性规划、非线性规划、二主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于求解一些线性次规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等。和非线性方程组及代数方程求根等。v 3.应用的范围包含生产线规划、运

    3、输、财务金融、投应用的范围包含生产线规划、运输、财务金融、投资分配、资本预算、混合排程、库存管理、资源配置资分配、资本预算、混合排程、库存管理、资源配置等许多领域。在教学、科研和工业、商业、服务等领等许多领域。在教学、科研和工业、商业、服务等领域得到广泛应用域得到广泛应用 9lingo程序一般模板:程序一般模板:model:!一般以model:开关,以end结束,这个可省略;sets:!这里定义集合,即变量;endsetsdata:!这里定义已知数据;enddata!目标函数,为min或max;min=sum( ) !目标函数表达式!在min或max接着是约束表达式,以分号结束; end10为

    4、什么要学为什么要学lingo?v1.lingo专注于解优化问题。v2.lingo求解优化问题非常简单易用。v3.lingo是数学建模竞赛的必备工具。有人说,能用lingo求解的,一般也能用matlab求解,但是:matlab求解优化问题较复杂,尤其是整数规划,适合对优化理论非常熟悉的人,而lingo简单易用,适合各阶层人士使用。11只要涉及最大或最小值的优只要涉及最大或最小值的优化问题,都能用化问题,都能用lingo求求解解lingo适合解决什么问题?适合解决什么问题?12Lingo基础基础一个优化问题通过以下三部分组成:一个优化问题通过以下三部分组成:1、目标函数:一般表示成求某个数学表达式

    5、的最大、目标函数:一般表示成求某个数学表达式的最大值或最小值。值或最小值。2、决策变量:目标函数值取决于哪些变量、决策变量:目标函数值取决于哪些变量3、约束条件:对变量附加一些条件限制(通常用等、约束条件:对变量附加一些条件限制(通常用等式或不等式表示)。(变量限制条件)式或不等式表示)。(变量限制条件)13Lingo的语法规定:的语法规定:(1)求目标函数的最大值或最小值分别用求目标函数的最大值或最小值分别用Max=-或或Min=-来表示来表示(2)每个语句必须以分号结束每个语句必须以分号结束(3)变量名必须以字母变量名必须以字母(A-Z)开头,由字母,数字和下划线组成,开头,由字母,数字和

    6、下划线组成,长度不超过长度不超过32个字符,不区分大小写;个字符,不区分大小写;(4)可以给语句加上标号,例如可以给语句加上标号,例如obj Max=200*x1+300*x2;(5)以以!开头,以开头,以;号结束的语句是注释语句;号结束的语句是注释语句;(6)如果对变量的取值范围没有作特殊说明,则默认所有决策变量如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;都非负;(7) Lingo模型以语句模型以语句Model:开头,以开头,以end结束,对于比较简单的模型,结束,对于比较简单的模型,这两个语句可以省略。这两个语句可以省略。14lingo要学些什么?要学些什么?v利用利用l

    7、ingo求解优化问题就像直求解优化问题就像直接打公式一样,那么接打公式一样,那么lingo有什有什么要学的呢?么要学的呢?15直接求解非常麻烦!直接求解非常麻烦!v例子:求)100,.,1(0500100min100110011001ixxxxiiiiiii16学习学习lingo的基础:的基础:1.理解什么是集?集的数据如何定义?2.理解Lingo程序流,循环,求和,判断等,懂得利用这些语法来表达复杂的约束表达式。3.如何对变量作约束,如求解0-1规划,整数规划17如何学好如何学好lingo?v1.多练,多实践,懂得基本语法后,多看例子。v2.学会用优化的思想来思考问题(掌握运筹学与最优化理论

    8、是基础中的基础)18集合集合v 1 为什么使用集为什么使用集v 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。v 2 什么是集什么是集v 集是一群相联系的对象,这些对象也称为集的成员成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也

    9、可以有一个生日属性等等。v LINGO有两种类型的集:原始集原始集(primitiveset)和派生集派生集(derived set)。v 一个原始集是由一些最基本的对象组成的。v 一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。19如何定义集如何定义集v集部分集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束 v例例1.1(例如人有姓别,性别相对某人来说的)v可定义集:human/zhangsan,lishi/:boy,girlv例例2.1 可以定义一个名为stu

    10、dents的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age:vsets:vstudents/John Jill, Rose Mike/: sex, age;vendsets20lingo集基础集基础v例例3.1:要定义:要定义x1,x2,x100这这100个变个变量,可定义集合量,可定义集合xx, 写成:写成:vSets:vxx/1.100/:x;vEndsetsv其中XX是集合,1.100表示集合从1到100,X表示这个集合的变量,XX只作循环或程序流时才使用v注意:在MATLAB中只能用矩阵表示,这是LINGO简单的原因21集合的数据定义集合的数据定义v !

    11、集部分;vsets:v students/john jill rose mike/:sex,age;vendsetsv!数据部分;vdata:v sex,age= 1 16v 0 14v 0 17v 1 13;venddata22v可以把集、集成员和集属性同C语言中的结构体作个类比。如下图:v集 结构体v集成员 结构体的成员v集属性 结构体实例v即:struts stu int name,int age;vstruts stu zhangsan;lingo集与集与C语言结构语言结构23派生集派生集 v为了定义一个派生集,必须详细声明:v派生集可理解为如何定义二维数组xij,v集的名字v父集父集

    12、的名字v可选,集成员v可选,集成员的属性v可用下面的语法定义一个派生集:vsetname(parent_set_list)/member_list/:attribute_list;24派生集派生集v sets:v product/A B/;v machine/M N/;v week/1.2/;v allowed(product,machine,week):x;v endsetsv LINGO生成了三个父集的所有组合共八组作为allowed集的成员。列表如下:v 编号 成员v 1 (A,M,1)v 2 (A,M,2)v 3 (A,N,1)v 4 (A,N,2)v 5 (B,M,1)v 6 (B,

    13、M,2)v 7 (B,N,1)v 8 (B,N,2)25v sets:v !学生集:性别属性学生集:性别属性sex,1表示男性,表示男性,0表示女性;年龄属性表示女性;年龄属性age;v students/John,Jill,Rose,Mike/:sex,age;v !男学生和女学生的联系集:友好程度属性男学生和女学生的联系集:友好程度属性friend,0,1之间的数之间的数;v linkmf(students,students) | sex(&1) #eq# 1 #and# sex(&2) #eq# 0: friend;v !男学生和女学生的友好程度大于男学生和女学生的友好程度大于0.5的集

    14、的集;v linkmf2(linkmf) | friend(&1,&2) #ge# 0.5 : x;v endsetsv data:v sex,age = 1 16v 0 14v 0 17v 0 13;v friend = 0.3 0.5 0.6;v enddata派生集派生集 例子例子26Lingo运算符运算符v算术运算符算术运算符v算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:v乘方v乘v除v加v减vLINGO唯一的一元算术运算符是取反函数“”。27逻辑运算符v LINGO具有种逻辑运算符:v #not# 否定该操作数的逻辑值,not是一个一元运算符v #eq#若两个运算

    15、数相等,则为true;否则为flasev #ne# 若两个运算符不相等,则为true;否则为flasev #gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flasev #ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flasev #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flasev #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flasev #and# 仅当两个参数都为true时,结果为true;否则为flasev #or# 仅当两个参数都为false时,结果为false;否则为true28常用数学函数v a

    16、bs(x) 返回x的绝对值v sin(x) 返回x的正弦值,x采用弧度制v cos(x) 返回x的余弦值v tan(x) 返回x的正切值v mod(x,y) 求x/y的余数v exp(x) 返回常数e的x次方v log(x) 返回x的自然对数v lgm(x) 返回x的gamma函数的自然对数v sign(x) 如果x=0时,返回不超过x的最大整数;当x0时,返回不低于x的最大整数。v smax(x1,x2,xn) 返回x1,x2,xn中的最大值v smin(x1,x2,xn) 返回x1,x2,xn中的最小值29集合函数集合函数 FOR (set_name:constraint_expressi

    17、ons) MAX(set_name:expression)MIN(set_name:expression)SUM(set_name:expression)SIZE(set_name)IN(set_name,set_element)如果数据集)如果数据集set_name中中包含元素包含元素set_element则返回则返回1,否则返回,否则返回0。 30变量界定函数v变量界定函数实现对变量取值范围的附加限制,共4种:vbin(x) 限制x为0或1(例题参考练习题3)vbnd(L,x,U) 限制LxUvfree(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数vgin(x) 限制x为整数

    18、31符号符号v注意:注意:lingo所有的函数所有的函数及关键字除(及关键字除(min,max等极小数关键字外)其余等极小数关键字外)其余的都要加上的都要加上v如求和函数用如求和函数用sum,循循环环for等等32for用法v 该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入每个约束,不过for函数允许只输入一个约束,然后LINGO自动产生每个集成员的约束。v 例例4.10 产生序列1,4,9,16,25v model:v sets:v number/1.5/:x;v endsetsv for(number(I): x(I)=I2);v end33for表示表达式:表示表达式:1.

    19、如何遍历:x1,x2,x4,x5,x100例:除X3外所有变量+10;for(xx(i) | i#ne#3:x+10)2.如何遍历:x3,x4,x100例:x3到x100的数+103.如何遍历:x1,x3,x5,.,x99例:奇数项的数+1034sum用法v 该函数返回遍历指定的集成员的一个表达式的和。v 例例 求向量5,1,3,4,6,10前5个数的和。v model:v data:v N=6;v enddatav sets:v number/1.N/:x;v endsetsv data:v x = 5 1 3 4 6 10;v enddatav s=sum(number(I) | I #l

    20、e# 5: x);v endv 3min和maxv 返回指定的集成员的一个表达式的最小值或最大值。35v 例例4.12 求向量5,1,3,4,6,10前5个数的最小值,后3个数的最大值。v model:v sets:v number/1.6/:x;v endsetsv data:v x = 5 1 3 4 6 10;v enddatav minv=min(number(I) | I #le# 5: x);v maxv=max(number(I) | I #ge# 4: x);v endfor循环例子循环例子36vmodel:vsets:v number/1.100/:x;vendsetsv f

    21、or(number(I) | mod(i,2) #eq# 0 : x(I)=I2);v for(number(I) | mod(i,2) #eq# 1 : x(I)=I3);vend以下程序的作用是什么以下程序的作用是什么37v例例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。生产数据如下表所示:v v若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?线性规划例子线性规划例子38v用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。vmax=60*desks+30*tables+20*chairs;v8*desks+6*t

    22、ables+chairs=48;v4*desks+2*tables+1.5*chairs=20;v2*desks+1.5*tables+.5*chairs=8;vtables=5;39例例2,求解如下问题,求解如下问题257560304 , 3 , 2 , 1,40. .20450400min434432332122111414141zzyxzzyxzzyxzyxixtszyxwiiiiiii所有变量均大于040直接直接求解:求解:model:min=400*x1+400*x2+400*x3+400*x4+450*y1+450*y2+450*y3+450*y4+20*z1+20*z2+20*z

    23、3+20*z4;x1=40;x2=40;x3=40;x1+y1-z1=30;x2+y2+z1-z2=60;x3+y3+z2-z3=75;x4+y4+z3-z4=25;gin(x1);gin(x2);gin(x3);gin(x4);gin(y1);gin(y2);gin(y3);gin(y4);gin(z1);gin(z2);gin(z3);gin(z4);end41利用利用lingo语法简化表达式语法简化表达式v程序见example2.txt42求求min f(x1,x2)=100(x2x12)2+(1x1)2约束条件:约束条件:x12+x121.5,x1+x2 0model:min=100*

    24、(y-x2)2+(1-x)2;x2+y2=0;free(x);free(y);end求解非线性规划求解非线性规划43LINGO实战实战v 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。 单单 销地销地位运位运价价产产地地B B1 1B B2 2B B3 3B B4 4B B5 5B B6 6B B7 7B B8 8产产量量A A1 16 62 26 67 74 42 25 59 96060A A2 24 49 95 53 38 85 58 82 25555A A3 35 52 21 19 97 74 43 33 35151A A4 47 76 67 73 39

    25、92 27 71 14343A A5 52 23 39 95 57 72 26 65 54141A A6 65 55 52 22 28 81 14 43 35252销量销量35353737222232324141323243433838 44vSets部分:SETS:WAREHOUSES/WH1.WH6/:CAPACITY;VENDORS/V1.V8/:DEMAND;LINKS(WAREHOUSES,VENDORS):COST,VOLUME;ENDSETSvData部分:v DATA:CAPACITY=605551434152;DEMAND=3537223241324338;COST=6267

    26、42594953858252197433767392712395726555228143;ENDDATA数据定义与初始化数据定义与初始化45MODEL:!TITLE WIDGETS;! A 6 Warehouse 8 Vendor Transportation Problem;SETS:WAREHOUSES/WH1.WH6/: CAPACITY;VENDORS/V1.V8/: DEMAND;LINKS( WAREHOUSES, VENDORS): COST, VOLUME;ENDSETS! Here is the data;DATA:!attribute values;CAPACITY = 6

    27、0 55 51 43 41 52;DEMAND = 35 37 22 32 41 32 43 38;COST = 6 2 6 7 4 2 5 9 4 9 5 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;ENDDATA! The objective;MIN = SUM( LINKS( I, J): COST( I, J) * VOLUME( I, J);! The demand constraints;FOR( VENDORS( J): SUM( WAREHOUSES( I): VOLUME( I, J) = DEMAND( J);! The capacity constraints;FOR( WAREHOUSES( I): SUM( VENDORS( J): VOLUME( I, J) = CAPACITY( I);END程序求解程序求解

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:利用lingo语法简化表达式课件.ppt
    链接地址:https://www.163wenku.com/p-2974286.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库