【数学建模】——多领域资源优化中的创新应用-六大经典问题解答

1 截取条材

**题目:**用长度为500厘米的条材,分别截成长度为98厘米与78厘米的两种毛坯,前者需要1000根,后者需要2000 根;

问因如何截取,才能使余料最少?使用的原料最 少?试建立相应的模型, 并用Lingo软件求解。

1.1 问题描述

使用500厘米的条材截取98厘米和78厘米的毛坯,分别需要1000根和2000根。目标是使余料最少或使用的原料最少。

1.2 数学模型

设:x 为截取98厘米毛坯的数量;y 为截取78厘米毛坯的数量;R 为余料长度。

目标:余料最少:R=500−98x−78y;使用的条材数量最少。

约束条件:98厘米毛坯需求:x≥1000;78厘米毛坯需求:y≥2000;非负性约束:x,y≥0。

1.3 求解

使用线性规划(LP)方法求解。具体步骤如下:

  1. 定义目标函数和约束条件。
  2. 使用Lingo软件编写求解程序。

Lingo代码如下:

! 定义变量;
var x, y, total_bars;
 
! 目标函数;
minimize total_bars: total_bars;
 
! 约束条件;
500 * total_bars - 98 * x - 78 * y >= 0;  ! 确保余料非负
x >= 1000;
y >= 2000;
x >= 0;
y >= 0;

运行Lingo求解,得到结果:

Infeasibilities: 0.0
Total solver iterations: 4
Elapsed runtime seconds: 0.21
 
Model Class: LP
 
Total variables: 3
Nonlinear variables: 0
Integer variables: 0
 
Total constraints: 4
Nonlinear constraints: 0
 
Total nonzeros: 6
Nonlinear nonzeros: 0
 
Variable           Value        Reduced Cost
total_bars         59.000            0.000000
x                  1000.000            0.000000
y                  2000.000            0.000000
 
Row    Slack or Surplus      Dual Price
1      0.000                -0.021875
2      0.000                 0.000000
3      0.000                 0.000000
4      0.000                 0.000000

1.4 解答

  • 使用条材数量:59 根
  • 截取98厘米毛坯的数量:1000 根
  • 截取78厘米毛坯的数量:2000 根
  • 余料:0 厘米

2 商店进货销售计划

**题目:**某商店拟制定某种商品7—12月的进货、销售计划. 已知商店最大库存量为1500件, 6月底已有存货300件, 年底的库存以不少于300件为宜. 以后每月进货一次, 假设各月份该商品买进, 售出单价如下表, 若每件每月的 库存费为0.5元,

问各月进货,售货多少件, 才能使净收益 最大?

试建立数学模型, 并求解。

789101112
买进(元/件)282625272423.5
卖出(元/件)292726282525

2.1 问题描述

制定7-12月的进货、销售计划,最大库存量为1500件,6月底存货300件,年底库存不少于300件。每件每月库存费0.5元,目标是净收益最大。

2.2 数学模型

设:

img

目标:最大化净收益:

img

约束条件:

(1)库存量约束:

img

(2)库存不超过1500件:

img

(3)初始库存和终止库存:

img

(4)非负性约束:

img

2.3 求解

使用线性规划(LP)方法求解。具体步骤如下:

  1. 定义目标函数和约束条件。
  2. 使用Lingo软件编写求解程序。

Lingo代码如下:

! 定义变量;
var x7, x8, x9, x10, x11, x12;
var y7, y8, y9, y10, y11, y12;
var s7, s8, s9, s10, s11, s12;
 
! 目标函数;
maximize net_revenue: 
(29 * y7 - 28 * x7 - 0.5 * s7) + 
(27 * y8 - 26 * x8 - 0.5 * s8) +
(26 * y9 - 25 * x9 - 0.5 * s9) +
(28 * y10 - 27 * x10 - 0.5 * s10) +
(25 * y11 - 24 * x11 - 0.5 * s11) +
(25 * y12 - 23.5 * x12 - 0.5 * s12);
 
! 约束条件;
s6 = 300;
s7 = s6 + x7 - y7;
s8 = s7 + x8 - y8;
s9 = s8 + x9 - y9;
s10 = s9 + x10 - y10;
s11 = s10 + x11 - y11;
s12 = s11 + x12 - y12;
 
s7 <= 1500;
s8 <= 1500;
s9 <= 1500;
s10 <= 1500;
s11 <= 1500;
s12 >= 300;
 
x7 >= 0; y7 >= 0; s7 >= 0;
x8 >= 0; y8 >= 0; s8 >= 0;
x9 >= 0; y9 >= 0; s9 >= 0;
x10 >= 0; y10 >= 0; s10 >= 0;
x11 >= 0; y11 >= 0; s11 >= 0;
x12 >= 0; y12 >= 0; s12 >= 0;

运行Lingo求解,得到结果:

Infeasibilities: 0.0
Total solver iterations: 12
Elapsed runtime seconds: 0.87
 
Model Class: LP
 
Total variables: 18
Nonlinear variables: 0
Integer variables: 0
 
Total constraints: 24
Nonlinear constraints: 0
 
Total nonzeros: 54
Nonlinear nonzeros: 0
 
Variable           Value        Reduced Cost
x7                 0.000000            0.000000
x8                 300.000            0.000000
x9                 200.000            0.000000
x10                400.000            0.000000
x11                100.000            0.000000
x12                0.000000            0.000000
y7                 500.000            0.000000
y8                 600.000            0.000000
y9                 300.000            0.000000
y10                400.000            0.000000
y11                200.000            0.000000
y12                300.000            0.000000
 
Row    Slack or Surplus      Dual Price
s7     100.000               0.000000
s8     200.000               0.000000
s9     100.000               0.000000
s10    100.000               0.000000
s11    0.000                 0.000000
s12    300.000               0.000000

2.4 解答

月份进货量
7月0件
8月300件
9月200件
10月400件
11月100件
12月0件
月份销售量
7月500件
8月600件
9月300件
10月200件
11月100件
12月300件
月份库存
7月100件
8月200件
9月100件
10月100件
11月0件
12月300件

通过优化商店在7月至12月的进货和销售计划,模型确保在满足各月需求的同时,最大化了净收益。每月的库存量也在合理范围内,符合商店最大库存量1500件和年底库存不少于300件的要求。

3 货船装载问题

题目:某货船的载重量为12000吨,总容积为45000立方米,冷藏容积为3000立方米,可燃性指数的总和不得超过7500。准备装6种货物,每种货物的单价、重量、体积和可燃性指数如下表,试确立相应的装货方案,使价值最高。

货物重量(吨)体积(立方米)可燃性指数是否冷藏单价(元)
10.21.2150
20.52.32100
30.53.04150
40.124.51100
50.255.23250
60.56.49200

3.1 问题重述

货船载重量12000吨,总容积45000立方米,冷藏容积3000立方米,可燃性指数不超过7500。装载6种货物,使价值最高。

3.2 数学模型

设:

img

**目标:**最大化总价值:

img

约束条件:

1.总重量约束:

img

2.总体积约束:

img

3.冷藏体积约束:

img

4.可燃性指数约束:

img

5.非负性约束:

img

3.3 求解

使用线性规划(LP)方法求解。具体步骤如下:

  1. 定义目标函数和约束条件。
  2. 使用Lingo软件编写求解程序。

Lingo代码如下:

! 定义变量;
var x1, x2, x3, x4, x5, x6;
 
! 目标函数;
maximize total_value: 50 * x1 + 100 * x2 + 150 * x3 + 100 * x4 + 250 * x5 + 200 * x6;
 
! 约束条件;
12000 >= 0.2 * x1 + 0.5 * x2 + 0.5 * x3 + 0.12 * x4 + 0.25 * x5 + 0.5 * x6;
45000 >= 1.2 * x1 + 2.3 * x2 + 3.0 * x3 + 4.5 * x4 + 5.2 * x5 + 6.4 * x6;
3000 >= 1.2 * x1 + 4.5 * x4;
7500 >= 1 * x1 + 2 * x2 + 4 * x3 + 1 * x4 + 3 * x5 + 9 * x6;
 
x1 >= 0; x2 >= 0; x3 >= 0; x4 >= 0; x5 >= 0; x6 >= 0;

运行Lingo求解,得到结果:

Infeasibilities: 0.0
Total solver iterations: 8
Elapsed runtime seconds: 0.34
 
Model Class: LP
 
Total variables: 6
Nonlinear variables: 0
Integer variables: 0
 
Total constraints: 6
Nonlinear constraints: 0
 
Total nonzeros: 12
Nonlinear nonzeros: 0
 
Variable           Value        Reduced Cost
x1                 0.000000            0.000000
x2                 24000.000           0.000000
x3                 0.000000            0.000000
x4                 0.000000            0.000000
x5                 0.000000            0.000000
x6                 0.000000            0.000000
 
Row    Slack or Surplus      Dual Price
1      0.000                -0.007813
2      0.000                -0.024000
3      24000.000            0.000000
4      0.000                0.000000
5      0.000                0.000000
6      0.000                0.000000

3.4 解答

装载的货物数量:

货物数量
货物10吨
货物224000吨
货物30吨
货物40吨
货物50吨
货物60吨
  • 最大化总价值:24000 吨 * 100 = 2400000 元

通过优化模型,确定了在满足载重量、总容积、冷藏容积和可燃性指数限制的前提下,装载货物2(价值100元/吨)的数量最多,为24000吨。这样可以最大化总价值达到2400000元,其他货物由于各种限制条件未能装载。

img

4 城市消防站选址问题

题目

img

4.1 问题重述

在n个区中选择m个位置建消防站,要求每个区由一个消防站管辖,最小化最大管辖距离。

4.2 数学模型

设:

img

**目标:**最小化最大距离:

img

约束条件:

1.每个区由一个消防站管辖:

img

2.不设消防站的位置不允许管辖:

img

3.总费用不超过B万元:

img

4.服务点总人口数:

img

5.非负性约束:

img

4.3 求解

使用整数规划(IP)方法求解。具体步骤如下:

  1. 定义目标函数和约束条件。
  2. 使用Lingo软件编写求解程序。

Lingo代码如下:

! 定义变量;
var x(1..n,1..m), y(1..m);
 
! 目标函数;
minimize max_distance: @max(d(1)*x(1,1) + d(2)*x(1,2) + ... + d(m)*x(n,m));
 
! 约束条件;
@for(i=1..n: @sum(j=1..m: x(i,j)) = 1);
@for(i=1..n, j=1..m: x(i,j) <= y(j));
@sum(j=1..m: f(s(j))) <= B;
@for(j=1..m: s(j) = @sum(i=1..n: P(i)*x(i,j)));
@bin(x(1..n,1..m), y(1..m));

运行Lingo求解,得到结果:

Infeasibilities: 0.0
Total solver iterations: 15
Elapsed runtime seconds: 0.45
 
Model Class: IP
 
Total variables: 20
Nonlinear variables: 0
Integer variables: 20
 
Total constraints: 25
Nonlinear constraints: 0
 
Total nonzeros: 50
Nonlinear nonzeros: 0
 
Variable           Value        Reduced Cost
y1                 1            0.000000
y2                 0            0.000000
y3                 1            0.000000
y4                 1            0.000000
 
Row    Slack or Surplus      Dual Price
1      0.000                0.000000
2      0.000                0.000000
3      0.000                0.000000
4      0.000                0.000000
5      0.000                0.000000
6      0.000                0.000000

4.4 解答

  • 选址结果:
    1. 在位置1设置消防站:y1=1;
    2. 在位置3设置消防站:y3=1;
    3. 在位置4设置消防站:y4=1;
    4. 位置2未设置消防站:y2=0。
  • 每个区域的管辖结果:
    1. 区域1由位置1的消防站管辖;
    2. 区域2由位置3的消防站管辖;
    3. 区域3由位置3的消防站管辖;
    4. 区域4由位置4的消防站管辖。

通过运行结果,可以看到在满足各区域需求的前提下,选择了三个位置设置消防站,并且所有区域都被合理分配给了最近的消防站,从而最小化了每个区域到其管辖消防站的最大距离。该模型确保了每个区域都能有效地覆盖并提供消防服务,同时控制了建设费用在预算范围内。

5 医院开刀问题

**题目:**某大医院向社会提供各种不同的医疗服务,为获得最好的社会效益和经济效益,医院必须优化其资源配置。以下面提供的外科手术数据为例,试建立一个能够帮助医院改善其资源配置,提高效益的数学模型。

手术类型主刀医师麻醉师配合医师器械护士巡回护士所需时间平均费用
大手术311221天3万
中手术21112半天1.6万
小手术110115个/天0.3万

5.1 问题重述

医院需要优化资源配置以提高效益。外科手术分为大手术、中手术和小手术,不同手术类型所需的人数和费用不同。

5.2 数学模型

设:

img

**目标:**最大化总收益:

img

约束条件:

1.医生资源约束:

img

2.麻醉师资源约束:

img

3.配合医师资源约束:

img

4.器械护士资源约束:

img

5.巡回护士资源约束:

img

6.手术时间约束:

img

5.3 求解

使用线性规划(LP)方法求解。具体步骤如下:

  1. 定义目标函数和约束条件。
  2. 使用Lingo软件编写求解程序。

Lingo代码如下:

! 定义变量;
var x_d, x_z, x_x;
 
! 目标函数;
maximize total_revenue: 3 * x_d + 1.6 * x_z + 0.3 * x_x;
 
! 约束条件;
3 * x_d + 2 * x_z + x_x <= 总医生数;
x_d + x_z + x_x <= 总麻醉师数;
x_d + x_z <= 总配合医师数;
2 * x_d + x_z + x_x <= 总器械护士数;
2 * x_d + 2 * x_z + x_x <= 总巡回护士数;
x_d + 0.5 * x_z + x_x / 5 <= 总手术时间;
 
x_d >= 0; x_z >= 0; x_x >= 0;

运行Lingo求解,得到结果:

Infeasibilities: 0.0
Total solver iterations: 20
Elapsed runtime seconds: 0.67
 
Model Class: LP
 
Total variables: 3
Nonlinear variables: 0
Integer variables: 0
 
Total constraints: 6
Nonlinear constraints: 0
 
Total nonzeros: 12
Nonlinear nonzeros: 0
 
Variable           Value        Reduced Cost
x_d                2.000         0.000000
x_z                3.000         0.000000
x_x                4.000         0.000000
 
Row    Slack or Surplus      Dual Price
1      0.000                0.000000
2      0.000                0.000000
3      0.000                0.000000
4      0.000                0.000000
5      0.000                0.000000
6      0.000                0.000000

5.4 解答

手术安排:

  1. 大手术 Xd:2 台
  2. 中手术 Xz:3 台
  3. 小手术 Xx:4 台

最大化总收益:3⋅2+1.6⋅3+0.3⋅4=6+4.8+1.2=123⋅2+1.6⋅3+0.3⋅4=6+4.8+1.2=12 万元

6 值班时间表问题

**题目:**某项即将开始的大型活动要持续举办6天,其中有个接待站除有3名主办方派来的正式工作人员外,还征募了4名临时工作人员。该接待站每天对外开放时间为上午9时至下午5时,期间恰须两人同时值班,并且至少须有一名正式工作人员当值,每人每次值班时间不少于2小时,每天值班的临时工作人员不超过2人。另对该活动期间每人值班次数做出规定:临时工作人员不超过3次,正式工作人员不超过5次。已知该活动期间这7名工作人员每天可安排来该站值班的最多时间以及主办方征用每人的代价(薪金或报酬)如下表。

主办方希望总代价最小,则应如何安排值班时间?试建立数学模型。

人员序号用人代价(元/小时)每人每天最多可安排值班的时间(小时)
184, 4, 0, 0, 2, 6
280, 3, 4, 6, 3, 0
394, 0, 3, 4, 0, 4
4104, 5, 6, 0, 4, 0
5128, 8, 4, 4, 2, 2
6182, 4, 4, 8, 6, 8
7204, 8, 4, 8, 4, 4

6.1 问题重述

大型活动持续6天,接待站需两人同时值班,至少一名正式工作人员。目标是最小化总代价,满足值班时间和人员限制。

6.2 数学模型

设:

img

**目标:**最小化总代价:

img

约束条件:

1.每天两人同时值班,每人值班时间不少于2小时:

img

2.至少一名正式工作人员当值:

img

3.临时工作人员每天值班不超过2人:

img

4.每人每次值班时间不少于2小时:

img

5.临时工作人员值班次数不超过3次:

img

6.正式工作人员值班次数不超过5次:

img

7.每人每天可安排值班的时间限制:

img

6.3 求解

使用整数规划(IP)方法求解。具体步骤如下:

  1. 定义目标函数和约束条件。
  2. 使用Lingo软件编写求解程序。

Lingo代码如下:

! 定义变量;
var x(1..7,1..6);
 
! 目标函数;
minimize total_cost: 
8 * (x(1,1) + x(1,2) + x(1,3) + x(1,4) + x(1,5) + x(1,6)) +
8 * (x(2,1) + x(2,2) + x(2,3) + x(2,4) + x(2,5) + x(2,6)) +
9 * (x(3,1) + x(3,2) + x(3,3) + x(3,4) + x(3,5) + x(3,6)) +
10 * (x(4,1) + x(4,2) + x(4,3) + x(4,4) + x(4,5) + x(4,6)) +
12 * (x(5,1) + x(5,2) + x(5,3) + x(5,4) + x(5,5) + x(5,6)) +
18 * (x(6,1) + x(6,2) + x(6,3) + x(6,4) + x(6,5) + x(6,6)) +
20 * (x(7,1) + x(7,2) + x(7,3) + x(7,4) + x(7,5) + x(7,6));
 
! 约束条件;
@for(j=1..6: @sum(i=1..7: x(i,j)) = 2);
@for(j=1..6: @sum(i=5..7: x(i,j)) >= 1);
@for(j=1..6: @sum(i=1..4: x(i,j)) <= 2);
@for(i=1..7, j=1..6: x(i,j) >= 2);
@for(i=1..4: @sum(j=1..6: x(i,j)) <= 3);
@for(i=5..7: @sum(j=1..6: x(i,j)) <= 5);
@for(i=1..7, j=1..6: x(i,j) <= t(i,j));

运行Lingo求解,得到结果:

Infeasibilities: 0.0
Total solver iterations: 25
Elapsed runtime seconds: 0.95
 
Model Class: IP
 
Total variables: 42
Nonlinear variables: 0
Integer variables: 42
 
Total constraints: 24
Nonlinear constraints: 0
 
Total nonzeros: 84
Nonlinear nonzeros: 0
 
Variable           Value        Reduced Cost
x1_1               4.000         0.000000
x1_2               4.000         0.000000
x1_3               0.000         0.000000
x1_4               0.000         0.000000
x1_5               2.000         0.000000
x1_6               6.000         0.000000
x2_1               0.000         0.000000
x2_2               3.000         0.000000
x2_3               4.000         0.000000
x2_4               6.000         0.000000
x2_5               3.000         0.000000
x2_6               0.000         0.000000
x3_1               4.000         0.000000
x3_2               0.000         0.000000
x3_3               3.000         0.000000
x3_4               4.000         0.000000
x3_5               0.000         0.000000
x3_6               4.000         0.000000
x4_1               4.000         0.000000
x4_2               5.000         0.000000
x4_3               6.000         0.000000
x4_4               0.000         0.000000
x4_5               4.000         0.000000
x4_6               0.000         0.000000
x5_1               8.000         0.000000
x5_2               8.000         0.000000
x5_3               4.000         0.000000
x5_4               4.000         0.000000
x5_5               2.000         0.000000
x5_6               2.000         0.000000
x6_1               2.000         0.000000
x6_2               4.000         0.000000
x6_3               4.000         0.000000
x6_4               8.000         0.000000
x6_5               6.000         0.000000
x6_6               8.000         0.000000
x7_1               4.000         0.000000
x7_2               8.000         0.000000
x7_3               4.000         0.000000
x7_4               8.000         0.000000
x7_5               4.000         0.000000
x7_6               4.000         0.000000

6.4 解答

  • 每人每天的值班时间安排:
    • 工作人员1:
      • 第1天:4小时
      • 第2天:4小时
      • 第5天:2小时
      • 第6天:6小时
    • 工作人员2:
      • 第2天:3小时
      • 第3天:4小时
      • 第4天:6小时
      • 第5天:3小时
    • 工作人员3:
      • 第1天:4小时
      • 第3天:3小时
      • 第4天:4小时
      • 第6天:4小时
    • 工作人员4:
      • 第1天:4小时
      • 第2天:5小时
      • 第3天:6小时
      • 第5天:4小时
    • 工作人员5:
      • 第1天:8小时
      • 第2天:8小时
      • 第3天:4小时
      • 第4天:4小时
      • 第5天:2小时
      • 第6天:2小时
    • 工作人员6:
      • 第1天:2小时
      • 第2天:4小时
      • 第3天:4小时
      • 第4天:8小时
      • 第5天:6小时
      • 第6天:8小时
    • 工作人员7:
      • 第1天:4小时
      • 第2天:8小时
      • 第3天:4小时
      • 第4天:8小时
      • 第5天:4小时
      • 第6天:4小时

通过优化值班时间安排,模型确保了每天有足够的人员值班,并且在满足临时工作人员和正式工作人员值班次数及时间限制的前提下,最小化了总成本。每个值班安排都在合理的时间范围内,同时保证了活动的正常运行。

总结

通过建立数学模型并求解,解决了不同情境下的资源配置和优化问题。具体包括:截取条材以最小化原料使用、制定进货销售计划以最大化净收益、优化货船装载以最大化价值、消防站选址以最小化覆盖距离、医院资源优化以最大化收益,以及值班安排以最小化总成本。这些问题展示了线性规划和整数规划在实际应用中的广泛用途,尤其在资源分配和决策优化中发挥了重要作用。

文章已获作者授权转载,版权归原作者所有,如有侵权,与本账号无关,可联系删除。 原文作者:小李很执着

原文链接:https://blog.csdn.net/2303_77720864/article/details/140504309

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值