欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    学习LINGO语言课件ppt课件.ppt

    • 资源ID:3255383       资源大小:770.54KB        全文页数:151页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    学习LINGO语言课件ppt课件.ppt

    2019年8月6日星期二3时53分29秒,LINGO,数学科学与技术学院 杨云峰 fyydqtom.com sxjmdqpisohu.com 密码:654321,2019年8月6日星期二3时53分29秒,一. 优化模型与优化软件简介,二. LINGO软件的基本使用方法,Outline,三. LINGO程序流程控制和子模型,2019年8月6日星期二3时53分29秒,一. 优化模型与优化软件简介,2019年8月6日星期二3时53分29秒,优化问题的一般形式,无约束优化: 只有目标函数, 没有约束条件 有约束优化: 目标函数和约束条件都有 普通方程组:没有(1)(3), 只有(2) 不等式方程组:没有(1)(2), 只有(3),2019年8月6日星期二3时53分29秒,优化类型,连续优化 : 全部决策变量取值均 为连续数值 (实数) 离散优化 : 部分或全部决策变量 只取离散数值,2019年8月6日星期二3时53分29秒,连续优化,线性规划(LP) 目标和约束均为线性函数 非线性规划(NLP) 目标或约束中有非线性函数 二次规划(QP) 目标为二次函数、 约束为线性,2019年8月6日星期二3时53分29秒,离散优化,整数规划(IP) 决策变量(全部或部分)为整数,整数线性规划(ILP),整数非线性规划(INLP) 纯整数规划(PIP), 混合整数规划(MIP) 一般整数规划,0-1(整数)规划,2019年8月6日星期二3时53分29秒,常用优化软件,LINDO/LINGO软件 MATLAB优化工具箱/mathematica优化程序包 EXCEL软件的优化功能 SAS(统计分析)软件的优化功能,2019年8月6日星期二3时53分29秒,建模时需要注意的几个基本问题,1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等,2019年8月6日星期二3时53分29秒,建模时需要注意的几个基本问题,3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y 5 改为x5y) 4、合理设定变量上下界,尽可能给出变量初始值 5、模型中使用的参数数量级要适当(如小于103),2019年8月6日星期二3时53分29秒,二. LINGO软件的基本使用方法,2019年8月6日星期二3时53分29秒,§1 LINGO入门,2019年8月6日星期二3时53分29秒,max 2x1+3x2 St. 4x1+3x2=10 3x1+5x2=12 x10 x20,设有数学模型如下:,2019年8月6日星期二3时53分29秒,第一步:启动Lingo,屏幕显示如下: 标记LINGO的外窗口是主框架窗口,主框架窗口的上面包含所有的命令菜单和命令工具栏; 标记LINGO MODEL-LINGO1的子窗口是一个新的、空白的模型窗口。,2019年8月6日星期二3时53分29秒,第二步:在模型窗口中输入模型,model: max = 2*x1+3*x2; 4*x1+3*x210; 3*x1+5*x212; end,Max 2x1+3x2 St. 4x1+3x2=10 3x1+5x2=12 x10 x20,2019年8月6日星期二3时53分29秒,第三步:求解模型,1)选择菜单 LINGO|Solve 或者按工具栏的,2019年8月6日星期二3时53分29秒,2)LINGO开始编译模型,如有语法错误将返回一个错误的消息并指明错误出现的位置;如果通过编译, LINGO将激活 Solver运算器 寻求模型的最优解;,2019年8月6日星期二3时53分29秒,3)首先出现solver status 窗口,其作用是监控solver的进展和显示模型的维数等信息;,2019年8月6日星期二3时53分29秒,Solver Status 窗口,2019年8月6日星期二3时53分29秒,4)计算完成后出现Solution Report 窗口显示模型解的详细信息;,2019年8月6日星期二3时53分29秒,Solution Report 窗口,Global optimal solution found at iteration: 2 Objective value: 7.454545 Variable Value Reduced Cost x1 1.272727 0.000000 x2 1.636364 0.000000 Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545,2019年8月6日星期二3时53分29秒,Reduced Cost:,在max模型中: 相应变量的 reduced cost值表示当该变量每增加一个单位时目标函数减少的量。 本例中此值均为0,2019年8月6日星期二3时53分29秒,Reduced Cost:,Reduced Cost 值列出最优单纯形表中判别 数所在行的变量的系数,表示当变量有微 小变动时,目标函数的变化率。其中基变 量的reduced cost值应为0, 对于非基变量 Xj, 相应的reduced cost值表示当某个变 量Xj 增加一个单位时目标函数减少的量 ( max型问题)。本例中此值均为0。,2019年8月6日星期二3时53分29秒,SLACK OR SURPLUS:,给出约束条件的松驰变量或剩余变量的值; 小于等于约束为松驰变量(SLACK); + 大于等于约束为剩余变量(SURPLUS); -,2019年8月6日星期二3时53分29秒,DUAL PRICES:对偶价格或影子价格,DUAL PRICES表示当对应约束有微 小变动时,目标函数的变化率,即约束条 件右端的常数项每增加一个单位,目标函 数相应获得的改变量。 显然,如果在最优解处约束正好取等号 (紧约束),该值才可能不是0;对于非紧 约束对该值必为0,表示对应约束中不等式 右端项的微小扰动不影响目标函数。,2019年8月6日星期二3时53分29秒,§2 Lingo的基本用法注意事项,2019年8月6日星期二3时53分29秒,1)每一个模型都以 model: 开始, 又以 end 结束,也可省略此结构;,2019年8月6日星期二3时53分29秒,2)目标函数必须由 min = 或 max = 开头。,2019年8月6日星期二3时53分29秒,3)可以用表示=;,Lingo无严格小于,欲使ab, 可以适当选取小的正常数e 表示成a+eb,,2019年8月6日星期二3时53分29秒,4) LINGO的每一语句以 ; 结束;,5) 注释 以 ! 开始, 以 ; 结束;,2019年8月6日星期二3时53分29秒,变量名: .不区分大小写 .由字母数字下划线组成 .第一个字符必须是字母 .变量名最长为32个字符,2019年8月6日星期二3时53分29秒,LINGO编辑器用 蓝色显示LINGO关键字 绿色显示注释 其他文本用黑色 匹配的括号用红色高亮度显示,2019年8月6日星期二3时53分29秒,8) 变量和数字放在约束条件的左、右端均可; 但最好变量在左,数字在右。,9) Lingo 变量默认域为非负实数,可以改变默认域.,2019年8月6日星期二3时53分29秒,10)行名 name 例: Objectivemax=2*x+3*y; Con1 4*x+3*y10; Con2 3*x+5*y12; 线性规划(行名).lg4 默认为1,2,3,2019年8月6日星期二3时53分29秒,Global optimal solution found. Objective value: 7.454545 Total solver iterations: 2 Variable Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000 Row Slack or Surplus Dual Price OBJECTIVE 7.454545 1.000000 CON1 0.000000 0.9090909E-01 CON2 0.000000 0.5454545,2019年8月6日星期二3时53分29秒,§3 LINGO的建模语言,2019年8月6日星期二3时53分29秒,以运输实例逐步分析,6个仓库向8个小贩供应同一种货物, 如何运,总运输费用最小?,注:每个仓库可以向每个小贩供货 ,一共48个可能运货路线。,仓库货存量、小贩需求量、每条路线的单位运输费用三个表如下:,2019年8月6日星期二3时53分29秒,仓库货存量:capacity,2019年8月6日星期二3时53分29秒,小贩需求量:demand,2019年8月6日星期二3时53分29秒,每单位货物运输费用表:cost,2019年8月6日星期二3时53分29秒,demand_j 表示第j个小贩的需求量 capacity_i 表示第i个仓库的库存量 cost_i_j 表示从第i个仓库到第j个小贩的单位运输费用,volume_i_j 表示从第i个仓库到第j个小贩的运输量,2019年8月6日星期二3时53分29秒,数学模型可表示如下:,2019年8月6日星期二3时53分29秒,当然目标函数可以如下输入: min = 6 * volume_1_1 + 2 * volume_1_2 + 6 * volume_1_3 + . 1 * volume_6_6 + 4 * volume_6_7 + 3 * volume_6_8;,2019年8月6日星期二3时53分29秒,但是较大模型如果像上面那样 输入又费时,又容易出错! 这就需要LINGO的建模语言,2019年8月6日星期二3时53分29秒,LINGO的建模语言优点:,1)可以用类似于标准数学符号的方式 表示你的模型; 2)可以用一个紧凑的语句表示一系列 约束。 3)数据可独立于模型:LINGO可以从 文本文件、电子数据表、数据库中读 取数据。,2019年8月6日星期二3时53分29秒,LINGO模型的构成:5个段,目标函数与约束条件段 集合段(sets: endsets) 数据段(data: enddata) 初始段(init: endinit) 计算段(calc: endcalc),Lingo建模语言的重点和难点是: 对集合概念的理解和正确使用,2019年8月6日星期二3时53分29秒,为什么使用集合,集合是LINGO建模语言的基础,是LINGO程序设计最强有力的基本构件。借助于集合,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。,2019年8月6日星期二3时53分29秒,什么是集合,集合是一群相联系的对象,比如 仓库、小贩、运输路线,这些对象也 称为集合的成员。每个集合成员可能 有一个或多个与之有关联的特征,我 们把这些特征称为属性。 属性值可以预先给定,也可以是 未知的,有待于LINGO求解。,2019年8月6日星期二3时53分29秒,从我们的数学模型看需要三个集合:,(1)仓库-6个成员-货存量 (2)小贩-8个成员-需求量 (3)运输路线-48个成员 -单位运费和运货量,2019年8月6日星期二3时53分29秒,LINGO有两种类型的集合,原始集合(primitive set):由一些 最基本的对象组成的。 派生集(derived set): 用一个或多 个其它集来定义的,也就是说,它 的成员来自于其它已存在的集。,2019年8月6日星期二3时53分29秒,*下面我们学习集合定义部分*,1. 以sets:开始,以endsets结束; sets: endsets,2019年8月6日星期二3时53分29秒,2. 原始集合定义法:,setname /member_list/ :attribute_list ; 。setname是集合的名字; 。member_list是成员列表,各成员之间可用 空格或逗号分隔; 。attribute_list是集合成员所具有的属性列 表,多个属性之间用逗号分隔; 。原始集合的member_list, attribute_list是可选项;,2019年8月6日星期二3时53分29秒,*仓库和小贩的集合可如下定义*,sets: warehouses / w1 w2 w3 w4 w5 w6 /: capacity; vendors / v1,v2,v3,v4,v5,v6, v7,v8 / : demand; endsets,2019年8月6日星期二3时53分29秒,*成员较多时,可使用隐式成员列表,setname /member1memberN/ :attribute_list;,2019年8月6日星期二3时53分29秒,数字型 字符数字型 星期型 月份型 年份-月份型,*隐式成员列表类别*,2019年8月6日星期二3时53分29秒,(1)数字型,1n 例:15 (1,2,3,4,5),(2)字符数字型,stringMstringN 例: truck3truck34,2019年8月6日星期二3时53分29秒,(3)星期型,dayMdayN 例:monfri (Mon, Tue, Wed, Thu, Fri),(4)月份型,MonthMMonthN 例:OCTJAN (Oct, Nov, Dec, Jan),2019年8月6日星期二3时53分29秒,(5)年份-月份型,monthYearMmonthYearN 例:OCT2001JAN2002 (2001.10 2001.11 2001.12 2002.1),2019年8月6日星期二3时53分29秒,*仓库和小贩的集合也可如下定义*,sets: warehouses / w1w6/: capacity; vendors / v1v8 /: demand; endsets,2019年8月6日星期二3时53分29秒,3. 派生集合定义法:,setname (parent_set_list) /member_list/ :attribute_list; parent_set_list是父集合名列表,2019年8月6日星期二3时53分29秒,*48条运输路线集合定义*,links(warehouses,vendors) : cost, volume;,2019年8月6日星期二3时53分29秒,*三个集合定义如下*,sets: warehouses / wh1wh6 /: capacity; vendors / v1v8 /: demand; links( warehouses, vendors): cost,volume; endsets,2019年8月6日星期二3时53分29秒,运输问题的三个集合说明:,这段代码定义了4个属性值,在接下来的模型中就可以使用属性值capacity(1),capacity(2),capacity(6); demand(1),demand(2) ,demand(8); cost(1,1), cost(1,2) , cost(1,8) , cost(2,1), cost(2,2) , cost(2,8) , cost(6,1), cost(6,2) , cost(6,8); volume的引用同cost。,2019年8月6日星期二3时53分29秒,4.集合成员过滤:,trucks/1100/:capacity; heavy_duty (trucks) | capacity( &1是集合索引号放置器, 如果有两个父集合,就是&1,&2,2019年8月6日星期二3时53分29秒,*下面我们学习数据定义*,以data:开始,以enddata结束; data: enddata,2019年8月6日星期二3时53分29秒,例如:设有如下集合,sets: set1/a,b,c/:x,y; endsets,如果想赋值 x(1)=1, x(2)=2, x(3)=3, y(1)=4,y(2)=5, y(3)=6, 则数据段可以为,2019年8月6日星期二3时53分29秒,data: x=1,2,3; y=4 5 6; enddata,data: x,y=1 4 2 5 3 6; enddata,多个数据之间可用逗号或空格分隔,2019年8月6日星期二3时53分29秒,若成员属性值相同,数据段定义如下:,data: x=3; !(所有成员的x=3); y=6; !(所有成员的y=6); enddata,2019年8月6日星期二3时53分29秒,也可以在运行时输入属性值:,data: x=?; !(运行时输入所有成员的x值); y=6; enddata,2019年8月6日星期二3时53分29秒,*运输问题的数据部分*,data: capacity=60,55,51,43,41,52; demand=35 37 22 32 41 32 43 38;,2019年8月6日星期二3时53分29秒,cost = 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; enddata,2019年8月6日星期二3时53分29秒,sets: sett : x, y ; endsets data: sett, x, y = a 1 4 b 2 5 c 3 6; enddata,sets: sett/a,b,c/ : x, y ; endsets data: x =1 2 3; y=4 5 6; enddata,集合成员可以在数据段定义:,2019年8月6日星期二3时53分29秒,运输实例:,sets: warehouses: capacity; endsets data: !可以写成warehouses =w1w6; !也可以同时定义集合成员列表和属性值; warehouses, capacity= w1 60,w2 55, w3 51,w4 43, w5 41,w6 52; enddata,2019年8月6日星期二3时53分29秒,* 初始化定义*,只在非线性规划中使用,指定初 始值。 init: endinit,2019年8月6日星期二3时53分29秒,例: init: x=0.999; y=0.002; endinit y=log(x); x2+y2=1; 给了恰当的初始值,会减少运算时间。,2019年8月6日星期二3时53分29秒,*计算段定义*,calc: . . . endcalc,计算段的作用: 在模型输入后,LINGO开始正式求解模型之前对原始数据进行一定的计算,得到我们模型中要使用的部分数据。,2019年8月6日星期二3时53分29秒,一个简单的计算段例子:,model: data: x,y,z = 1, 2, 3; enddata calc: avg = ( x + y + z) / 3; endcalc end,2019年8月6日星期二3时53分29秒,*目标函数和约束条件段*,LINGO提供了集合循环函数和集合操作 函数使得目标函数和约束条件的书写如同 数学公式那样简单。,四个集合循环函数,FOR、SUM 、 MAX、MIN,2019年8月6日星期二3时53分29秒,sum ( setname ( set_index_list) | condition : expression );,求和,2019年8月6日星期二3时53分29秒,*运输问题的目标函数*,min = sum( links ( i, j) : cost( i, j) * volume( i, j) );,min = sum( links : cost* volume );,2019年8月6日星期二3时53分29秒,*运输问题实例中的求和*,!从6个仓库发到第j个小贩的货物量总和; sum( warehouses(i) : volume(i, j) );,2019年8月6日星期二3时53分29秒,从第i个仓库发出到8个小贩的货物量总和;,sum( vendors(j) : volume( i , j ) ),2019年8月6日星期二3时53分29秒,for ( setname ( set_index_list) | condition : expression_list );,生成约束for,对集合setname中的每个成员独立地生成约束,约束由约束表达式列表expression_list描述; 多个表达式之间用分号相隔。,2019年8月6日星期二3时53分29秒,*每个小贩的需求约束*,!(要求6个仓库发给每个小贩的货物总量=小贩的需求量); for( vendors(j) : sum( warehouses( i): volume( i, j) ) =demand( j) );,2019年8月6日星期二3时53分29秒,*每个仓库的供货约束*,for( warehouses( i) : sum( vendors(j) : volume( i, j) ) capacity( i) );,!(要求每个仓库发给8个小贩的 货物总量仓库的货存量);,2019年8月6日星期二3时53分29秒,*运输问题的完整模型,运输问题.lg4,2019年8月6日星期二3时53分29秒,返回集合setname上的表达式expression的最大值,max ( setname ( set_index_list) | condition : expression );,2019年8月6日星期二3时53分29秒,min ( setname ( set_index_list) | condition : expression ); 返回集合setname上的表达式expression的最小值,2019年8月6日星期二3时53分29秒,返回数据集setname中成员 element的位置号 (下标),*集合操作函数*,index ( setname, element ),2019年8月6日星期二3时53分29秒,model: sets: girls/debbie,sue,alice/:; boys/bob,joe,sue,fred/:; endsets calc: x=index(boys,sue); y=index(sue); endcalc end,2019年8月6日星期二3时53分29秒,in( set_name, primitive_index_1 ,primitive_index_2 ),如果数据集set_name中包含成员primitive_index_1则返回1,否则 返回0。,2019年8月6日星期二3时53分29秒,例:,model: sets: plants / a,b,c,d /: ; closed(plants) / b /: ; open(plants) | #not# in(closed, enddata end,2019年8月6日星期二3时53分29秒,例2:,model: sets: s1/a b c/:; s2/x y z/:; s3(s1,s2)/a,x a,z b,y c,z/: ; endsets calc: x=in(s3,index(s1,b), index(s2,y) ); endcalc end,本例要判断集合s3中是否包含元素(b,y),运行LINGO|SOLVE得到x=1,说明包含。,2019年8月6日星期二3时53分29秒,wrap(index,limit) 当index位于区间1,limit时返回index,否则返回j=index-k*limit,其中j位于区间1,limit,2019年8月6日星期二3时53分29秒,职员时序安排模型,一项工作一周7 天都需要有人(比如 护士工作),每天(周一至周日)所需的 最少职员数为20、16、13、16、19、14 和 12,并要求每个职员一周连续工作5 天, 试求每周所需最少职员数,并给出安排。 注意这里我们考虑稳定后的情况。,2019年8月6日星期二3时53分29秒,sets: days/monsun/: required,start; endsets data: required = 20 16 13 16 19 14 12; enddata min=sum(days: start); !最小化每周所需职员数; for(days(j): sum( days(i) | i #le# 5: start( wrap(j+i+2,7 ) ) ) = required(j) );,2019年8月6日星期二3时53分29秒,size(setname),返回集合setname中所包含的成员 个数。,2019年8月6日星期二3时53分29秒,第二章 LINGO与其它软件交换数据,2019年8月6日星期二3时53分29秒,拷贝、粘贴,From Exel,Pastefromexel.lg4,2019年8月6日星期二3时53分29秒,输入输出函数,用来与外部数据源连接 text()、 ole()、 file()、odbc()、 dual(),2019年8月6日星期二3时53分29秒,file( filename ),在模型的集合和数据部分使用, 从文本 文件输入数据.,2019年8月6日星期二3时53分29秒,sets: warehouses / file( 1.txt) / : capacity; vendors / file( 1.txt ) / : demand; links( warehouses, vendors) : cost, volume; endsets,运输实例的数据可以从文本文件输入:,2019年8月6日星期二3时53分29秒,data: capacity = file( '1.txt '); demand = file( '1.txt '); cost = file( '1.txt ' ); enddata,1.txt文件内容 1.txt,2019年8月6日星期二3时53分29秒,text( filename ),在模型的数据部分使用, 向文本 文件输出数据.,Outputtotext.lg4,2019年8月6日星期二3时53分29秒,ole( spreadsheet_file ,range_name_list ),在模型的数据和集合部分使用, 与excel交换数据,2019年8月6日星期二3时53分29秒,运输实例的数据可以从Excel输入:,sets: warehouses: capacity; vendors : demand; links( warehouses, vendors) : cost, volume; endsets,2019年8月6日星期二3时53分29秒,data: warehouses, vendors, capacity, demand, cost = ole ( 2.xls, warehouses, vendors, capacity, demand, cost ); enddata,2019年8月6日星期二3时53分29秒,在Excel中定义单元格范围名称的方法:, 按鼠标左键拖曳选择单元格范围, 释放鼠标按钮, 选择“插入|名称|定义”, 输入希望的名字, 点击“确定”按钮。,2019年8月6日星期二3时53分29秒,2.xls 从Excel输入数据.lg4,2019年8月6日星期二3时53分29秒,odbc('data_source', 'table_name', col_1', 'col_2' . ),在模型的数据部分使用,与数据库进行数据传输,2019年8月6日星期二3时53分29秒,运输实例的数据可以从数据库输入:,sets: warehouses: capacity; vendors : demand; links( warehouses, vendors) : cost, volume; endsets,2019年8月6日星期二3时53分29秒,data: warehouses, capacity= odbc(); vendors, demand= odbc(); links,cost = odbc(); odbc()=volume; enddata,2019年8月6日星期二3时53分29秒,trans.mdb 与数据库的数据传递.lg4,2019年8月6日星期二3时53分29秒,第三章 LINGO的内部函数,2019年8月6日星期二3时53分29秒,1. 标准运算符,算术运算符: * / + -,逻辑运算符: #EQ# #NE# #GE# #GT# #LE# #LT# #NOT# #AND# #OR#,2019年8月6日星期二3时53分29秒,关系运算符: = = 可以用表示=或,2019年8月6日星期二3时53分29秒,运算符的优先级,2019年8月6日星期二3时53分29秒,lingo变量默认域为非负实数 free(variable) 取消默认域,使变量可以取任意实数 gin(variable) 限制变量取整数值 bin(variable) 限制变量取值为0,1 bnd(low,variable,up) 限制变量于一个有限的范围,3. 变量界定函数,2019年8月6日星期二3时53分29秒,练习1,x1=2, x2 =3, Z*17,练习1,2019年8月6日星期二3时53分29秒,练习2,X1=1 X2=0 X3=1 Z=8,练习2,2019年8月6日星期二3时53分29秒,abs(x)、cos(x)、sin(x) 、 tan(x) 、exp(x) 、sign(x) floor(x) (返回x的整数部分) smax(x1,x2,xn) (返回x1,x2,xn的最大值) smin(x1,x2,xn),4. 数学函数,2019年8月6日星期二3时53分29秒,5. 条件控制,if ( logical_condition, true_result, false_result ) 计算logical_condition,若真 返回true_result 否则返回false_result.,2019年8月6日星期二3时53分29秒,7个选项卡(可设置80-90个控制参数),2019年8月6日星期二3时53分29秒,范例,2019年8月6日星期二3时53分29秒,整数规划 整数规划.lg4,2019年8月6日星期二3时53分29秒,二次规划的例子(lingo).lg4,2019年8月6日星期二3时53分29秒,递规调用.lg4,已知 ,求a7,2019年8月6日星期二3时53分29秒,学习方法: (1)上课各位老师讲的每个有数据的规划 模型上机用lingo语言实践; (2) LINGO 的help下有一项 Additional Examples of LINGO Modeling,可以仔细研究每个例子的 模型。,2019年8月6日星期二3时53分29秒,某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?,练习3,2019年8月6日星期二3时53分29秒,练习3,2019年8月6日星期二3时53分29秒,解1 设在甲车床上加工工件1、2、3的数量为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:,2019年8月6日星期二3时53分29秒,解2,设在甲车床上加工工件i的数量为x(i), 单位工件所需加工台时数为timex(i), 单位工件的加工费用为costx(i), 在乙车床上加工工件i的数量为y(i), 单位工件所需加工台时数为timey(i) 单位工件的加工费用为costy(i) 工件i的加工数量为demand(i),2019年8月6日星期二3时53分29秒,数学模型,2019年8月6日星期二3时53分29秒,Lingo建模,sets: Chechuang/13/ :costx,costy, timex,timey,x,y,demand; endsets,2019年8月6日星期二3时53分29秒,Lingo建模,min=sum( chechuang : costx*x+costy*y ) sum(chechuang:timex*x)800; sum(chechuang:timey*y)900; for(chechuang:x+y=demand); for(chechuang:gin(x);gin(y);,2019年8月6日星期二3时53分29秒,data: costx=13,9,10; costy=11,12,8; timex=0.4,1.1,1; timey=0.5,1.2,1.3; demand=400,600,500; enddata,练习3,2019年8月6日星期二3时53分29秒,Lingo-Generate-Display model,MODEL: _1 MIN= 13 * X_1 + 11 * Y_1 + 9 * X_2 + 12 * Y_2 + 10 * X_3 + 8 * Y_3 ; _2 0.4 * X_1 + 1.1 * X_2 + X_3 = 800 ; _3 0.5 * Y_1 + 1.2 * Y_2 + 1.3 * Y_3 = 900 ; _4 X_1 + Y_1 = 400 ; _5 X_2 + Y_2 = 600 ; _6 X_3 + Y_3 = 500 ; GIN( X_1); GIN( Y_1); GIN( X_2); GIN( Y_2); GIN( X_3); GIN( Y_3); END,2019年8月6日星期二3时53分29秒,练习4-求S到T的最短路,2019年8月6日星期二3时53分29秒,model: sets: cities/s,a1,a2,a3, b1,b2,c1,c2,t/:l; roads(cities,cities

    注意事项

    本文(学习LINGO语言课件ppt课件.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开