当前位置:文档之家› LINGO模型语言及其在机械优化设计中的应用

LINGO模型语言及其在机械优化设计中的应用

LINGO模型语言及其在机械优化设计中的应用
LINGO模型语言及其在机械优化设计中的应用

收稿日期:2001-08-18

作者简介:彭铸(1964-),男,长沙卷烟厂工程师,主要从事设备管理和维修工作。

第23卷 第2期太原重型机械学院学报

Vol.23 №2

2002年6月

J OU RNAL OF TA IYUAN HEAV Y MACHIN ER Y INSTITU TE

J un.2002

文章编号:1000-159X (2002)02-0118-04

L IN GO 模型语言及其在机械优化设计中的应用

彭 铸1, 罗佑新2

(1.长沙卷烟厂工程技术部,长沙410014;2.常德师范学院机械工程系,湖南常德415003)

摘 要:运用L IN GO6.0模型语言优化算法,对机械工程中的优化问题进行了优化研究,得到了可靠且比常规优化更为有效的优化结果,L IN GO 模型语言不仅能求连续变量的优化问题,且能更方便地求解工程中更为需求的整型优化问题。本文在对软件简单介绍后,给出优化实例予以说明。

关键词:L IN GO 模型语言;优化算法中图分类号:TH122 文献标识码:A

在实际优化设计中,不仅有连续变量的工程优化问题,而且有全部或部分变量取为一系列规定数值的优化问题。由于机械行业的标准化、系列化、规范化的实施,设计、制造装配和检测等限制,再加上某些客观要求,使得工程中的优化问题多表现为混合离散优化设计问题。本文介绍L IN GO 模型语言及其在机械工程混合离散优化设计问题的设计实例,以推广L IN GO 模型语言在机械工程中的应用,使其为机械工程优化问题服务。

1 L IN GO 软件包简介

L IN GO 是一种专门用求解数学规划的软件包,

运行WIN 环境。由于L IN GO 执行速度快,易于输入、求解和分析数学规划问题,因此在教育、科研和工业界得到了广泛的应用。L IN GO 主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可用于一些线性和非线性方程组的求解以及代数方程求根等,同时L IN GO 也是一个矩阵生成

器。所谓矩阵生成器,实际上是提供了建立最优问题(实例)的一种语言,有了它,使用者只需键入一行文字就可以建立起成千条约束或目标函项,掌握这种最优化模型语言是非常重要的,可以使输入较大规模问题的过程得到简化。L IN GO 中包含了一种建模语言和许多常用的数学函数,可以供使用者建立数学规划模型时调用。L IN GO 的最新版本为L IN GO 6.0,它包括一系列版本,这些软件的内核和

使用方法上是类似的,但求解规模各不相同,其中工业版本最大变量数可达32000,最大约束数可达16000,而非线性变量数可达3200,最大整型变量数

也可达3200,其余见表1。

L IN GO 模型以“MODEL :”语句开始,以

“END ”语句结束。所有语句除END 、ENDSETS 、DA TA 、ENDDA TA 、TN IT 、ENDIN IT 、MODEL 、END 之外必须以一个分号“;”结尾。在L IN GO 中

建立优化模型时可以引用大量的内部函数,这些函数以“@”符号打头。L IN GO 中在使用变量时已假

讯猴百度文库批量上传下载全能助手 https://www.doczj.com/doc/b616404678.html,/c0i2kby58x

设变量非负,如果变量可以为负,则必须用“@FREE(Variable2name)”对非负条件予以取消。注释

表1 L IN G O6.0各种版本求解能力比较

T ab.1 Comparison of solving ability of different L ING O6.0versions

Version Total Variables Integer Variables Nonlinear Variables Constratints

Demo/Web3003030150

S olver Suite20002002001000

Super20002002004000

Hyper80008008004000

Industrial320003200320016000

Extended Unlimited unlimited unlimited unlimited

部分用“!”开始。对于优化目标函数必须用min或max;如果变量是整型变量,则要加上语句“@GIN (Variable2name)”,其它有关使用方法及和版本的区别见L IN GO6.0的帮助文档。

2 优化实例

实例1:有以下优化问题[1]

max=3x7+3x8+3x9+4.5x10+4.5x11+4. 5x12-0.2x13-0.2x14-3x15-0.3x16

s.t.0.9x1+0.5x4+50x17≤620

1.2x1+0.75x4+100x20≤800

0.9x2+0.5x5+50x18≤620

1.2x2+0.75x5+100x21≤8000.9x2+0.5x6+50x19≤600

1.2x3+0.75x6+100x22≤800 x1-x7-x13=0

x4-x10-x15=0

x2-x8+x13-x14=0

x5-x11+x15-x16=0

x3-x9+x14=40

x6-x12+x16=40

0.75x13+1.2x15≥70

0.75x14+1.2x16≥70

x17+x18+x19=3

x20+x21+x22=4

x j≥0,j=1~22

上限值:i1~678910111213~1617~1920~22 Vbi50025035050020015050010034

这是一个具有22个决策变量、16个约束的带有上界的一般整数规划问题。

采用文献[1]的改进遗传算法,最优化的目标函数值为6885,在486机上耗时1分22秒,而采用L IN GO6.0模型语言编程,输入程序直接运行得其优化结果为6893,即为全局最优化解,其相应的计算时间为16秒。相应的L IN GO程序如下: model:

max=33x7+33x8+33x9+4.53x10+4.53 x11+4.53x12-0.23x13-0.23x14-33x15-0.33x160.93x1+0.53x4+503x17<=620;

1.23x1+0.753x4+1003x20<=800;

0.93x2+0.53x5+503x18<=620;

1.23x2+0.753x5+1003x21<=800;

0.93x2+0.53x6+503x19<=600;

1.23x3+0.753x6+1003x22<=800;

x1-x7-x13=0;

x4-x10-x15=0;

x2-x8+x13-x14=0;

x5-x11+x15-x16=0;

x3-x9+x14=40;

911

第23卷第2期 彭铸等:L IN GO模型语言及其在机械优化设计中的应用 讯猴百度文库批量上传下载全能助手 https://www.doczj.com/doc/b616404678.html,/c0i2kby58x

x6-x12+x16=40;

0.753x13+1.23x15≥70;

0.753x14+1.23x16≥70;

x17+x18+x19=3;

x20+x21+x22=4;

x1<=500;x2<=500;x3<=500;x4<=500;x5 <=500;x6<=500;x7<=250;x8<=350;x9< =500;

x10<=200;x11<=150;x12<=500;x13<= 100;x14<=100;x15<=100;x16<=100;x17< 3;x18<=3

x19<=3;x20<=4;x21<=4;x22<=4;

@GIN(x1);@GIN(x2);@GIN(x3);@GIN(x4); @GIN(x5);@GIN(x6);@GIN(x7);@GIN(x8); @GIN(x9);@GIN(x10);@GIN(x11);@GIN (x12);@GIN(x13);@GIN(x14);@GIN(x15);@ GIN(x16);@GIN(x17);@GIN(x18);@GIN (x19);@GIN(x20);@GIN(x21);@GIN(x22);@ GIN(x23);@GIN(x24);

end

实例2 套筒滚子链的优化设计[2]

本例要求设计一套筒滚子链传动方案,希望在已知和规定的条件下,单列链的传动功率最小。取设计变量为:

x=[x1,x2,x3]T=[Z1,t,k0]T

其中:Z1———小链轮齿数,要求10≤Z1≤25,且Z1应为整数;

t———链节距,要求9.5≤t≤12.7,且t要符

合标准;

k0———中心距链节数,要求50≤k0≤60,且

k0应为整数。

经推导与整理,其数学模型为:

 min F(x)=K A P/(P0K Z K i K a)

s.t.g1(x)=31.1134-x1x2≤0

g2(x)=x1x2-927.835≤0

其中:K A=1.3;P=10;

K Z=(1/19)1.08;K i=0.998346;

K a=0.71332+0.085x3-0.0001x32/3采用L IN GO编程算得结果为:X3=[25,12. 7,60]T,F3=1.44755,而采用文献[2]的混合离散优化方法也能得到同样的结果。如果选取初值x0=[20,10,55]T,采用内点SUM T优化方法后再圆整,则其优化解为:X3=[23,12.7,60]T,F3=1. 73322。

实例3 内燃机汽门弹簧的优化设计

本例要求以弹簧可靠度最大为目标,设计出满足条件的内燃机汽门弹簧。该问题的设计变量为: x=[x1,x2,x3]T=[d,D,n]T

其中:d———弹簧丝直径,要求小数点后只保留一位有效数字,3≤d≤7;

D———弹簧中径,要求是整数;

n———弹簧工作圈数,要求4≤n≤10,且要

求为整数;

经推导与整理,其数学模型为:

 min F(x)=[(70x3x22.16)2+(17319. 46x11.16)2]1/2/(400x3x22.16-520997x11.16)

s.t.g1(x)=6-x2/x1≤0

g2(x)=x2/x1-8≤0

g3(x)=0.5x3+1.5x1/x2-5.3≤0

g4(x)=200-3.563105x1/(x3x22)≤0

g2(x)=x2/x1-8≤0

其中:K A=1.3;P=10;

K Z=(x1/19)1.08;K i=0.998346;

K a=0.71332+0.085x3-0.0001x32/3采用L IN GO编程算得结果为:X3=[3.52, 28,8]T,F3=0.3704,如果缩小变量的取值范围或提高迭代精度,则得优化结果为X3=[3.1,24, 5]T,F3=-17.0035,而采用文献[2]的混合离散优化方法,也能得到同样的结果。如果选取初值x0= [4,36,7]T,采用复合形优化方法后再圆整,则其优化解为:X3=[3.1,30,6]T,F3=0.366375,且g2(x)违反约束。

实例4 直齿圆锥齿轮的优化设计

本例要求设计一体积最小的渐开线直齿圆锥齿轮传动。其设计变量为:

x=[x1,x2,x3]T=[m,Z1,ΦR]T

其中:Z1———小轮齿数,要求15≤Z1,且Z1应为整数;

m———大端模数,要求1.5≤m,且m要符

合标准;

Φ

R

———齿宽系数,要求保留小数点一位数

021 太原重型机械学院学报 2002年讯猴百度文库批量上传下载全能助手 https://www.doczj.com/doc/b616404678.html,/c0i2kby58x

字,要求0.2≤ΦR ≤0.30;经推导与整理,其数学模型为:

 min F (x )=2.3562x 13x 23x 33(1-x 3+

x 32/3)

s.t.g 1(x )=450303w /x 2-152881≤0

g 2(x )=25.56w x 2-0.206106-2570≤0g 3(x )=1.8337w x 2

-0.064695

-1470≤0

其中:w =27.468/[x 3(1-0.53x 3)2x 13x 22]

采用L IN GO 编程算得结果为:X 3=[1.5,15,0.20]T ,F 3=4.365744,而采用文献[2]的混合

离散优化方法也能得到同样的结果。而采用约束随机优化方法后再圆整,则其优化解为:X 3=[3,16,

0.20]T ,F 3=42387.172。

3 结论

实验证明,利用L IN GO 模型语言算法解决工程中的优化设计问题,不但速度快,可靠性,有效性好,可得出比常规优化方法好得多的结果,与混合离散优化专门软件相比,它能获得同样好的结果,但速度更快,使用更为简单,因此它是一种并不复杂而简捷有效的办法。该方法能保证所得方案是有意义的,符合工程要求的方案,因而L IN GO 模型语言优化算法是一类值得大力推广的和进一步研究的优化算法。

参考文献:

[1] 王宏刚,曾建潮1遗传算法的改进及应用[J ]1太原重型机械学院学报,1996,17(4):2832287.

[2] 钱治航,余俊,周济1混合离散优化方法及其在机械优化设计中的应用[J ].机械设计与制造,1993,(5):15216.[3] 何坚勇1运筹学基础[M ]1北京:清华大学出版社,2000.17225.

L ING O Model Language and its Application to Mechanical Optimization Design

PENG Zhu 1, L U O You 2xin 2

(1.Office of Engineering Technique ,Changsha Cigarette Factory ,Hunan Changsha 410014,China ;2.Department of Mechanical Engineering ,Changde Teachers University ,Hunan Changde 415003,China )Abstract :The optimization problems in mechanical engineering are investigated with L IN GO6.0model lan 2guage.The optimizaion results obtained by this model are better and more reliable than the general optimization method.L IN GO6.0may solve the optimization problems with continuous variables and may conveniently solve the optimization problems with integer optimzation variables in engineering.Some optimization examples are al 2so given in the paper.

K ey w ords :L IN GO model language ;optimization algorithm

1

21第23卷第2期 彭铸等:L IN GO 模型语言及其在机械优化设计中的应用

讯猴百度文库批量上传下载全能助手 https://www.doczj.com/doc/b616404678.html,/c0i2kby58x

优化模型讲解 附LINGO程序

数学建模培训讲义 ——优化模型与LINGO软件 二○一一年七 目录 1 静态优化模型 (1) 1.1 最优生产计划问题 (1) 1.2 存贮模型 (2) 2 线性规划模型 (2) 2.1 LINGO简介 (2) 2.2 配料问题 (3) 2.3 练习:运输问题 (4) 3 整数规划模型 (4) 3.1 电影院广告问题 (4) 3.2 练习:生产计划问题 (5) 4 0-1规划 (5) 4.1 背包问题 (5) 4.2 矿井选址问题 (6) 4.3 练习:混合泳接力队的选拔问题 (7) 5 LINGO应用 (8) 5.1 变量定界函数 (8) 5.2 集合 (8) 5.3 帆船生产问题 (9)

5.4 派生集合 (11) 5.5 通过电子表格(Excel)文件传递数据 (12) 5.6 旅游问题 (13)

优化模型与LINGO 软件 优化问题是计划管理工作中经常要碰到的问题,比如,出门旅行就要考虑选择什么样的路线和交通工具,才能使旅行费用最省或使所花费的时间最少。在工厂技术、经济管理和科学研究等领域中,最优化问题就更多,一个工厂要怎样安排产品的生产,才能获得最大利润?一个设计部门要考虑在满足结构强度的要求下怎样使得所用的材料的总重量最轻? 比较有效的求解优化问题的一个方法使数学规划,它包括:线性规划、非线性规划、整数规划、动态规划和多目标规划等等。 用数学建模的方法来处理一个优化问题的时候,首先要确定优化的目标是什么,寻求的决策是什么,决策受到哪些条件的限制(如果有限制的话),然后用数学工具(变量、函数等)表示它们。 1 静态优化模型 静态优化模型,归结为微积分中的函数极值问题,可以直接用微分法求解。 1.1 最优生产计划问题 一计算机公司引进A 、B 两种类型的芯片技术,总耗资400000元,准备生产这两种类型的芯片出售。生产一片A 芯片的成本为1950元,而市场售价为3390元,生产一片B 芯片的成本为2250元,而市场售价3990元。由于市场存在竞争,每售出一片A 芯片,A 芯片就会降价0.1元,并且令B 芯片降低0.04元,每售出一片B 芯片,B 芯片就会降价0.1元,并且令A 芯片降价0.03元。假设生产的芯片都能卖出,求一生产计划,以获得最大利润。 模型分析: 假设A 、B 两种芯片的数量分别是1x 和2x ,市场价格分别是1p 和2p ,用R 表示出售芯片的总收入,用C 表示生存芯片的总费用,用P 表示总利润。 根据题意,上述变量有如下关系: 11233900.10.03p x x =-- 21239900.040.1p x x =-- 1122R p x p x =+ 1240000019502250C x x =++ P R C =- 模型建立: 根据上述分析,可得优化模型

优化建模与lingo软件

问题一:LP 问题在lindo 和lingo 中不同的输入形式 (1)将目标函数的表示方式从“MAX ”变成了“MAX=” (2)“ST ”在LINGO 模型中不再需要,所以被删除了 (3)每个系数与变量间增加了运算符“*”(即乘号不能省略) (4)每行(目标、约束和说明语句)后面均增加了一个分号“;”(英文状态下) (5)模型结束标志“END ”也被删除了(LINGO 中只有当模型以“MODEL :”开始时才能以“END ”结束)。 (6)英文状态下!后面的文字为说明文字,不参与模型的求解。 问题二:状态窗口的参数解释 variable adj 异变的,变量的 n 变量

问题三优化建模的实例: 1. 线性规划模型 2. 二次规划模型 3. 非线性规划模型 目标函数:()()∑∑--==+= 2161 22min j i bi yi ai xi cij f 约束条件:6,5,4,3,2,1,21 ∑===j i di cij ∑==<=6 1 2,1,i j ej cij 4. 整数规划模型(线性0-1规划模型是特殊的线性整数规划) 1) 目标函数:7654321min x x x x x x x z ++++++= 2) 约束条件: ???????????>=++++>=++++>=++++>=++++>=++++>=++++>=++++. 5076543,5065432,5054321,5074321,5076321,5076521,5076541x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x )7,,2,1(0 =>=i xi

运用LINGO进行优化模型求解,并与EXCEL进行连接

实验报告(二) 课程名称数学实验 实验项目运用LINGO进行优化模型求解,并与EXCEL进行连接实验环境PC机、LINGO 班级/学号/姓名 指导教师 实验日期2013-11-5 成绩

一、实验名称:运用LINGO 进行优化模型求解,并与EXCEL 进行连接 二、实验目的: 1、掌握Lingo 求解线性规划模型的方法及回看求解结果报告; 2、掌握Lingo 进行灵敏度分析的方法; 3、掌握Lingo 求解整数规划和0-1规划的方法; 4、掌握Lingo 中集合的定义方法; 5、掌握Lingo 与Excel 之间的链接方法; 三、实验内容: 习题四: 1.用LINGO 求解下列线性规划问题 (1)?????? ?=≥≤++≤++≤++++=. 4,...,1,0x 103x x 2x -4x 258x 2x 3x -3x 204x -4x -6x 5x ..8x 10x 2x 6x z max i 4321432143214 321i t s 程序: model : max =6*x1+2*x2+10*x3+8*x4; 5*x1+6*x2-4*x3-4*x4<=20; 3*x1-3*x2+2*x3+8*x4<=25; 4*x1-2*x2+x3+3*x4<=10; end 结果:

(2) ??? ??≥≤++≤++++=0,,x 9010x 4x 12x 20 3x x x -s.t.13x 5x -5x z max 3 213213213 21x x 程序: model : max =-5*x1+5*x2+13*x3; -1*x1+x2+3*x3<=20; 12*x1+4*x2+10*x3<=90; end 结果: (3)?? ???>=++<=+<=+=010y 4x 011-7y x 0 23-5y -7x ..y 2x z min t s 程序: model : min =2*x+y; 7*x-5*y-23<=0; x+7*y-11<=0; 4*x+y+10>=0; @free (x); @free (y); end 结果:

用lingo编程解决运输问题大全

LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例如何在LINGO中求解如下的LP问题:

,6002100 350. .32min 21211 2121≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。 销地 产地 B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 产量 A 1 6 2 6 7 4 2 5 9 60 A 2 4 9 5 3 8 5 8 2 55 A 3 5 2 1 9 7 4 3 3 51 A 4 7 6 7 3 9 2 7 1 43 A 5 2 3 9 5 7 2 6 5 41 A 6 5 5 2 2 8 1 4 3 52 销量 35 37 22 32 41 32 43 38

使用LINGO软件,编制程序如下: model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 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

相关主题
文本预览
相关文档 最新文档