您好,欢迎来到九壹网。
搜索
您的当前位置:首页用LINGO求解整数规划

用LINGO求解整数规划

来源:九壹网
用LINGO求解整数规划

在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 <= U LINGO提供了大量的标准数学函数: @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)??????????? 如果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:在线性规划中的应用

max Z =5X1+3X2+6X3, s.t.

X1 +2 X2 + X3 ≤18 2 X1 + X2 +3 X3 =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);

然后按运行按钮,得到模型最优解,具体如下: Objective value: 46.00000 Variable Value Reduced Cost x1 14.00000 0.000000 x2 0.000000 1.000000 x3 -4 .000000 0.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+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); END

2、 执行

点击LINGO菜单下的SOLVE键,或按CTRL+S键,即可求得问题的解。

此问题的解为:x1100,x20,x30,y11,y20,y30,最优值为:200。 当运用LINGO求解此问题后,系统会弹出一个名为Solution Report的文本框,其文本框中包含了求解的详细信息,如下:

Rows= 8 Vars= 6 No. integer vars= 6 ( all are linear) Nonzeros= 28 Constraint nonz= 18( 4 are +- 1) Density=0.500 Smallest and largest elements in abs value= 1.00000 700.000 No. < : 7 No. =: 0 No. > : 0, Obj=MAX, GUBs <= 3 Single cols= 0

Global optimal solution found at step: 4 Objective value: 200.0000 Branch count: 0

Variable Value Reduced Cost X1 100.0000 -3.000000 X2 0.0000000 -4.000000 X3 0.0000000 -8.000000 Y1 1.000000 100.0000 Y2 0.0000000 150.0000 Y3 0.0000000 200.0000 Row Slack or Surplus Dual Price 1 200.0000 1.000000 2 300.0000 0.0000000 3 100.0000 0.0000000 4 0.0000000 0.0000000 5 400.0000 0.0000000 6 100.0000 0.0000000 7 0.0000000 0.0000000 8 0.0000000 0.0000000

3、 LINGO程序注解

MODEL:LINGO模型程序的开始标志。 END:LINGO模型程序的结束标志。

max=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3:表明目标函数是

3x14x28x3100y1150y2200y3,问题为求最大值。

2*x1+4*x2+8*x3<=500:对应约束条件2x14x28x3500,其余类似。 @GIN(x1):对应约束条件x1为整数,函数@GIN用来限定变量为整数,其余类似。 @BIN(y1):对应约束条件y1为0-1变量,函数@BIN用来限定变量为二进制整数。 例4、非线性整数规划 min=x+3*y^2+@exp(x);

2*x+3*y>10; 5*x-y<6;

@gin(x);@gin(y);

运行结果:

Local optimal solution found at iteration: 124 Objective value: 30.71828

Variable Value Reduced Cost X 1.000000 3.718280 Y 3.000000 18.00000

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务