lingo习题及答案doc.docx
《lingo习题及答案doc.docx》由会员分享,可在线阅读,更多相关《lingo习题及答案doc.docx(15页珍藏版)》请在冰豆网上搜索。
lingo习题及答案doc
第一题:
一、摘要
本文是一篇关于基金的使用计划模型。
在现实经济高速发展的背景下,人们越来越清醒地意识到:
一个合理的数学应用模型对于现今生产、投资、规划等实际应用项目的重要性。
本文所建立的存款模型就是个很好的例子,此模型最终要解决的是选择最佳基金使用计划,使得学校基金会能够有充分的资金在基金会运转。
这个模型的解决是我们更清楚掌握了最优化模型的解决方法及LINGO软件求解线性规划的方法。
二、问题的提出
某校基金会有一笔数额为M元的基金,打算将其存入银行或购买国库券。
当前银行存款及各期国库券的利率见下表。
假设国库券每年至少发行一次,发行时间不定。
取款政策参考银行的现行政策。
校基金会计划在n年内每年用部分本息奖励优秀师生,要求每年的奖金额大致相同,且在n年末仍保留原基金数额。
校基金会希望获得最佳的基金使用计划,以提高每年的奖金额。
请你帮助校基金会在如下情况下设计基金使用方案,并对M=5000万元,n=10年给出具体结果:
1.只存款不购国库券;
2.可存款也可购国库券。
3.学校在基金到位后的第3年要举行百年校庆,基金会希望这一年的奖金比其它年度多20%。
银行存款税后年利率(%)
国库券年利率(%)
活期
0.792
半年期
1.664
一年期
1.800
二年期
1.944
2.55
三年期
2.160
2.89
五年期
2.304
3.14
二、模型的假设
(1)银行利息和国库券结算方式为单利;
(2)定期存款和国库券不到期均不能取款;
(3)国库券每年发行一期,发行月份不定,但于发行月一号发行;
(4)基金结算后马上又进行投资(存入银行或买国库券)中间间隔时间不予考虑;
(5)定期存款实际收益利率为公布利率的80%(20%为利息税上交国库)国库券存款利率与同期的定期存款利率相同,但不交利息税;
(6)每年年初评奖且奖金数目相同(除第三问),N年后本金仍为M;
三、符号的说明
第i年所存入银行的j年期的存款;
第i年说购买的j年期的国库券;
银行同期活期利率;
银行同期活期税后利率;
银行同期j年期固定利率;
银行同期j年期固定利率税后利率;
M本金=5000万元,Z=每年的奖金
四、模型的建立与求解
第一种情况:
只存款不买国库券
我们考虑到这种情况下,存款的时间是一定的,所以活期和三个月,半年的利率都太低,所以在这种情况下,我们直接考虑一年的利率,这样才能获得较多的利息,从而使得每年发放的奖金数目尽可能多——即我们要实现的目标。
我们先把税后利率算出来,代入到我们所列的线形方程组,并将其在LINGO求解(详细内容见附件1),在模型的建立中,我们运用分批存款的思想,就是把M本金分成几份,每份采取的存款方案不同,其符号表示的意义见符号说明.
方程如下:
第二种情况:
可存款也可购国库券。
假设国库券每年的第n月发行。
则当n=1时可建立下列模型:
当2<=n<=3时,将资金分成两部分,一部分用于银行存款,另一部分用于购买国库券,用于购买国库券的资金可以先存(n-1)个月的活期银行存款,然后本息和全用于购买国库券。
第九年已不再能够买国库券,可将到期的国库券本息先存半年定期,再存三个月定期,再存(4-n)个月活期,第十年存为一年定期。
第十年到期的国库券存半年定期,再存三个月定期,再存(4-n)个月活期
可建立模型如下:
上述的几种情况下,国库券第一种情况Z值最大
第三种情况下:
学校在基金到位后的第3年要举行百年校庆,基金会希望这一年的奖金比其它年度多20%。
。
只需将上述两种情况中第八年所发发奖金z改为1.2z即可。
我们只考虑第二问情况下的第一种情形,即国库券为第一个月发行
附件1:
用LINGO编程如下:
max=z;
x11+x12+x13+x15=5000;
x21+x22+x23+x25=1.01584*x11-z;
x31+x32+x33+x35=1.036*x12+1.01584*x21-z;
x41+x42+x43+x45=1.06048*x13+1.036*x22+1.01584*x31-z;
x51+x52+x53+x55=1.06048*x23+1.036*x32+1.01584*x41-z;
x61+x62+x63+x65=1.1116*x15+1.06048*x33+1.036*x42+1.01584*x51-z;
x71+x72+x73=1.1116*x25+1.06048*x43+1.036*x52+1.01584*x61-z;
x81+x82+x83=1.1116*x35+1.06048*x53+1.036*x62+1.01584*x71-z;
x91+x92=1.1116*x45+1.06048*x63+1.036*x72+1.01584*x81-z;
x101=1.1116*x55+1.06048*x73+1.036*x82+1.01584*x91-z;
5000=1.1116*x65+1.06048*x83+1.036*x92+1.01584*x101-z;
end
附件2.
用LINGO编程如下:
max=z;
x11+x12+x13+x15+y12+y13+y15=5000;
x21+x22+x23+x25+y22+y23+y25=1.01584*x11-z;
x31+x32+x33+x35+y32+y33+y35=1.036*x12+1.01584*x21+1.045*y12-z;
x41+x42+x43+x45+y42+y43+y45=1.06048*x13+1.036*x22+1.01584*x31+1.0756*y13+1.045*y22-z;
x51+x52+x53+x55+y52+y53+y55=1.06048*x23+1.036*x32+1.01584*x41+1.0756*y23+1.045*y32-z;
x61+x62+x63+x65+y62+y63+y65=1.11160*x15+1.06048*x33+1.036*x42+1.01584*x51+1.1395*y15+1.0756*y33+1.045*y42-z;
x71+x72+x73+y72+y73=1.11160*x25+1.06048*x43+1.036*x52+1.01584*x61+1.1395*y25+1.0756*y43+1.045*y52-z;
x81+x82+x83+y82+y83=1.11160*x35+1.06048*x53+1.036*x62+1.01584*x71+1.1395*y35+1.0756*y53+1.045*y62-z;
x91+x92+y92=1.11160*x45+1.06048*x63+1.036*x72+1.01584*x81+1.1395*y45+1.0756*y63+1.045*y72-z;
x101=1.11160*x55+1.06048*x73+1.036*x82+1.01584*x91+1.1395*y55+1.0756*y73+1.045*y82-z;
5000=1.11160*x65+1.06048*x83+1.036*x92+1.01584*x101+1.1395*y65+1.0756*y83+1.045*y92-z;
附件3.
当n=2时,
用LINGO编程如下:
max=z;
x11+x12+x13+x15+0.9994*y12+0.9994*y13+0.9994*y15=5000;
x21+x22+x23+x25=1.01584*x11-z;
y32+y33+y35=1.045*y12;
x31+x32+x33+x35=1.036*x12+1.01584*x21-z;
y42+y43+y45=1.0756*y13;
x41+x42+x43+x45=1.06048*x13+1.036*x22+1.01584*x31-z;
y52+y53+y55=1.045*y32;
x51+x52+x53+x55=1.06048*x23+1.036*x32+1.01584*x41-z;
y62+y63+y65=1.1395*y15+1.0756*y33+1.045*y42;
x61+x62+x63+x65=1.11160*x15+1.06048*x33+1.036*x42+1.01584*x51-z;
y72+y73=1.0756*y43+1.045*y52;
x71+x72+x73=1.11160*x25+1.06048*x43+1.036*x52+1.01584*x61-z;
y82+y83=1.1395*y35+1.0756*y53+1.045*y62;
x81+x82+x83=1.11160*x35+1.06048*x53+1.036*x62+1.01584*x71-z;
x91+x92=1.11160*x45+1.06048*x63+1.036*x72+1.01584*x81-z;
x101=1.11160*x55+1.06048*x73+1.036*x82+1.01584*x91+1.1532*y45+1.0885*y63+1.0575*y72-z;
5000=1.11160*x65+1.06048*x83+1.036*x92+1.01584*x101+1.1532*y55+1.0885*y73+1.0575*y82-z;
当n=3时,
用LINGO编程如下:
max=z;
x11+x12+x13+x15+0.9988*y12+0.9988*y13+0.9988*y15=5000;
x21+x22+x23+x25=1.01584*x11-z;
y32+y33+y35=1.045*y12;
x31+x32+x33+x35=1.036*x12+1.01584*x21-z;
y42+y43+y45=1.0756*y13;
x41+x42+x43+x45=1.06048*x13+1.036*x22+1.01584*x31-z;
y52+y53+y55=1.045*y32;
x51+x52+x53+x55=1.06048*x23+1.036*x32+1.01584*x41-z;
y62+y63+y65=1.1395*y15+1.0756*y33+1.045*y42;
x61+x62+x63+x65=1.11160*x15+1.06048*x33+1.036*x42+1.01584*x51-z;
y72+y73=1.0756*y43+1.045*y52;
x71+x72+x73=1.11160*x25+1.06048*x43+1.036*x52+1.01584*x61-z;
y82+y83=1.1395*y35+1.0756*y53+1.045*y62;
x81+x82+x83=1.11160*x35+1.06048*x53+1.036*x62+1.01584*x71-z;
x91+x92=1.11160*x45+1.06048*x63+1.036*x72+1.01584*x81-z;
x101=1.11160*x55+1.06048*x73+1.036*x82+1.01584*x91+1.1526*y45+1.088*y63+1.057*y72-z;
5000=1.11160*x65+1.06048*x83+1.036*x92+1.01584*x101+1.152632*y55+1.088*y73+1.057*y82-z;
附件4.
用LINGO编程如下:
max=z;
x11+x12+x13+x15+0.9966*y12+0.9966*y13+0.9966*y15=5000;
x21+x22+x23+x25=1.01584*x11-z;
y32+y33+y35=1.045*y12;
x31+x32+x33+x35=1.036*x12+1.01584*x21-z;
y42+y43+y45=1.0756*y13;
x41+x42+x43+x45=1.06048*x13+1.036*x22+1.01584*x31-z;
y52+y53+y55=1.045*y32;
x51+x52+x53+x55=1.06048*x23+1.036*x32+1.01584*x41-z;
y62+y63+y65=1.1395*y15+1.0756*y33+1.045*y42;
x61+x62+x63+x65=1.11160*x15+1.06048*x33+1.036*x42+1.01584*x51-z;
y72+y73=1.0756*y43+1.045*y52;
x71+x72+x73=1.11160*x25+1.06048*x43+1.036*x52+1.01584*x61-z;
y82+y83=1.1395*y35+1.0756*y53+1.045*y62;
x81+x82+x83=1.11160*x35+1.06048*x53+1.036*x62+1.01584*x71-z;
x91+x92=1.11160*x45+1.06048*x63+1.036*x72+1.01584*x81-z;
x101=1.11160*x55+1.06048*x73+1.036*x82+1.01584*x91+1.1498*y45+1.0853*y63+1.0544*y72-z;
5000=1.11160*x65+1.06048*x83+1.036*x92+1.01584*x101+1.1498*y55+1.0853*y73+1.0544*y82-z;
附件5.
用LINGO编程如下:
max=z;
x11+x12+x13+x15+y12+y13+y15=5000;
x21+x22+x23+x25+y22+y23+y25=1.01584*x11-z;
x31+x32+x33+x35+y32+y33+y35=1.036*x12+1.01584*x21+1.045*y12-z;
x41+x42+x43+x45+y42+y43+y45=1.06048*x13+1.036*x22+1.01584*x31+1.0756*y13+1.045*y22-z;
x51+x52+x53+x55+y52+y53+y55=1.06048*x23+1.036*x32+1.01584*x41+1.0756*y23+1.045*y32-z;
x61+x62+x63+x65+y62+y63+y65=1.11160*x15+1.06048*x33+1.036*x42+1.01584*x51+1.1395*y15+1.0756*y33+1.045*y42-z;
x71+x72+x73+y72+y73=1.11160*x25+1.06048*x43+1.036*x52+1.01584*x61+1.1395*y25+1.0756*y43+1.045*y52-z;
x81+x82+x83+y82+y83=1.11160*x35+1.06048*x53+1.036*x62+1.01584*x71+1.1395*y35+1.0756*y53+1.045*y62-1.2*z;
x91+x92+y92=1.11160*x45+1.06048*x63+1.036*x72+1.01584*x81+1.1395*y45+1.0756*y63+1.045*y72-z;
x101=1.11160*x55+1.06048*x73+1.036*x82+1.01584*x91+1.1395*y55+1.0756*y73+1.045*y82-z;
5000=1.11160*x65+1.06048*x83+1.036*x92+1.01584*x101+1.1395*y65+1.0756*y83+1.045*y92-z;
第二题:
一个样品运输模型
对于我们的例子中,假设无线控件(二战)公司有六个仓库供应八个与部件供应商。
每个仓库有一个不能超过部件供应,每个供应商有一个部件必须满足的需求。
二战要确定有多少部件,从每个仓库船舶每个供应商,以最小化总运输成本。
这是一个典型的优化问题称为交通问题。
下图说明了这个问题:
无线Widget的航运网络
由于每个仓库可以运送到每家厂商中,有48个可能的航运通道,或圆弧总计。
我们需要为这些弧每个变量来表示对电弧发货量。
数据
下面的数据是可用的:
部件容量数据:
仓库 小工具在手
1
60
2
55
3
51
4
43
5
41
6
52
卖方小工具的需求:
供应商 部件的需求
1
35
2
37
3
22
4
32
5
41
6
32
7
43
8
38
运费每小工具($):
V1
V2
V3
V4
V5
V6
V7
V8
WH1
6
2
6
7
4
2
5
9
WH2
4
9
5
3
8
5
8
2
WH3
5
2
1
9
7
4
3
3
WH4
7
6
7
3
9
2
7
1
WH5
2
3
9
5
7
2
6
5
WH6
5
5
2
2
8
1
4
3
目标函数
首页上一页下一页
我们在制定该模型将是第一个通过构造目标函数。
如前所述,二战总要尽量减少运输成本。
我们将让变量VOLUME_I_J分别表示从仓库运到供应商j的,然后我部件数目,如果我们要明确地写出来,我们的目标函数使用标量变量,我们将有:
MIN= 6*VOLUME_1_1+2*VOLUME_1_2+
6*VOLUME_1_3+7*VOLUME_1_4+
4*VOLUME_1_5+
.
.
.
8*VOLUME_6_5+VOLUME_6_6+4*VOLUME_6_7+
3*VOLUME_6_8;
为了简便起见,我们只包括在客观条件的48个9。
人们可以看到,进入这样一个漫长的公式将是乏味和容易出错。
外推到更现实的情况下厂商能数在成千上万,他们很明显的,标量建模是有问题的最好的。
如果你对数学符号熟悉,你可以表达一个更为紧凑的方式,这漫长的公式如下:
成本最小化Σij•体积ijij
以类似的方式,Lingo的建模语言允许你表达形式中的目标函数,短,易于输入,而且容易理解。
等效LINGO的语句是:
MIN=@SUM(LINKS(I,J):
COST(I,J)*VOLUME(I,J));
在口头上,这表示以减少每个部件倍运费的仓库之间的运输和供应商的各个环节部件容积的总和。
下表比较的数学符号来为我们的目标函数的LINGO语法。
数学符号 LINGO的语法
MathNotation
LINGOSyntax
Minimize
MIN=
Σij
@SUM(LINKS(I,J):
)
COSTij
COST(I,J)
•
*
VOLUMEij
VOLUME(I,J)
制约因素
首页上一页下一页
有了适当的目标函数,下一步是制定的约束。
有两种套在这个模型的限制。
第一套保证每个供应商获得所需的部件数量。
我们将把这种限制,因为这是第一套需求约束。
第二组的限制,称为能力的限制,确保了更多的widget没有仓库的船舶比在手。
与需求约束的供应商一开始,我们需要总结,从所有的仓库运送至卖方一并将它们设置等于卖方1的35部件的需求。
因此,如果我们用标量的符号,我们需要建设以下内容:
VOLUME_1_1+VOLUME_2_1++VOLUME_3_1
VOLUME_4_1+VOLUME_5_1+VOLUME_6_1=35;
这样,你会需要额外的需求约束型七,在一个类似的形式,以涵盖所有八个供应商。
同样,人们可以看到,这将是一个乏味和容易出错的过程。
然而,正如我们的目标函数,我们可以用Lingo的一套建模语言来简化我们的任务。
利用数学符号,所有八个需求约束可以表示为一个语句:
Σi VOLUMEij=DEMANDj,foralljinVENDORS
相应的LINGO建模声明如下所示:
@FOR(VENDORS(J):
@SUM(WAREHOUSES(I):
VOLUME(I,J))=
DEMAND(J));
这LINGO的语句替换所有八个需求约束。
在口头上,这表示对所有供应商,从仓库的每一个运到该供应商的体积之和必须等于该供应商的相应的需求。
密切注意如何这类似于上述声明,如下表所示的数学符号。
数学符号 LINGO的语法
MathNotation
LINGOSyntax
foralljinVENDORS
@FOR(VENDORS(J):
Σi
@SUM(WAREHOUSES(I):
VOLUMEij
VOLUME(I,J))
=
=
DEMANDj
DEMAND(J));
现在,我们将转移到建设能力的限制。
在标准的数学符号,这六个能力的限制将被表示为:
ΣjVOLUMEij<=CAPi,foralliinWAREHOUSES
语句的等效LINGO的所有能力的限制将是:
@FOR(WAREHOUSES(I):
@SUM(VENDORS(J):
VOLUME(I,J))<=
CAPACITY(I));
这表示,每个集合码头仓库member,对的VOLUMEsumshippedto来自该warehousetheVENDORS每个人都必须小于或等于到the仓库的CAPACITY。
已完成的模型
首页上一页下一页
放在一起我们所做的一切至今产生下列完整的LINGO模型:
MODEL:
MIN=@SUM(LINKS(I,J):
COST(I,J)*VOLUME(I,J));
@FOR(VENDORS(J):
@SUM(WAREHOUSES(I):
VOLUME(I,J))=
DEMAND(J));
@FOR(WAREHOUSES(I):
@SUM(VENDORS(J):
VOLUME(I,J))<=
CAPACITY(I));
END
型号:
控件使用
但是,我们仍然需要定义模型中使用的对象集(供应商,仓库和运输弧)以及数据。
我们将做到这一点是另外两个模型部分称为集段和数据段。