数学建模作业二

记录数学建模作业

文章目录

一. 有两个煤厂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

解答:

  1. 确定决策变量

    设煤场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

  2. 列出目标函数
    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

  3. 写出约束条件
    { 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+A360B1+B2+B3100A1+B1=45A2+B2=75A3+B3=40A1,A2,A3,B1,B2,B30

仿真求解:

我们借助Lingo来求解线性规划问题

在这里插入图片描述

二. 某医院每日至少需要如下数量的护士。每班护士在值班开始时向病房报到,连续工作 8 个小时。医院领导为满足每班所需要的护士数,最少需要雇用多少护士?

班次时间最少护士数
106 时 – 10 时60
210 时 – 14 时70
314 时 – 18 时60
418 时 – 22 时50
522 时 – 02 时20
602 时 – 06 时30

思路:

这里我们先假设至少需要 x x x名护士,但是每个护士只连续工作8个小时,所以我们要将每个班次的护士数统计出来。我们设6时开始上班的护士数为 x 1 x_1 x1,以此类推,一直到22时为最后一个班次,这里解释一下,因为每个护士要连续工作八小时,所以6班次是要上到下一天的10时才下班的。我们直接设六个时段的人数,让六个时段首尾呼应,形成一个循环。

见下表

开始上班人数班次时间
x 1 x_1 x1106 时 – 10 时
x 2 x_2 x2210 时 – 14 时
x 3 x_3 x3314 时 – 18 时
x 4 x_4 x4418 时 – 22 时
x 5 x_5 x5522 时 – 02 时
x 6 x_6 x6602 时 – 06 时

所以我们上班人数为

解释实际到岗人数时间最少护士数
x 5 x_5 x5下班了 x 1 x_1 x1来了 x 6 + x 1 x_6+x_1 x6+x106 时 – 10 时60
x 6 x_6 x6下班了 x 2 x_2 x2来了 x 1 + x 2 x_1+x_2 x1+x210 时 – 14 时70
x 1 x_1 x1下班了 x 3 x_3 x3来了 x 2 + x 3 x_2+x_3 x2+x314 时 – 18 时60
x 2 x_2 x2下班了 x 4 x_4 x4来了 x 3 + x 4 x_3+x_4 x3+x418 时 – 22 时50
x 3 x_3 x3下班了 x 5 x_5 x5来了 x 4 + x 5 x_4+x_5 x4+x522 时 – 02 时20
x 4 x_4 x4下班了 x 6 x_6 x6来了 x 5 + x 6 x_5+x_6 x5+x602 时 – 06 时30

解答:

  1. 确定决策变量

    设需要 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

  2. 列出目标函数
    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

  3. 写出约束条件
    { 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+x160x1+x270x2+x360x3+x450x4+x520x5+x630x1,x2,x3,x4,x5,x60()

仿真求解:

在这里插入图片描述

三. 现有资金总额为 B B B。可供选择的投资项目有 7 个,项目 j j j所需投资额和预期 收益分别为 a j a_j aj c j ( j = 1 , 2 , … , 7 ) c_j(j=1,2,…,7) cjj=1,27。此外,由于种种原因,有三个附加条件:第 一,若选择项目 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={01jj
那么我们的收益为
m a x   c = ∑ j = 1 7 x j c j max \,c= \sum_{j=1}^{7}{x_jc_j} maxc=j=17xjcj
我们的投资额为
B   ≥   ∑ j = 1 7 x j a j B \,{\geq} \,\sum_{j=1}^{7}{x_ja_j} Bj=17xjaj
下面我们来处理附加条件

  1. 若选择项目 1,就必须选择项目 2,反之,则不一定;

    解释项目1( x 1 x_1 x1)项目2( x 2 x_2 x2
    两个项目都不选00
    只选二01
    选了一就必须选二11

    得出结论: x 1 ≤ x 2 x_1{\leq}x_2 x1x2

  2. 项目 3 和项目 4 中至少选择一个;

    解释项目3( x 3 x_3 x3)项目4( x 4 x_4 x4
    选4不选301
    选3不选410
    都选11

    得出结论: x 3 + x 4 ≥ 1 x_3+x_4{\geq}1 x3+x41

  3. 项目 5、项目 6 和项目 7 中恰好选择两个;

    解释项目5( x 5 x_5 x5)项目6( x 6 x_6 x6项目7( x 7 x_7 x7
    不选5011
    不选6101
    不选7110

    得出结论: x 5 + x 6 + x 7 ≥ 2 x_5+x_6+x_7{\geq}2 x5+x6+x72

PS:第三个附加条件也可以得出: x 5 ∗ x 6 ∗ x 7 = 0 x_5*x_6*x_7=0 x5x6x7=0,但是我们不用它,原因是因为乘法的复杂度比加法的复杂度高,不利于计算,所以我们能用加法解决的事情就没必要用到乘法啦。

解答:

模型如下:

  • 目标函数: c = m a x ∑ j = 1 7 x j c j c= max\sum_{j=1}^{7}{x_jc_j} c=maxj=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=17xjajBx1x2x3+x41x5+x6+x72x1,x2,x3,x4,x5,x6,x70

四. (投资问题)某部门在今后五年内考虑给下列项目投资,己知:项目 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收415%
B投1收125% ≤   4   万 {\le}\,4\,万 4
C投1收140% ≤   3   万 {\le}\,3\,万 3
D投1收1投2收2投3收3投4收4投5收56%

解释一下表的内容:比如项目A如果我们第一年年初投,那么必须要等到第二年年末才可以收到本息,第五年年初不能在投,因为要等到第六年年末才可以收到这笔钱,每次的利润为15%。

现在我们有10万块,选择怎样的投资组合可以让这笔钱的收益最大化?我们来把表抽象一下

项目X(第一年)Y(第二年)Z(第三年)M(第四年)N(第五年)利润(%)备注(万)
时间年初年末年初年末年初年末年初年末年初年末利润(%)备注
AXAYAXA*1.15ZAYA*1.15MAZA*1.15MA*1.1515%
BZBZB*1.2525% ≤   4   万 {\le}\,4\,万 4
CYCYC*1.4040% ≤   3   万 {\le}\,3\,万 3
DXDXD*1.06YDYD*1.06ZDZD*1.06MDMD*1.06NDND*1.066%

解释:

  1. 第一年初

    我们有10万,可以选择项目A或项目D,我们用XA和XD表示

    得出结论:XA+XD<=10

  2. 第二年初

    我们XA的收益还没有到,只有XD的收益,要注意第一年10万元可能并没有用完。

    得出结论:YA+YC+YD<=(10+0.06*XD)-XA(注意括号里的全为本息)

  3. 第三年初

    我们XA的收益到了,YD的收益也到了,但是YA和YC的收益还没有到,所以要减去它

    得出结论:ZA+ZB+ZD<=(10+0.15XA+0.06XD+0.06*YD)-YA-YC(注意括号里的全为本息)

  4. 第四年初

    我们YA和ZD的收益到了,YC,ZA,ZB的收益还没有到,减去他们

    得出结论:MA+MD<=(10+0.15XA+0.06XD+0.06YD+0.15YA+0.06*ZD)-YC-ZA-ZB(注意括号里的全为本息)

  5. 第五年初

    我们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(注意括号里的全为本息)

  6. 第五年末

    这也意味着我们的我们5年的投资计划结束,结果为我们的最终收益(本息)

    我们MA,ZB,YC,ND的收益全部到了,所以收益全部到账,设全部收益(本息)为 P P P

    得出结论:P=MA1.15+ZB1.25+YC1.4+ND1.06

解答:

  1. 目标函数: 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=MA1.15+ZB1.25+YC1.4+ND1.06

  2. 约束条件:
    { 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+XD10YA+YC+YD(10+0.06XD)XAZA+ZB+ZD(10+0.15XA+0.06XD+0.06YD)YAYCMA+MD(10+0.15XA+0.06XD+0.06YD+0.15YA+0.06ZD)YCZAZBND(10+0.15XA+0.06XD+0.06YD+0.15YA+0.06ZD+0.15ZA+0.06MD)YCZBMAZB4YC3XA,XD,YA,YC,YD,ZA,ZB,ZD,MA,MD,ND0

仿真求解:

在这里插入图片描述
最后:
欢迎来指正我的错误和不足的地方,如果有小伙伴哪个地方我没有讲明白,可以在评论区区留言,我都会看哦。

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bestkain233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值