LINGO-LINDO简单实用教程

更新时间:2024-01-29 14:21:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Lindo 和Lingo 数学软件的简单使用方法

一、Lindo

最新版本:6.1版(注册版)

限制:4000个约束、8000个变量、800个整型变量

功能:可以求解线性规划、整数规划、混合整数规划、二次规划、目标规划。我们主要用它来求解整数规划或混合整数规划。 特点:执行速度非常快 例1:求解整数规划问题

maxz?5x1?8x2s.t.x1?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且所选元素费用之和最小。

?1,若P中第i元素被中解:记xi??,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?x3?1?1?s.t.?x2?x4?1?x?x?16?3??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?3x2?5x3?5x4?800?1则得模型:?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)

得模型:

444minz?400?ri?450?pi?20?vii?1i?1i?1s.t.0?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.??xi?0,1,i?1,2,...,7Lindo程序为:

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? ?3x1+5x2+d2_-d2=20s.t.?8x+6x2+d3_-d3=100?1?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

x4+x11<6 x5+x12<6 x6+x13<4 x7+x14<8 end gin 14

答案:

OBJECTIVE FUNCTION VALUE 1) 2039.400 VARIABLE VALUE REDUCED COST X1 2.000000 -48.700001 X8 6.000000 -48.700001 X2 5.000000 -52.000000 X9 2.000000 -52.000000 X10 X3 0.000000 9.000000 X4 5.000000 X11 X5 1.000000 3.000000 X12 0.000000 X13 X6 3.000000 0.000000 X7 0.000000 X14 0.000000 -61.299999 -61.299999 -72.000000 -72.000000 -48.700001 -48.700001 -52.000000 -52.000000 -64.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 模型输入结束

运行结果:

Local optimal solution found at iteration: 12 (局部最优解) Objective value: 1.355556

Variable Value Reduced Cost X 0.6666667 0.000000 Y 0.3333333 0.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:

a?bc?d最小。

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 结果:

Local optimal solution found at iteration: 72952 (局部最优解) Objective value: 0.5826206E-04 Variable Value Reduced Cost Z 0.5826206E-04 0.000000 X 95.00000 -0.3306879E-01 Y 25.00000 -0.1256614 U 28.00000 0.1121977 V 27.00000 0.1163532

华罗庚书中给出的最好的结果是:x=51,y=77,u=50,v=25

例3.选址问题 设某城市有某种物品的10个需求点,第i个需求点Pi的坐标为(ai,bi),道路网与坐标轴平行,彼此正交。现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在x界于[5,10],y界于[5.10]的范围之内。问该中心应建在何处为好? P点的坐标为:

ai bi 1 2 4 10 3 8 5 18 9 1 12 4 6 5 20 10 17 8 8 9 建立数学模型: 设供应中心的位置为(x,y),要求它到最远需求点的距离尽可能小,此处采用沿道路行走计算距离,可知每个用户点Pi到该中心的距离为 |x-ai|+|y-bi|,于是有:

?minx?ai?x?bi?ma??xx,yi??????10 s?t5?x?10,?5y?记z?max??x?ai?x?bi??,则原模型可化为:

minz??x?ai?x?bi?z,i?1,2,...,10s.t.? ??5?x?10,5?y?10输入程序:

model:

min=z;

@ABS(x-1)+@ABS(y-2)

结果:

Global optimal solution found at iteration: 47 (全局最优解) Objective value: 13.50000

Variable Value Reduced Cost Z 13.50000 0.000000 X 7.000000 0.000000 Y 9.500000 0.000000

三、用Lingo描述大规模数学规划

当约束和数据较多时采用的输入方法,可分为四个部分,具体格式如下: model:

1. 集合部分;

SETS:

集合名/1..n/:属性1,属性2,…

ENDSETS

2. 目标函数与约束部分;

3. 数据部分; (:变量=? 表示在运行时输入变量值,只用于单个变量)

DATA: …… ENDDATA 4. 初始化部分;(若不需要初值,则此部分可省略)

INIT:

…… ENDINIT end

集合定义格式有两种:

setname/member list (or 1..n)/: attribute, attribute,… 用集合定义一维变量 setname(set1,set2,…): attribute, attribute,… 用集合定义多维变量

一个集合只需要给出维数(member list, 用1..n表示或其它文字符号表示或用集合表示),后接具有该维数的变量(attribute)。

描述大规模规划所需要的集合函数主要有4个:

@FOR(集合名:约束表达式) 对集合的每个元素独立按约束表达式生成约束 @MAX(集合名:表达式) 返回按表达式计算集合中每个元素的最大值 @MIN(集合名:表达式) 返回最小值 @SUM(集合名:表达式) 返回和 集合名后可接逻辑表达式,格式为:

@函数(集合|逻辑表达式:表达式)

逻辑运算符:

逻辑运算符 意义 关系运算符: 关系运算符 #AND# 与 #OR# 或 #GT# 大于 #GE# 大于等于 #NOT# 非 #LT# 小于 #LE# 小于等于 意义

#EQ# 等于 #NE# 不等于 例1.1995年全国大学生数学建模竞赛A题飞行管理问题

其数学模型为:

6min??i?1is.t.?ij?12(?i??j)??ij,i,j?1,2,...,6;i?j?

?i?30,i?1,2,...,6这里?i为六架飞机调整的飞行角度,?ij,?ij为常数。 使用集合描述的程序:

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.00 5.39 32.23 5.09 20.96 2.23 5.39 0.00 4.80 6.61 5.81 3.82 32.23 4.80 0.00 4.36 22.83 2.13 5.09 6.61 4.36 0.00 4.54 2.99 20.96 5.81 22.83 4.54 0.00 2.31 2.23 3.82 2.13 2.99 2.31 0.00; b=

0.00 109.26 -128.25 24.18 173.07 14.47 109.26 0.00 -88.87 -42.24 -92.30 9.00 -128.25 -88.87 0.00 12.48 -58.79 0.31

24.18 -42.24 12.48 0.00 5.97 -3.53 173.07 -92.30 -58.79 5.87 0.00 1.91 14.47 9.00 0.31 -3.53 1.91 0.00; enddata end

结果:

Global optimal solution found at iteration: 61 (全局最优解) Objective value: 3.640000

Variable Value Reduced Cost Z( 1) 0.000000 0.000000 Z( 2) 0.000000 0.000000 Z( 3) 2.560000 0.000000 Z( 4) 0.000000 0.000000 Z( 5) 0.000000 0.000000 Z( 6) 1.080000 0.000000

例2.仓库与客户物资分配供应问题

某地区拟在10个地点建立仓库以存放某种物资,用于供应20个客户,已知下列数据: (1) 建立仓库的固定费用(单位:万元) 仓库 固定费用 仓库1 仓库2 仓库3 仓库4 仓库5 仓库6 仓库7 仓库8 仓库9 仓库10 3 4 5 2 3 4 2 3 4 2 (2) 某仓库供应某客户全部需求量时的运费(单位:万元) 客1 客2 客3 客4 客5 客6 客7 客8 客9 客10 客11 客12 客13 客14 客15 客16 客17 客18 客19 9 14 6 15 6 19 11 19 4 5 3 6 4 10 12 19 8 7 10 10 16 9 12 8 14 4 20 9 13 2 17 18 19 15 18 16 9 8 2 10 2 18 4 19 8 13 15 9 4 8 16 2 15 11 8 8 3 6 4 1 9 3 3 5 15 6 10 9 13 6 4 8 5 2 9 13 7 10 20 17 7 9 13 16 9 15 13 10 12 12 4 16 6 16 6 17 15 18 14 18 11 4 20 20 13 1 10 19 6 4 12 20 20 1 20 7 15 14 20 12 6 15 20 3 1 16 6 6 6 20 3 17 6 11 17 12 仓库1 仓库2 仓库3 仓库4 仓库5 仓库6 仓库7 仓库8 仓库9 仓库10 1 1 5 2 2 5 16 8 7 7 12 9 5 12 6 4 17 11 11 20 18 16 20 18 5 20 8 6 17 20 9 19 1 10 9 5 8 9 17 15 6 7 17 4 12 4 19 4 13 16 7 6 1 14 11 5 7 9 11 13 客20 4 8 14 8 问应如何选择仓库地址使总费用最小?

解:设xij为仓库i供应第j个客户全部需求量时的百分数,yi =1或0,1表示要建仓库i,0表示不建,di为建仓库i的固定费用,cij为仓库i供应第j个客户全部需求量时的运费,则得混合整数规划模型:

1020ij10minz???ci?1j?1xij??di?1iyi?10??xij?1,j?1,2,...,20?i?120??s.t.??xij?20yi,i?1,2,...,10?j?1?xij?0,i?1,2,...,10;j?1,2,...,20???yi?0,1i?1,2,...,10

程序:

Model:

Sets: !定义集合;

CK/1..10/:y,d; !10个仓库,y和d都是10维的变量,其中y是01变量,d由下面数据给定; KH/1..20/; !20个客户;

SS(CK,KH):x,c; !x和c都是10*20的变量,x表示供应百分数,c表示全部供应的费用; EndSets

Min=@Sum(SS(i,j):c(i,j)*x(i,j))+@Sum(CK(i):d(i)*y(i));

@For(CK(i):@Sum(KH(j):x(i,j))<20*y(i)); !若不建某仓库,是没有物资的; @For(KH(j):@Sum(CK(i):x(i,j))=1); !每个客户需要供应的百分数之和都为1; @For(CK(i):@Bin(y(i))); !y是0、1变量限制; Data: !数据部分; d=2 ; c= 9 10 2 6 7 15 15 1 18 6 ; EndData End

14 16 10 4 10 18 14 1 16 7

6 9 2 1 20 14 20 5 20 17

15 12 18 9 17 18 12 2 18 4

6 8 4 3 7 11 6 2 5 12

19 14 19 3 9 4 15 5 20 4

11 4 8 5 13 20 20 16 8 19

19 20 13 15 16 20 3 8 6 4

4 9 15 6 9 13 1 7 17 13

5 13 9 10 15 1 16 7 20 16

3 2 4 9 13 10 6 12 9 7

6 17 8 13 10 19 6 9 19 6

4 18 16 6 12 6 6 5 1 1

10 19 2 4 12 4 20 12 10 14

12 15 15 8 4 12 3 6 9 11

19 18 11 5 16 20 17 4 5 5

8 16 8 2 6 20 6 17 8 7

7 9 8 9 16 1 11 11 9 9

3

4

2

3

4

2

3

4

5

结果:

Global optimal solution found at iteration: 175

Objective value: 69.00000 Variable Value Reduced Cost Y( 1) 1.000000 2.000000 Y( 2) 0.000000 -17.00000 Y( 3) 1.000000 4.000000 Y( 4) 1.000000 2.000000 Y( 5) 0.000000 -37.00000 Y( 6) 1.000000 4.000000 Y( 7) 1.000000 2.000000 Y( 8) 1.000000 3.000000 Y( 9) 0.000000 Y( 10) 0.000000 -56.00000 -55.00000

本文来源:https://www.bwwdw.com/article/sy4w.html

Top