用LINGO求解整数规划Word文档下载推荐.doc
《用LINGO求解整数规划Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《用LINGO求解整数规划Word文档下载推荐.doc(5页珍藏版)》请在冰点文库上搜索。
取消对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:
在线性规划中的应用
maxZ=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.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+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键,即可求得问题的解。
此问题的解为:
,最优值为:
200。
当运用LINGO求解此问题后,系统会弹出一个名为SolutionReport的文本框,其文本框中包含了求解的详细信息,如下:
Rows=8Vars=6No.integervars=6(allarelinear)
Nonzeros=28Constraintnonz=18(4are+-1)Density=0.500
Smallestandlargestelementsinabsvalue=1.00000700.000
No.<
:
7No.=:
0No.>
0,Obj=MAX,GUBs<
=3
Singlecols=0
Globaloptimalsolutionfoundatstep:
4
Objectivevalue:
200.0000
Branchcount:
0
VariableValueReducedCost
X1100.0000-3.000000
X20.0000000-4.000000
X30.0000000-8.000000
Y11.000000100.0000
Y20.0000000150.0000
Y30.0000000200.0000
RowSlackorSurplusDualPrice
1200.00001.000000
2300.00000.0000000
3100.00000.0000000
40.00000000.0000000
5400.00000.0000000
6100.00000.0000000
70.00000000.0000000
80.00000000.0000000
3、LINGO程序注解
MODEL:
LINGO模型程序的开始标志。
END:
LINGO模型程序的结束标志。
max=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3:
表明目标函数是,问题为求最大值。
=500:
对应约束条件,其余类似。
@GIN(x1):
对应约束条件为整数,函数用来限定变量为整数,其余类似。
@BIN(y1):
对应约束条件为0-1变量,函数用来限定变量为二进制整数。
例4、非线性整数规划
min=x+3*y^2+@exp(x);
2*x+3*y>
10;
5*x-y<
6;
@gin(x);
@gin(y);
运行结果:
Localoptimalsolutionfoundatiteration:
124
Objectivevalue:
30.71828
X1.0000003.718280
Y3.00000018.00000