目录
题目1:截取条材
题目
1.1问题描述
1.2 数学模型
1.3 求解
1.4 解答
题目2:商店进货销售计划
题目
2.1 问题描述
2.2 数学模型
2.3 求解
2.4 解答
题目3:货船装载问题
题目
3.1问题重述
3.2 数学模型
3.3 求解
3.4 解答
题目4:城市消防站选址问题
题目
4.1问题重述
4.2 数学模型
约束条件:
4.3 求解
4.4 解答
题目5:医院开刀问题
题目
5.1问题重述
5.2 数学模型
5.3 求解
5.4 解答
题目6:值班时间表问题
题目
6.1问题重述
6.2 数学模型
6.3 求解
6.4 解答
总结
2024暑期数学建模之优化模型 作业 经典六道题练习
专栏:数学建模学习笔记
题目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)方法求解。具体步骤如下:
- 定义目标函数和约束条件。
- 使用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元,
问各月进货,售货多少件, 才能使净收益 最大?
试建立数学模型, 并求解
月 | 7 | 8 | 9 | 10 | 11 | 12 |
买进(元/件) | 28 | 26 | 25 | 27 | 24 | 23.5 |
卖出(元/件) | 29 | 27 | 26 | 28 | 25 | 25 |
2.1 问题描述
制定7-12月的进货、销售计划,最大库存量为1500件,6月底存货300件,年底库存不少于300件。每件每月库存费0.5元,目标是净收益最大。
2.2 数学模型
设:
目标:
最大化净收益:
约束条件:
1.库存量约束:
2.库存不超过1500件:
3.初始库存和终止库存:
4.非负性约束:
2.3 求解
使用线性规划(LP)方法求解。具体步骤如下:
- 定义目标函数和约束条件。
- 使用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月:400 件
- 11月:200 件
- 12月:300 件
- 每月库存:
- 7月:100 件
- 8月:200 件
- 9月:100 件
- 10月:100 件
- 11月:0 件
- 12月:300 件
通过优化商店在7月至12月的进货和销售计划,模型确保在满足各月需求的同时,最大化了净收益。每月的库存量也在合理范围内,符合商店最大库存量1500件和年底库存不少于300件的要求。
题目3:货船装载问题
题目
某货船的载重量为12000吨,总容积为45000立方米,冷藏容积为3000立方米,可燃性指数的总和不得超过7500。准备装6种货物,每种货物的单价、重量、体积和可燃性指数如下表,试确立相应的装货方案,使价值最高。
货物 | 重量(吨) | 体积(立方米) | 可燃性指数 | 是否冷藏 | 单价(元) |
---|---|---|---|---|---|
1 | 0.2 | 1.2 | 1 | 是 | 50 |
2 | 0.5 | 2.3 | 2 | 否 | 100 |
3 | 0.5 | 3.0 | 4 | 否 | 150 |
4 | 0.12 | 4.5 | 1 | 是 | 100 |
5 | 0.25 | 5.2 | 3 | 否 | 250 |
6 | 0.5 | 6.4 | 9 | 否 | 200 |
3.1问题重述
货船载重量12000吨,总容积45000立方米,冷藏容积3000立方米,可燃性指数不超过7500。装载6种货物,使价值最高。
3.2 数学模型
设:
目标:
最大化总价值:
约束条件:
1.总重量约束:
2.总体积约束:
3.冷藏体积约束:
4.可燃性指数约束:
5.非负性约束:
3.3 求解
使用线性规划(LP)方法求解。具体步骤如下:
- 定义目标函数和约束条件。
- 使用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 解答
- 装载的货物数量:
- 货物1:0 吨
- 货物2:24000 吨
- 货物3:0 吨
- 货物4:0 吨
- 货物5:0 吨
- 货物6:0 吨
- 最大化总价值:24000 吨 * 100 = 2400000 元
通过优化模型,确定了在满足载重量、总容积、冷藏容积和可燃性指数限制的前提下,装载货物2(价值100元/吨)的数量最多,为24000吨。这样可以最大化总价值达到2400000元,其他货物由于各种限制条件未能装载。
题目4:城市消防站选址问题
题目
4.1问题重述
在n个区中选择m个位置建消防站,要求每个区由一个消防站管辖,最小化最大管辖距离。
4.2 数学模型
设:
目标:
最小化最大距离:
约束条件:
1.每个区由一个消防站管辖:
2.不设消防站的位置不允许管辖:
3.总费用不超过B万元:
4.服务点总人口数:
5.非负性约束:
4.3 求解
使用整数规划(IP)方法求解。具体步骤如下:
- 定义目标函数和约束条件。
- 使用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设置消防站:y1=1
- 在位置3设置消防站:y3=1
- 在位置4设置消防站:y4=1
- 位置2未设置消防站:y2=0
-
每个区域的管辖结果:
- 区域1由位置1的消防站管辖
- 区域2由位置3的消防站管辖
- 区域3由位置3的消防站管辖
- 区域4由位置4的消防站管辖
通过运行结果,可以看到在满足各区域需求的前提下,选择了三个位置设置消防站,并且所有区域都被合理分配给了最近的消防站,从而最小化了每个区域到其管辖消防站的最大距离。该模型确保了每个区域都能有效地覆盖并提供消防服务,同时控制了建设费用在预算范围内。
题目5:医院开刀问题
题目
某大医院向社会提供各种不同的医疗服务,为获得最好的社会效益和经济效益,医院必须优化其资源配置。以下面提供的外科手术数据为例,试建立一个能够帮助医院改善其资源配置,提高效益的数学模型。
手术类型 | 主刀医师 | 麻醉师 | 配合医师 | 器械护士 | 巡回护士 | 所需时间 | 平均费用 |
---|---|---|---|---|---|---|---|
大手术 | 3 | 1 | 1 | 2 | 2 | 1天 | 3万 |
中手术 | 2 | 1 | 1 | 1 | 2 | 半天 | 1.6万 |
小手术 | 1 | 1 | 0 | 1 | 1 | 5个/天 | 0.3万 |
5.1问题重述
医院需要优化资源配置以提高效益。外科手术分为大手术、中手术和小手术,不同手术类型所需的人数和费用不同。
5.2 数学模型
设:
目标:
最大化总收益:
约束条件:
1.医生资源约束:
2.麻醉师资源约束:
3.配合医师资源约束:
4.器械护士资源约束:
5.巡回护士资源约束:
6.手术时间约束:
5.3 求解
使用线性规划(LP)方法求解。具体步骤如下:
- 定义目标函数和约束条件。
- 使用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 解答
- 手术安排:
- 大手术 Xd:2 台
- 中手术 Xz: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名工作人员每天可安排来该站值班的最多时间以及主办方征用每人的代价(薪金或报酬)如下表。
主办方希望总代价最小,则应如何安排值班时间?
试建立数学模型。
人员序号 | 用人代价(元/小时) | 每人每天最多可安排值班的时间(小时) |
---|---|---|
1 | 8 | 4, 4, 0, 0, 2, 6 |
2 | 8 | 0, 3, 4, 6, 3, 0 |
3 | 9 | 4, 0, 3, 4, 0, 4 |
4 | 10 | 4, 5, 6, 0, 4, 0 |
5 | 12 | 8, 8, 4, 4, 2, 2 |
6 | 18 | 2, 4, 4, 8, 6, 8 |
7 | 20 | 4, 8, 4, 8, 4, 4 |
6.1问题重述
大型活动持续6天,接待站需两人同时值班,至少一名正式工作人员。目标是最小化总代价,满足值班时间和人员限制。
6.2 数学模型
设:
目标:
最小化总代价:
约束条件:
1.每天两人同时值班,每人值班时间不少于2小时:
2.至少一名正式工作人员当值:
3.临时工作人员每天值班不超过2人:
4.每人每次值班时间不少于2小时:
5.临时工作人员值班次数不超过3次:
6.正式工作人员值班次数不超过5次:
7.每人每天可安排值班的时间限制:
6.3 求解
使用整数规划(IP)方法求解。具体步骤如下:
- 定义目标函数和约束条件。
- 使用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小时
- 工作人员1:
通过优化值班时间安排,模型确保了每天有足够的人员值班,并且在满足临时工作人员和正式工作人员值班次数及时间限制的前提下,最小化了总成本。每个值班安排都在合理的时间范围内,同时保证了活动的正常运行。
总结
通过建立数学模型并求解,解决了不同情境下的资源配置和优化问题。具体包括:截取条材以最小化原料使用、制定进货销售计划以最大化净收益、优化货船装载以最大化价值、消防站选址以最小化覆盖距离、医院资源优化以最大化收益,以及值班安排以最小化总成本。这些问题展示了线性规划和整数规划在实际应用中的广泛用途,尤其在资源分配和决策优化中发挥了重要作用。