数学建模lingo作业-习题讲解
- 格式:doc
- 大小:422.00 KB
- 文档页数:18
说明本文档一共包含两个个非线性的lingo例题的程序学习其中包含一些数学建模的思想同时对两个例题采取了多种编程方式希望在这种仿真式多角度的编程思想能够给你启发与帮助例题一某公司现有数额为20亿的一笔资金可作为未来5年内的投资资金,市场上有8个投资项目(如股票、债券、房地产、…)可供公司作投资选择。
其中项目1、项目2每年初投资,当年年末回收本利(本金和利润);项目3、项目4每年初投资,要到第二年末才可回收本利;项目5、项目6每年初投资,要到第三年末才可回收本利;项目7只能在第二年年初投资,到第五年末回收本利;项目8只能在第三年年初投资,到第五年末回收本利。
公司财务分析人员给出一组实验数据,见表1(见附录1)。
试根据实验数据确定5年内如何安排投资?使得第五年末所得利润最大?例题一分析针对问题一,这是典型的单目标优化问题,可以利用线性规划模型进行解决。
其目标是在不考虑投资风险的情况下,对20亿投资金进行合理的分配,使得在第五年末的利润达到最大。
将五年中8个项目的投资利润累加起来,得到的就是要求的目标函数,要做的是如何安排五年的投资计划,每年投资哪几个项目,每个项目投资多少,该决策要受到两个方面的约束:(1)各个投资项目的投资上限。
在对任何一个项目的投资周期内,都不能超过该项目的投资上限。
所谓一个投资周期是指从开始投资到第一次获得利润,例如对于项目4,第一年投资30000万元,由于它的运行周期是两年,投资上限是40000万元,所以第二年投资项目4的上限是10000万元。
(2)每年年初用于投资的资金。
由于不同的项目有不同的运行周期,所以在五年内每年都会有利润的产生。
每年年初用于投资的资金都要小于或等于上年末所拥有的资金。
数据5.问题一的解答针对问题一,我们确定模型一5.1 模型一的建立5.1.1 确定目标函数在无风险的情况下对20亿投资资金进行8个项目的投资选择,使得在第五年末的投资利润达到最大,预投资方案如下表五所示:根据上表我们确定出目标函数为:5811max ij j i i W x p ===∑∑5.1.2 确定约束条件 约束一:投资金额的上限⑴ 项目1和项目2每年投资金额的上限ij j x U ≤,其中i =1,2,3,4,5 j =1,2⑵ 项目3和项目4在两年的投资周期内投资金额的上限1,ij i j j x x U -+≤, 其中i =2,3,4 j =3,4⑶ 项目5和项目6在三年的投资周期内投资金额的上限1,2,ij i j i j j x x x U --++≤,其中i =3,4 j =5,6⑷ 项目7只能在第二年年初投资,且投资周期为四年,它的投资上限277x U ≤⑸ 项目8只能在第三年年初投资,且投资周期为三年,它的投资上限388x U ≤约束二:每年年初用于投资的资金 ⑴ 第一年年初用于投资的资金 120R ≤⑵ 第二年年初用于投资的资金21112121314151620R p x p x x x x x ≤++----⑶ 第三年年初用于投资的资金2231122133144151623242526271120x x i i i i R x p x p x p x p x x x x x ==≤++++-------∑∑⑷ 第四年年初用于投资的资金33224112233441551662526273334353638111120i i i i i i i i R x p x p x p x p x p x p x x x x x x x x ====≤++++++--------∑∑∑∑⑸ 第五年年初用于投资的资金443322511223344556627353638434411111120i i i i i i i i i i i i R x p x p x p x p x p x p x x x x x x ======≤++++++------∑∑∑∑∑∑5.1.3 综上所述我们得到问题一的线性规划模型5811max ij j i i W x p ===∑∑这是一个线性规划模型,因此我们利用lingo 软件进行编程求解(求解程序见附录2),解得第五年末的最大利润为23.26亿元,五年内的投资方案如下表五所示:在第一年年初,投资项目1到项目8分别为6亿元、3亿元、4亿元、1.803亿元、0、0.267亿元、0、0;在第二年年初,投资项目1到项目8分别为6亿元、3亿元、0、1.197亿元、0.663亿元、0、4亿元、0;在第三年年初,投资项目1到项目8分别为6亿元、3亿元、1.151亿元、0、2.337亿元、1.733亿元、0、3亿元;在第四年年初,投资项目1到项目8分别为6亿元、0、2.849亿元、3亿元、0、0、0、0;在第五年年初,投资项目1到项目8分别为6亿元、3亿元、0、0、0、0、0、0;5.3 模型一结果分析在模型一中,影响最终利润大小的共有三个因素:预计到期利润率,投资金额的上限,投资资金。
1 •一奶产品加工厂用牛奶生产A1,A2两种奶产品,1桶牛奶可以在甲类设备上用12h加工,成3kg A1,或者在乙类设备上用8h加工成4kg A2。
根据市场需求,生产的A1, A2全部能售出,且每千克A1获利24元,每千克A2获利16元。
现在加工厂每天能得到50桶牛奶供应,每天正式工人的劳动时间为480h,并且甲类设备每天最多加工100kg A1,乙类设备的加工时间没有限制,讨论以下问题1)若35元可以买一桶牛奶,做这项投资是否值得?若投资,每天最多购买多少桶牛奶?2)若聘用临时工人以增加劳动时间,付给临时工人的工资最多是多少?3)由于市场需求变化,每千克A1的获利增加到30元,是否改变原有的生产计划?Lingo程序:model:max=72*x+64*y;x+y<50;12*x+8*y<480;3*x<100;end2.—汽车厂生产小、中、大三种类型的的汽车,已知各类型每辆车对钢材、劳动时间的需求,利润以及每月工厂钢材、劳动时间如下表1)制定生产计划,使工厂利润最大;23.建筑工地的位置(a,b)和水泥日用量d如下表,目前有两个临时料场位于P (5,1), Q(2,7),日储量各有20t。
1)求从P,Q两料场分别向各工地运送多少吨水泥,使总的吨公里数最小;2)现打算舍弃原有料场,新建两个料场A,B,求新料场的位置,使新的吨公里数最小,此时与P,Q相比能节省多少吨公里。
4.设从4个产地Ai往3个销地Bj运送物资,产量、销量和单位运费如下表,求总运费最少的运输方案和总运费。
Lingo程序:Model: sets:warehouse/1..3/:a;customer/1..4/:b;link(warehouse,customer):c,x; endsetsdata:a=30,25,21;b=15,17,22,12;c=6,2,6,7,4,9,5,3,8,8,1,5;enddata[OBJ]min=@sum(link:c*x);@for(warehouse(i):@sum(customer(j):x(i,j))<a(i)); @for(customer(j):@sum(warehouse(i):x(i,j))=b(j)); end5.求下图中v1到v11的最短路9 W 丄vlOLingo程序:Model:sets:cities/1..11/;roads(cities,cities):p,w,x; endsetsdata: ! 半连通图和权图p=0 1 1 1 00 0 0 0 0 00 0 1 0 10 0 0 0 0 00 1 0 1 11 1 0 0 0 00 0 1 0 0 0 1 0 0 0 00 1 1 0 0 1 0 1 1 0 00 0 1 0 1 0 1 0 1 0 00 0 1 1 0 1 0 0 1 1 00 0 0 0 1 0 0 0 1 0 10 0 0 0 1 1 1 1 0 1 10 0 0 0 0 0 1 0 1 0 10 0 0 0 0 0 0 1 1 1 0;w=0 2 8 1 0 0 0 0 0 0 02 0 6 0 1 0 0 0 0 0 08 6 0 7 5 1 2 0 0 0 01 0 7 0 0 0 9 0 0 0 00 1 5 0 0 3 0 2 9 0 00 0 1 0 3 0 4 0 6 0 00 0 2 9 0 4 0 0 3 1 00 0 0 0 2 0 0 0 7 0 90 0 0 0 9 6 3 7 0 1 20 0 0 0 0 0 1 0 1 0 40 0 0 0 0 0 0 0 9 2 4;enddata n=@size(cities); min=@sum(roads:w*x);@for(cities(i)|I # ne # 1 # and # I # ne # n: @sum(cities(j):p(i,j)*x(i,j)) =@sum(cities(j):p(j,i)*x(j,i)));@sum(cities(j):p(1,j)*x(1,j))=1;end6.露天矿里有若干个爆破生成的石料堆,每堆称为一个铲位,每个铲位已预先根据铁含量将石料分成矿石和岩石。
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.一奶产品加工厂用牛奶生产A1,A2两种奶产品,1桶牛奶可以在甲类设备上用12h加工,成3kg A1,或者在乙类设备上用8h加工成4kg A2。
根据市场需求,生产的A1,A2全部能售出,且每千克A1获利24元,每千克A2获利16元。
现在加工厂每天能得到50桶牛奶供应,每天正式工人的劳动时间为480h,并且甲类设备每天最多加工100kg A1,乙类设备的加工时间没有限制,讨论以下问题1)若35元可以买一桶牛奶,做这项投资是否值得?若投资,每天最多购买多少桶牛奶?2)若聘用临时工人以增加劳动时间,付给临时工人的工资最多是多少?3)由于市场需求变化,每千克A1的获利增加到30元,是否改变原有的生产计划?Lingo程序:model:max=72*x+64*y;x+y<50;12*x+8*y<480;3*x<100;end2.一汽车厂生产小、中、大三种类型的的汽车,已知各类型每辆车对钢材、劳动时间的需求,利润以及每月工厂钢材、劳动时间如下表。
1)制定生产计划,使工厂利润最大;2)若生产某类型车,则至少需生产80辆,求改变后的生产计划。
3.建筑工地的位置(a,b)和水泥日用量d如下表,目前有两个临时料场位于P(5,1),Q(2,7),日储量各有20t。
1)求从P,Q两料场分别向各工地运送多少吨水泥,使总的吨公里数最小;2)现打算舍弃原有料场,新建两个料场A,B,求新料场的位置,使新的吨公里数最小,此时与P,Q相比能节省多少吨公里。
4.设从4个产地Ai往3个销地Bj运送物资,产量、销量和单位运费如下表,求总运费最少的运输方案和总运费。
Lingo程序:Model:sets:warehouse/1..3/:a;customer/1..4/:b;link(warehouse,customer):c,x;endsetsdata:a=30,25,21;b=15,17,22,12;c=6,2,6,7,4,9,5,3,8,8,1,5;enddata[OBJ]min=@sum(link:c*x);@for(warehouse(i): @sum(customer(j):x(i,j))<a(i));@for(customer(j):@sum(warehouse(i):x(i,j))=b(j));end5.求下图中v1到v11的最短路Lingo程序:Model:sets:cities/1..11/;roads(cities,cities):p,w,x; endsetsdata: !半连通图和权图;p=0 1 1 1 0 0 0 0 0 0 00 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 10 0 0 0 1 1 1 1 0 1 10 0 0 0 0 0 1 0 1 0 10 0 0 0 0 0 0 1 1 1 0;w=0 2 8 1 0 0 0 0 0 0 02 0 6 0 1 0 0 0 0 0 08 6 0 7 5 1 2 0 0 0 01 0 7 0 0 0 9 0 0 0 00 1 5 0 0 3 0 2 9 0 00 0 1 0 3 0 4 0 6 0 00 0 2 9 0 4 0 0 3 1 00 0 0 0 2 0 0 0 7 0 90 0 0 0 9 6 3 7 0 1 20 0 0 0 0 0 1 0 1 0 40 0 0 0 0 0 0 0 9 2 4;enddatan=@size(cities);min=@sum(roads:w*x);@for(cities(i)|I # ne # 1 # and # I # ne # n: @sum(cities(j):p(i,j)*x(i,j))=@sum(cities(j):p(j,i)*x(j,i)));@sum(cities(j):p(1,j)*x(1,j))=1;end6.露天矿里有若干个爆破生成的石料堆,每堆称为一个铲位,每个铲位已预先根据铁含量将石料分成矿石和岩石。
第一题:一、摘要本文是一篇关于基金的使用计划模型。
在现实经济高速发展的背景下,人们越来越清醒地意识到:一个合理的数学应用模型对于现今生产、投资、规划等实际应用项目的重要性。
本文所建立的存款模型就是个很好的例子,此模型最终要解决的是选择最佳基金使用计划,使得学校基金会能够有充分的资金在基金会运转。
这个模型的解决是我们更清楚掌握了最优化模型的解决方法及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=每年的奖金四、模型的建立与求解第一种情况:只存款不买国库券我们考虑到这种情况下,存款的时间是一定的,所以活期和三个月,半年的利率都太低,所以在这种情况下,我们直接考虑一年的利率,这样才能获得较多的利息,从而使得每年发放的奖金数目尽可能多——即我们要实现的目标。
数学建模值班lingo例题和答案
例1
某工厂有两条生产线,分别用生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和 120,生产线每生产一个M产品需要1个劳动日(1个工人工作8小时成为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?
解:设两种产品的生产量分别为x和x,则
目标函数max z = 200x +300x,
例2
生产计划安排问题(@if函数的应用)。
某企业用A,B两种原油混合加工成甲、乙两种成品油销售。
数据见下表,表中百分比是成品油中原油A的最低含量。
成品油甲和乙的销售价与加工费之差分别为5和5.6(单位:千元/吨),原油A,B的采购价分别是采购量x(单位:吨)的分段函数
f(x)和g(x)(单位:千元/吨),该企业的现有资金限额为7200(千元),生产成品油乙的最大能力为2000吨。
假设成品油全部能销售出去,试在充分利用现有资金和现有库存的条件下,合理安排采购和生产计划,使企业的收益最大。
解:设原油A,B的采购量分别为x, y,原油A用于生产成品油甲、乙的数量分别为x,,原油B用于生产成品油甲、乙的数量分别为x1,x,则采购原油
A,B的费用分别为f(x)和g(x),目标函数是收益最大,约束条件有采购量约束,生产能力约束、原油含量约束、成品油与原油的关系、资金约束。
建立规划模型如下:
max z = 5(X1+x1)+5.6(X2+x2)- f(x)-g(x)。
例1.1.1某工厂有两条生产线,分别用生产M 和P 两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M 产品需要1个劳动日(1个工人工作8小时成为1个劳动日)进行调试、检测等工作,而每个P 产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解:设两种产品的生产量分别为1x 和2x ,则目标函数 12max 200300z x x =+约束条件 1212100,120,2160,0,1,2.i x x x x x i ≤⎧⎪≤⎪⎨+≤⎪⎪≥=⎩ 例1.1.2 基金的优化使用(2001年数学建模竞赛C 题)假设某校基金会得到了一笔数额为M 万元的基金,打算将其存入银行,校基金会计划在n 年末仍保留原基金数额.银行存款税后利率见表元,5n =年的情况下设计具体存款方案.解:分析:假定首次发放奖金的时间是在基金到位后一年,以后每隔一年发放一次,每年发放的时间大致相同,校基金会希望获得最佳的基金使用计划,以提高每年的奖金额,且在n 年末仍保留原基金数额M ,实际上n 年中发放的奖金额全部来自于利息。
如果全部基金都存为一年定期,每年都用到期利息发放奖金,则每年的奖金数为50000.01890⨯=万元,这是没有优化的存款方案。
显然,准备在两年后使用的款项应当存成两年定期,比存两次一年定期的收益高,以此类推。
目标是合理分配基金的存款方案,使得n 年的利息总额最多。
定义:收益比a =(本金+利息)/本金。
于是存2年的收益比为21 2.16%2 1.0432a =+⨯=。
按照银行存款税后利率表计算得到各存款年限对应的最优收益比见表(1) 一次性存成最长期,优于两个(或两个以上)比较短期的组合(中途转存)(2) 当存款年限需要组合时,收益比与组合的先后次序无关。
建立模型 把总基金M 分成5+1份,分别用123456,,,,,x x x x x x 表示,其中12345,,,,x x x x x 分别存成15 年定期,到期后本息合计用于当年发放奖金,6x 存5年定期,到期的本息合计等于原基金总数M 。
一个很好的运算结果分析莫版!!!例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。
生产数据如下表所示:每个书桌每个餐桌每个椅子现有资源总数木料8单位6单位1单位48单位漆工4单位2单位 1.5单位20单位木工2单位 1.5单位0.5单位8单位成品单价60单位30单位20单位若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。
[OBJ] max=60*desks+30*tables+20*chairs;[ml] 8*desks+6*tables+chairs<=48;[qg] 4*desks+2*tables+1.5*chairs<=20;[mg] 2*desks+1.5*tables+.5*chairs<=8;[zz] tables<=5;Global optimal solution found at iteration: 0Objective value: 280.0000Variable Value Reduced CostDESKS 2.000000 0.000000TABLES 0.000000 5.000000CHAIRS 8.000000 0.000000Row Slack or Surplus Dual PriceOBJ 280.0000 1.000000ML 24.00000 0.000000QG 0.000000 10.00000MG 0.000000 10.00000ZZ 5.000000 0.000000“Global optimal solution found at iteration: 3”表示3次迭代后得到全局最优解。
“Objective value: 280.0000”表示最优目标值为280。
“Value”给出最优解中各变量的值:造2个书桌(desks)“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。
基础题: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) 关于生产和包装时间的目标约束。
用3d -和3d +分别表示减少和增加生产时间的偏差量,用4d -和4d +分别表示减少和增加包装时间的偏差量。
由于增加生产时间要比增加包装时间困难得多,可取二者的加权系数为0.4和0.6。
因此目标约束为+33412331244min 0.40.6220000,..2336000.z d d x x d d s t x x d d +-+-+=+⎧++-=⎪⎨++-=⎪⎩ 综上所述,可以得到这个问题的目标规划模型为:()()++11122334+121112221233124412min +0.40.6,+=160001520275000,..220000,23+36000,,,,01,2,3,4.i iz p d d p d p d d x x d d x x d d s t x x d d x x d d x x d d i --+--+-+-+-+=+++⎧+-⎪++-=⎪⎪++-=⎨⎪+-=⎪⎪≥=⎩,求得最优解(满意解)是节能灯具厂生产A 型灯具9000套,B 型灯具7000套,生产时间需增加5000min ,包装时间需增加3000min ,该工厂可完成16000套灯具的生产任务,工厂预期的销售总额为275000元,可以获得利润114000元。
建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它们都具有一定的主观性和模糊性,可以用专家评定法给以量化。
(大有内容) 序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序,将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
多次运行求解 这里使用了lingo 的子函数功能,一次运行,就把目标规划序贯解法的所有解全部求出来。
2. 装配线平衡模型一条装配线含有一系列的工作站,在最终产品的加工过程中每个工作站执行一种或几种特定的任务。
装配线周期是指所有工作站完成分配给它们各自的任务所花费时间中的最大值。
平衡装配线的目标是为每个工作站分配加工任务,尽可能使每个工作站执行相同数量的任务,其最终标准是装配线周期最短。
不适当的平衡装配线将会产生瓶颈——有较少任务的工作站将被迫等待其前面分配了较多任务的工作站。
问题会因为众多任务间存在优先关系而变得更复杂,任务的分配必须服从这种优先关系。
这个模型的目标是最小化装配线周期。
有2类约束:①要保证每件任务只能也必须分配至一个工作站来加工;②要保证满足任务间的所有优先关系。
任务时间表任务A B C D E F G H I J K 时间45119501512121212893.图论TSP 问题设有一个销售员从10个城市中的某一个城市出发,去其他9个城市推销产品。
10个城市相互距离如下表所示。
要求每个城市到达一次且仅一次后,回到原出发城市。
问:他应该如何选择旅行路线,使得总路程最短?用图论描述TSP ,给出一个图G=(V,E),每边e E ∈上有非负权值()e ω,寻找G 的hamilton 圈C ,使得C 的总权值()()W C e ω=∑最小,()e E C ∈。
几十年来,出现了很多近似优化算法,如近临法,贪心算法,最近插值法,最远插值法,模拟退火以及遗传算法。
这里介绍利用lingo 的解法。
(1)方法一:设城市之间的距离用矩阵d 来表示,其中d 为下三角矩阵,ij d 表示城市之间的距离。
设0-1矩阵用x 来表示经过的各城市之间的路线。
设01ij i j x i j ⎧=⎨⎩若城市不到城市若城市到城市则该TSP 问题转化为如下的线性模型:12111min 2,..22,3,4...01n i ij iji j j j ik ji k ij i ijz x d x s t x x i nx -==><>=⎧=⎪⎪+==⎨⎪⎪=⎩∑∑∑∑∑或 所得到的结果(3,2)1,(4,1)1,(4,3)1,(6,5)1,(7,2)1,(7,5)1,x x x x x x ======(8,6)1,(9,1)1,(10,8)1,(10,9)1x x x x ====。
其他全为0.最短路径为14327681091,→→→→→→→→→最短距离为77km 。
优缺点分析:求解速度极快,但可能会形成一些子圈,得到局部最优解。
(2)方法二:设城市之间的距离用矩阵d 来表示,ij d 表示城市之间的距离。
设0-1矩阵用x 来表示经过的各城市之间的路线。
设01,ij i jx i j i j ⎧=⎨⎩若城市不到城市若城市到城市且在前 考虑每个城市后只有一个城市,则111,2,3...,nijj j ixi n =≠==∑考虑每个城市前只有一个城市,则111,2,3...,niji i jxj n =≠==∑但仅有以上约束条件不能避免在一次遍历中产生多于一个互不相连通的回路。
为此引入额外的变量(1,2,3...,)i u i n =,附加以下充分约束条件,即1,1i j ij u u nx n i j n -+≤-<≠≤约束的解释:①i 与j 不会构成回路,若构成回路,有1,1ij ji x x ==,则1,1i j j i u u u u -≤--≤-,从而有0≤-2,导致矛盾。
②,i j 与k 不会构成回路,若构成回路,有1,1,1,ij jk ki x x x ===则1,1,1,i j j k k i u u u u u u -≤--≤--≤-从而有0≤-3,导致矛盾。
其他情况依此类推。
于是得到如下模型:,11min 11,2,3...,11,2,3...,..1101,1,2,3...,1,2,3,...,nij iji jnij i i j nijj j ii j ij ij i Z d x x j n x i ns t u u nx n i j n x i j n u i n =≠=≠=⎧==⎪⎪⎪⎪==⎪⎪⎨⎪-+≤-≤≠≤⎪==⎪⎪=⎪⎪⎩∑∑∑或为实数优缺点分析:可以很好地解决圈问题,但是对较大规模问题计算很耗时。
中档题:1. 九宫数独题(可参考2008年美赛B 题)在9*9的九宫格里面填数字,每个方格填入合适的数字使得每行每列以及每个九宫格都要含有从1~9的数字且互不相同。
(该题难度极高,所有数独软件利用规则都无法解出(回溯法除外)。
对于一个合法的谜题,要求其解是唯一的。
)提示:对于一般的九宫数独问题,建立0~1整数规划如下:设每个格子用()(),,1,2,3...9i j i j =表示该空格所在的行和列,建立决策变量为10k i,j,k=1,2,3 (9)ijk k x ⎧=⎨⎩空格(i,j)处填空格(i,j)处不填建立如下约束:(1)每个空格恰好填一个数字:91(,1,2,...9)1ijk i j k x===∑(2)每行每个字恰好填一次91(,1,2,...9)1ijk i k j x===∑(3)每列每个字恰好填一次91(,1,2,...9)1ijk j k i x===∑(4)每个九宫格每个数字恰好填一次91(1,2,...9)(,)tijk k i j B x ===∑696366999699≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤当t=1时,1i 3,1j 3;当t=2时,1i 3,4j ;当t=3时,1i 3,7j ;当t=4时,4i ,1j ;当t=5时,4i ,1j 3;当t=6时,4i ,7j ;当t=7时,7i ,1j 3;当t=8时,7i ,4j ;当t=9时,7i ,7j ;可建立目标函数为:999111min ijk i j k Z x ====∑∑∑可建立以下0-1规划模型9991119191919(,)min 1,1,2,3...91,1,2,3...9.1,1,2,3...91,1,2,3...901,,1,2,3...9tijki j k jik k jik j jik i jik i j B ijk Z x x i j x i k s t x i k x t k x i j k ======∈=⎧==⎪⎪⎪==⎪⎪⎪⎪==⎨⎪⎪==⎪⎪⎪==⎪⎪⎩∑∑∑∑∑∑∑或2.露天矿生产的车辆安排钢铁工业是国家工业的基础之一,铁矿是钢铁工业的主要原料基地。
许多现代化铁矿是露天开采的,它的生产主要是由电动铲车(以下简称电铲)装车、电动轮自卸卡车(以下简称卡车)运输来完成。
提高这些大型设备的利用率是增加露天矿经济效益的首要任务。
露天矿里有若干个爆破生成的石料堆,每堆称为一个铲位,每个铲位已预先根据铁含量将石料分成矿石和岩石。