记录数学建模作业
文章目录
- 一. 有两个煤厂A,B,每月进煤分别不少于60吨、100吨,它们担负供应三个居民 区的用煤任务,这三个居民区每月用煤分别为45吨、75吨、40吨。A厂离这三个 居民区分别为10公里、5公里、6公里,B厂离这三个居民区分别为4公里、8公里、 15公里,问这两煤厂如何分配供煤,才能使总运输量最小?
- 二. 某医院每日至少需要如下数量的护士。每班护士在值班开始时向病房报到,连续工作 8 个小时。医院领导为满足每班所需要的护士数,最少需要雇用多少护士?
- 三. 现有资金总额为 B B B。可供选择的投资项目有 7 个,项目 j j j所需投资额和预期 收益分别为 a j a_j aj 和 c j ( j = 1 , 2 , … , 7 ) c_j(j=1,2,…,7) cj(j=1,2,…,7)。此外,由于种种原因,有三个附加条件:第 一,若选择项目 1,就必须选择项目 2,反之,则不一定;第二,项目 3 和项目 4 中至少选择一个;第三,项目 5、项目 6 和项目 7 中恰好选择两个。应当怎样 选择投资项目,才能使总预期收益最大?请建立整数规划模型.。
- 四. (投资问题)某部门在今后五年内考虑给下列项目投资,己知:项目 A,从 第一年到第四年每年年初需要投资,并于次年末回收本利 115%;项目 B,第三 年初需要投资,到第五年未能回收本利 125%,但规定最大投资额不超过 4 万元; 项目 C,第二年初需要投资,到第五年未能回收本利 140%,但规定最大投资额 不超过 3 万元;项目 D,五年内每年初可购买公债,于当年末归还,并加利息 6%。 该部门现有资金 10 万元,问它应如何确定给这些项目每年的投资额,使到第五 年末拥有的资金的本利总额为最大?
一. 有两个煤厂A,B,每月进煤分别不少于60吨、100吨,它们担负供应三个居民 区的用煤任务,这三个居民区每月用煤分别为45吨、75吨、40吨。A厂离这三个 居民区分别为10公里、5公里、6公里,B厂离这三个居民区分别为4公里、8公里、 15公里,问这两煤厂如何分配供煤,才能使总运输量最小?
思路:
先看图(用的是在线作图工具processon)
要使运输量最少,我们这里可以采用哈夫曼树的思想(即最优二叉树),让载重量大的车走路途近的路,让载重量小的车走路途远的路。我们设煤场A对村庄1、2、3的运煤量分别为 A 1 A_1 A1, A 2 A_2 A2, A 3 A_3 A3,同理设 B 1 B_1 B1, B 2 B_2 B2, B 3 B_3 B3。
得出公式: m i n l e n g t h = 10 A 1 + 5 A 2 + 6 A 3 + 4 B 1 + 8 B 2 + 15 B 3 min\,\, length = 10A_1+5A_2+6A_3+4B_1+8B_2+15B_3 minlength=10A1+5A2+6A3+4B1+8B2+15B3
解答:
-
确定决策变量
设煤场A对村庄1、2、3的运煤量分别为 A 1 A_1 A1, A 2 A_2 A2, A 3 A_3 A3,同理设 B 1 B_1 B1, B 2 B_2 B2, B 3 B_3 B3。
-
列出目标函数
m i n l e n g t h = 10 A 1 + 5 A 2 + 6 A 3 + 4 B 1 + 8 B 2 + 15 B 3 min\,\,length=10A_1+5A_2+6A_3+4B_1+8B_2+15B_3 minlength=10A1+5A2+6A3+4B1+8B2+15B3 -
写出约束条件
{ A 1 + A 2 + A 3 ≥ 60 B 1 + B 2 + B 3 ≥ 100 A 1 + B 1 = 45 A 2 + B 2 = 75 A 3 + B 3 = 40 A 1 , A 2 , A 3 , B 1 , B 2 , B 3 ≥ 0 \left\{ \begin{array}{l} A_1+A_2+A_3{\geq}60 \\ B_1+B_2+B_3{\geq}100 \\ A_1+B_1=45 \\ A_2+B_2=75 \\ A_3+B_3=40 \\ A_1,A_2,A_3,B_1,B_2,B_3{\geq}0 \end{array} \right. ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧A1+A2+A3≥60B1+B2+B3≥100A1+B1=45A2+B2=75A3+B3=40A1,A2,A3,B1,B2,B3≥0
仿真求解:
我们借助Lingo来求解线性规划问题
二. 某医院每日至少需要如下数量的护士。每班护士在值班开始时向病房报到,连续工作 8 个小时。医院领导为满足每班所需要的护士数,最少需要雇用多少护士?
班次 | 时间 | 最少护士数 |
---|---|---|
1 | 06 时 – 10 时 | 60 |
2 | 10 时 – 14 时 | 70 |
3 | 14 时 – 18 时 | 60 |
4 | 18 时 – 22 时 | 50 |
5 | 22 时 – 02 时 | 20 |
6 | 02 时 – 06 时 | 30 |
思路:
这里我们先假设至少需要 x x x名护士,但是每个护士只连续工作8个小时,所以我们要将每个班次的护士数统计出来。我们设6时开始上班的护士数为 x 1 x_1 x1,以此类推,一直到22时为最后一个班次,这里解释一下,因为每个护士要连续工作八小时,所以6班次是要上到下一天的10时才下班的。我们直接设六个时段的人数,让六个时段首尾呼应,形成一个循环。
见下表
开始上班人数 | 班次 | 时间 |
---|---|---|
x 1 x_1 x1 | 1 | 06 时 – 10 时 |
x 2 x_2 x2 | 2 | 10 时 – 14 时 |
x 3 x_3 x3 | 3 | 14 时 – 18 时 |
x 4 x_4 x4 | 4 | 18 时 – 22 时 |
x 5 x_5 x5 | 5 | 22 时 – 02 时 |
x 6 x_6 x6 | 6 | 02 时 – 06 时 |
所以我们上班人数为
解释 | 实际到岗人数 | 时间 | 最少护士数 |
---|---|---|---|
x 5 x_5 x5下班了 x 1 x_1 x1来了 | x 6 + x 1 x_6+x_1 x6+x1 | 06 时 – 10 时 | 60 |
x 6 x_6 x6下班了 x 2 x_2 x2来了 | x 1 + x 2 x_1+x_2 x1+x2 | 10 时 – 14 时 | 70 |
x 1 x_1 x1下班了 x 3 x_3 x3来了 | x 2 + x 3 x_2+x_3 x2+x3 | 14 时 – 18 时 | 60 |
x 2 x_2 x2下班了 x 4 x_4 x4来了 | x 3 + x 4 x_3+x_4 x3+x4 | 18 时 – 22 时 | 50 |
x 3 x_3 x3下班了 x 5 x_5 x5来了 | x 4 + x 5 x_4+x_5 x4+x5 | 22 时 – 02 时 | 20 |
x 4 x_4 x4下班了 x 6 x_6 x6来了 | x 5 + x 6 x_5+x_6 x5+x6 | 02 时 – 06 时 | 30 |
解答:
-
确定决策变量
设需要 x x x名护士,每个时段上班的护士分别为 x 1 x_1 x1, x 2 x_2 x2, x 3 x_3 x3, x 4 x_4 x4, x 5 x_5 x5, x 6 x_6 x6。
-
列出目标函数
m i n x = x 1 + x 2 + x 3 + x 4 + x 5 + x 6 min\,x=x_1+x_2+x_3+x_4+x_5+x_6 minx=x1+x2+x3+x4+x5+x6 -
写出约束条件
{ x 6 + x 1 ≥ 60 x 1 + x 2 ≥ 70 x 2 + x 3 ≥ 60 x 3 + x 4 ≥ 50 x 4 + x 5 ≥ 20 x 5 + x 6 ≥ 30 x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ≥ 0 ( 自 然 数 ) \left\{ \begin{array}{l} x_6+x_1{\geq}60 \\ x_1+x_2{\geq}70 \\ x_2+x_3{\geq}60 \\ x_3+x_4{\geq}50 \\ x_4+x_5{\geq}20 \\ x_5+x_6{\geq}30 \\ x_1,x_2,x_3,x_4,x_5,x_6{\geq}0 (自然数) \end{array} \right. ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧x6+x1≥60x1+x2≥70x2+x3≥60x3+x4≥50x4+x5≥20x5+x6≥30x1,x2,x3,x4,x5,x6≥0(自然数)
仿真求解:
三. 现有资金总额为 B B B。可供选择的投资项目有 7 个,项目 j j j所需投资额和预期 收益分别为 a j a_j aj 和 c j ( j = 1 , 2 , … , 7 ) c_j(j=1,2,…,7) cj(j=1,2,…,7)。此外,由于种种原因,有三个附加条件:第 一,若选择项目 1,就必须选择项目 2,反之,则不一定;第二,项目 3 和项目 4 中至少选择一个;第三,项目 5、项目 6 和项目 7 中恰好选择两个。应当怎样 选择投资项目,才能使总预期收益最大?请建立整数规划模型.。
思路:
题目告诉我们有7个投资项目,每个投资项目都可获得一笔收益,由于总资金为 B B B已经固定,所以我们不可能投资所有的项目,而是在有限的资金条件下找出最大收益的投资项目组合。所以我们就要对这7个项目做决策,选它还是不选它。设决策变量为 x j x_j xj
x
j
=
{
0
不
选
择
j
1
选
择
j
x_j = \left\{ \begin{array}{l} 0 & 不选择j \\ 1 & 选择j \end{array} \right.
xj={01不选择j选择j
那么我们的收益为
m
a
x
c
=
∑
j
=
1
7
x
j
c
j
max \,c= \sum_{j=1}^{7}{x_jc_j}
maxc=j=1∑7xjcj
我们的投资额为
B
≥
∑
j
=
1
7
x
j
a
j
B \,{\geq} \,\sum_{j=1}^{7}{x_ja_j}
B≥j=1∑7xjaj
下面我们来处理附加条件
-
若选择项目 1,就必须选择项目 2,反之,则不一定;
解释 项目1( x 1 x_1 x1) 项目2( x 2 x_2 x2) 两个项目都不选 0 0 只选二 0 1 选了一就必须选二 1 1 得出结论: x 1 ≤ x 2 x_1{\leq}x_2 x1≤x2
-
项目 3 和项目 4 中至少选择一个;
解释 项目3( x 3 x_3 x3) 项目4( x 4 x_4 x4) 选4不选3 0 1 选3不选4 1 0 都选 1 1 得出结论: x 3 + x 4 ≥ 1 x_3+x_4{\geq}1 x3+x4≥1
-
项目 5、项目 6 和项目 7 中恰好选择两个;
解释 项目5( x 5 x_5 x5) 项目6( x 6 x_6 x6) 项目7( x 7 x_7 x7) 不选5 0 1 1 不选6 1 0 1 不选7 1 1 0 得出结论: x 5 + x 6 + x 7 ≥ 2 x_5+x_6+x_7{\geq}2 x5+x6+x7≥2
PS:第三个附加条件也可以得出: x 5 ∗ x 6 ∗ x 7 = 0 x_5*x_6*x_7=0 x5∗x6∗x7=0,但是我们不用它,原因是因为乘法的复杂度比加法的复杂度高,不利于计算,所以我们能用加法解决的事情就没必要用到乘法啦。
解答:
模型如下:
-
目标函数: c = m a x ∑ j = 1 7 x j c j c= max\sum_{j=1}^{7}{x_jc_j} c=max∑j=17xjcj
-
约束条件:
{ ∑ j = 1 7 x j a j ≤ B x 1 ≤ x 2 x 3 + x 4 ≥ 1 x 5 + x 6 + x 7 ≥ 2 x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 ≥ 0 \left\{ \begin{array}{l} \sum_{j=1}^{7}{x_ja_j} \,{\leq} \,B \\ x_1{\leq}x_2 \\ x_3+x_4{\geq}1 \\ x_5+x_6+x_7{\geq}2 \\ x_1,x_2,x_3,x_4,x_5,x_6,x_7{\geq}0 \end{array} \right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧∑j=17xjaj≤Bx1≤x2x3+x4≥1x5+x6+x7≥2x1,x2,x3,x4,x5,x6,x7≥0
四. (投资问题)某部门在今后五年内考虑给下列项目投资,己知:项目 A,从 第一年到第四年每年年初需要投资,并于次年末回收本利 115%;项目 B,第三 年初需要投资,到第五年未能回收本利 125%,但规定最大投资额不超过 4 万元; 项目 C,第二年初需要投资,到第五年未能回收本利 140%,但规定最大投资额 不超过 3 万元;项目 D,五年内每年初可购买公债,于当年末归还,并加利息 6%。 该部门现有资金 10 万元,问它应如何确定给这些项目每年的投资额,使到第五 年末拥有的资金的本利总额为最大?
思路:
我们先理清这道题给与了我们什么信息,为了方便这里我们设第一年到第五年为X,Y,Z,M,N(这个看心情,设什么无所谓,能区分就好)我们来打个表:
PS:由于本人太菜,目前还没找到Typora上如何合并单元格,所以打成了两个表格,其实这是一个表哦。
项目 | X(第一年) | Y(第二年) | Z(第三年) | M(第四年) | N(第五年) | 利润(%) | 备注(万) |
---|
时间 | 年初 | 年末 | 年初 | 年末 | 年初 | 年末 | 年初 | 年末 | 年初 | 年末 | 利润(%) | 备注 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
A | 投1 | 投2 | 收1 | 投3 | 收2 | 投4 | 收3 | 收4 | 15% | |||
B | 投1 | 收1 | 25% | ≤ 4 万 {\le}\,4\,万 ≤4万 | ||||||||
C | 投1 | 收1 | 40% | ≤ 3 万 {\le}\,3\,万 ≤3万 | ||||||||
D | 投1 | 收1 | 投2 | 收2 | 投3 | 收3 | 投4 | 收4 | 投5 | 收5 | 6% |
解释一下表的内容:比如项目A如果我们第一年年初投,那么必须要等到第二年年末才可以收到本息,第五年年初不能在投,因为要等到第六年年末才可以收到这笔钱,每次的利润为15%。
现在我们有10万块,选择怎样的投资组合可以让这笔钱的收益最大化?我们来把表抽象一下
项目 | X(第一年) | Y(第二年) | Z(第三年) | M(第四年) | N(第五年) | 利润(%) | 备注(万) |
---|
时间 | 年初 | 年末 | 年初 | 年末 | 年初 | 年末 | 年初 | 年末 | 年初 | 年末 | 利润(%) | 备注 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
A | XA | YA | XA*1.15 | ZA | YA*1.15 | MA | ZA*1.15 | MA*1.15 | 15% | |||
B | ZB | ZB*1.25 | 25% | ≤ 4 万 {\le}\,4\,万 ≤4万 | ||||||||
C | YC | YC*1.40 | 40% | ≤ 3 万 {\le}\,3\,万 ≤3万 | ||||||||
D | XD | XD*1.06 | YD | YD*1.06 | ZD | ZD*1.06 | MD | MD*1.06 | ND | ND*1.06 | 6% |
解释:
-
第一年初
我们有10万,可以选择项目A或项目D,我们用XA和XD表示
得出结论:XA+XD<=10
-
第二年初
我们XA的收益还没有到,只有XD的收益,要注意第一年10万元可能并没有用完。
得出结论:YA+YC+YD<=(10+0.06*XD)-XA(注意括号里的全为本息)
-
第三年初
我们XA的收益到了,YD的收益也到了,但是YA和YC的收益还没有到,所以要减去它
得出结论:ZA+ZB+ZD<=(10+0.15XA+0.06XD+0.06*YD)-YA-YC(注意括号里的全为本息)
-
第四年初
我们YA和ZD的收益到了,YC,ZA,ZB的收益还没有到,减去他们
得出结论:MA+MD<=(10+0.15XA+0.06XD+0.06YD+0.15YA+0.06*ZD)-YC-ZA-ZB(注意括号里的全为本息)
-
第五年初
我们ZA和MD的收益到了,YC,ZB,MA的收益还没有到,减去他们
得出结论:ND<=(10+0.15XA+0.06XD+0.06YD+0.15YA+0.06ZD+0.15ZA+0.06*MD)-YC-ZB-MA(注意括号里的全为本息)
-
第五年末
这也意味着我们的我们5年的投资计划结束,结果为我们的最终收益(本息)
我们MA,ZB,YC,ND的收益全部到了,所以收益全部到账,设全部收益(本息)为 P P P
得出结论:P=MA1.15+ZB1.25+YC1.4+ND1.06
解答:
-
目标函数: M A X P = M A ∗ 1.15 + Z B ∗ 1.25 + Y C ∗ 1.4 + N D ∗ 1.06 MAX\,\,\,P=MA*1.15+ZB*1.25+YC*1.4+ND*1.06 MAXP=MA∗1.15+ZB∗1.25+YC∗1.4+ND∗1.06
-
约束条件:
{ X A + X D ≤ 10 Y A + Y C + Y D ≤ ( 10 + 0.06 ∗ X D ) − X A Z A + Z B + Z D ≤ ( 10 + 0.15 ∗ X A + 0.06 ∗ X D + 0.06 ∗ Y D ) − Y A − Y C M A + M D ≤ ( 10 + 0.15 ∗ X A + 0.06 ∗ X D + 0.06 ∗ Y D + 0.15 ∗ Y A + 0.06 ∗ Z D ) − Y C − Z A − Z B N D ≤ ( 10 + 0.15 ∗ X A + 0.06 ∗ X D + 0.06 ∗ Y D + 0.15 ∗ Y A + 0.06 ∗ Z D + 0.15 ∗ Z A + 0.06 ∗ M D ) − Y C − Z B − M A Z B ≤ 4 Y C ≤ 3 X A , X D , Y A , Y C , Y D , Z A , Z B , Z D , M A , M D , N D ≥ 0 \left\{ \begin{array}{l} XA+XD \,{\leq} \,10 \\ YA+YC+YD \,{\leq} \,(10+0.06*XD)-XA \\ ZA+ZB+ZD \,{\leq} \,(10+0.15*XA+0.06*XD+0.06*YD)-YA-YC \\ MA+MD \,{\leq} \,(10+0.15*XA+0.06*XD+0.06*YD+0.15*YA+0.06*ZD)-YC-ZA-ZB \\ ND \,{\leq} \,(10+0.15*XA+0.06*XD+0.06*YD+0.15*YA+0.06*ZD+0.15*ZA+0.06*MD)-YC-ZB-MA \\ ZB \,{\leq} \,4 \\ YC \,{\leq} \,3 \\ XA,XD,YA,YC,YD,ZA,ZB,ZD,MA,MD,ND \,{\geq} \,0 \end{array} \right. ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧XA+XD≤10YA+YC+YD≤(10+0.06∗XD)−XAZA+ZB+ZD≤(10+0.15∗XA+0.06∗XD+0.06∗YD)−YA−YCMA+MD≤(10+0.15∗XA+0.06∗XD+0.06∗YD+0.15∗YA+0.06∗ZD)−YC−ZA−ZBND≤(10+0.15∗XA+0.06∗XD+0.06∗YD+0.15∗YA+0.06∗ZD+0.15∗ZA+0.06∗MD)−YC−ZB−MAZB≤4YC≤3XA,XD,YA,YC,YD,ZA,ZB,ZD,MA,MD,ND≥0
仿真求解:
最后:
欢迎来指正我的错误和不足的地方,如果有小伙伴哪个地方我没有讲明白,可以在评论区区留言,我都会看哦。