利用lingo语法简化表达式课件.ppt
- 【下载声明】
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的集
展开阅读全文