分享
分销 收藏 举报 申诉 / 151
播放页_导航下方通栏广告

类型学习LINGO语言课件.ppt

  • 上传人:xrp****65
  • 文档编号:13336254
  • 上传时间:2026-03-03
  • 格式:PPT
  • 页数:151
  • 大小:770.50KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

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

    特殊限制:

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

    关 键  词:
    学习 LINGO 语言 课件
    资源描述:
    单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,LINGO,数学科学与技术学院,杨云峰,fyydq,sxjmdqpi,密码:,654321,3/3/2026,一,.,优化模型与优化软件简介,二,.LINGO,软件的基本使用方法,Outline,三,.LINGO,程序流程控制和子模型,3/3/2026,一,.,优化模型与优化软件简介,3/3/2026,约束条件,决策变量,优化问题的一般形式,目标函数,无约束优化,:,只有目标函数,没有约束条件,有约束优化,:,目标函数和约束条件都有,普通方程组:,没有,(1)(3),只有,(2),不等式方程组:,没有,(1)(2),只有,(3),3/3/2026,优化类型,连续优化,:,全部决策变量取值均,为连续数值,(,实数,),离散优化,:,部分或全部决策变量,只取离散数值,3/3/2026,连续优化,线性规划,(LP),目标和约束均为线性函数,非线性规划,(NLP),目标或约束中有非线性函数,二次规划,(QP),目标为二次函数、,约束为线性,3/3/2026,离散优化,整数规划,(IP),决策变量,(,全部或部分,),为整数,整数线性规划,(ILP),,,整数非线性规划,(INLP),纯整数规划,(PIP),混合整数规划,(MIP),一般整数规划,,,0-1,(整数)规划,3/3/2026,常用优化软件,LINDO/,LINGO,软件,MATLAB,优化工具箱,/,mathematica,优化程序包,EXCEL,软件的优化功能,SAS(,统计分析,),软件的优化功能,3/3/2026,建模时需要注意的几个基本问题,1,、,尽量使用,实数优化,,减少整数约束和整数变量,2,、,尽量使用,光滑优化,,减少非光滑约束的个数,如:尽量少使用绝对值、符号函数、多个变量求最大,/,最小值、四舍五入、取整函数等,3/3/2026,建模时需要注意的几个基本问题,3,、,尽量使用,线性模型,,减少非线性约束和非线性变量的个数 (如,x/y,5,改为,x,5,y,),4,、,合理设定,变量上下界,,尽可能给出变量初始值,5,、,模型中使用的,参数数量级,要适当,(,如小于,10,3,),3/3/2026,二,.,LINGO,软件的基本使用方法,3/3/2026,1,LINGO,入门,3/3/2026,ma,x 2x,1,+3x,2,St.4x,1,+3x,2,=10,3x,1,+5x,2,=12,x,1,0,x,2,0,目标函数,约束条件,决策变量,设有数学模型如下:,3/3/2026,第一步:启动,Lingo,屏幕显示如下:,标记,LINGO,的外窗口是主框架窗口,主框架窗口的上面包含所有的命令菜单和命令工具栏;,标记,LINGO MODEL-LINGO1,的子窗口是一个新的、空白的模型窗口。,3/3/2026,第二步:在模型窗口中输入模型,model:,max,=2*x1+3*x2;,4*x1+3*x210;,3*x1+5*x212;,en,d,Max 2x,1,+3x,2,St.4,x,1,+3,x,2,=10 3,x,1,+5,x,2,=12,x,1,0,x,2,0,3/3/2026,第三步:求解模型,1),选择菜单,LINGO|Solve,或者按工具栏的,3/3/2026,2)LINGO,开始编译模型,如有语法错误将返回一个错误的消息并指明错误出现的位置;如果通过编译,LINGO,将激活,Solver,运算器,寻求模型的最优解;,3/3/2026,3),首先出现,solver status,窗口,,其作用是监控,solver,的进展和显示模型的维数等信息;,3/3/2026,Solver Status,窗口,3/3/2026,4),计算完成后出现,Solution Report,窗口,显示模型解的详细信息,;,3/3/2026,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,3/3/2026,Reduced Cost:,在,max,模型,中,:,相应变量的,reduced cost,值表示,当该变量每增加一个单位时目标函数减少的量,。,本例中此值均为,0,3/3/2026,Reduced Cost:,Reduced Cost,值列出最优单纯形表中判别,数所在行的变量的系数,表示当变量有微,小变动时,目标函数的变化率。其中基变,量的,reduced cost,值应为,0,,,对于非基变量,Xj,,相应的,reduced cost,值表示当某个变,量,Xj,增加一个单位时目标函数减少的量,(max,型问题,),。本例中此值均为,0,。,3/3/2026,SLACK OR SURPLUS:,给出约束条件的松驰变量或剩余变量的值;,小于等于约束为松驰变量,(SLACK),;,+,大于等于约束为剩余变量,(SURPLUS);-,3/3/2026,DUAL PRICES,:,对偶价格或影子价格,DUAL PRICES,表示当对应约束有微,小变动时,目标函数的变化率,即约束条,件右端的常数项每增加一个单位,目标函,数相应获得的改变量。,显然,,如果在最优解处约束正好取等号,(紧约束),该值才可能不是,0,;对于非紧,约束对该值必为,0,,表示对应约束中不等式,右端项的微小扰动不影响目标函数。,3/3/2026,2,Lingo,的基本用法注意事项,3/3/2026,1),每一个模型都以,model:,开始,又以,end,结束,也可省略此结构,;,3/3/2026,2),目标函数必须由,min=,或,max=,开头。,3/3/2026,3),可以用,表示,表示,=,;,Lingo,无严格小于,欲使,ab,,,可以适当选取小的正常数,e,表示成,a+e,b,,,3/3/2026,4),LINGO,的每一语句以,;,结束;,5),注释,以,!,开始,,以,;,结束;,3/3/2026,变量名,:.,不区分大小写,.,由字母数字下划线组成,.,第一个字符必须是字母,.,变量名最长为,32,个字符,3/3/2026,LINGO,编辑器用,蓝色,显示,LINGO,关键字,绿色,显示,注释,其他文本用黑色,匹配的括号,用,红色,高亮度显示,3/3/2026,8),变量和数字放在约束条件的左、右端均可;但最好变量在左,数字在右。,9)Lingo,变量默认域为,非负实数,,可以改变默认域,.,3/3/2026,10),行名,name,例:,Objective,max,=2*x+3*y;,Con1,4*x+3*y10;,Con2,3*x+5*y12;,线性规划,(,行名,).lg4,默认为,1,,,2,,,3,3/3/2026,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,3/3/2026,3,LINGO,的,建模语言,3/3/2026,以,运输实例,逐步分析,6,个仓库向,8,个小贩供应同一种货物,,如何运,总运输费用最小,?,注:每个仓库可以向每个小贩供货,,一共,48,个可能运货路线。,仓库货存量、小贩需求量、每条路线的单位运输费用三个表如下:,3/3/2026,仓库货存量:,capacity,仓库号,货存量,w1,60,w2,55,w3,51,w4,43,w5,41,w6,52,3/3/2026,小贩需求量:,demand,小贩代号,货物需求量,v1,35,v2,37,v3,22,v4,32,v5,41,v6,32,v7,43,v8,38,3/3/2026,每单位货物运输费用表:,cost,小,仓 贩,库,v1,v2,v3,v4,v5,v6,v7,v8,w1,6,2,6,7,4,2,5,9,w2,4,9,5,3,8,5,8,2,w3,5,2,1,9,7,4,3,3,w4,7,6,7,3,9,2,7,1,w5,2,3,9,5,7,2,6,5,w6,5,5,2,2,8,1,4,3,3/3/2026,demand_j,表示第,j,个小贩的需求量,capacity_i,表示第,i,个仓库的库存量,cost_i_j,表示从第,i,个仓库到第,j,个小贩的单位运输费用,已知数量,决策变量,volume_i_j,表示从第,i,个仓库到第,j,个小贩的运输量,3/3/2026,数学模型可表示如下:,3/3/2026,当然目标函数可以如下输入,:,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,;,3/3/2026,但是较大模型如果像上面那样,输入又费时,又容易出错!,这就需要,LINGO,的,建模语言,3/3/2026,LINGO,的,建模语言,优点,:,1),可以用,类似于标准数学符号,的方式,表示你的模型;,2),可以用,一个紧凑的语句,表示,一系列,约束,。,3),数据可独立于模型,:,LINGO,可以从,文本文件、电子数据表、数据库中读,取数据。,3/3/2026,LINGO,模型的构成:,5,个段,目标函数与约束条件段,集合段(,sets:,endsets,),数据段(,data:,enddata,),初始段(,init:,endinit,),计算段(,calc,:,endcalc,),Lingo,建模语言的重点和难点是:,对,集合,概念的理解和正确使用,3/3/2026,为什么使用,集合,集合是,LINGO,建模语言的基础,是,LINGO,程序设计最强有力的基本构件。借助于集合,能够,用一个单一的、长的、简明的复合公式表示一系列相似的约束,,从而可以快速方便地表达规模较大的模型。,3/3/2026,什么是集合,集合是一群相联系的对象,比如,仓库、小贩,、,运输路线,,这些对象也,称为集合的,成员,。每个集合成员可能,有一个或多个与之有关联的特征,我,们把这些特征称为,属性,。,属性值可以预先给定,也可以是,未知的,有待于,LINGO,求解。,3/3/2026,从我们的数学模型看需要三个集合:,(,1,),仓库,-,6,个成员,-,货存量,(,2,),小贩,-,8,个成员,-,需求量,(,3,),运输路线,-,48,个成员,-,单位运费,和,运货量,3/3/2026,LINGO,有两种类型的集合,原始集合,(primitive set),:由一些,最基本的对象组成的。,派生集,(derived set):,用一个或多,个其它集来定义的,也就是说,它,的成员来自于其它已存在的集。,3/3/2026,*下面我们学习集合定义部分*,1.,以,sets:,开始,以,endsets,结束;,sets:,endsets,3/3/2026,2.,原始集合定义法:,setname,/,member_list,/,:,attribute_list,;,。,setname,是集合的名字;,。,member_list,是成员列表,各成员之间可用,空格,或,逗号,分隔;,。,attribute_list,是集合成员所具有的属性列,表,多个属性之间用,逗号,分隔;,。原始集合的,member_list,attribute_list,是可选项;,3/3/2026,*仓库和小贩的集合可如下定义*,sets:,warehouses,/w1 w2 w3,w4 w5 w6/,:,capacity,;,vendors,/v1,v2,v3,v4,v5,v6,v7,v8 /,:demand,;,endsets,3/3/2026,*成员较多时,可使用,隐式成员,列表,setname,/member1.memberN/,:attribute_list,;,3/3/2026,数字型,字符数字型,星期型,月份型,年份,-,月份型,*隐式成员列表类别*,3/3/2026,(1),数字型,1.n,例:,1.5,(1,2,3,4,5),(2),字符数字型,stringM.stringN,例,:,truck3.truck34,3/3/2026,(3),星期型,dayM.dayN,例:,mon.fri,(Mon,Tue,Wed,Thu,Fri),(4),月份型,MonthM.MonthN,例:,OCT.JAN,(,Oct,Nov,Dec,Jan,),3/3/2026,(5),年份,-,月份型,monthYearM.monthYearN,例:,OCT2001.JAN2002,(,2001.10 2001.11,2001.12 2002.1,),3/3/2026,*仓库和小贩的集合也可如下定义,*,sets:,warehouses,/w1.w6/:,capacity,;,vendors,/v1.v8/:,demand,;,endsets,3/3/2026,3.,派生集合定义法:,setname,(,parent_set_list,),/,member_list,/,:,attribute_list,;,parent_set_list,是父集合名列表,3/3/2026,*,48,条运输路线集合定义*,links,(warehouses,vendors,),:cost,volume,;,3/3/2026,*三个集合定义如下*,sets:,warehouses,/wh1.wh6/:,capacity,;,vendors,/v1.v8/:,demand,;,links,(warehouses,vendors):,cost,,,volume,;,endsets,3/3/2026,运输问题的三个集合说明:,这段代码定义了,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,。,3/3/2026,4.,集合成员过滤:,trucks/1.100/:capacity;,heavy_duty,(trucks),|,capacity(&1)#,gt,#50000,:,;,&1,是集合索引号放置器,,如果有两个父集合,就是,&1,&2,3/3/2026,*下面我们学习数据定义*,以,data:,开始,以,enddata,结束;,data:,.,enddata,3/3/2026,例如:设有如下集合,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,,,则数据段可以为,3/3/2026,data:,x=1,2,3;,y=4 5 6;,enddata,data:,x,y,=1 4,2 5,3 6;,enddata,多个数据之间可用,逗号,或,空格,分隔,3/3/2026,若成员属性值相同,数据段定义如下:,data:,x=3;!(,所有成员的,x=3);,y=6;!(,所有成员的,y=6);,enddata,3/3/2026,也可以在运行时输入属性值:,data:,x=?;,!,(,运行时输入所有成员的,x,值,);,y=6;,enddata,3/3/2026,*运输问题的数据部分*,data:,capacity,=60,55,51,43,41,52;,demand,=35 37 22 32 41 32 43 38;,3/3/2026,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,3/3/2026,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,集合成员可以在数据段定义:,3/3/2026,运输实例:,sets:,warehouses:capacity;,endsets,data:,!,可以写成,warehouses=w1.w6;,!,也可以同时定义集合成员列表和属性值,;,warehouses,capacity=w1 60,w2 55,w3 51,w4 43,w5 41,w6 52;,enddata,3/3/2026,*,初始化定义*,只在,非线性规划,中使用,指定初,始值。,init:,.,endinit,3/3/2026,例,:,init:,x=0.999;,y=0.002;,endinit,y=log(x);,x2+y2=1;,给了恰当的初始值,会减少运算时间。,3/3/2026,*计算段定义*,calc:,.,endcalc,计算段的作用,:,在模型输入后,,LINGO,开始正式求解模型之前对原始数据进行一定的计算,得到我们模型中要使用的部分数据。,3/3/2026,一个简单的计算段例子,:,model:,data:,x,y,z=1,2,3;,enddata,calc:,avg=(x+y+z)/3;,endcalc,end,3/3/2026,*目标函数和约束条件段*,LINGO,提供了,集合循环函数,和,集合操作,函数,使得目标函数和约束条件的书写如同,数学公式那样简单。,四个集合循环函数,FOR,、,SUM,、,MAX,、,MIN,3/3/2026,sum,(,setname,(,set_index_list,),|,condition ,:expression,);,求和,3/3/2026,*运输问题的目标函数*,min=,sum,(,links(i,j),:,cost(i,j)*volume(i,j),);,min=,sum,(,links,:,cost*volume,);,3/3/2026,*运输问题实例中的求和*,!从,6,个仓库发到,第,j,个小贩的货物量总和,;,sum(,warehouses(i,),:,volume(,i,j),);,3/3/2026,从,第,i,个仓库发出,到,8,个小贩,的货物量总和,;,sum(,vendors(j,),:,volume(i,j,),),3/3/2026,for,(,setname,(,set_index_list,),|,condition ,:,expression_list,);,生成约束,for,对集合,setname,中的每个成员独立地生成约束,约束由约束表达式列表,expression_list,描述,;,多个表达式之间用分号相隔。,3/3/2026,*每个小贩的需求约束*,!(要求,6,个仓库发给,每个小贩,的,货物总量,=,小贩的需求量,),;,for,(vendors(,j,):,sum(warehouses(,i,):volume(,i,j,),=,demand(,j,),);,3/3/2026,*每个仓库的供货约束*,for,(warehouses(,i,):,sum(vendors(,j,):,volume(,i,j,),capacity(,i,),);,!(要求,每个仓库发给,8,个小贩的,货物总量,=,required(j,);,3/3/2026,size(setname,),返回集合,setname,中所包含的成员,个数。,3/3/2026,第二章,LINGO,与其它软件交换数据,3/3/2026,拷贝、粘贴,From,Exel,Pastefromexel.lg4,3/3/2026,输入输出函数,用来与外部数据源连接,text(),、,ole(),、,file(),、,odbc,(),、,dual(),3/3/2026,file,(filename),在模型的,集合和数据部分,使用,从文本,文件输入数据,.,3/3/2026,sets:,warehouses,/,file(1.txt),/:capacity;,vendors,/,file(1.txt),/:demand;,links(warehouses,vendors),:cost,volume;,endsets,运输实例的数据可以从文本文件输入:,3/3/2026,data:,capacity=,file(1.txt);,demand=,file(1.txt);,cost=,file(1.txt );,enddata,1.txt,文件内容,1.txt,3/3/2026,text,(filename),在模型的数据部分使用,向文本,文件输出数据,.,Outputtotext.lg4,3/3/2026,ole,(,spreadsheet_file,range_name_list,),在模型的数据和集合部分使用,与,excel,交换数据,3/3/2026,运输实例的数据可以从,Excel,输入:,sets:,warehouses:capacity;,vendors :demand;,links(warehouses,vendors),:cost,volume;,endsets,3/3/2026,data:,warehouses,vendors,capacity,demand,cost,=,ole(,2.xls,warehouses,vendors,capacity,demand,cost,);,enddata,3/3/2026,在,Excel,中定义单元格范围名称的方法:,按鼠标左键拖曳选择单元格范围,,释放鼠标按钮,,选择“插入,|,名称,|,定义”,,输入希望的名字,,点击“确定”按钮。,3/3/2026,2.xls,从,Excel,输入数据,.lg4,3/3/2026,odbc,(,data_source,table_name,col_1,col_2.,),在模型的数据部分使用,与数据库进行数据传输,3/3/2026,运输实例的数据可以从数据库输入:,sets:,warehouses:capacity;,vendors :demand;,links(warehouses,vendors),:cost,volume;,endsets,3/3/2026,data:,warehouses,capacity=,odbc,();vendors,demand=,odbc,();,links,cost,=,odbc,();,odbc,()=volume;,enddata,3/3/2026,trans.mdb,与数据库的数据传递,.lg4,3/3/2026,第三章,LINGO,的内部函数,3/3/2026,1.,标准运算符,算术运算符:,*/+-,逻辑运算符:,#EQ#NE#,#GE#GT#,#LE#LT#,#NOT#AND#OR#,3/3/2026,关系运算符:,=,可以用,表示,=,或,3/3/2026,运算符的优先级,优先级,运算符,最高,#NOT#,(负号),*,/,+,(减法),#EQ#NE#GT#GE#LT#LE#,#AND#OR#,最低,(=),3/3/2026,lingo,变量默认域为非负实数,free,(,variable,),取消默认域,使变量可以取任意实数,gin,(,variable,),限制变量取整数值,bin,(,variable,),限制变量取值为,0,,,1,bnd,(low,variable,up,),限制变量于一个有限的范围,3.,变量界定函数,3/3/2026,练习,1,x1,=2,,,x2,=3,Z*,17,练习,1,3/3/2026,练习,2,X1=1,X2=0,X3=1,Z=8,练习,2,3/3/2026,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.,数学函数,3/3/2026,5.,条件控制,if,(logical_condition,true_result,false_result ),计算,logical_condition,,,若真,返回,true_result,否则返回,false_result,.,3/3/2026,7,个选项卡,(,可设置,80-90,个控制参数,),3/3/2026,范例,3/3/2026,整数规划,整数规划,.lg4,3/3/2026,二次规划的例子(lingo).lg4,3/3/2026,递规调用,.lg4,已知,,求,a7,3/3/2026,学习方法:,(1),上课各位老师讲的,每个有数据的规划,模型,上机用,lingo,语言实践;,(2)LINGO,的,help,下有,一项,Additional Examples of LINGO,Modeling,,,可以仔细研究每个例子的,模型。,3/3/2026,某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为,800,和,900,,三种工件的数量分别为,400,、,600,和,500,,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问,怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低,?,练习,3,3/3/2026,练习,3,车床类 型,单位工件所需加工台时数,单位工件的加工费用,可用台时数,工件,1,工件,2,工件,3,工件,1,工件,2,工件,3,甲,0.4,1.1,1.0,13,9,10,800,乙,0.5,1.2,1.3,11,12,8,900,3/3/2026,解,1,设在甲车床上加工工件,1,、,2,、,3,的数量为,x,1,、,x,2,、,x,3,,,在乙车床上加工工件,1,、,2,、,3,的数量分别为,x,4,、,x,5,、,x,6,。,可建立以下线性规划模型:,3/3/2026,解,2,设在甲车床上加工工件,i,的数量为,x(i,),,,单位工件所需加工台时数,为,timex(i,),单位工件的加工费用,为,costx(i,),在乙车床上加工工件,i,的数量为,y(i,),单位工件所需加工台时数,为,timey(i,),单位工件的加工费用,为,costy(i,),工件,i,的加工数量为,demand(i,),3/3/2026,数学模型,3/3/2026,Lingo,建模,sets:,Chechuang/1.3/:,costx,costy,timex,timey,x,y,demand,;,endsets,3/3/2026,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,);,3/3/2026,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,3/3/2026,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,3/3/2026,练习,4-,求,S,到,T,的最短路,5,6,7,7,4,9,6,8,6,5,8,3,3,6,C,1,B,1,C,2,B,2,A,1,A,2,A,3,T,S,6,3/3/2026,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,3/3/2026,data:,d=6 3 3,6 5 8 6 7 4,6 7 8 9,5 6;,enddata,3/3/2026,l(1)=0;,for(cities(i,)|,i#gt#index(s,):,l(i,)=min(,roads(j,i,):,l(j)+d(j,i,);,end,最短路,.lg4,3/3/2026,三,.LINGO,程序流程控制和子模型,3/3/2026,1,、程序流程控制,条件分支控制,条件循环控制,3/3/2026,条件分支控制,1,、,ifc,或,ifc,/else,语句,2,、其基本的使用语法是:,ifc,(,condition:,可执行语句,1;,else,可执行语句,2;,),其中,condition,是一个逻辑表达式(表示相应的条件),当,condition,的逻辑值为“真(条件成立)时,程序执行语句,1,;否则程序执行语句,2,。,3/3/2026,条件分支控制,请读者注意,,ifc,函数和以前用过的,if,函数的功能是不同的:,ifc,是引导流程控制语句的函数(按照不同条件选择不同的程序分支进行执行),而,if,一个算术函数,按照不同条件返回不同的计算结果或表达式。,3/3/2026,条件循环控制,在,LINGO 10.0,以上版本中,有两种条件循环控制语句:,for,和,while,。,while,语句的使用语法是:,while,(condition,:,可执行语句,;),当逻辑表达式,condition,为“真”时,执行相应的一条或多条可执行语句(多条之间用分号分隔),直到,condition,的值为假为止。,请注意,,,while,条件循环控制语句只能出现在,计算段(,calc,),中。,3/3/2026,条件循环控制,在条件循环控制中,还经常会使用到,break,:,不需要任何参数,其功能是立即终止当前循环,继续执行当前循环外的下一条语句。,pause,(message),:,暂停程序执行,并弹出一个窗口,等待用户选择继续执行或者终止程序。,stop,(message),:,终止程序的运行,并弹出一个窗口,说明程序已经停止运行。,3/3/2026,二分法查找数据,采用二分搜索算法,从一个递增排列的正整数数列,X,中找到某个具体的数,KEY,在数列,X,中所在的位置,二分法查找,.lg4,3/3/2026,2,、子模型,子模型必须包含在主模型之内,即必须位于以“,model:”,开头、以“,end”,结束的模块内。,同一个主模型中,允许定义多个子模型,所以每个子模型本身必须命名,,子模型定义,:,submodel,mymodel,:,可执行语句(约束,+,目标函数),;,endsubmodel,其中,mymodel,是该子模型的名字,可执行语句不可以有自身单独的集合段、数据段、初始段和计算段。也就是说,同一个主模型内的变量都是全局变量,这些变量对主模型和所有子模型同样有效。,3/3/2026,2,、子模型,子模型调用,:,solve,(,submodel_name,submodel_name_n,),参数可以是多个子模型的名字,即同时求解多个子模型。也可以没有参数,如果没有参数则求解出现在语句“,solve();”,之前的所有子模型。,3/3/2026,1,个子模型,.lg4,4,个子模型,.lg4,子模型调用例子,3/3/2026,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:学习LINGO语言课件.ppt
    链接地址:https://www.zixin.com.cn/doc/13336254.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork