欢迎来到天天文库
浏览记录
ID:14284592
大小:55.00 KB
页数:5页
时间:2018-07-27
《用lingo求解整数规划》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用LINGO求解整数规划LINGO软件用于线性或非线性规划(无论是连续规划还是整数规划),因此包含了LINDO的功能。在LINGO中,输入总是以model:开始,以end结束;中间的语句之间必须以“;”分开;LINGO不区分字母的大小写;目标函数用MAX=…;或MIN=…;给出(注意有等号“=”)。在LINDO中所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用@bin(x1)表示x1为0-1整数。在现在的LINDO中,默认设置假定所有变量非负。函数中变量的界定:@GIN(X):限制X为整数@BIN(X):限定变量X为0或1。@FRE
2、E(X):取消对x的符号限制(即可取任意实数包括负数)@BND(L,X,U):限制L<=X<=ULINGO提供了大量的标准数学函数:@abs(x) 返回x的绝对值@sin(x) 返回x的正弦值,x采用弧度制@cos(x) 返回x的余弦值@tan(x) 返回x的正切值@exp(x) 返回常数e的x次方@log(x) 返回x的自然对数@lgm(x) 返回x的gamma函数的自然对数@sign(x)
3、 如果x<0返回-1;否则,返回1@smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值@smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值例1:整数规划模型在LINGO中可以如下输入:model:Max=5*x1+8*x2;!*号不能省略x1+x2<=6;!约束条件和目标函数可以写在model:与end之间的任何位置5*x1<=45-9*x2;@gin(x1);@gin(x2);!和LINDO不同,不能写在end之后end 运行后同样得到最优解为x1=0,x2=5,最优值为40。例2:在线性规划中的应用maxZ=
4、5X1+3X2+6X3,s.t.X1+2X2+X3≤18 2X1+X2+3X3=16 X1+X2+X3=10 X1,X2≥0,X3为自由变量应用LINGO来求解该模型,只需要在lingo窗口中输入以下信息即可:max=5*x1+3*x2+6*x3;x1+2*x2+x3<=18;2*x1+x2+3*x3=16;x1+x2+x3=10;@free(x3); 然后按运行按钮,得到模型最优解,具体如下: Objectivevalue:46.00000 VariableValue ReducedCost x114.000000.000000 x20.
5、0000001.000000 x3-4.0000000.000000 由此可知,当x1=14,x2=0,x3=-4时,模型得到最优值,且最优值为46。 说明:在利用LINGO求解线性规划时,如自变量都为非负的话,在LINGO中输入的信息和模型基本相同;如自变量为自由变量,可以使用函数@free来把系统默认的非负变量定义自由变量,如实例一中的x3。例3、用LINGO求解整数线性规划问题:1、模型的输入使用LINGO求解上述整数规划模型,LINGO程序如下:MODEL:max=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3;2*x1
6、+4*x2+8*x3<=500;2*x1+3*x2+4*x3<=300;x1+2*x2+3*x3<=100;3*x1+5*x2+7*x3<=700;x1<=200*y1;x2<=150*y2;x3<=300*y3;@GIN(x1);@GIN(x2);@GIN(x3);@BIN(y1);@BIN(y2);@BIN(y3);END2、执行点击LINGO菜单下的SOLVE键,或按CTRL+S键,即可求得问题的解。此问题的解为:,最优值为:200。当运用LINGO求解此问题后,系统会弹出一个名为SolutionReport的文本框,其文本框中包含了求解的详细信息,
7、如下:Rows=8Vars=6No.integervars=6(allarelinear)Nonzeros=28Constraintnonz=18(4are+-1)Density=0.500Smallestandlargestelementsinabsvalue=1.00000700.000No.<:7No.=:0No.>:0,Obj=MAX,GUBs<=3Singlecols=0Globaloptimalsolutionfoundatstep:4Objectivevalue:200.0000Branchcount:0VariableValueReduce
8、dCostX1100.0000-3.000000X20.00000
此文档下载收益归作者所有