欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

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

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

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

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

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

    注意事项

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

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




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开