lingo初级入门手册课件

上传人:艳*** 文档编号:242964200 上传时间:2024-09-12 格式:PPT 页数:127 大小:4.26MB
返回 下载 相关 举报
lingo初级入门手册课件_第1页
第1页 / 共127页
lingo初级入门手册课件_第2页
第2页 / 共127页
lingo初级入门手册课件_第3页
第3页 / 共127页
点击查看更多>>
资源描述
数学建模及其实验,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,LINGO,软件使用,LINGO,是美国,LINDO,系统公司开发的一套专门用于求解最优化问题的软件它为求解最优化问题提供了一个平台,主要用于求,解线性规划、非线性规划、整数规划、二次规划、线性及非线性方程组等问题,它是最优化问题的一种建模语言,包含有许多常用的函数供使用者编写程序时调用,并提供了与其他数据文件的接口,易于方便地输入,求解和分析大规模最优化问题,且执行速度快由于它的功能较强,所以在教学、科研、工业、商业、服务等许多领域得到了广泛的应用,目录,3.1 LINGO,操作界面简介,3.2 LINGO,模型的基本特征,3.3 LINGO,的运算符和函数,3.4 LINGO,软件求解案例,LINGO,操作界面简介,图,1.1,中最外层的窗口是,LINGO,软件的主窗口(,LINGO,软件的用户界面),所有其他窗口都在这个窗口之内主窗口有:标题栏、菜单栏、工具栏和状态栏目前,状态栏最左边显示的是“,Ready”,,表示准备就绪,右下角显示的是当前时间,时间前面是当前光标的位置“,Ln,1,Col 1”,(即,1,行,1,列)将来用户可以用选项命令(,LINGO|Options|Interface,菜单命令)决定是否需要显示工具栏和状态栏,在,Windows,操作系统下启动,LINGO,软件,屏幕上首先显示如图,1.1,所示的窗口,.,图,1.1,LINGO,有,5,个主菜单:,File,(文件),Edit,(编辑),LINGO,(,LINGO,系统),Windows,(窗口),Help,(帮助),这些菜单的用法与,Windows,下其他应用程序的标准用法类似,下面只对主菜单中,LINGO,系统的主要命令进行简要介绍,LINGO,系统(,LINGO,)的主菜单,LINGO|Solve(Ctrl,-S),LINGO|Solve(Ctrl,-S),(求解)命令对当前模型进行编译并求解如果当前模型输入有错误,编译时将报告错误求解时会显示一个求解器运行状态窗口,LINGO|Solution(Ctrl,-O),LINGO|Solution(Ctrl,-O),(解答)命令显示当前解,LINGO|Range(Ctrl,-R),LINGO|Range(Ctrl,-R),(灵敏度分析)命令显示当前解的灵敏度分析结果(你必须在此之前求解过当前模型),LINGO|Options(Ctrl,-I),LINGO|Options(Ctrl,-I),(选项)命令将打开一个含有,7,个选项卡的对话框窗口,你可以通过它修改,LINGO,系统的各种控制参数和选项修改完以后,你如果单击“应用”按钮,则新的设置马上生效;如果单击“,OK”,按钮,则新的设置马上生效,并且同时关闭该窗口;如果单击“,Save”,按钮,则将当前设置变为默认设置,下次启动,LINGO,时这些设置仍然有效;如果单击“,Default”,按钮,则恢复,LINGO,系统定义的原始默认设置;如果单击“,Cancel”,按钮将废弃本次操作,退出对话框;单击“,Help”,按钮将显示本对话框的帮助信息,LINGO|Generate,和,LINGO|Picture,LINGO|Generate,和,LINGO|Picture,命令都是在模型窗口下才能使用,他们的功能是按照,LINGO,模型的完整形式分别以代数表达式形式和矩阵图形形式显示目标函数和约束,LINGO|Debug,(,Ctrl+D,),LINGO|Debug,(,Ctrl+D,)命令分析线性规划无解或无界的原因,建议如何修改,.,LINGO|Model,Statistics,(,Ctrl+E,),LINGO|Model,Statistics,(,Ctrl+E,)命令显示当前模型的统计信息,LINGO|Look,(,Ctrl+L,),LINGO|Look,(,Ctrl+L,)命令显示当前模型的文本形式,显示时对所有行按顺序编号,图,1.2,给出了工具栏的简要功能说明,当前光标所在的窗口(窗口标题栏上标有“,LINGO Model-LINGO1”,),就是模型窗口(,model windows,),也就是用于输入,LINGO,优化模型(即,LINGO,程序)的窗口,LINGO,模型的基本特征,LINGO,模型(程序)从,LINGO,模型窗口输入,它以语句“,MODEL:”,开始,以语句“,END”,结束它是由一系列语句组成,每个语句都是以分号“;”结束,语句是组成,LINGO,模型的基本单位每行可以写多个语句,为了保持模型的可读性,最好一行只写一个语句,并且按照语句之间的嵌套关系对语句安排适当的缩进,增强层次感以感叹号“!”开始的语句是注释语句(注释语句也需要以分号“;”结束),LINGO,模型(程序)一般由,5,个部分(或称,5,段)组成:,(,1,),集合段(,SETS,),(,2,),数据段(,DATA,),(,3,)初始化段(,INIT,),(,4,),计算段(,CALC,),(,5,),目标与约束段,(,1,)集合段(,SETS,),这部分要以“,SETS,:,”开始,以“,ENDSETS,”,结束,作用在于定义必要的集合变量(,SET,)及其元素(,member,,含义类似于数组的下标)和属性(,attribute,,含义类似于数组)格式有,基本集,和,派生集,两种,基本集:,Setname,(,集合变量名,)/,member_list,(,元素列表,)/:,attribute_list,(,属性列表,),;元素列表可以全部一一列出,也可以用格式“,/,元素,1.,元素,N/”,列出,例如,SETS,:,STUDENTS/1,2,3,4,5/:NAME,AGE,;,ENDSETSSETS,:,STUDENTS/1.5/:NAME,AGE,;,ENDSETS,派生集:,Setname(parent_set_list,(,源集列表,)/,member_list/:attribute_list,;,例如,SETS: PRODUCT/A B/,;,MACHINE/M N/,;,WEEK/1.2/,;,ALLOWED( PRODUCT,MACHINE,WEEK),;,ENDSETS,列表可以用逗号“,”分开,也可以用空格分开,(,2,),数据段(,DATA,),这部分要以“,DATA,:,”开始,以“,ENDDATA,”,结束,作用在于对集合的属性(数组)输入必要的常数数据格式为:,attribute_list,(,属性列表,)=,value_list,(,常数列表,),;,例如,SETS:,SET1 /A, B, C/: X, Y,;,ENDSETS,DATA:,X = 1 2 3,;,Y = 4 5 6,;,ENDDATA,(,2,),数据段(,DATA,),这部分要以“,DATA,:,”开始,以“,ENDDATA,”,结束,作用在于对集合的属性(数组)输入必要的常数数据格式为:,attribute_list,(,属性列表,)=,value_list,(,常数列表,),;,例如,SETS:,SET1 /A, B, C/: X, Y,;,ENDSETS,DATA:,X = 1 2 3,;,Y = 4 5 6,;,ENDDATA,(,3,),初始化段(,INIT,),这部分要以“,INIT,:,”开始,以“,ENDINIT,”,结束,作用在于对集合的属性(数组)给出初值格式为:,attribute_list,(,属性列表,)=,value_list,(,常数列表,),;,与数据段的用法类似,(,4,)计算段(,CALC,),这部分要以“,CALC,:,”开始,以“,ENDCALC,”,结束,作用在于对一些原始数据进行计算处理因为在实际问题中,输入的数据往往是原始数据,不一定能在模型中直接使用,可以在这个段对这些原始数据进行一定的“预处理”,得到模型中真正需要的数据在计算段中语句是顺序执行的,(,5,),目标与约束段,这部分没有段的开始和结束标记,作用在于给定目标函数与约束条件可见除这一段外,其他,4,个段都有明确的段标记这一段是模型的主要部分,其他段是为这一段服务的其他四段可以没有,这一段必须要有否则不称其为模型这一段一般要用到,LINGO,的运算符和各种函数,LINGO,的运算符和函数,LINGO,包含有大量的运算符和函数,供程序(建立优化模型)调用,其功能很强充分利用这些函数,对解决问题将是非常方便的下面给出部分函数及简要功能介绍,全部函数及详细功能说明可进一步参考,LINGO,的使用手册,一、运算符及其优先级二、基本的数学函数三、集合循环函数四、集合操作函数五、变量定界函数,六、财务会计函数,七、概率中的相关函数,八、文件输入输出函数,运算符及其优先级,LINGO,的运算符有三类:算数运算符、逻辑运算符和关系运算符,1,算术运算符:,LINGO,中,提供了二元运算符,的算术运算符有以下,5,种,:,+,(加法),,-,(减法或负号),*(乘法),,/,(除法),(求幂),算术运算是数与数之间的运算,运算结果仍是数,2,逻辑运算符:,LINGO,中的逻辑运算符有以下,9,种,可以分成两类:,(,1,),#AND#,(与),,#OR#,(或),,#NOT#,(非):这三个运算是逻辑值之间的运算,也就是它们操作的对象本身必须已经是逻辑值或逻辑表达式,计算结果也是逻辑值,(,2,),#EQ#,(等于),,#NE#,(不等于),,#GT#,(大于),,#GE#,(大于等于),,#LT#,(小于),,#LE#,(小于等于):这,6,个操作实际上是“数与数之间”的比较,也就是它们操作的对象本身必须是两个数,而逻辑表达式计算的结果是逻辑值,3,关系运算符:,LINGO,中的关系运算符有以下,3,种:,(即,小于等于),(等于),(即,大于等于),这三个运算符虽然也是“数与数之间”的比较,但在,LINGO,中只用来表示优化模型的约束条件,所以不是真正意义上的运算,这些运算符的优先级如表,3.1,所示(同一优先级按左到右的顺序执行;如果有括号“()”,则括号内的表达式优先进行计算),表,3.1,优先级,运算符,最高,最低,#NOT# -,(负号),*,/,+ -,(减法),#EQ# #NE# #GT# #GE# #LT# #LE#,#AND# #OR#, ,基本的数学函数,在,LINGO,中写程序时可以调用大量的内部函数,这些函数以“,”,符号打头(类似调用命令),LINGO,中数学函数的用法与其它语言中的数学函数的用法类似,主要有以下函数:,ABS(X),:绝对值函数,返回,X,的绝对值,COS(X),:余弦函数,返回,X,的余弦值(,X,的单位是弧 度),EXP(X),:指数函数,返回,ex,的值,FLOOR(X),:取整函数,返回,X,的整数部分(向最靠近,0,的方向取整),LGM(X),:返回,X,的伽马(,Gamma,)函数的自然对数 值,LOG(X),:自然对数函数,返回,X,的自然对数值,MOD(X,Y),:模函数,返回,X,对,Y,取模的结果,POW(X,Y),:指数函数,返回,XY,的值,SIGN(X),:符号函数,返回,X,的符号值(,X,0,时返回,-1,,,X,0,返回,1,),SIN(X),:正弦函数,返回,X,的正弦值,SMAX(list,),:最大值函数,返回列表(,list,)中的最大值,SMIN(list,),:最小值函数,返回列表(,list,)中的最小值,SQR(X),:平方函数,返回,X,的平方值,SQRT(X),:平方根函数,返回,X,的正的平方根的值,TAN(X),:正切函数,返回,X,的正切值,集合循环函数,集合循环函数是指对集合上的元素(下标)进行循环操作的函数,主要有,FOR,,,MAX,,,MIN,,,SUM,,,PROD,五种,其用法如下:,function(setname(set_index_list)|conditional_qualifier:expression_list,),;,其中:,Function,是集合函数名;,Setname,是集合名;,set_index_list,是集合索引列表(不需要使用索引时可以省略);,|,conditional_qualifier,是用逻辑表达式给出的过滤条件(无条件时可以省略);,:,expression_list,是一个表达式(对,FOR,函数,可以是一组表达式),集合循环函数,四个集合循环函数:,FOR,、,SUM,、,MAX,、,MIN,function(,setname, (,set_index_list,) | condition :,expression_list,);,objective,MAX = SUM( PAIRS( I, J): BENEFIT( I, J) * MATCH( I, J);,FOR(STUDENTS( I):,constraints,SUM( PAIRS( J, K) | J #EQ# I #OR# K #EQ# I: MATCH( J, K) =1);,FOR(PAIRS( I, J): BIN( MATCH( I, J);,MAXB=MAX(PAIRS( I, J): BENEFIT( I, J);,MINB=MIN(PAIRS( I, J): BENEFIT( I, J);,Example:,程序与数据分离,文,本,文,件,使用外部数据文件,Cut (or Copy) Paste,方法,FILE,输入数据、,TEXT,输出数据(文本文件),OLE,函数与电子表格软件(如,EXCEL,)连接,ODBC,函数与数据库连接,LINGO,命令脚本文件,LG4,(,LONGO,模型文件),LNG,(,LONGO,模型文件),LTF,(,LONGO,脚本文件),LDT,(,LONGO,数据文件),LRP,(,LONGO,报告文件),常用文件后缀,FILE,和,TEXT,:文本文件输入输出,MODEL:,SETS:,MYSET / ,FILE(myfile.txt,) / : ,FILE(myfile.txt,);,ENDSETS,MIN = SUM( MYSET( I):,SHIP( I) * COST( I);,FOR( MYSET( I):,CON1 SHIP( I) NEED( I);,CON2 SHIP( I) NEED( I);,CON2 SHIP( I) SUPPLY( I);,DATA:,MYSET =OLE(D:JXIEBJ2004MCMmydata.xls,CITIES);,COST,NEED,SUPPLY =,OLE(mydata.xls,);,OLE(mydata.xls,SOLUTION,)=SHIP;,ENDDATA,END,mydata.xls,文件中必须有下列名称,(,及数据,),:,CITIES,,,COST,,,NEED,,,SUPPLY,,,SOLUTION,在,EXCEL,中还可以通过“宏”自动调用,LINGO(,略,),也可以将,EXCEL,表格嵌入到,LINGO,模型中,(,略,),演示,MydataExample.lg4,ODBC,:与数据库连接,输入基本集合元素:,setname/ODBC(datasource, , ,tablename, , ,columnname,)/,输入派生集合元素:,setname/ODBC(source,table, , column1, column2)/,目前支持下列,DBMS: (,如为其他数据库,则需自行安装驱动,),ACCESS,,,DBASE,,,EXCEL,,,FOXPRO,,,ORACLE,,,PARADOX,,,SQL SERVER,,,TEXE FILES,使用数据库之前,数据源需要在,ODBC,管理器注册,输入数据:,Attr_list,=,ODBC(source,table, , column1, column2),输出数据:,ODBC(source,table, , column1, column2)=,Attr_list,具体例子略,LINGO,软件求解案例,MODEL:,MIN= 66.8*x11+75.6*x12+87*x13+58.6*x14+67.4*x51+71 * x52+83.8*x53+62.4*x54;,x11+x12+x13+x14 =1;, ,x41+x42+x43+x44 =1;,x11+x21+x31+x41+x51 =1;, ,x14+x24+x34+x44+x54 =1;,BIN(x11); ;BIN(x54);,END,MODEL:,SETS:,xb1/1.4/:;,xb2/1.5/:;,bl(xb1,xb2):c,x;,ENDSETS,MIN=,SUM(bl(i,j):c(i,j,)*,x(i,j,);,FOR(xb1(i):SUM(xb2(j):x(i,j)=1);,FOR(xb2(j):SUM(xb1(i):x(i,j)=1);,FOR(bl(I,j):BIN(x(i,j,);,END,MODEL:,SETS:,xb1/1.4/:;,xb2/1.5/:;,bl(xb1,xb2):c,x;,ENDSETS,MIN=,SUM(bl(i,j):c(i,j,)*,x(i,j,);,FOR(xb1(i):SUM(xb2(j):x(i,j)=1);,FOR(xb2(j):SUM(xb1(i):x(i,j)=1);,FOR(bl(I,j):BIN(x(i,j,);,END,一、生产管理问题,1,问题实例,某厂有,5,种设备,A1,A2,A5,,用来加工,7,种零部件,B1,B2,B7,,每种设备的数量、每种零部件的单位成本及所需各设备的加工工时(以小时计)见表,1,产品,B,1,B,2,B,3,B,4,B,5,B,6,B,7,设备的数量,成本,100 60 80 40 110 90 30,A,1,A,2,A,3,A,4,A,5,0.5 0.7 0 0 0.3 0.2 0.5,0.1 0.2 0 0.3 0 0.6 0,0.2 0 0.8 0 0 0 0.6,0.05 0.03 0 0.07 0.1 0 0.08,0 0 0.01 0 0.05 0 0.05,4,2,3,1,1,表,1,在其后的半年中,工厂有设备检修计划(停工检修时间一个月)见表,2,一月,二月,三月,四月,五月,六月,A,1,1,台,A,3,2,台,A,2,1,台,A,2,1,台,A,1,1,台,A,3,1,台,工厂在半年中有订单(必须按时交货)见表,3,产品,B,1,B,2,B,3,B,4,B,5,B,6,B,7,一月,二月,三月,四月,五月,六月,250 500 150,150,400 100,100,300 250 100 0 200 150 100,150 300 0 0 250 200 100,100 150 200 250 100 0 100,0 100 250 100 500 150 0,250,250,100 300 550 250 100,表,3,表,2,每种零部件库存最多可到,100,件,现每种零部件有库存,80,件,库存费用每件每月为,0.5,元,要求到六月底每种零部件有存货,50,件,每种零部件生产至少,50,件工厂每周工作,5,天,每天,2,班,每班,8,小时试回答如下问题:,(1),工厂如何安排各月份各种零部件的加工数量?,(2),单位成本有,10%,的变化,对计划有什么影响?,(3),设备各增加,1,台对计划有什么的影响,2,模型建立,设: 为第 种零部件在第种设备上的单位加工工时,;,为第 种设备在第月的数量 ;,为第 月第 种零部件的定单数量 ;,为第 种零部件的单位成本 ;,为第 月第 种零部件的生产数量 ;,为第 月末第 种零部件的库存数量 ;,为初始库存,假设每月以,20,天计,有以下模型,3,模型求解,(,1,)计算结果有:目标函数:,产品生产,B,1,B,2,B,3,B,4,B,5,B,6,B,7,一月,二月,三月,四月,五月,六月,170 420 70,70,320 50,50,300 250 100 50 200 120 70,150 300 50,50,250 200 100,100 150,150,150,100 50 100,50 100 250 100 500 100 50,250 300 150 350 600 300 100,产品库存,B,1,B,2,B,3,B,4,B,5,B,6,B,7,一月,二月,三月,四月,五月,六月,0 0 0 0 0 30,30,0 0 0 50 0 0 0,0 0 50 100 0 0 0,0 0 0 0 0 50 0,50 0 0 0 0 0 50,50,50,50,50,50,50,50,(,2,)目标的灵敏度分析:,Objective Coefficient Ranges,(目标系数的灵敏度分析),(,3,)约束条件的灵敏度分析:,从以上灵敏度分析可见,提高,1,台,没有超出允许范围的,所以对计划没有影响也可以将数据与模型分离,先准备数据文件,exam01.ldt:!,单耗,;0.5 0.7 0.0,0.0,0.3 0.2 0.50.1 0.2 0.0 0.3 0.0 0.6 0.00.2 0.0 0.8 0.0,0.0,0.0,0.60.05 0.03 0 0.07 0.1 0 0.080 0 0.01 0 0.05 0 0.05!,设备数量,;3 4 4 4 3 42 2 1 1 1 23 1 3 3 3 21 1 1 1 1 11 1 1 1 1 1!,需求,;250 500 150,150,400 100,100,300 250 100 0 200 150 100150 300 0 0 250 200 100,100,150 200 250 100 0 1000 100 250 100 500 150 0250,250,100 300 550 250 100!,单位成本,;100 60 80 40 110 90 30,再写程序如下:,model:,sets:,cp/1.7/:c;,yf/1.6/:;,sb/1.5/:;,sl1(yf,cp):x,d,s;,sl2(sb,cp):a;,sl3(sb,yf):b;,endsets,data:,a=file(exam01.ldt);,b=file(exam01.ldt);,d=file(exam01.ldt);,c=file(exam01.ldt);,enddata,min=sum(sl1(k,j):c(j)*x(k,j)+0.5*,s(k,j,);,for(yf(k):for(sb(i):sum(cp(j):a(i,j,)*,x(k,j,)=320*,b(i,k,);,for(yf(k)|k#gt#1:for(cp(j):s(k,j)=s(k-1,j)+x(k,j)-d(k,j);,for(cp(j):s(1,j)=80+x(1,j)-d(1,j);,for(cp(j):s(6,j)=50);,for(sl1(k,j):s(k,j)=50);,end,二、下料问题,1,问题实例,有某种材料一根长,19,米现需用其切割,4,米长毛坯,50,根、,5,米长毛坯,10,根、,6,米长毛坯,20,根、,8,米长毛坯,15,根如何切割使其用料最省?要求切割模式不能超过,3,种,2,模型建立,设: 分别表示,4,米长,,5,米长,,6,米长,,8,米长的毛坯;,为第 种毛坯的长度 ;,为第 种毛坯的需要量 ;,为第 种切割模式所用的材料数量 ;,为第 种切割模式切割第 种毛坯的数量,一种合理的切割模式应满足:其余料长度不应该大于或等于需要切割毛坯的最小长度于是有模型如下,3,模型求解,为了便于运算,我们先来缩小可行域由于,3,种切割模式的排列顺序是无关紧要的,所以不妨增加以下约束:,又注意到用料的总量有明显的上界和下界首先,无论如何,用料总量不可能少于,其次,考虑一种特殊的下料计划:模式,1,:切割成,4,根,4,米钢管,需,13,根;模式,2,:切割成,1,根,5,米和,2,根,6,米钢管,需,10,根;模式,3,:切割成,2,根,8,米钢管,需,8,根这样需要,13+10+8=31,于是可得到解的一个上界所以又可增加约束:,利用,LINGO,软件计算,输入,model:,sets:,needs/1.4/:a,b;,cuts/1.3/:x;,patterns(needs,cuts):r,;,endsets,data:,a=4 5 6 8;,b=50 10 20 15;,enddata,min=,sum(cuts(j):x(j,);!,用料目标,;,for(needs(i):sum(cuts(j):x(j,)*,r(i,j,),b(i,);!,需要量要求,;,for(cuts(j):sum(needs(i):a(i,)*,r(i,j,)16);!,合理模式,;,sum(cuts(j):x(j,)26;!,用料下限,;,sum(cuts(j):x(j,)x(j+1);!,人为约束,;,for(cuts(j):gin(x(j,);!,整数约束,;,for(patterns(i,j):gin(r(i,j,);!,整数约束,;,end,经过,LINGO,求解,得到输出如下:,Objective value: 28.00000,Variable Value Reduced Cost,X( 1 ) 10.00000 0.000000,X( 2 ) 10.00000 2.000000,X( 3 ) 8.000000 1.000000,R( 1, 1) 3.000000 0.000000,R( 1, 2) 2.000000 0.000000,R( 1, 3) 0.000000,0.000000,R( 2, 1) 0.000000,0.000000,R( 2, 2) 1.000000 0.000000,R( 2, 3) 0.000000,0.000000,R( 3, 1) 1.000000 0.000000,R( 3, 2) 1.000000 0.000000,R( 3, 3) 0.000000,0.000000,R( 4, 1) 0.000000,0.000000,R( 4, 2) 0.000000,0.000000,R( 4, 3) 2.000000 0.000000,即按照模式,1,、,2,、,3,分别切割,10,、,10,、,8,根材料,使用材料总根数为,28,根第一种切割模式下,1,根材料切割,3,根,4,米的和,1,根,6,米的;第二种切割模式下,1,根材料切割,2,根,4,米的、,1,根,5,米的和,1,根,6,米的;第三种切割模式下,1,根材料切割,2,根,8,米的,三、投资组合问题,1,问题实例,有三种股票,A,B,C,,其前,12,年的价值每年的增长情况如表所示,年份,股票,A,股票,B,股票,C,股票指数,1,2,3,4,5,6,7,8,9,10,11,12,1.300,1.103,1.216,0.954,0.929,1.056,1.038,1.089,1.090,1.083,1.035,1.176,1.225,1.290,1.216,0.728,1.144,1.107,1.321,1.305,1.195,1.390,0.928,1.715,1.149,1.260,1.419,0.922,1.169,0.965,1.133,1.732,1.021,1.131,1.006,1.908,1.258997,1.197526,1.364361,0.919287,1.057080,1.055012,1.187925,1.317130,1.240164,1.183675,0.990108,1.526236,表中还给出了相应年份的,500,种股票的价格指数的增长情况假设目前你有一笔资金准备投资这三种股票,并期望年收益率达到,15%,,那么你应如何投资?,2,模型建立,设: 分别表示表示,A,B,C,三种股票;,为第 种股票的价值 ;,为第 种股票第 年的价值 ;,为指数;,为第 年的指数;,为投资第 种股票比例,股票指数反映的是股票市场的大势信息,对每只股票的涨跌是有影响的假设每只股票的收益与股票指数成线性关系即或其中 是待定系数, 是一个随机误差,其均值为 方差为 ,此外假设随机误差 与其他股票和股票指数都是独立的,所以 先根据所给数据回归计算 ,即使误差的平方和最小:,可用,Matlab,软件做该回归计算,也可用,LINGO,软件分别来做每只股票的回归计算,输入,model:,sets:,year/1.12/:M,R,a,b,e;,endsets,data:,R=1.300 1.103 1.216 0.954 0.929 1.056 1.038 1.089 1.090 1.083 1.035 1.176;,M=1.258997 1.197526 1.364361 0.919287 1.057080 1.055012 1.187925 1.317130 1.240164 1.183675 0.990108 1.526236;,enddata,calc:,mean0=,sum(year(j):M(j)/size(year,);,s20=sum(year(j):sqr(M(j)-mean0)/(size(year)-1);,s0=sqrt(s20);,endcalc,min=s2;,s2=sum(year(j):sqr(e(j)/(size(year)-2);,s=sqrt(s2);,for(year(j):e(j,)=,R(j)-a-b,*,M(j,);,for(year(j):free(e(j,);,free(a);free(b,);,End,对上面的程序,注意以下几点:,(,1,)只给了一种股票的价值,R,;,(,2,)在,CALC,段直接计算了,M,的均值,mean0,和方差,s20,以及标准差,s0,(为了使这个估计是无偏估计,分母是,11,而不是,12,);,(,3,)程序中用到平方函数,sqr,和平方根函数,sqrt,;,(,4,)除了计算回归系数外,同时估计了回归误差,s2,和标准差,s,,为了使这个估计是无偏估计,分母是,10,而不是,11,和,12,,这是因为此时已经假设保持误差的均值为,0,,所以自由度又少了一个;,(,5,),free(a),free(b),free(e,),三个语句不能少,因为它们不一定是非负的;,运行这个,LINGO,模型,结果为:,Objective value: 0.5748320E-02,Variable Value Reduced Cost,MEAN0 1.191458 0.000000,S20 0.2873661E-01 0.000000,S0 0.1695188 0.000000,S2 0.5748320E-02 0.000000,S 0.7581767E-01 0.000000,A 0.5639761 0.000000,B 0.4407264 0.000000,也就是说:,M,的均值 ,方差 ,标准差,,对股票,A,,回归系数,误差的方差 ,误差的标准差 ,同理,可以得到:对股票,B,,回归系数 误差的方差 ,误差的标准差 对股票,C,,回归系数 ,误差的方差 ,误差的标准差 ,于是,年投资收益为收益的期望为收益的方差为进一步,令 则模型应该为,3,模型求解,利用,LINGO,软件计算,输入,model:,sets:,stocks/1.3/:u,b,s2,x;,endsets,data:,mean0=1.191458;,s20=0.02873661;,s2=0.005748320,0.01564263,0.03025165;,u=0.5639761,-0.2635059,-0.5809590;,b=0.4407264,1.239802,1.523798;,enddata,min=s20*sqr(y)+sum(stocks(i):s2(i)*,sqr(x(i,);,sum(stocks(i):b(i,)*,x(i,)=y;,sum(stocks(i):x(i,)=1;,sum(stocks(i):(u(i)+b(i,)*mean0)*,x(i,)1.15;,end,运算这个,LINGO,模型,输出结果如下,Objective value: 0.2465621E-01,Y 0.8453449 0.000000,X( 1) 0.5266052 0.000000,X( 2) 0.3806461 0.000000,X( 3) 0.9274874E-01 0.000000,根据运算结果可知:,A,大约占初始时刻总资产的,53%,,,B,占,38%,,,C,占,9%,四、最小费用最大流问题,1,问题实例,需要将某地 的天然气通过管道输送到另一地 ,中间有,4,个中转站 由于输气管道的长短粗细不一或地质等原因,使得每条管道上的运输量及费用不同下图给出了这两地与中转站的连接以及管道的容量、费用:,图中括号里第一个数字是管道容量,第二个数字是管道单位运费考虑地到地如何输送天然气,使得费用最小流量最大,2,模型建立,设: 为网络顶点集, 为网络的弧集;,为弧 上的流量;,为弧 上的单位运费;,为弧 上的容量;,为发点处的净流量,根据最大流的定义,我们有模型如下:,3,模型求解,先考虑最大流模型,,LINGO,软件输入如下,model:,sets:,nodes/s,1,2,3,4,t/;,arcs(nodes,nodes)/s,1 s,2 1,2 1,3 2,4 3,2 3,t 4,3 4,t/:c,f;,endsets,data:,c=8 7 5 9 9 2 5 6 10;,enddata,max=flow;,for(nodes(i)|i#ne#1 #and#,i#ne#size(nodes,):,sum(arcs(i,j):f(i,j)-sum(arcs(j,i):f(j,i,)=0);,sum(arcs(i,j)|i#eq#1:f(i,j)=flow;,for(arcs(i,j):bnd(0,f(i,j),c(i,j);,end,计算结果如下:,Objective value: 14.00000,Variable Value Reduced Cost,FLOW 14.00000 0.000000,F( S, 1) 7.000000 0.000000,F( S, 2) 7.000000 0.000000,F( 1, 2) 2.000000 0.000000,F( 1, 3) 5.000000 0.000000,F( 2, 4) 9.000000 -1.000000,F( 3, 2) 0.000000,0.000000,F( 3, T) 5.000000 -1.000000,F( 4, 3) 0.000000 1.000000,F( 4, T) 9.000000 0.000000,其次考虑最小费用最大流模型,,LINGO,软件输入如下,model:,sets:,nodes/s,1,2,3,4,t/;,arcs(nodes,nodes)/s,1 s,2 1,2 1,3 2,4 3,2 3,t 4,3 4,t/:b,c,f;,endsets,data:,b=2 8 5 2 3 1 6 4 7;,c=8 7 5 9 9 2 5 6 10;,flow=14;,enddata,min=,sum(arcs(i,j):b(i,j,)*,f(i,j,);,for(nodes(i)|i#ne#1 #and#,i#ne#size(nodes,):,sum(arcs(i,j):f(i,j)-sum(arcs(j,i):f(j,i,)=0);,sum(arcs(i,j)|i#eq#1:f(i,j)=flow;,for(arcs(i,j):bnd(0,f(i,j),c(i,j);,end,计算结果如下:,Objective value: 205.0000,Variable Value Reduced Cost,F( S, 1) 8.000000 -1.000000,F( S, 2) 6.000000 0.000000,F( 1, 2) 1.000000 0.000000,F( 1, 3) 7.000000 0.000000,F( 2, 4) 9.000000 0.000000,F( 3, 2) 2.000000 -3.000000,F( 3, T) 5.000000 -8.000000,F( 4, 3) 0.000000 11.00000,F( 4, T) 9.000000 0.000000,附录,LINGO,出错信息,在,LINGO,程序求解时,系统首先会对程序进行编译系统在编译或执行其他命令时,会因程序中的错误或运行错误,弹出一个出错报告窗口,显示其错误代码,并简要指出错误的原因这些错误报告信息能够提示用户发现程序中的错误,以便能尽快修改下面我们给出出错信息的一个简要说明,仅供参考,LINGO,错误编号及原因对照表,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!