Lindo 和Lingo 数学软件的简单使用方法.docx
《Lindo 和Lingo 数学软件的简单使用方法.docx》由会员分享,可在线阅读,更多相关《Lindo 和Lingo 数学软件的简单使用方法.docx(20页珍藏版)》请在冰豆网上搜索。
![Lindo 和Lingo 数学软件的简单使用方法.docx](https://file1.bdocx.com/fileroot1/2022-11/29/46622416-f07c-4b9a-8f98-a0afb44014e0/46622416-f07c-4b9a-8f98-a0afb44014e01.gif)
Lindo和Lingo数学软件的简单使用方法
Lindo和Lingo数学软件的简单使用方法
一、Lindo
最新版本:
6.1版(注册版)
限制:
4000个约束、8000个变量、800个整型变量
功能:
可以求解线性规划、整数规划、混合整数规划、二次规划、目标规划。
我们主要用它来求解整数规划或混合整数规划。
特点:
执行速度非常快
例1:
求解整数规划问题
解:
在lindo的运行窗口中输入
max5x1+8x2
st
x1+x2<6
5x1+9x2<45
end
gin2
然后按Solve菜单或快捷键得运行结果。
OBJECTIVEFUNCTIONVALUE(目标函数最优值)
1)40.00000
VARIABLEVALUEREDUCEDCOST(变量增加1时目标函数改变量)
X10.000000-5.000000
X25.000000-8.000000
ROWSLACKORSURPLUSDUALPRICES
(行)(松弛变量值)(对偶价格,表示约束右边常数增加1时目标函数改变量))
2)1.0000000.000000
3)0.0000000.000000
RANGESINWHICHTHEBASISISUNCHANGED(灵敏度分析)
OBJCOEFFICIENTRANGES(目标函数中变量的系数的变动范围,在此范围内最优解不变)
VARIABLECURRENTALLOWABLEALLOWABLE
COEF(当前系数)INCREASE(增加量)DECREASE(减少量)
X15.0000000.000000INFINITY
X28.0000000.000000INFINITY
RIGHTHANDSIDERANGES(约束条件右边常数的变化范围,在此范围内最优基不变)
ROWCURRENTALLOWABLEALLOWABLE
RHS(当前系数)INCREASE(增加量)DECREASE(减少量)
26.000000INFINITY1.000000(第一个约束)
345.000000INFINITY0.000000(第二个约束)
注意:
1.软件中已经假设所以的变量是非负的,所以非负约束不必输入;
2.可以用FREE变量来取消变量的非负限制;
3.不区分大小写;
4.约束条件“<=”、“>=”可以用“<”、“>”代替;
5.变量名不能超过8个字符;
6.变量与系数间可以有空格,但不能有任何运算符号(如*等);
7.不允许变量出现在一个约束条件的右端;
8.输入中不能有“()”和“,”;比如4(x1+x2)应写成4x1+4x2等;
9.在一个式中同一变量不能出现一次以上,比如2x1+3x2-x1应简化为x1+3x2;
10.int变量变量为0/1整数变量
gin变量变量为整数变量
ginn
intn模型中的前n个变量为0/1整数变量,关于变量的顺序可由输出结果查证!
整数变量申明须放在最后(即end后)
例2:
集合覆盖问题
设有一集合S={1,2,3,4,5},及S的一个子集簇P={{1,2},{1,3,5},{2,4,5},{3},{1},{4,5}},假设选择P中各个元素的费用为1、1.5、1.5、0.8、0.8、1,试从P中选一些元素使之覆盖S且所选元素费用之和最小。
解:
记
,i=1,2,3,4,5,6
得0-1规划模型:
在Lindo中输入
minx1+1.5x2+1.5x3+0.8x4+0.8x5+x6
st
x1+x2+x5>1
x1+x3>1
x2+x4>1
x3+x6>1
x2+x3+x6>1
end
int6
然后按Solve菜单或快捷键得运行结果。
OBJECTIVEFUNCTIONVALUE
1)2.800000
VARIABLEVALUEREDUCEDCOST
X11.0000001.000000
X20.0000001.500000
X30.0000001.500000
X41.0000000.800000
X50.0000000.800000
X61.0000001.000000
例3:
混合整数规划问题
某厂有3种矿石资源甲、乙、丙,可以用来生产4种不同的产品A1,A2,A3,A4,其单位消耗、利润、固定成本(不生产则不需要)等数据如下,问应如何安排生产?
产品
需要资源
A1
A2
A3
A4
资源总量
甲
8
7
6
5
1000
乙
5
3
5
5
800
丙
2
5
4
5
600
单位利润
250
235
210
190
固定成本
2000
1500
1200
900
解:
用xi表示生产Ai的数量(i=1,2,3,4),
yi=1表示要生产Ai,=0表示不生产Ai(i=1,2,3,4)
则得模型:
M表示一个充分大的正常数;
程序:
max250x1+235x2+210x3+190x4-2000y1-1500y2-1200y3-900y4
st
8x1+7x2+6x3+5x4<1000
5x1+3x2+5x3+5x4<800
2x1+5x2+4x3+5x4<600
x1-9999y1<0
x2-9999y2<0
x3-9999y3<0
x4-9999y4<0
end
inty1
inty2
inty3
inty4
运行结果:
OBJECTIVEFUNCTIONVALUE
1)31500.00
VARIABLEVALUEREDUCEDCOST
Y11.0000002000.000000
Y20.0000001500.000000
Y30.0000001200.000000
Y41.000000900.000000
X166.6666640.000000
X20.00000013.000000
X30.0000000.000000
X493.3333360.000000
(答案:
最大利润31500产品数量A1=200/3A2=0A3=0A4=280/3)
例4:
帆船生产问题
一公司每个季度能正常生产40条帆船,生产费用为每条400美元;已知某年四个季度帆船的需求量是40,60,75,25(每个季度末交货),为此需加班,加班生产每条帆船的费用为450美元,多余生产的帆船每季度的库存费用为20美元,另生产开始前有10条船,问如何安排可使总费用最小?
解:
记ri表示第i季度的正常生产帆船数量;(i=1,2,3,4)
记pi表示第i季度的加班生产帆船数量;(i=1,2,3,4)
记vi表示第i季度的库存量;(i=1,2,3,4)
得模型:
ri,pi,vi为整数;
程序:
min400r1+400r2+400r3+400r4+
450p1+450p2+450p3+450p4+
20v1+20v2+20v3+20v4
st
r1<40
r2<40
r3<40
r4<40
v1=10
v1+r1+p1-v2=40
v2+r2+p2-v3=60
v3+r3+p3-v4=75
v4+r4+p4=25
end
gin12
结果:
OBJECTIVEFUNCTIONVALUE
1)78650.00
VARIABLEVALUEREDUCEDCOST
R140.000000400.000000
R240.000000400.000000
R340.000000400.000000
R425.000000400.000000
P10.000000450.000000
P210.000000450.000000
P335.000000450.000000
P40.000000450.000000
V110.00000020.000000
V210.00000020.000000
V30.00000020.000000
V40.00000020.000000
例5.资金分配问题
假定有一笔资金b=100万元,现有7个投资项目,各项目的投资额和收益如下表:
项目
1
2
3
4
5
6
7
投资额a万
10
14
19
21
28
32
40
收益c万
3
4
5
6
7
9
13
问如何分配使收益最大?
解:
模型为
Lindo程序为:
max3x1+4x2+5x3+6x4+7x5+9x6+13x7
st
10x1+14x2+19x3+21x4+28x5+32x6+40x7<100
end
int7
参考答案:
投资项目1、2、6、7,最大收益29)
例6.用LINDO解目标规划
通过求解目标规划问题的有效算法——序贯式算法可将目标规划分解成计算二个线性规划。
先求第一个目标函数的最优值
mind1_+d1
ST
x1-10x2+d1_-d1=50
3x1+5x2+d2_-d2=20
end
(求得d1_+d1的最优值为0)
然后再求第二个目标函数的最优值,注意要把第一个目标函数的最优值d1_+d1=0作为一个约束条件。
min2d2+d3
ST
x1-10x2+d1_-d1=50
3x1+5x2+d2_-d2=20
8x1+6x2+d3_-d3=100
d1_+d1=0
end
即可算得第二级最优值2d2+d3=560
练习1:
平板车装货问题(美国1988年数学建模竞赛B题)
答案:
最大装载厚度2039.4厘米。
程序:
x1~x7分别为第1辆平板车上7种货物的装载数,x8~x14为第2辆车
max48.7x1+48.7x8+52.0x2+52x9+61.3x3+61.3x10+72.0x4+72x11+48.7x5+48.7x12+52.0x6+52x13+64.0x7+64x14
st
48.7x1+52.0x2+61.3x3+72.0x4+48.7x5+52.0x6+64.0x7<1020
48.7x8+52.0x9+61.3x10+72.0x11+48.7x12+52.0x13+64.0x14<1020
2000x1+3000x2+1000x3+500x4+4000x5+2000x6+1000x7<40000
2000x8+3000x9+1000x10+500x11+4000x12+2000x13+1000x14<40000
48.7x5+48.7x12+52.0x6+52x13+64.0x7+64x14<302.7
x1+x8<8
x2+x9<7
x3+x10<9
x4+x11<6
x5+x12<6
x6+x13<4
x7+x14<8
end
gin14
答案:
OBJECTIVEFUNCTIONVALUE
1)2039.400
VARIABLEVALUEREDUCEDCOST
X12.000000-48.700001
X86.000000-48.700001
X25.000000-52.000000
X92.000000-52.000000
X30.000000-61.299999
X109.000000-61.299999
X45.000000-72.000000
X111.000000-72.000000
X53.000000-48.700001
X120.000000-48.700001
X63.000000-52.000000
X130.000000-52.000000
X70.000000-64.000000
X140.000000-64.000000
二、Lingo
最新版本:
8.0版(解密版)
限制:
约束条件、变量、整数变量均无限制
功能:
可以求解非线性规划。
也可以做线性规划、整数规划,可以完全代替Lindo)
特点:
运算速度快,允许使用集合来描述大规模的优化问题;
例1:
求解非线性规划
程序:
model:
模型输入开始
min=3*x^2+y^2-x*y+0.4*y;目标函数必须以’min=’或‘max=’开始
1.2*x+0.9*y>1.1;每条语句必须以;结尾
x+y=1;
y<0.7;
end模型输入结束
运行结果:
Localoptimalsolutionfoundatiteration:
12(局部最优解)
Objectivevalue:
1.355556
VariableValueReducedCost
X0.66666670.000000
Y0.33333330.000000
注意:
1.运算符不能省略,比如要输入4x2,应表示为4*x^2 ;
2.变量已经假定非负;
3.变量可以出现在约束条件的右边;
4.数学内部函数:
以@打头
@ABS(x)@COS(x)@EXP(x)@LOG(x)@SIGN(x)
@SIN(x)@SMAX(x1,x2,x3,…,xn)@SMIN(…)@TAN(x)
@FLOOR(x)最接近x的整数
5.变量定界函数
@BND(L,x,U)限制x的范围L<=x<=U
@BIN(x)x为0或1
@FREE(x)取消对x的限制
@GIN(x)x为整数
给变量定界时须在模型输入结束之前,这与lindo是不同的;
6.概率函数
@PSN(x)正态分布的分布函数等14个函数,可通过帮助查询使用方法。
例2:
挂轮问题
求4个整数20到100的整数a,b,c,d使得
最小。
解:
model:
min=@ABS(z)+1;
z=3.141592653589793238462643-x*y/(u*v);
@BND(20,x,100);
@BND(20,y,100);
@BND(20,u,100);
@BND(20,v,100);
@GIN(x);
@GIN(y);
@GIN(u);
@GIN(v);
end
结果:
Localoptimalsolutionfoundatiteration:
72952(局部最优解)
Objectivevalue:
0.5826206E-04
VariableValueReducedCost
Z0.5826206E-040.000000
X95.00000-0.3306879E-01
Y25.00000-0.1256614
U28.000000.1121977
V27.000000.1163532
华罗庚书中给出的最好的结果是:
x=51,y=77,u=50,v=25
例3.选址问题
设某城市有某种物品的10个需求点,第i个需求点Pi的坐标为(ai,bi),道路网与坐标轴平行,彼此正交。
现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在x界于[5,10],y界于[5.10]的范围之内。
问该中心应建在何处为好?
P点的坐标为:
ai
1
4
3
5
9
12
6
20
17
8
bi
2
10
8
18
1
4
5
10
8
9
建立数学模型:
设供应中心的位置为(x,y),要求它到最远需求点的距离尽可能小,此处采用沿道路行走计算距离,可知每个用户点Pi到该中心的距离为|x-ai|+|y-bi|,于是有:
记
,则原模型可化为:
输入程序:
model:
min=z;
@ABS(x-1)+@ABS(y-2)@ABS(x-4)+@ABS(y-10)@ABS(x-3)+@ABS(y-8)@ABS(x-5)+@ABS(y-18)@ABS(x-9)+@ABS(y-1)@ABS(x-12)+@ABS(y-4)@ABS(x-16)+@ABS(y-5)@ABS(x-20)+@ABS(y-10)@ABS(x-17)+@ABS(y-8)@ABS(x-8)+@ABS(y-9)@BND(5,x,10);
@BND(5,y,10);
end
结果:
Globaloptimalsolutionfoundatiteration:
47(全局最优解)
Objectivevalue:
13.50000
VariableValueReducedCost
Z13.500000.000000
X7.0000000.000000
Y9.5000000.000000
三、用Lingo描述大规模数学规划
当约束和数据较多时采用的输入方法,可分为四个部分,具体格式如下:
model:
1.集合部分;
SETS:
集合名/1..n/:
属性1,属性2,…
ENDSETS
2.目标函数与约束部分;
3.数据部分;(:
变量=?
表示在运行时输入变量值,只用于单个变量)
DATA:
……
ENDDATA
4.初始化部分;(若不需要初值,则此部分可省略)
INIT:
……
ENDINIT
end
集合定义格式有两种:
setname/memberlist(or1..n)/:
attribute,attribute,…用集合定义一维变量
setname(set1,set2,…):
attribute,attribute,…用集合定义多维变量
一个集合只需要给出维数(memberlist,用1..n表示或其它文字符号表示或用集合表示),后接具有该维数的变量(attribute)。
描述大规模规划所需要的集合函数主要有4个:
@FOR(集合名:
约束表达式)对集合的每个元素独立按约束表达式生成约束
@MAX(集合名:
表达式)返回按表达式计算集合中每个元素的最大值
@MIN(集合名:
表达式)返回最小值
@SUM(集合名:
表达式)返回和
集合名后可接逻辑表达式,格式为:
@函数(集合|逻辑表达式:
表达式)
逻辑运算符:
逻辑运算符
#AND#
#OR#
#NOT#
意义
与
或
非
关系运算符:
关系运算符
#EQ#
#NE#
#GT#
#GE#
#LT#
#LE#
意义
等于
不等于
大于
大于等于
小于
小于等于
例1.1995年全国大学生数学建模竞赛A题飞行管理问题
其数学模型为:
这里
为六架飞机调整的飞行角度,
为常数。
使用集合描述的程序:
model:
sets:
S/1..6/:
z;
SS(S,S):
a,b;
endsets
min=@Sum(S:
@Abs(z));
@For(S(i):
@BND(-30,z(i),30));
@For(SS(i,j)|i#NE#j:
@Abs(b(i,j)+0.5*z(i)+0.5*z(j))>a(i,j));
data:
a=
0.005.3932.235.0920.962.23
5.390.004.806.615.813.82
32.234.800.004.3622.832.13
5.096.614.360.004.542.99
20.965.8122.834.540.002.31
2.233.822.132.992.310.00;
b=
0.00109.26-128.2524.18173.0714.47
109.260.00-88.87-42.24-92.309.00
-128.25-88.870.0012.48-58.790.31
24.18-42.2412.480.005.97-3.53
173.07-92.30-58.795.870.001.91
14.479.000.31-3.531.910.00;
enddata
end
结果:
Globaloptimalsolutionfoundatiteration:
61(全局最优解)
Objectivevalue:
3.640000
VariableValueReducedCost
Z
(1)0.0000000.000000
Z
(2)0.0000000.000000
Z(3)2.5600000.000000
Z(4)0.0000000.000000
Z(5)0.0000000.000000
Z(6)1.0800000.000000
例2.仓库与客户物资分配供应问题
某地区拟在10个地点建立仓库以存放某种物资,用于供应20个客户,已知下列数据:
(1)建立仓库的固定费用(单位:
万元)
仓库
仓库1
仓库2
仓库3
仓库4
仓库5
仓库6
仓库7
仓库8
仓库9
仓库10
固定费用
2
3
4
2
3
4
2
3
4
5
(2)某仓库供应某客户全部需求量时的运费(单位:
万元)
仓库1
仓库2
仓库3
仓库4
仓库5
仓库6
仓库7
仓库8
仓库9
仓库10
客1
9
10
2
6
7
15
15
1
18
6
客2
14
16
10
4
10
18
14
1
16
7
客3
6
9
2
1
20
14
20
5
20
17
客4
15
12
18
9
17
18
12
2
18
4
客5
6
8
4
3
7
11
6
2
5
12
客6
19
14
19
3
9
4
15
5
20
4
客7
11
4
8
5
13
20
20
16
8
19
客8
19
20
13
15
16
20
3
8
6
4
客9
4
9
15
6
9
13
1
7
17
13
客10
5
13
9
10
15
1
16
7
20
16
客11
3
2
4
9
13
10
6
12
9
7
客12
6
17
8
13
10
19
6
9
19
6
客13
4
18
16
6
12
6
6
5
1
1
客14
10
19
2
4
12
4
20
12
10
14
客15
12
15
15
8
4
12
3
6