ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:236.85KB ,
资源ID:10327930      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10327930.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第10章Lingo软件包及其应用.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第10章Lingo软件包及其应用.docx

1、第10章 Lingo软件包及其应用第十章 Lingo软件包及其应用Lingo软件包是一种专门用来求解数学规划和优化问题的软件包,由美国芝加哥大学的Linus Schrage教授创立的Lindo系统公司开发出来,可以在Windows和Linux环境下运行,同一版次具有不同的版本,如:演示版(试用版)、学生班、高级版、超级版、工业版、扩展版等等,不同的版本对求解问题的规模、变量数目和约束条件的限制不同。对于Lingo软件包来说,编写很简单的程序就能调用大量的外部已有数据进行优化计算,是其出色的亮点。9.1 Lingo软件包的基础知识(一)Lingo软件包的运算符(1)算术运算符(Arithmeti

2、c Operators) 取反(negation) 乘方(Exponentiation)* 乘法(Multiplication) / 除(Division)+ 加(Addition) 减(Subtraction) (2)逻辑运算符Lingo软件包的逻辑运算符,主要用于优化计算中定义各种逻辑条件。逻辑运算符为:NOT# 非运算EQ# 相等NE# 不相等GT# 严格大于GE# 大于等于LT# 严格小于LE# 小于等于AND# 与OR# 或(3)关系运算符 Lingo软件包中的关系运算符用在数学表达式中。 等号 大于等于注:Lingo软件包不支持严格大于和严格小于,即,在Lingo软件包的数学表达式

3、中“”等价于“=”,“”等价于“=”。运算符的运算优先级(Priority Level)由高到低依次为:优先级 运算符最高级 #NOT# (negation) * / + -#EQ# #NE# #GT# #GE# #LT# #LE#AND# #OR#最低级 =(4)Lingo软件包的内部函数 Lingo软件包提供下列内部函数:ABS( X) 绝对值函数COS( X) 余弦函数EXP( X) 函数FLOOR( X) 小于X的最大整数LGM( X) ,即的自然对数LOG( X) 自然对数SIGN( X) 符号函数,当X 0时,取值-1,否则取值+1SIN( X) 正弦函数SMAX( X1, X2,

4、., XN) 求最大SMIN( X1, X2,., XN) 求最小TAN( X) 正切函数IF If函数,使用格式为:IF(条件,T,F),即,条件为真时,得到T,否则得到F。SUM 求和函数FREE(X) 取消变量X的非负限制(Lingo在求解优化问题时,默认所有变量非负)FOR 优化计算时,用于限定约束条件bin(X) 限定X是(0,1)变量bnd(下界,X,上界) 限定 下界X上界gin(X) 限定X为整数变量例如,FOR(A(i,j)|a(i,j)#gt#0:bin(x(i,j) 表示限定矩阵A中元素:当时,对应的变量是(0,1)变量。注:(1)在Lingo软件包中调用内部函数,一定要

5、以符号开头。(2)在Lingo软件包中,model、sets、data以“:”结尾,其它语句每行都以“;”结尾,endsets、enddata、end尾部不加任何符号。(3)以!开头,书写注释行,结尾用“;”。(4)在Lingo软件包中,不能写100x,要写成100*x (5)无论是否是求解优化问题,Lingo的结果中都有松弛分析(Slack or Surplus)(6)Lingo软件包求解时,已经假设所有变量0例10-1 在Lingo软件包中编写如下程序:model:data:m=?;n=?;enddataf=sin(m)+cos(n);end执行后,依次输入、,得到结果:Feasible

6、solution found at iteration: 0Variable Value M 1.000000 N 2.000000 F 0.4253241Row Slack or Surplus 1 0.000000注:如果输入、,则,得不到有效的结果,这说明Lingo软件包不能做通常的数学计算,它的优点在于优化计算。(5)Lingo软件包编程的基本格式格式1 model: 开头,end 结尾格式2 model: 开头,结尾省略end 格式3 省略model: 和end 例10-2 在Lingo软件包中,求解下列线性规划问题:Lingo软件包中优化程序如下:model:max = 100 *

7、 x + 150 * y;x = 100;y = 120;x + 2 * y 30;free(x);free(y);end执行后得到结果: Linearization components added: Constraints: 30 Variables: 20 Integers: 12 Global optimal solution found at iteration: 34 Objective value: 150.0000Variable Value Reduced Cost FX 0.000000 0.000000 FY 150.0000 0.000000 X 0.000000 0.

8、000000 Y 30.00000 0.000000Row Slack or Surplus Dual Price 1 150.0000 -1.000000 2 0.000000 -1.0000003 0.000000 -1.000000 4 0.000000 -3.000000即,目标函数,最优解。注:在Mathematica软件包中,编程画图如下:Plot0,Ifx0,2x+100,2x+Ifx=3*y1;3*x1*y1+x3*y1+3*x2*y2+x3*y2=3*y2;3*x1*y1+x3*y1+3*x2*y2+x3*y2=y1+y2;x1*y1+2*x2*y1+3*x3*y1+2*x1

9、*y2+3*x2*y2+x3*y2=x1+2*x2+3*x3;x1*y1+2*x2*y1+3*x3*y1+2*x1*y2+3*x2*y2+x3*y2=2*x1+3*x2+x3;x1+x2+x3=1;y1+y2=1;执行后得到结果: Feasible solution found at iteration: 72 Variable Value X1 0.000000 Y1 0.000000 X3 0.000000 X2 1.000000 Y2 1.000000 Row Slack or Surplus 1 3.000000 2 0.000000 3 2.000000 4 1.000000 5 0

10、.000000 6 0.000000 7 0.000000即,得到此不等式组的一组解:例10-6 在Lingo软件包中,求解下列方程组:解:在Lingo软件包中编程如下:model:x13+x23+x33=3;x12+x22+x32=2;x1+x2+x3=1;free(x1);free(x2);free(x3);执行后,Lingo提示没有得到可行解(即,没有得到实数解),给出的结果是:Variable Value X1 -0.2228950 X2 1.445790 X3 -0.2228950 Row Slack or Surplus 1 0.000000 2 -0.1896733 3 0.00

11、0000我们可以验证, ,不是方程组的解。例10-7 在Lingo软件包中(1)求解 ,其中表示自然对数。在Lingo软件包中编程如下:log(x)-sin(x)=0;执行后得到结果:Feasible solution found at iteration: 0Variable Value X 2.219107Row Slack or Surplus 1 0.000000即,得到方程的根。(2)求解 ,其中表示以10为底的常用对数。在Lingo软件包中编程如下:log(x)/log(10)-sin(x)=0;执行后得到结果:Feasible solution found at iteratio

12、n: 0Variable Value X 2.696257Row Slack or Surplus 1 0.000000即,得到方程的根。注:此方程共有3个根(用Mathematica软件包求出的根是:,),Lingo软件包只能求出一个根。9.3 应用Lingo软件包求解大型优化问题(1)关于数据的输入Lingo软件包的一大特点是,可以调用外部已有的大型数据进行优化计算,这些数据可以是以Excel格式存盘,也可以是以TEXT文本格式存盘,或者是数据库中的已有数据。在Lingo软件包中,调用外部数据的函数有:FILE( filename) 调用TEXT文本数据;OLE( spreadsheet_

13、file, range_name_list) 调用以Excel格式存盘的数据,其中range_name_list表示Excel数据的范围。ODBC(data_source, table_name, col_1, col_2 .) 调用数据库中的数据文件。例10-8 在Lingo软件包中,数据部分可以如下编写程序:data:c=file(f:pianai.tex);enddatadata:ca=file(d:b.txt);a=ole(d:data.xls,ca);enddata其中ca表示Excel数据的取值范围。(2)关于集的定义定义向量 在Lingo软件包中,以下列格式定义向量:集合名称集合

14、的维数:向量名称例如:set1/1.3/:x,y;set2/1.4/:a,b;表示定义了第一类集合set1,维数是3,具体向量名称为x和y,即,定义了和同时定义了第二类集合set2,维数是4,具体向量名称为a和b,即,定义了和定义矩阵在Lingo软件包中,利用已经定义的向量来定义矩阵,格式为:矩阵名称(集合名称1,集合名称2):矩阵名称例如:set1/1.3/:x,y;set2/1.4/:a,b;link(set1,set2)/:A, Q;表示定义了34阶的矩阵link,具体矩阵的名称为A和Q定义超级矩阵 下面的程序定义了一个232的超级矩阵x:sets:student/A,B/;class/

15、1.3/;subject/Math,English/;score(student,class,subject):x;endsets执行后得到结果:Feasible solution found at iteration: 0Variable ValueX( A, 1, MATH) 1.234568X( A, 1, ENGLISH) 1.234568X( A, 2, MATH) 1.234568X( A, 2, ENGLISH) 1.234568X( A, 3, MATH) 1.234568X( A, 3, ENGLISH) 1.234568X( B, 1, MATH) 1.234568X( B

16、, 1, ENGLISH) 1.234568X( B, 2, MATH) 1.234568X( B, 2, ENGLISH) 1.234568X( B, 3, MATH) 1.234568X( B, 3, ENGLISH) 1.234568其中Value的值是随机取值的,在具体问题中需要使用Data命令赋值。例10-9 在Lingo软件包中,求解下列不等式组:其中,表示矩阵的第行,表示矩阵的第列。解:在Lingo软件包中,编写程序如下:model:sets:set1/1.2/:x;set2/1.2/:y;link(set1,set2):a,b;endsetsfor(set1(i):sum(se

17、t1(k):x(k)=1);for(set2(j):sum(set2(k):y(k)=1);for(link(i,j):sum(link(p,q):x(p)*a(p,q)*y(q)=sum(link(i,q):a(i,q)*y(q);for(link(i,j):sum(link(p,q):x(p)*b(p,q)*y(q)=sum(link(t,j):x(t)*b(t,j);data:a=70 100 40 140;b=70 40 100 140;enddataend执行后得到结果如下:Feasible solution found at iteration: 8Variable Value X

18、( 1) 1.000000 X( 2) 0.000000 Y( 1) 1.000000 Y( 2) 0.000000 A( 1, 1) 70.00000 A( 1, 2) 100.0000 A( 2, 1) 40.00000 A( 2, 2) 140.0000 B( 1, 1) 70.00000 B( 1, 2) 40.00000 B( 2, 1) 100.0000 B( 2, 2) 140.0000Row Slack or Surplus 1 0.000000 2 0.000000 3 0.000000 4 0.000000 5 0.000000 6 0.000000 7 30.00000

19、8 30.00000 9 0.000000 10 30.00000 11 0.000000 12 30.00000即,得到不等式组的解。例10-10 一家工厂生产甲乙两种产品(单位:吨),生产甲每吨需要消耗煤20吨、电30千瓦小时、人工30个,净利润11万元,生产乙每吨需要消耗煤30吨、电25千瓦小时、人工35个,净利润15万元,另外,在一个生产周期中,这家工厂拥有可调配的资源为煤360吨、电2000千瓦小时、人工300个。求最优生产方案。解:假设生产甲x1吨、乙x2吨,则,数学模型为在这个例子中,有两个2维向量:利润lirun=(11, 15),和x=(x1, x2),一个3维向量b=(36

20、0, 2000, 300),以及一个32的系数矩阵在Mathematica软件包中,求得最优解(精确值)为,化为近似值是。在Lingo软件包中输入程序如下:model:sets:set1/1.2/:lirun,x;set2/1.3/:b;link(set2,set1):A;endsetsmax=sum(set1(j):lirun(j)*x(j);for(set2(i):supplysum(link(i,j):A(i,j)*x(j)b(i);for(set2(i):gin(x(i);data:b=10000 20000;A=ole(c:lingo8gangguan.xls,A1:F2);endd

21、ata其中for(set2(i):gin(x(i);表示限定变量x(i)都是整数变量;A=ole(c:lingo8gangguan.xls,A1:F2);表示调用外部数据A,并且指明了数据的取值范围,从A1到F2。执行后得到下列结果:Global optimal solution found at iteration: 4 Objective value: 5200.000Variable Value Reduced Cost B( 1) 10000.00 0.000000 B( 2) 20000.00 0.000000 X( 1) 0.000000 1.000000 X( 2) 4000.000 1.000000 X( 3) 0.000000 1.000000 X( 4) 0.000000 1.000000 X( 5) 0.000000 1.000000 X( 6) 1200.000 1.000000 A( 1, 1) 0.000000 0.000000 A( 1,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1