LINGO软件简介.docx

上传人:大张伟 文档编号:11686084 上传时间:2021-08-30 格式:DOCX 页数:8 大小:61.21KB
返回 下载 相关 举报
LINGO软件简介.docx_第1页
第1页 / 共8页
LINGO软件简介.docx_第2页
第2页 / 共8页
LINGO软件简介.docx_第3页
第3页 / 共8页
LINGO软件简介.docx_第4页
第4页 / 共8页
LINGO软件简介.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《LINGO软件简介.docx》由会员分享,可在线阅读,更多相关《LINGO软件简介.docx(8页珍藏版)》请在三一文库上搜索。

1、LINGO软件简介LINGO软件是一个处理优化问题的专门软件,它尤其擅长求解线性规划、非线性规划、整数规划等问题。一个简单示例有如下一个混合非线性规划问题:max 98xi 277x222Xi 0.3xiX2 2x2 150X3st.x1 2x2 2x3 100x1 2x2x1, x2,x3 0;x1,x2为整数LINGO程序(模型):max=98*x1+277*x2-x1A2-0.3*x1*x2-2*x2A2+150*x3;x1+2*x2+2*x3=100;x1=2*x2;gin (x1); gin (x2);! Lingo默认变量非负(注意:bin(x) 表示x是0-1变量;gin(x)

2、表示x是整数变量; bnd(L,x,U) 表示 限制L x U; free(x)表示取消对x的符号限制,即可正、可负。)结果:Global optimal solution found.Objective value:9561.200Extended solver steps:0Total solver iterations:45VariableValueReduced CostX16.000000-76.70000X231.00000-151.2000X316.00000-150.0000RowSlack or Surplus Dual Price19561.2001.00000020.00

3、00000.000000356.000000.000000非常简单!在LINGO中使用集合为了方便地表示大规模的规划问题,减少模型、数据表示的复杂程度, “集合”的用法,实现了变量、系数的数组化(下标)表示。LINGO引进了min 400RP(I)I 1,2,3,4450OP(I )20INV(I)例如:对 s.t. INV(I) INV(IRP(I ) 20,1) RP(I)I 1,2,3,4;OP(I) DEM (I), I 1,2,3,4;INV (0) 10;RP,OP, INV均非负.求解程序:model :sets :mark/1,2,3,4/:dem,rp,op,inv;ends

4、ets! 也可以 vmark/1.4/:dem,rp,op,inv;! 也可以min =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)=10+rp(1)+op(1)-dem(1);data :dem=40,60,75,35;enddata end上面程序在modelend之间有(1)集合定义、(2)数据输入和(3)其他三部分内容。集合定

5、义部分(从 sets:到endsets):定义了一个指标集合mark (可以理解为数组下标及其范围)和其4 个属性 dem、 rp 、 op、 inv (用此向量的数组变量) 。数据输入部分(从 data:至U enddata)依次给出常量(dem)的值。其他部分:给出优化目标及约束。一般而言, LINGO 中建立优化模型的程序可以由五部分组成,或称为五段( section) :(1)集合段(SETS):这部分以“ SETS:开始,以“ ENDSETS”结束,作用在于定 义必要的集合变量(SET )及其元素(member ,含义类似于数组的下标)和属性(attribute ,含义类似于数组)

6、。( 2)目标与约束段:这部分实际上定义了目标函数、约束条件等,但这部分没有段的开始和结束标记;该段一般常用到 LINGO 内部函数,尤其是和集合相关的求和函数SUM和循环函数FOR 等。(3)数据段(DATA):这部分以“ DATA:开始,以“ ENDDATA”结束,作用在于 对集合的属性(数组)输入必要的常数数据。格式为:attribute(属性尸value_list(常数列表);常数列表中的数据之间可以用逗号、空格或回车符分隔。如果想要在运行时才对参数赋值,可以在数据段使用输入语句,其格式为“变量名 =?; ” ,但仅限对单个变量赋值,而不能用 于属性变量(数组)的单个元素。( 4)初始

7、段(INIT ) :这部分以“ INIT : ”开始,以“ ENDINIT ”结束,作用在于对集合的属性(数组)定义初值(因为求解算法一般是迭代算法,提供一个较好的初值,能提高计算效果) 。定义初值的语句格式为:attribute(属性尸value_list(常数列表);这与数据段中的用法类似。(5)计算段(CALC ):这部分以“ CALC :开始,以“ ENDCALC ”结束,作用在于 对一些原始数据进行预处理加工, 使其成为模型直接需要的数据。 该段中通常是计算赋值语 句。基本集合与派生集合为了处理二维数组变量等有多个下标的问题,LINGO引入了 “派生集”的概念。我们把直接列出元素的指

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

9、6a1.258.750.55.7537.25b1.250.754.7556.57.75d3547611设工地位置(a,bi),水泥日用量为di (i=1,2,6);料场位置(xi,yi),日储量e,j=1,2; 从料场j向工地i运送量为cijo该问题的数学模型为:26min f 5 3a。2(yj bi)2j 1 i 12Cjdi . i 1,.,6st. j 6Cijej , j 1,2.i 1LINGO求解程序为:MODEL:sets :Imark/1.6/:a,b,d;Jmark/1,2/:x,y,e;IJmark(Imark,Jmark):c;endsetsdata :Location

10、 for demand(需求点位置 );a=1.25,8.75,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;endinitObjective function(目标);OBJ min =sum(IJmark(i,j):c(i,j)*(x(j)-a(i)A2+(y(j)-b(i)A2)A(1/2);dem

11、and contraints(需求约束);for (Imark(i):DEMAND_CONSUMJmark(j):c(i,j)尸d(i););!supply constrains(供给束);for (JmarkQ):SUPPLY_CONSUMImark(i):c(i,j) A3-B2- C1- T3)(指派问题)设有 6个人做6件事。其中cj表示第i人做第j事的收益;设第i人做 第j事时Xij=1,否则xij=0o该问题的规划模型:n nmaxCj Xiji 1 j 1 nxij 1 i1,2,n (每人做一事)j 1 nst.xj1 j 1,2,n (每事一人做)i 1x0 或 xj 1 i

12、, j1,2,n人事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,

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

14、B的库存量分别为 500吨和1000吨,还可以从市场上买到不超过 1500吨的原油Ao原油A的市场价为:购买量不超 500吨时单价为10000元/吨;购买量超 过500吨但不超1000吨时,超过500吨部分单价为8000元/吨;购买量超过1000吨部分的 单价是6000元/吨。该公司应如何安排原油的采购和加工以获得最大利润?数学模型:设原油A用于生产甲、乙两种汽油的数量分别是x11和x12,原油B用于生产甲、乙两种汽油的数量分别是x21和x22;购买原油A的数量是x吨,采购支出为c(x)千元/吨。max z 4.8(x11 x21) 5.6(x12 x22)c(x)x11 x12 500 x1

15、0x0 x 500其中 c(x) 100 8x 500 x 1000 3000 6x 1000 x 1500s.t.x21乂22 1000x 1500Xii0.5x11X21X120.6X12X22X11 , x12 , X21 , X22 , x为了处理分段函数c(x),将原油采购量价格8千元/吨的采购量x2和对应价格0x分解为对应价格10千元/吨的采购量x1、对应对应6千元/吨的采购量x3,它们应满足:(x1 500)x20表示要么x1=500要么x2=0,即x1的量不达到500时x2=0(x2 500)x3 0表示要么x2=500要么x3=0 ,即x2的量不达到500时x3=0此时采购支

16、出c(x) 10x1 8x2 6x3模型改变为:6x3)max z4.8( x11x21 ) 5.6(x12x22)(10 x18x2x11 x12 x 500x21x2210000.5x110.5x2100.4x120.6x220s.t. xx1x2x3(x1500)x20(x2500)x30xij0,0xi500LINGO 求解程序: 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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1