LINGO软件简介参考模板

上传人:痛*** 文档编号:141236432 上传时间:2022-08-23 格式:DOC 页数:8 大小:93KB
收藏 版权申诉 举报 下载
LINGO软件简介参考模板_第1页
第1页 / 共8页
LINGO软件简介参考模板_第2页
第2页 / 共8页
LINGO软件简介参考模板_第3页
第3页 / 共8页
资源描述:

《LINGO软件简介参考模板》由会员分享,可在线阅读,更多相关《LINGO软件简介参考模板(8页珍藏版)》请在装配图网上搜索。

1、LINGO软件简介LINGO软件是一个处理优化问题的专门软件,它尤其擅长求解线性规划、非线性规划、整数规划等问题。一个简单示例有如下一个混合非线性规划问题:。LINGO程序(模型):max=98*x1+277*x2-x12-0.3*x1*x2-2*x22+150*x3;x1+2*x2+2*x3=100;x1=2*x2;gin(x1);gin(x2);! Lingo默认变量非负(注意:bin(x)表示x是0-1变量;gin(x)表示x是整数变量;bnd(L,x,U)表示限制LxU;free(x)表示取消对x的符号限制,即可正、可负。)结果: Global optimal solution fou

2、nd. Objective value: 9561.200 Extended solver steps: 0 Total solver iterations: 45 Variable Value Reduced Cost X1 6.000000 -76.70000 X2 31.00000 -151.2000 X3 16.00000 -150.0000 Row Slack or Surplus Dual Price 1 9561.200 1.000000 2 0.000000 0.000000 3 56.00000 0.000000 非常简单!在LINGO中使用集合为了方便地表示大规模的规划问题

3、,减少模型、数据表示的复杂程度,LINGO引进了“集合”的用法,实现了变量、系数的数组化(下标)表示。1 / 8例如:对求解程序:model:sets:mark/1,2,3,4/:dem,rp,op,inv;!也可以vmark/1.4/:dem,rp,op,inv;endsetsmin=sum(mark:400*rp+450*op+20*inv);!也可以mark(I):400*rp(I)+450*op(I)+20*inv(I);for(mark(I): rp(I)40);for(mark(I)|I#gt#1: inv(I)=inv(I-1)+rp(I)+op(I)-dem(I);inv(1)

4、=10+rp(1)+op(1)-dem(1);data:dem=40,60,75,35;enddataend上面程序在modelend之间有(1)集合定义、(2)数据输入和(3)其他三部分内容。集合定义部分(从sets:到endsets):定义了一个指标集合mark(可以理解为数组下标及其范围)和其4个属性dem、rp、op、inv(用此向量的数组变量)。数据输入部分(从data:到enddata)依次给出常量(dem)的值。其他部分:给出优化目标及约束。一般而言,LINGO中建立优化模型的程序可以由五部分组成,或称为五段(section):(1)集合段(SETS):这部分以“SETS:”开始

5、,以“ENDSETS”结束,作用在于定义必要的集合变量(SET)及其元素(member,含义类似于数组的下标)和属性(attribute,含义类似于数组)。(2)目标与约束段:这部分实际上定义了目标函数、约束条件等,但这部分没有段的开始和结束标记;该段一般常用到LINGO内部函数,尤其是和集合相关的求和函数SUM和循环函数FOR等。(3)数据段(DATA):这部分以“DATA:”开始,以“ENDDATA”结束,作用在于对集合的属性(数组)输入必要的常数数据。格式为:attribute(属性)=value_list(常数列表);常数列表中的数据之间可以用逗号、空格或回车符分隔。如果想要在运行时才

6、对参数赋值,可以在数据段使用输入语句,其格式为“变量名=?;”,但仅限对单个变量赋值,而不能用于属性变量(数组)的单个元素。(4)初始段(INIT):这部分以“INIT:”开始,以“ENDINIT”结束,作用在于对集合的属性(数组)定义初值(因为求解算法一般是迭代算法,提供一个较好的初值,能提高计算效果)。定义初值的语句格式为:attribute(属性)=value_list(常数列表);这与数据段中的用法类似。(5)计算段(CALC):这部分以“CALC:”开始,以“ENDCALC”结束,作用在于对一些原始数据进行预处理加工,使其成为模型直接需要的数据。该段中通常是计算赋值语句。基本集合与派

7、生集合为了处理二维数组变量等有多个下标的问题,LINGO引入了“派生集”的概念。我们把直接列出元素的指标集合叫“基本集合”,而基于其他集合派生出来的二维或多维指标集合称为“派生集”。派生集的定义格式为:派生集名(原始集合1,原始集合2,原始集合n):属性变量列表;实际上就是笛卡儿积的意思,即:派生集=(i1,i2,in)| i1集合1, i2集合2, in集合n。1)一个应用例子(布局问题):某些建筑工地的位置(用平面坐标a,b表示)及水泥日用量d已知。现有A、B两临时料场位于P(5,1)、Q(2,7),日储量20。问A、B两料场分别向各工地运输多少吨水泥,使总吨公里数最小?若重新安排两料场的

8、位置,应怎样安排才能使总吨公里数最小?这样安排可节省多少吨公里?123456a1.258.750.55.7537.25b1.250.754.7556.57.75d3547611设工地位置(ai,bi),水泥日用量为di(i=1,2,6);料场位置(xi,yi),日储量ej,j=1,2;从料场j向工地i运送量为cij。该问题的数学模型为:LINGO求解程序为:MODEL:sets: Imark/1.6/:a,b,d; Jmark/1,2/:x,y,e; IJmark(Imark,Jmark):c;endsetsdata:!Location for demand(需求点位置);a=1.25,8.7

9、5,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;!Quantities of the demand and supply(供需量);d=3,5,4,7,6,11;e=20,20;enddatainit:!Initial location for the supply(初始点);x,y=5,1,2,7;endinit!Objective function(目标);OBJ min=sum(IJmark(i,j): c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);!demand contraints(需求约束);for(Imark

10、(i):DEMAND_CON SUM(Jmark(j):c(i,j)=d(i););!supply constrains(供给约束);for(Jmark(j):SUPPLY_CON SUM(Imark(i):c(i,j)=e(j););for(Jmark: free(x);free(y););END2)一个动态规划的例子:(最短路问题)从S城市到T城市之间找一条最短路径,道路情况如下:685665787496363SA1A2A3B1B2C1C2T数学模型为:LINGO求解程序:model:sets:cities/s,a1,a2,a3,b1,b2,c1,c2,t/:L;!属性L(i)表示城市S到

11、城市i的最优行驶路线的里程;roads(cities,cities)/!派生集合roads表示的是网络中的道路;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!属性D(i,j)是城市i到城市j的直接距离(已知);c1,t c2,t/:D;endsetsdata:D= 6 3 3 6 5 8 6 7 4 6 7 8 9 5 6;L=0,;!因为L(s)=0;enddatafor(cities(i)|i#gt#index(s):!这行中inde

12、x(s)可以直接写成1; L(i)=min(roads(j,i):L(j)+D(j,i););!这就是最短路关系式;end Variable Value L( S) 0.000000 L( A1) 6.000000 L( A2) 3.000000 L( A3) 3.000000 L( B1) 10.00000 L( B2) 7.000000 L( C1) 15.00000 L( C2) 16.00000 L( T) 20.00000最短路径为:S-A3-B2-C1-T3)(指派问题)设有6个人做6件事。其中cij表示第i人做第j事的收益;设第i人做第j事时xij=1,否则xij=0。该问题的规

13、划模型:人事1事2事3事4事5事61201516547217153312863912181630134128112719145-7102110326-61113说明:其中“-”表示某人无法做该事。可令其为-(表示绝对不行)或0(领薪不用干活)LINGO求解程序:MODEL:sets: Imark/1.6/:i; Jmark/1.6/:j; IJmark(Imark,Jmark):c,x;endsetsdata:!第i人做第j事的收益;c=20,15,16,5,4,717,15,33,12,8,69,12,18,16,30,1312,8,11,27,19,14-99,7,10,21,10,32-

14、99,-99,-99,6,11,13;enddataOBJ max=sum(IJmark(i,j): c*x);!每人做一项工作;for(Imark(i): SUM(Jmark(j):x(i,j)=1;);!每事一人做;for(Jmark(j): SUM(Imark(i):x(i,j)=1;);for(IJmark: bin(x);!本约束可以不要,因为有解时必为0或1;END4)(生产与销售计划问题)某公司用两种原油(A和B)混合加工成两种汽油(甲和乙)。甲、乙两种汽油含原油A的最低比例分别为50%和60%,每吨售价分别是4800元和5600元。该公司现有原油A和B的库存量分别为500吨和1

15、000吨,还可以从市场上买到不超过1500吨的原油A。原油A的市场价为:购买量不超500吨时单价为10000元/吨;购买量超过500吨但不超1000吨时,超过500吨部分单价为8000元/吨;购买量超过1000吨部分的单价是6000元/吨。该公司应如何安排原油的采购和加工以获得最大利润?数学模型:设原油A用于生产甲、乙两种汽油的数量分别是x11和x12,原油B用于生产甲、乙两种汽油的数量分别是x21和x22;购买原油A的数量是x吨,采购支出为c(x)千元/吨。为了处理分段函数c(x),将原油采购量x分解为对应价格10千元/吨的采购量x1、对应对应价格8千元/吨的采购量x2和对应价格6千元/吨的

16、采购量x3,它们应满足: 表示要么x1=500要么x2=0,即x1的量不达到500时x2=0 表示要么x2=500要么x3=0,即x2的量不达到500时x3=0此时采购支出模型改变为:LINGO求解程序:model:init:x1=500;x2=500;x3=0;x12=1500;x22=1000;x11=0;x21=0;endinitmax=4.8*x11+4.8*x21+5.6*x12+5.6*x22-10*x1-8*x2-6*x3;x11+x12=x+500;x21+x22=0;0.4*x12-0.6*x22=0;x=x1+x2+x3;(x1-500)*x2=0;(x2-500)*x3=0;bnd(0,x1,500);bnd(0,x2,500);bnd(0,x3,500);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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