Lindo 和Lingo 数学软件的简单使用方法
一、Lindo
最新版本:6.1版(注册版)
限制:4000个约束、8000个变量、800个整型变量
功能:可以求解线性规划、整数规划、混合整数规划、二次规划、目标规划。我们主要用它来求解整数规划或混合整数规划。 特点:执行速度非常快 例1:求解整数规划问题
maxz?5x1?8x2s..tx1?x2?65x1?9x2?45x1,x2?0且整解:在lindo的运行窗口中输入 max 5x1+8x2 st
x1+x2<6 5x1+9x2<45 end gin 2
然后按Solve菜单或快捷键得运行结果。
OBJECTIVE FUNCTION VALUE (目标函数最优值) 1) 40.00000
VARIABLE VALUE REDUCED COST (变量增加1时目标函数改变量) X1 0.000000 -5.000000 X2 5.000000 -8.000000
ROW SLACK OR SURPLUS DUAL PRICES (行) (松弛变量值) (对偶价格,表示约束右边常数增加1时目标函数改变量)) 2) 1.000000 0.000000 3) 0.000000 0.000000
RANGES IN WHICH THE BASIS IS UNCHANGED (灵敏度分析) OBJ COEFFICIENT RANGES(目标函数中变量的系数的变动范围,在此范围内最优解不变) VARIABLE CURRENT ALLOWABLE ALLOWABLE
COEF(当前系数) INCREASE(增加量) DECREASE(减少量) X1 5.000000 0.000000 INFINITY X2 8.000000 0.000000 INFINITY
RIGHTHAND SIDE RANGES(约束条件右边常数的变化范围,在此范围内最优基不变) ROW CURRENT ALLOWABLE ALLOWABLE
RHS(当前系数)INCREASE(增加量) DECREASE(减少量) 2 6.000000 INFINITY 1.000000 (第一个约束) 3 45.000000 INFINITY 0.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 变量 变量为整数变量 gin n
int n 模型中的前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且所选元素费用之和最小。 解:记xi???1,若P中第i元素被中,i=1,2,3,4,5,6
?0,否得0-1规划模型:
minz?x1?1.5x2?1.5x3?0.8x4?0.8x5?x6?x1?x2?x5?1?x?x?113??s..t?x2?x4?1?x?x?1?36??x2?x3?x6?1xi?0或1,i?1,2,3,4,5,6
在Lindo中输入
min x1+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 int 6
然后按Solve菜单或快捷键得运行结果。 OBJECTIVE FUNCTION VALUE 1) 2.800000
VARIABLE VALUE REDUCED COST X1 1.000000 1.000000 X2 0.000000 1.500000 X3 0.000000 1.500000 X4 1.000000 0.800000 X5 0.000000 0.800000 X6 1.000000 1.000000
例3:混合整数规划问题
某厂有3种矿石资源甲、乙、丙,可以用来生产4种不同的产品A1,A2,A3,A4,其单位消耗、利润、固定成本(不生产则不需要)等数据如下,问应如何安排生产? 需要资源 甲 乙 A1 8 5 A2 7 3 产品 A3 6 5 A4 5 5 资源总量 1000 800 丙 单位利润 固定成本 2 250 2000 5 235 1500 4 210 1200 5 190 900 600 解:用xi表示生产Ai的数量(i=1,2,3,4),
yi=1 表示要生产Ai,=0表示不生产Ai(i=1,2,3,4)
maxz?250x1?235x2?210x3?190x4?2000y1?1500y2?1200y3?900y4?8x1?7x2?6x3?5x4?1000?5x?3x?5x?5x?8001234?则得模型:?s..t?2x1?5x2?4x3?5x4?600?0?x?My,i?1,2,3,4ii???yi?0,1
M表示一个充分大的正常数;
程序:
max 250x1+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 int y1 int y2 int y3 int y4
运行结果:
OBJECTIVE FUNCTION VALUE 1) 31500.00
VARIABLE VALUE REDUCED COST Y1 1.000000 2000.000000 Y2 0.000000 1500.000000 Y3 0.000000 1200.000000 Y4 1.000000 900.000000 X1 66.666664 0.000000 X2 0.000000 13.000000 X3 0.000000 0.000000 X4 93.333336 0.000000
(答案:最大利润 31500 产品数量 A1=200/3 A2=0 A3=0 A4=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) 得模型:
minz?400?ri?450?pi?20?vii?1i?1i?1444s..t0?ri?40,pi?0,vi?0,i?1,2,3,4v1?r1?p1?40?v2v2?r2?p2?60?v3v3?r3?p3?75?v4v4?r4?p4?25v1?10 ri,pi,vi为整数;
程序:
min 400r1+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 gin 12
结果:
OBJECTIVE FUNCTION VALUE 1) 78650.00
VARIABLE VALUE REDUCED COST R1 40.000000 400.000000 R2 40.000000 400.000000 R3 40.000000 400.000000 R4 25.000000 400.000000 P1 0.000000 450.000000 P2 10.000000 450.000000 P3 35.000000 450.000000 P4 0.000000 450.000000 V1 10.000000 20.000000 V2 10.000000 20.000000 V3 0.000000 20.000000 V4 0.000000 20.000000
例5.资金分配问题
假定有一笔资金b=100万元,现有7个投资项目,各项目的投资额和收益如下表: 项目 投资额a万 收益c万 1 10 3 2 14 4 3 19 5 4 21 6 5 28 7 6 32 9 7 40 13
问如何分配使收益最大? 解:模型为
maxz?3x1?4x2?5x3?6x4?7x5?9x6?13x7
?10x1?14x2?19x3?21x4?28x5?32x6?40x7?100 s..t?x?0,1,i?1,2,...,7?iLindo程序为:
max 3x1+4x2+5x3+6x4+7x5+9x6+13x7 st
10x1+14x2+19x3+21x4+28x5+32x6+40x7<100 end int 7
参考答案:投资项目1、2、6、7,最大收益29)
例6.用LINDO解目标规划
通过求解目标规划问题的有效算法——序贯式算法可将目标规划分解成计算二个线性规划。
min Z=((d1_+d1),(2d2+d3))?x1-10x2+d1_-d1=50?3x+5x+d_-d=20 ?1222s..t??8x1+6x2+d3_-d3=100?xi(i=1,2),dj_,dj(j=1,2,3)?0?
先求第一个目标函数的最优值 min d1_+d1 ST
x1-10x2+d1_-d1=50 3x1+5x2+d2_-d2=20 end
(求得d1_+d1 的最优值为0)
然后再求第二个目标函数的最优值,注意要把第一个目标函数的最优值d1_+d1=0作为一个约束条件。 min 2d2+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辆车 max
48.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