您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 用LINGO求解整数规划
用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。@FREE(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)如果x0返回-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=5X1+3X2+6X3,s.t.X1+2X2+X3≤182X1+X2+3X3=16X1+X2+X3=10X1,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.00000VariableValueReducedCostx114.000000.000000x20.0000001.000000x3-4.0000000.000000由此可知,当x1=14,x2=0,x3=-4时,模型得到最优值,且最优值为46。说明:在利用LINGO求解线性规划时,如自变量都为非负的话,在LINGO中输入的信息和模型基本相同;如自变量为自由变量,可以使用函数@free来把系统默认的非负变量定义自由变量,如实例一中的x3。例3、用LINGO求解整数线性规划问题:3,2,1,103,2,1,030015020070075310032300432500842..200150100843max332211321321321321321321jyjxyxyxyxxxxxxxxxxxxxtsyyyxxxzjj或且为整数1、模型的输入使用LINGO求解上述整数规划模型,LINGO程序如下:MODEL:max=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3;2*x1+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键,即可求得问题的解。此问题的解为:0,0,1,0,0,100321321yyyxxx,最优值为:200。当运用LINGO求解此问题后,系统会弹出一个名为SolutionReport的文本框,其文本框中包含了求解的详细信息,如下: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:0VariableValueReducedCostX1100.0000-3.000000X20.0000000-4.000000X30.0000000-8.000000Y11.000000100.0000Y20.0000000150.0000Y30.0000000200.0000RowSlackorSurplusDualPrice1200.00001.0000002300.00000.00000003100.00000.000000040.00000000.00000005400.00000.00000006100.00000.000000070.00000000.000000080.00000000.00000003、LINGO程序注解MODEL:LINGO模型程序的开始标志。END:LINGO模型程序的结束标志。max=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3:表明目标函数是321321200150100843yyyxxx,问题为求最大值。2*x1+4*x2+8*x3=500:对应约束条件500842321xxx,其余类似。@GIN(x1):对应约束条件1x为整数,函数GIN@用来限定变量为整数,其余类似。@BIN(y1):对应约束条件1y为0-1变量,函数BIN@用来限定变量为二进制整数。例4、非线性整数规划min=x+3*y^2+@exp(x);2*x+3*y10;5*x-y6;@gin(x);@gin(y);运行结果:Localoptimalsolutionfoundatiteration:124Objectivevalue:30.71828VariableValueReducedCostX1.0000003.718280Y3.00000018.00000
本文标题:用LINGO求解整数规划
链接地址:https://www.777doc.com/doc-5546634 .html