lingo优化练习即详解
- 格式:doc
- 大小:245.00 KB
- 文档页数:11
首页一、Lingo简介1. 目标函数一个函数解析式,你希望求它的最大或最小值max=函数解析式;或min=函数解析式;例max=3*b+2*c^2;min=b^(1/3)-c*k;Lingo的语句以; 号结束。
2. 运算加(+),减(-),乘(*),除(/),乘方(x^a)3. 变量用字母或字母数字的组合表示例a,b,cc1,x1。
Lingo的变量缺省值为非负数。
4. 限制条件一组等式或不等式。
Lingo的>,<与>=,<=等价。
示例程序13*x1+5*x2>=45;Lingo的注释语句用!开头用;结束。
5. 变量类型变量类型说明@bin( 变量名) ; 限制该变量为0或1。
@bnd( a,变量名, b); 限制该变量介于a,b之间。
@free(变量名); 允许该变量为负数。
@gin( 变量名); 限制该变量为整数。
二、Lingo高级sets语句连续六个月的产量,可以用x1,x2,x3,x4,x5,x6表示, 但十二个月的产量用同样的方法表示就显繁琐。
Lingo可以通过sets语句设置数组功能使问题变得简单。
例定义数组x, 有x(1),x(2),x(3),x(4)…x(12)个成员,用以表示十二个月的产量。
sets:r/1..12/:x; !r是组的类型名,x数组名;endsets;sets语句以sets开头,endsets结束。
示例程序2data语句有时,我们要用到常数数组,比如在400*x(1)+200*x(2)+150*x(3)+500*x(4)>=500中,x(1), x(2), x(3), x(4)的系数分别为400, 200, 150, 500,此时,可用data语句。
例定义数组a, 其中a(1)=400,a(2)=200,a(3)=150,a(4)=500。
sets:l/1..4/: a,x;endsetsdata:a=400 200 150 500;enddatadata语句是以data开头,enddata结尾。
Lingo 精选题目及答案答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。
1、简单线性规划求解(目标函数)2134m axx x z += s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x2、整数规划求解219040Maxx x z +=⎪⎩⎪⎨⎧≥≤+≤+0,702075679212121x x x x x x 3、0-1规划求解Max 432215.18.04.0x x x x f +++=10106234321≤+++x x x x10,,,4321或=x x x x4、非线性规划求解||4||3||2||m in4321x x x x z +++=s.t. ⎪⎪⎩⎪⎪⎨⎧-=+--=-+-=+--2132130432143214321x x x x x x x x x x x x5、集合综合应用产生一个集合5052--=x x y ,(10,...,2,1=x ),求y 前6个数的和S 1,后6个数的和S 2,第2~8个数中的最小值S 3,最大值S 4。
6、综合题要求列出具体的目标函数和约束条件,然后附上Lingo 程序和最终结果。
6.1 指派问题有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:问指派哪个人去完成哪项工作,可使总的消耗时间为最小?6.2 分配问题某两个煤厂A1,A2每月进煤数量分别为60t和100t,联合供应3个居民区B1,B2,B3。
3个居民区每月对煤的需求量依次分别为50t,70t,40t,煤厂A1离3个居民区B1,B2,B3的距离依次分别为10km,5km,6km,煤厂A2离3个居民区B1,B2,B3的距离分别为4km,8km,12km。
问如何分配供煤量使得运输量(即t·km)达到最小?1、model:max=4*x1+3*x2;2*x1+x2<10;x1+x2<8;x2<7;end2、model:max=40*x1+90*x2;9*x1+7*x2<56;7*x1+20*x2<70;gin(x1);gin(x2);end3、model:max=x1^2+0.4*x2+0.8*x3+1.5*x4;3*x1+2*x2+6*x3+10*x4<10;bin(x1); bin(x2);bin(x3); bin(x4);end4、model:max=abs(x1)+2*abs(x2)+3*abs(x3)+4*abs(x4);x1-x2-x3+x4=0;x1-x2+x3-3*x4=1;x1-x2-2*x3+3*x4=-1/2;end5、model:sets:jihe/1..10/:y;ss/1..4/:S;endsets!由于y和s中部分有负数,所以要先去掉这个约束;for(jihe:free(y));for(ss(i):free(S));!产生元素;for (jihe(x):y(x)=x^2-5*x-50); S(1)=sum (jihe(i)|i#le#6:y(i)); S(2)=sum (jihe(i)|i#ge#5:y(i));S(3)=min (jihe(i)|i#ge#2 #and# i#le#8:y(i)); S(4)=max (jihe(i)|i#ge#2 #and# i#le#8:y(i)); end6.1、设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:⎩⎨⎧=其他件工作个工人去做第指派第01j i f ijmin ∑∑==⨯4141i j ij ij t fs.t.141=∑=i ijf()4,3,2,1=j 每份工作都有一人做∑==411j ijf()4,3,2,1=i 每人都只做一项工作model : sets :work/A B C D/;worker/jia yi bing ding/; time(worker,work):t,f; endsets!目标函数可以用[obj]标志出,也可以省略; [obj] min =sum (time(i,j):t(i,j)*f(i,j)); data :!可以直接复制表格,但是在最后要有分号; t=; e nddata!每份工作都有一人做;for (work(j):sum (time(i,j):f(i,j))=1); !每人都只做一项工作;for (worker(i):sum (time(i,j):f(i,j))=1); !让f 取0-1值,此条件可以省略; !for(time(i,j):bin(f(i,j))); end6.2设:煤厂进煤量i s ,居民区需求量为i d ,煤厂i 距居民区j 的距离为ij L ,煤厂i 供给居民区j 的煤量为ij g那么可以列出如下优化方程式∑∑==⨯=3121min j i ij ij L gs.t ()3,2,121==∑=j d gi j ij()2,131=≤∑=i s gj iijmodel : sets :supply/1,2/:s; demand/1,2,3/:d;link(supply,demand):road,sd; endsets data :road=10 5 6 4 8 12; d=50 70 40; s=60 100; enddata[obj] min =sum (link(i,j):road(i,j)*sd(i,j)); for (demand(i):sum (supply(j):sd(j,i))=d(i)); for (supply(i):sum (demand(j):sd(i,j))<s(i));end1.线性规划模型。
Lingo 软件在求解数学优化问题1.某昼夜服务的公交路线每天各时间区段内需司机和乘务人员如下:设司机和乘务人员分别在各时间区段一开始上班,并连续工作八小时,问该公交线路至少配备多少名司机和乘务人员?从第一班开始排,试建立线性模型。
分析与求解:注意在每一时间段里上班的司机和乘务人员中,既包括在该时间段内开始时报到的人员,还包括在上一时间段工作的人员。
因为每一时间段只有四个小时,而每个司乘人员却要连续工作八个小时。
因此每班的人员应理解为该班次相应时间段开始时报到的人员。
设i x 为第i 班应报到的人员(6,,2,1 =i ),则应配备人员总数为:∑==61i i x Z按所需人数最少的要求,可得到线性模型如下:∑==61min i i x Z161223344556112660706050..203060,,,0x x x x x x x x s t x x x x x x x x +≥⎧⎪+≥⎪⎪+≥⎪+≥⎪⎨+≥⎪⎪+≥⎪≥⎪⎪≥⎩ LINGO 程序如下:MODEL:min=x1+x2+x3+x4+x5+x6;x1+x6>=60;x1+x2>=70;x2+x3>=60;x3+x4>=50;x4+x5>=20;x5+x6>=30;x1>=60;END得到的解为:x1=60,x2=10,x3=50,x4=0,x5=30,x6=0;配备的司机和乘务人员最少为150人。
2 某地区有三个农场共用一条灌渠,每个农场的可灌溉地及分配到的最大用水量如下表:各农场均可种植甜菜、棉花和高粱三种作物,各种作物的用水量、净收益及国家规定三个农场达成协议,他们的播种面积与其可灌溉面积相等,而各种农场种何种作物并无限制。
问如何制定各农场种植计划才能在上述限制条件下,使本地区的三个农场的总净收益最大。
设农场1种植的甜菜、棉花和高粱分别为111,,z y x 亩,农场2种植的甜菜、棉花和高粱分别为222,,z y x 亩,农场3种植的甜菜、棉花和高粱分别为333,,z y x 亩。
第一题:一、摘要本文是一篇关于基金的使用计划模型。
在现实经济高速发展的背景下,人们越来越清醒地意识到:一个合理的数学应用模型对于现今生产、投资、规划等实际应用项目的重要性。
本文所建立的存款模型就是个很好的例子,此模型最终要解决的是选择最佳基金使用计划,使得学校基金会能够有充分的资金在基金会运转。
这个模型的解决是我们更清楚掌握了最优化模型的解决方法及LINGO软件求解线性规划的方法。
二、问题的提出某校基金会有一笔数额为M元的基金,打算将其存入银行或购买国库券。
当前银行存款及各期国库券的利率见下表。
假设国库券每年至少发行一次,发行时间不定。
取款政策参考银行的现行政策。
校基金会计划在n年内每年用部分本息奖励优秀师生,要求每年的奖金额大致相同,且在n年末仍保留原基金数额。
校基金会希望获得最佳的基金使用计划,以提高每年的奖金额。
请你帮助校基金会在如下情况下设计基金使用方案,并对M=5000万元,n=10年给出具体结果:1.只存款不购国库券;2.可存款也可购国库券。
3.学校在基金到位后的第3年要举行百年校庆,基金会希望这一年的奖金二、模型的假设(1)银行利息和国库券结算方式为单利;(2) 定期存款和国库券不到期均不能取款;(3)国库券每年发行一期,发行月份不定,但于发行月一号发行;(4)基金结算后马上又进行投资(存入银行或买国库券)中间间隔时间不予考虑;(5)定期存款实际收益利率为公布利率的80%(20%为利息税上交国库)国库券存款利率与同期的定期存款利率相同,但不交利息税;(6)每年年初评奖且奖金数目相同(除第三问),N年后本金仍为M;三、符号的说明x第i年所存入银行的j年期的存款;ijy第i年说购买的j年期的国库券;ij'r银行同期活期利率;r银行同期活期税后利率;'r银行同期j年期固定利率;jr银行同期j年期固定利率税后利率;jM本金=5000万元,Z=每年的奖金四、模型的建立与求解第一种情况:只存款不买国库券我们考虑到这种情况下,存款的时间是一定的,所以活期和三个月,半年的利率都太低,所以在这种情况下,我们直接考虑一年的利率,这样才能获得较多的利息,从而使得每年发放的奖金数目尽可能多——即我们要实现的目标。
基础题:1.目标规划问题最近,某节能灯具厂接到了订购16000套A 型和B 型节能灯具的订货合同,合同中没有对这两种灯具的各自数量做要求,但合同要求工厂在一周内完成生产任务并交货。
根据该厂的生产能力,一周内可以利用的生产时间为20000min ,可利用的包装时间为36000min 。
生产完成和包装一套A 型节能灯具各需要2min ;生产完成和包装完成一套B 型节能灯具各需要1min 和3min 。
每套A 型节能灯成本为7元,销售价为15元,即利润为8元;每套B 型节能灯成本为14元,销售价为20元,即利润为6元。
厂长首先要求必须按合同完成订货任务,并且即不要有足量,也不要有超量。
其次要求满意销售额达到或者尽量接近275000元。
最后要求在生产总时间和包装总时间上可以有所增加,但过量尽量地小。
同时注意到增加生产时间要比包装时间困难得多。
试为该节能灯具厂制定生产计划。
解:将题中数据列表如下:根据问题的实际情况,首先分析确定问题的目标级优先级。
第一优先级目标:恰好完成生产和包装完成节能灯具16000套,赋予优先因子p1;第二优先级目标:完成或者尽量接近销售额为275000元,赋予优先因子p2; 第三优先级目标:生产和包装时间的增加量尽量地小,赋予优先因子p3; 然后建立相应的目标约束。
在此,假设决策变量12,x x 分别表示A 型,B 型节能灯具的数量。
(1) 关于生产数量的目标约束。
用1d -和1d +分别表示未达到和超额完成订货指标16000套的偏差量,因此目标约束为1111211min ,..16000z d d s t x x d d -+-+=+++-=要求恰好达到目标值,即正、负偏差变量都要尽可能地小(2) 关于销售额的目标约束。
用2d -和2d +分别表示未达到和超额完成满意销售指标275000元的偏差值。
因此目标约束为221222min ,..1520-275000.z d s t x x d d --+=++=要求超过目标值,即超过量不限,但必须是负偏差变量要尽可能地小,(另外:d +要求不超过目标值,即允许达不到目标值,就是正偏差变量要尽可能地小) (3) 关于生产和包装时间的目标约束。
lingo优化模型例题
以下是一道优化模型的例题,题目如下:
某公司的成本函数为 C(x) = 100x + 2000/x + 5000,其中 x 为产量。
该公司希望通过调整产量来最小化成本。
问该公司应该生产多少数量的产品才能使成本最低?
解题步骤如下:
1. 定义变量:设 x 为产量。
2. 建立目标函数:成本函数 C(x) = 100x + 2000/x + 5000。
3. 建立约束条件:无约束条件。
4. 建立优化模型:采用最小化模型。
minimize C(x)
subject to x > 0
5. 编写LINGO代码:
SETS:
N /x/;
ENDSETS
VARIABLES:
X;
ENDVARIABLES
OBJECTIVE:
MIN = 100*X + 2000/X + 5000;
END
END
6. 运行LINGO代码,得到最优解 X 的值即为该公司应该生产的产量。
注意:由于该模型只有一个变量和一个目标函数,并且无约束条件,所以优化问题比较简单,可以直接使用LINGO编写代码求解。
对于更复杂的优化模型,可能需要添加更多的变量、约束条件和目标函数,并使用适当的算法进行求解。
1、用LINGO 软件解方程组221212222359x x x x ⎧+=⎪⎨-=-⎪⎩。
2、用LINGO 软件解方程组1211221222/64x x x x x ⎧⎪-=-⎨⎪=⎩。
3、用LINGO 软件解线性规划问题4、用LINGO 软件解二次规划问题且12,x x 都是整数5、用LINGO 软件解下列问题(1)max 12z=x x +12121212..26,4520,,0,,s tx x x x x x x x +≤+≤≥为整数(2) min 2212z=x -3-2x +()() 22121212..-50,24,,0s tx x x x x x +≤+≤≥。
(3) min 2212z=x ++x +(1)(1) 22122..-20,1s tx x x +≤≥。
max 23,..4310,3512,,0.z x y s t x y x y x y =++≤+≤≥22121122121212max 982770.32,..100,2,,0,x x x x x x s t x x x x x x +---+≤≤≥6、用LINGO软件分别产生序列(1){1,3,5,7,9,11};(2){1,4,9,16,25,36};(3)1111 {1,,,,}6122030.7、已知向量c={1,3,0.5,7,5,2},用LINGO软件解答下列问题。
(1)求向量c前5个数中的最大值;(2)求向量c后4个数平方中的最小值;(3)求向量c 中所有数的和。
8、某学校游泳队要从5名队员中选4名参加4乘100米混合泳接力赛。
5名队员4种泳姿的百米成绩(单位:秒)-----------------------------------------------------------------------------------李王张刘赵蝶泳66.8 57.2 78 70 67.4仰泳75.6 66 67.8 74.2 71蛙泳87 66.4 84.6 69.6 83.8自由泳58.6 53 59.4 57.2 62.4-----------------------------------------------------------------------------------如何选拔?(1)请建立“0----1规划”模型;(2)用Lingo求解。
Lingo软件在求解数学优化问题的使用技巧LINGO是一种专门用于求解数学规划问题的软件包。
由于LINGO执行速度快,易于方便地输入、求解和分析数学规划问题,因此在教学、科研和工业界得到广泛应用。
LINGO 主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等。
LINGO的最新版本为,但解密版通常为和版本,本书就以为参照而编写。
1.LINGO编写格式LINGO模型以MODEL开始,以END结束。
中间为语句,分为四大部分(SECTION):(1)集合部分(SETS):这部分以“SETS:”开始,以“ENDSETS”结束。
这部分的作用在于定义必要的变量,便于后面进行编程进行大规模计算,就象C语言在在程序的第一部分定义变量和数组一样。
在LINGO中称为集合(SET)及其元素(MEMBER或ELEMENT,类似于数组的下标)和属性(A TTRIBUTE,类似于数组)。
LINGO中的集合有两类:一类是原始集合(PRIMITIVE SETS),其定义的格式为:SETNAME/member list(or 1..n)/:attribute,attribute,etc。
另一类是是导出集合(DERIVED SETS),即引用其它集合定义的集合,其定义的格式为:SETNAME(set1,set2,etc。
):attribute,attribute,etc。
如果要在程序中使用数组,就必须在该部分进行定义,否则可不需要该部分。
(2)目标与约束:这部分定义了目标函数、约束条件等。
一般要用到LINGO的内部函数,可在后面的具体应用中体会其功能与用法。
求解优化问题时,该部分是必须的。
(3)数据部分(DATA):这部分以“DATA:”开始,以“END DA TA”结束。
其作用在于对集合的属性(数组)输入必要的数值。
格式为:attribut=value_list。
该部分主要是方便数据的输入。
编写LINGO 程序并求解/*最优化实验*/第一题:某班准备从5名游泳队员中选择4人组成接力队,参与学校的4*100m 混合接力比赛。
5名队员4种泳姿的百米成绩如表所示,应如何选拔队员组成接力队?解:记甲、乙、丙、丁、戊分别为队员1,2,3,4,5i =;记蝶泳、仰泳、蛙泳、自由泳分别为泳姿1,2,3,4j =,记队员i 的第j 种泳姿的百米最好成绩为()ij c s 。
决策变量:引入0-1变量ij x ,若选择队员i 参加泳姿j 的比赛,1ij x =,否则记为0ij x =。
目标函数:当队员i 入选泳姿j 时,ij ij x c 表示队员的成绩,否则0ij ij x c =。
于是接力队的成绩可以表示为5411ij ij i j f x c ===邋,这就是该问题的目标函数。
约束条件:根据组成接力队的要求,ij x 应该满足下面两个条件:每人最多只能入选4种泳姿中的一种,即对于1,2,3,4,5i =,应有411ij j x =£å;每种泳姿必须有一个人参加,即对于1,2,3,4j =,应有511ij i x ==å。
综上所述,这个问题的优化模型可写作5411min ij ij i j f x c ===邋..s t 411,1,2,3,4,5ij j x i=?å甲乙 丙 丁 戊蝶泳1’06”8 57”2 1’18” 1’10” 1’07”4仰泳1’15”6 1’06” 1’07”8 1’14”2 1’11” 蛙泳 1’27” 1’06”4 1’24”6 1’09”6 1’23”8 自由泳 58”653”59”457”21’02”4511,1,2,3,4 ijix j ===å{}0,1ijx=模型代码如下:SETS:i/1..5/;j/1..4/;SS(i,j):x;ENDSETSMIN=66.8*x11+75.6*x12+87*x13+58.6*x14+57.2*x21+66*x22+ 66.4*x23+53*x24+78*x31+67.8*x32+84.6*x33+59.4*x34+70*x 41+74.2*x42+69.6*x43+57.2*x44+67.4*x51+71*x52+83.8*x53 +62.4*x54;x11+x12+x13+x14<=1;x21+x22+x23+x24<=1;x31+x32+x33+x34<=1;x41+x42+x43+x44<=1;x51+x52+x53+x54<=1;x11+x21+x31+x41+x51=1;x12+x22+x32+x42+x52=1;x13+x23+x33+x43+x53=1;x14+x24+x34+x44+x54=1;求解这个模型,结果如下。
实验报告专用纸实验室:机号:实验日期:三、实验步骤及方法(1)模型的假设①假设该投资为连续性投资,即该经理投资不会受到年限过长而导致资金周转困难;②假设证券税收政策稳定不变而且该经理优先考虑可以免税的市政证券的情况下再考虑其他证券种类以节约成本;③假设各证券之间相互独立而且各自风险损失率为零;④假设在经理投资后,各证券的信用等级、到期年限都没有发生改变;⑤假设投资不需要任何交易费或者交易费远远少于投资金额和所获得的收益,可以忽略不计;⑥假设所借贷资金所要支付的利息不会随时间增长,直接等于所给的利率乘上借贷资金;(2)问题分析问题一:该经理优先考虑可以免税的市政证券的情况下再考虑其他证券种类以节约成本,在假设都成立的条件下综合考虑约束资金和限制条件,将1000万资金按照一定的比例分别投资各种证券。
在满足政府及代办机构的证券总共至少要购进400万元;所购证券的平均信用等级不超过1.4;所购证券的平均到期年限不超过5年这三个约束条件下,不妨设投资证券A、B、C、D、E的金额分别为x1、x2、x3、x4、x5,最大利润为y建立线性规划模型,用lingo求解即可得到最优投资方案和最大利润。
问题二:利用问题一的模型进行灵敏度分析,把借贷的100万在投资后所获得的收益与借贷所要付出的利息进行比较,即与以2.75%的利率借到的100万资金的利息比较,若大于,则应该借贷;反之,则不借贷。
若借贷,投资方案需将问题一的模型的第二个约束条件右端10该为11,用lingo软件求解。
问题三:是否该改变要看最优解是否改变,如果各证券所对应的字数在最优解不变的条件下目标函数允许的变化范围内,则不应该改变投资方案,反之则改变投资方案。
(3)模型建立设投资证券A,B,C,D,E,的金额分别为x1,x2,x3,x4,x5(百万),最大利润为y,按照规定、限制和1000万元资金约束,列出模型:max y=0.043*x1+0.027*x2+0.022*x4+0.045*x5;s.t x2+x3+x4>=4;x1+x2+x3+x4+x5<=10;6*x1+6*x2-4*x3-4*x4+36*x5<=0;4*x1+10*x2-x3-2*x4-3*x5<=0;(4)模型求解四、实验数据及程序清单问题一求解:灵敏度分析:问题二:对问题一的求解后的影子价格分析可以知道,投资金额每增加100万元,收益可增加0.0298百万元,而借贷100万元所要支付的利息是0.0275百万元,比0.0298百万元少,所以应该借贷这100万元。
Lingo 作业解题过程1.某储蓄所每天的营业时间是上午9时到下午5时。
根据经验,每天不同时间段所需要的服务员数量如下表示。
储蓄所可以雇佣全时和半时两类服务员。
全时服务员每天报酬100元,从上午9时到下午5时工作,但中午12时到下午2时之间必须安排1h 的午餐时间。
储蓄所每天可以雇佣不超过3名的半时服务员,每个半时服务员必须连续工作4h,报酬40元,问储蓄所应如何雇用全时和半时服务员。
如果不能雇佣半时服务员,每天至少增加多少费用。
如果雇佣半时服务员的数量没有限制,每天可以减少多少费用。
时间段/h 9~10 10~11 11~12 12~1 1~2 2~3 3~4 4~5服务员数43465688解:(1)设1x 为雇佣的全职人数,2x 为12-1小时休息的人数,1y -5y 分别为1-5时段开始雇佣的半时人员的人数。
表1为各时间段的工作人数。
每个时间段的工作人数要满足题目中的要求。
表1 各时间段在工作的服务员 时间段/h 服务员9-10 11x y + 10-11 112x y y ++11-12311i i x y =+å12-14121i i x y x =+-å1-2522i i x y =+å2-3513i i x y =+å 3-4514i i x y =+å4-515x y +根据每个时段满足的要求,建立模型如下:()512311111145512211235115451min 100*x 140:(1)x y 4; (2) x 3; (3) x 4 ;(4)x x 6;(5)x5;(6)x 6(7)x 8;(8)x 83i i i i i i i i i i y st y y y y y y y y =========++>+>+>-+>+>+>+>+><å邋邋åå通过上述模型,利用lingo 编程求解如下: :sets :quanshi/1..2/:x;!x(1)为雇佣的全职人数,x (2)为12-1时休息的人数;banshi/1..5/:y; !y1-y5为1-5时间段雇佣的半时人数,超过5阶段雇佣半时员工不划算; endsetsmin =100*x(1)+@sum (banshi:y)*40; @sum (banshi:y)<3;@for (quanshi:@gin (x)); !限定x 取整数; @for (banshi:@gin (y)); !限定y 取整数;x(1)+y(1)>4; !第一阶段要满足的服务员人数; x(1)+y(1)+y(2)>3; !第二阶段要满足的服务员人数; x(1)+y(1)+y(2)+y(3)>4; !第三阶段要满足的服务员人数; x(1)-x(2)+y(1)+y(2)+y(3)+y(4)>6; !第四阶段要满足的服务员人数; x(2)+y(2)+y(3)+y(4)+y(5)>5; !第五阶段要满足的服务员人数; x(1)+y(3)+y(4)+y(5)>6; !第六阶段要满足的服务员人数; x(1)+y(4)+y(5)>8; !第七阶段要满足的服务员人数; x(1)+y(5)>8; !第八阶段要满足的服务员人数;程序运行的结果为最少花费820元,雇佣全时员工7人,半时员工3人,半时员工分别在第二时段雇佣2人,第五时段雇佣1人,12-1时去吃饭的全是员工为2人,剩下5人在1-2时吃饭。
(2)第二问直接可以看出答案,编程也可以。
min =100*x1; x1-x2>6; x2>5;运行程序得出答案1100元,与第一问的820元,要增加费用280元。
(3)第三问直接将第一问的程序中@sum (banshi:y)<3; 删除(即对雇佣的半时服务员的个数没有限制),可得出结果本题的结果。
最少花费560元,第一时段雇佣半时员工6人,第五时段雇佣半时人员8人,就可以满足每个时段所需要的员工要求。
节省费用820-560=260元。
2.某银行经理计划用一笔资金进行有价证券的投资,可供购进的证券以及其信用等级、到期年限、收益如表所示。
按照规定,市政证券的收益可以免税,其他证券的收益需按50%纳税。
此外还有以下限制:1) 政府及代办机构的证券至少要购进400万元;2) 所购证券的平均信用等级不超过1.4(信用等级数字越小,信用程度越高); 3) 所购证券的平均到期年限不超过5年。
证券名称 证券种类 信用等级 到期年限/年 到期税前收益/%A 市政 2 9 4.3B 代办机构 2 15 5.4C 政府 1 4 5.0D 政府 1 3 4.4E 市政 5 2 4.5(1) 若该经理有1000万元资金,应如何投资?(2) 如果能以2.75%的利率借到不超过100万元资金,该经理应如何操作?(3) 在1000万元资金情况下,若证券A 的税前收益增加为4.5%,投资应否改变?如证券 C 的税前收益减少为4.8%,投资应否改变?解:i x ,i y ,i z ,i p ,i q 分别为购买的第i 种证券的价格数量,第i 种证券的信用等级、到期年限、到期税前收益、缴纳税的利率。
(1)第一问有1000万元,根据题目中的三个要求,①所有证券的平均信用等级不超过1.4,②B,C,D 类证券的购买总数需要超过400万元。
③所有证券的平均到期年限不超过5年。
建立模型如下:42max :/1000 1.41000/10005400i i ii i i i i i i x p q st x y x x z x ==<=<>ååååå利用lingo 编程: sets :touzi/1..5/:x,y,z,p,q; endsets data :y=2 2 1 1 5 ; z=9 15 4 3 2 ; p=4.3 5.4 5.0 4.4 4.5 ; q=1 0.5 0.5 0.5 1 ; enddata@sum (touzi:x*y)/1000<1.4; !所购证券的平均信用等级不超过1.4; @sum (touzi:x)=1000; !1000全部用于投资;@sum (touzi:x*z)/1000<5; !所购证券的平均到期年限不超过5年;x(2)+x(3)+x(4)>400; !政府及代办机构的证券至少要购进400万元;max =@sum (touzi:x*p*q);运行程序得出结果为能够获得最大利润2983.636万元,而每种证券如何投资见表表2 各类证券的投资金额(1)证券名称 投资的钱(万元)A 218.1818B 0C 736.3636D 0E 45.45455 总计 1000(2)假设借到a 元,在最后还钱。
只需更改约束条件如下,其余的不变。
:/(1000) 1.41000/(1000)5i i i i i st x y a x a x z a +<=++<ååå编程如下: sets :touzi/1..5/:x,y,z,p,q; endsets data :y=2 2 1 1 5 ; z=9 15 4 3 2 ; p=4.3 5.4 5.0 4.4 4.5 ; q=1 0.5 0.5 0.5 1 ; enddata@sum (touzi:x*y)/(1000+a)<1.4; !所购证券的平均信用等级不超过1.4; @sum (touzi:x)<1000+a; !1000+a 全部用于投资; a<100;@sum (touzi:x*z)/(1000+a)<5; !所购证券的平均到期年限不超过5年; x(2)+x(3)+x(4)>400; !政府及代办机构的证券至少要购进400万元; max =@sum (touzi:x*p*q/100)-a*2.75/100;运行程序得出的结果为借贷100万元,可获得最大利润。
表3 各类证券的投资金额(2)证券 投资的钱(万元) A 240 B 0 C 810 D 0 E 50 总计 1100(3):将第一题中的1p 改成4.5,得出的答案不变,A 类证券投资218.1818万元,C 类证券投资736.3636万元,E 类证券投资45.45455万元。
但若将将3p 改成4.8,结果变了,投资额如表4表4 各类证券的投资金额(3) 证券 投资的钱(万元) A 336 B 0 C 0 D 648 E 16 总计 10003.某班准备从5名游泳队员中选拔4人组成接力队,参加学校的4乘100米混合泳接力比赛。
5名队员4种泳姿的百米平均成绩如表所示,问应如何选拔队员组成接力队?如果最近队员丁的蛙泳成绩有较大退步,只有1分15秒2;而队员戊经过艰苦训练自由泳成绩有所进步,达到57秒5,组成接力队的方案是否应调整?(单位 秒)甲 乙 丙 丁 戊 蝶泳 66.8 57.2 78 70 67.4仰泳 75.6 66 67.8 74.271蛙泳 87 66.4 84.6 69.6 83.8自由泳 58.6 53 59.4 57.2 62.4解:设ij c 为第j 个队员的第i 种泳姿的成绩,ij x 为定义的0,1变量,如果第j 位队员第i 种泳姿代表队伍参加比赛,则取1,否则取0。
min 1,1,2...5;1,1,2...4;ij ijij iij jc x x jx i =?==ååå程序: sets :duiyuan/1..5/; yongzi/1..4/;link(yongzi,duiyuan):c,x; endsets data :c=66.8 57.2 78 70 67.4 75.6 66 67.8 74.2 7187 66.4 84.6 69.6 83.858.6 53 59.4 57.2 62.4;enddatamin=@sum(link:x*c); !利用0,1变量来求解最小值;@for(duiyuan(j):@sum(yongzi(i):x(i,j))<1);!每个人都只能参加0项或者1项;@for(yongzi(i):@sum(duiyuan(j):x(i,j))=1);!游泳的几种泳姿都只能出现一次;@for(link:@bin(x)); !控制0,1变量;运行结果见表4表5 代表队伍参赛的队员名单泳姿队员成绩蝶泳乙57.2s仰泳丙67.8s蛙泳丁69.6s自由泳戊58.5s合计253.2s(2)丁退步,戊进步,可以直接将丁和戊的成绩在程序中更改后再运行程序,得到最优解为557.7s,蝶泳派乙参加(57.2s),仰泳派丙参加(67.8s),蛙泳派丁参加(75.2s),自由泳派戊参加(57.5s)。